Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-4896

kie-aries-blueprint project fails to deploy if blueprint cm property-placeholder is used in blueprint

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Critical
    • None
    • jboss-fuse-6.2.1
    • Integration Pack
    • None
    • % %
    • Hide

      Reproducer attached: Modified blueprint-camel-drools-decision-table example. Exception occurs on deployment

      Show
      Reproducer attached: Modified blueprint-camel-drools-decision-table example. Exception occurs on deployment

    Description

      When deploying a camel blueprint application with a blueprint cm:property-placehoder defined as below:

      cm:property-placeholder persistent-id="org.drools.example.kie" update-strategy="reload" xmlns="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0">
              <cm:default-properties>
                  <cm:property name="activeMQ.uri" value="tcp://localhost:61616" />
                  <cm:property name="activeMQ.username" value="admin" />
                  <cm:property name="activeMQ.password" value="admin" />
                  <cm:property name="activeMQ.concurrentConsumers" value="100" />
              </cm:default-properties>
          </cm:property-placeholder>
      

      The following stacktrace occurs:

      org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to initialize bean .droolsBlueprint.processor.bean.camel-context
      	at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:714)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:824)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[23:org.apache.aries.blueprint.core:1.4.4]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_91]
      	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:247)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:230)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:155)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:531)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:361)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[17:org.apache.aries.util:1.1.0]
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[17:org.apache.aries.util:1.1.0]
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[17:org.apache.aries.util:1.1.0]
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[17:org.apache.aries.util:1.1.0]
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[17:org.apache.aries.util:1.1.0]
      	at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)[org.apache.felix.framework-4.4.1.jar:]
      	at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)[org.apache.felix.framework-4.4.1.jar:]
      	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)[org.apache.felix.framework-4.4.1.jar:]
      	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)[org.apache.felix.framework-4.4.1.jar:]
      	at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)[org.apache.felix.framework-4.4.1.jar:]
      	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:976)[org.apache.felix.framework-4.4.1.jar:]
      	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:963)[org.apache.felix.framework-4.4.1.jar:]
      	at org.apache.karaf.features.internal.FeaturesServiceImpl.doInstallFeatures(FeaturesServiceImpl.java:546)[10:org.apache.karaf.features.core:2.4.0.redhat-621084]
      	at org.apache.karaf.features.internal.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:432)[10:org.apache.karaf.features.core:2.4.0.redhat-621084]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_91]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_91]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_91]
      	at java.lang.Thread.run(Thread.java:745)[:1.7.0_91]
      Caused by: java.lang.ClassCastException: org.apache.aries.blueprint.ext.AbstractPropertyPlaceholder$LateBindingValueMetadata cannot be cast to org.apache.aries.blueprint.mutable.MutableValueMetadata
      	at org.kie.aries.blueprint.namespace.KieObjectsInjector.getKieModuleModel(KieObjectsInjector.java:204)
      	at org.kie.aries.blueprint.namespace.KieObjectsInjector.createOsgiKieModule(KieObjectsInjector.java:139)
      	at org.kie.aries.blueprint.namespace.KieObjectsInjector.afterPropertiesSet(KieObjectsInjector.java:106)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_91]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_91]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_91]
      	at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_91]
      	at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:956)[23:org.apache.aries.blueprint.core:1.4.4]
      	at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:712)[23:org.apache.aries.blueprint.core:1.4.4]
      	... 32 more
      
      

      This happens whether the property-placeholder is defined in the kie.xml blueprint or in the camel blueprint.

      Cause:

      Line 205 of org.kie.aries.blueprint.namespace.KieObjectsInjector casts each BeanArgument it processes to MutableValueMetadata; however the cm:properties are descended instead from NonNullableValueMetadata, so no cast path is available for that component:

      String kBaseName = ((MutableValueMetadata) kbRefArg.getValue()).getStringValue();
      

      Attachments

        Issue Links

          Activity

            People

              rhn-support-rick Rick Wagner
              rhn-support-dhawkins Duane Hawkins
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: