You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Grzegorz Grzybek (JIRA)" <ji...@apache.org> on 2017/09/26 08:47:00 UTC

[jira] [Commented] (ARIES-1635) BeanMetadata parsing issue when ext and cm are combined.

    [ https://issues.apache.org/jira/browse/ARIES-1635?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16180481#comment-16180481 ] 

Grzegorz Grzybek commented on ARIES-1635:
-----------------------------------------

In my case:
{code:xml}
<ext:property-placeholder id="my2Props" system-properties="override" placeholder-prefix="${" placeholder-suffix="}" />
<cm:property-placeholder id="myProps" persistent-id="blueprint-sample-properties.pid" update-strategy="reload">
    <cm:default-properties>
        <cm:property name="pb" value="42" />
    </cm:default-properties>
</cm:property-placeholder>
{code}

{noformat}
BeanMetadata[id='my2Props', initialization=0, dependsOn=null, className='null', initMethodName='init', destroyMethodName='null', arguments=null, \
properties=[\
   BeanProperty[name='placeholderPrefix', value=ValueMetadata[stringValue='${', type='null']], \
   BeanProperty[name='placeholderSuffix', value=ValueMetadata[stringValue='}', type='null']], \
   BeanProperty[name='systemProperties', value=ValueMetadata[stringValue='override', type='null']]\
], factoryMethodName='null', factoryComponent=null, scope='singleton', runtimeClass=class org.apache.aries.blueprint.ext.PropertyPlaceholder, fieldInjection=false]
{noformat}

When:
{code:xml}
<ext:property-placeholder id="my2Props" system-properties="override" placeholder-prefix="$[" placeholder-suffix="]" />
<cm:property-placeholder id="myProps" persistent-id="blueprint-sample-properties.pid" update-strategy="reload">
    <cm:default-properties>
        <cm:property name="pb" value="42" />
    </cm:default-properties>
</cm:property-placeholder>
{code}

I have:
{noformat}
BeanMetadata[id='my2Props', initialization=0, dependsOn=null, className='null', initMethodName='init', destroyMethodName='null', arguments=null, \
properties=[\
   BeanProperty[name='placeholderPrefix', value=ValueMetadata[stringValue='$[', type='null']], \
   BeanProperty[name='placeholderSuffix', value=ValueMetadata[stringValue=']', type='null']], \
   BeanProperty[name='systemProperties', value=ValueMetadata[stringValue='override', type='null']]\
], factoryMethodName='null', factoryComponent=null, scope='singleton', runtimeClass=class org.apache.aries.blueprint.ext.PropertyPlaceholder, fieldInjection=false]
{noformat}


> BeanMetadata parsing issue when ext and cm are combined.
> --------------------------------------------------------
>
>                 Key: ARIES-1635
>                 URL: https://issues.apache.org/jira/browse/ARIES-1635
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint
>    Affects Versions: blueprint-core-1.6.2, blueprint-cm-1.0.8
>            Reporter: Chris Odom
>            Assignee: Grzegorz Grzybek
>
> {noformat}
> org.osgi.service.blueprint.container.ComponentDefinitionException: Multiple placeholders with the same prefix and suffix are not allowed
> 	at org.apache.aries.blueprint.ext.PlaceholdersUtils.validatePlaceholder(PlaceholdersUtils.java:49)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.ext.impl.ExtNamespaceHandler.parsePropertyPlaceholder(ExtNamespaceHandler.java:367)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.ext.impl.ExtNamespaceHandler.parse(ExtNamespaceHandler.java:165)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.parser.Parser.parseCustomElement(Parser.java:1369)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.parser.Parser.loadComponents(Parser.java:427)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.parser.Parser.populate(Parser.java:331)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:349)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:276)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:300)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:269)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:265)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:255)[21:org.apache.aries.blueprint.core:1.6.2]
> 	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[30:org.apache.aries.util:1.1.1]
> 	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[30:org.apache.aries.util:1.1.1]
> 	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[30:org.apache.aries.util:1.1.1]
> 	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[30:org.apache.aries.util:1.1.1]
> 	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[30:org.apache.aries.util:1.1.1]
> 	at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179)[org.apache.felix.framework-5.4.0.jar:]
> 	at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:731)[org.apache.felix.framework-5.4.0.jar:]
> 	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:486)[org.apache.felix.framework-5.4.0.jar:]
> 	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4541)[org.apache.felix.framework-5.4.0.jar:]
> 	at org.apache.felix.framework.Felix.startBundle(Felix.java:2172)[org.apache.felix.framework-5.4.0.jar:]
> 	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)[org.apache.felix.framework-5.4.0.jar:]
> 	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)[org.apache.felix.framework-5.4.0.jar:]
> 	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1286)[8:org.apache.karaf.features.core:4.0.7]
> 	at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:846)[8:org.apache.karaf.features.core:4.0.7]
> 	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1176)[8:org.apache.karaf.features.core:4.0.7]
> 	at org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:1074)[8:org.apache.karaf.features.core:4.0.7]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_111]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_111]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_111]
> 	at java.lang.Thread.run(Thread.java:745)[:1.8.0_111]
> {noformat}
> Debug of BeanMetadata:
> {noformat}
> BeanMetadata[id='system-database-config', initialization=0, dependsOn=null, className='null', initMethodName='init', destroyMethodName='null', \
> arguments=null, properties= [ \
>    BeanProperty[name='placeholderPrefix', value=ValueMetadata[stringValue='${', type='null']], \
>    BeanProperty[name='placeholderSuffix', value=ValueMetadata[stringValue='}', type='null']] \
> ], factoryMethodName='null', factoryComponent=null, scope='singleton', runtimeClass=class org.apache.aries.blueprint.ext.PropertyPlaceholder, fieldInjection=false]
> {noformat}
> blueprint.xml:
> {code:xml}
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
> 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> 	xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0"
> 	xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.5.0"
> 	xsi:schemaLocation="
>     http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>     http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd
>     http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.5.0 http://aries.apache.org/schemas/blueprint-ext/blueprint-ext-1.5.xsd">
> 	<cm:property-placeholder id="application-database-config" persistent-id="com.nolimitssoft" update-strategy="none" />
> 	<!-- Allow the use of system properties -->
>     <ext:property-placeholder id="system-database-config" placeholder-prefix="$[" placeholder-suffix="]" />
>     ...
> </blueprint>
> {code}
> You will notice that the Blueprint bean uses prefix and suffix properties but the BeanMetadata does not reflect those properties.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)