summaryrefslogtreecommitdiffstats
path: root/container-di/src/main/scala/com/yahoo/container/di/Osgi.scala
blob: 6752559fde6ab42d580dcca0606ae7c135355546 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di

import com.yahoo.config.FileReference
import com.yahoo.container.bundle.{MockBundle, BundleInstantiationSpecification}
import com.yahoo.container.di.Osgi.BundleClasses
import org.osgi.framework.Bundle
import com.yahoo.component.ComponentSpecification

/**
 *
 * @author gjoranv
 * @author tonytv
 */
trait Osgi {

  def getBundleClasses(bundle: ComponentSpecification, packagesToScan: Set[String]): BundleClasses = {
    BundleClasses(new MockBundle, List())
  }

  def useBundles(bundles: java.util.Collection[FileReference]) {
    println("useBundles " + bundles.toArray.mkString(", "))
  }

  def resolveClass(spec: BundleInstantiationSpecification): Class[AnyRef] = {
    println("resolving class " + spec.classId)
    Class.forName(spec.classId.getName).asInstanceOf[Class[AnyRef]]
  }

  def getBundle(spec: ComponentSpecification): Bundle = {
    println("resolving bundle " + spec)
    new MockBundle()
  }

}

object Osgi {
  type RelativePath = String //e.g. "com/yahoo/MyClass.class"
  case class BundleClasses(bundle: Bundle, classEntries: Iterable[RelativePath])
}