Hi,

We are currently facing some issue with Blueprint and generic constructors 
while we are moving from Java 8 to Java 11.
We used Karaf 4.1.1 which uses Aries Blueprint 1.8.0 to Karaf 4.2.6 which uses 
aries Blueprint 1.10.2


While we are trying to instantiate any Bean with a generic types constructor, 
we receive an exception like this one:

org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to 
instantiate components
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:741)
 ~[102:org.apache.aries.blueprint.core:1.10.2]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:433)
 [102:org.apache.aries.blueprint.core:1.10.2]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:298)
 [102:org.apache.aries.blueprint.core:1.10.2]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at 
org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)
 [102:org.apache.aries.blueprint.core:1.10.2]
        at 
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:45)
 [102:org.apache.aries.blueprint.core:1.10.2]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
 [?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
        at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.RuntimeException: Unknown type T
        at 
org.apache.aries.blueprint.utils.generics.TypeInference.getParameters(TypeInference.java:449)
 ~[?:?]
        at 
org.apache.aries.blueprint.utils.generics.TypeInference.match(TypeInference.java:262)
 ~[?:?]
        at 
org.apache.aries.blueprint.utils.generics.TypeInference.findMatching(TypeInference.java:231)
 ~[?:?]
        at 
org.apache.aries.blueprint.utils.generics.TypeInference.findMatchingConstructors(TypeInference.java:125)
 ~[?:?]
        at 
org.apache.aries.blueprint.container.BeanRecipe.findMatchingConstructors(BeanRecipe.java:373)
 ~[?:?]
        at 
org.apache.aries.blueprint.container.BeanRecipe.getInstanceFromType(BeanRecipe.java:346)
 ~[?:?]
        at 
org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:283)
 ~[?:?]
        at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:685)
 ~[?:?]
        at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:666)
 ~[?:?]
        at 
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81) 
~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at 
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90) 
~[?:?]
        at 
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360)
 ~[?:?]
        at 
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:190)
 ~[?:?]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:737)
 ~[?:?]
        ... 12 more


In our case we tried to instantiate a SimpleObjectProperty from the javafx 
package, and the constructor is like :

public class SimpleObjectProperty<T> extends ObjectPropertyBase<T> {
..
  public SimpleObjectProperty() {
    ..
  }

  public SimpleObjectProperty(T var) {
    ...
  }
}

If we try to use the non-generic constructor all went fine, but anytime we use 
the second constructor, the matching of constructors failed with a 
RuntimeException.

Before the migration we had the same blueprint definition and the same 
blueprint beans, only the migration from JDK and Karaf (Which so move the Aries 
Blueprint version from 1.8.0 to 1.10.2
Is there any chance we made something wrong during migration ?

[@@ OPEN @@]

Reply via email to