Hello,

In my application, I have the following blueprint file:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
         xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf";
         xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs";
         xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0";
         xmlns:http="http://cxf.apache.org/transports/http/configuration";
         xsi:schemaLocation="
            http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
            http://camel.apache.org/schema/blueprint
http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
            http://camel.apache.org/schema/blueprint/cxf
http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
            http://cxf.apache.org/blueprint/jaxrs
http://cxf.apache.org/schemas/blueprint/jaxrs.xsd";>

   <cm:property-placeholder persistent-id="com.company.application.jaxrs"
                      placeholder-prefix="[["
                      placeholder-suffix="]]">
      <cm:default-properties>
         <cm:property
name="application.defaultShutdownStrategyTimeout" value="30"/>
         <cm:property name="application.suppressLoggingOnTimeout" value="true"/>
         ...
      </cm:default-properties>
   </cm:property-placeholder>

   <cm:property-placeholder persistent-id="com.company.application.activemq"
                      placeholder-prefix="{{"
                      placeholder-suffix="}}">
      <cm:default-properties>
         ...
      </cm:default-properties>
   </cm:property-placeholder>

   ...

<bean id="debugBean0" class="com.company.application.debug.EchoBean">
<property name="echoProperty" value
="[[application.defaultShutdownStrategyTimeout]]"/>
</bean>

<bean id="debugBean1" class="com.company.application.debug.EchoBean">
<property name="echoProperty" value
="[[application.suppressLoggingOnTimeout]]"/>
</bean>

<bean id="defaultShutdownStrategy" class
="com.company.application.debug.DebugShutdownStrategy">
<property name="timeout" value
="[[application.defaultShutdownStrategyTimeout]]"/>
<property name="suppressLoggingOnTimeout" value
="[[application.suppressLoggingOnTimeout]]"/>
</bean>

...

</blueprint>

This application also contains the following debug classes:

public class EchoBean {

   private static final Logger LOGGER = LoggerFactory.getLogger(EchoBean.class);

   public String getEchoProperty() {
      return echoProperty;
   }

   public void setEchoProperty(final String echoProperty) {
      LOGGER.info("ApplicationServiceDebug echo property: " + echoProperty);

      this.echoProperty = echoProperty;
   }

   private String echoProperty;
}

public class DebugShutdownStrategy extends DefaultShutdownStrategy {

   private static final Logger LOGGER =
LoggerFactory.getLogger(DebugShutdownStrategy.class);

   public void setTimeout(final String timeout) {
      LOGGER.info("ApplicationServiceDebug shutdown timeout: " + timeout);
   }

   public void setTimeout(final EchoBean timeout) {
      LOGGER.info("ApplicationServiceDebug shutdown timeout: " +
timeout.getEchoProperty());
   }

   public void setSuppressLoggingOnTimeout(final String b) {
      LOGGER.info("ApplicationServiceDebug shutdown suppress logging
timeout: " + b);
   }

   public void setSuppressLoggingOnTimeout(final EchoBean b) {
      LOGGER.info("ApplicationServiceDebug shutdown suppress logging
timeout: " + b.getEchoProperty());
   }
}

Now, when I run the bundle, I get the following output from the application:

2015-02-23 13:38:32,248 | INFO |
com.company.application.debug.DebugShutdownStrategy |
fileinstall-/opt/apache-karaf-3.0.1/deploy | 452 -
com.company.application.service - 2.6.0.RELEASE |
ApplicationServiceDebug shutdown timeout:
[[application.defaultShutdownStrategyTimeout]]
2015-02-23 13:38:32,248 | INFO |
com.company.application.debug.DebugShutdownStrategy |
fileinstall-/opt/apache-karaf-3.0.1/deploy | 452 -
com.company.application.service - 2.6.0.RELEASE |
ApplicationServiceDebug shutdown suppress logging timeout:
[[application.suppressLoggingOnTimeout]]
2015-02-23 13:38:33,308 | INFO |
com.company.application.debug.EchoBean |
fileinstall-/opt/apache-karaf-3.0.1/deploy | 452 -
com.company.application.service - 2.6.0.RELEASE |
ApplicationServiceDebug echo property: 30
2015-02-23 13:38:33,309 | INFO |
com.company.application.debug.EchoBean |
fileinstall-/opt/apache-karaf-3.0.1/deploy | 452 -
com.company.application.service - 2.6.0.RELEASE |
ApplicationServiceDebug echo property: true

What this seems to indicate to me is that the
bean, "defaultShutdownStrategy", is built before the properties are
populated, whereas, the debug beans are built after. Is this correct?
Is there something I'm doing wrong that would cause this behaviour?
Is this a bug?
Is there something I can do to get the bean to populate after?

-- 
This email and any attachments may contain information that is proprietary,
confidential and/or privileged and for the sole use of the intended 
recipients(s)
only.
If you are not the intended recipient, please notify the sender by return
email and delete all copies of this email and any attachments. Ahold and/or 
its
subsidiaries shall neither be liable for the inaccurate or incomplete 
transmission
of the information contained in this email or any attachments, nor for any 
delay
in its receipt. To the extent this email is intended to create any legal 
obligation,
the obligation shall bind only the contracting entity and not any other 
entity within
the Ahold Group.

Reply via email to