Timothy,
That's looks really good! I'll try do something myself, to reach this. If I
will meet problems then will post a message to dev@.
Best regards,
Lukasz
> All contributions are welcome!
>
> I would imagine that the most practical approach would be to add a new
> namespace handler called fluent, builder or similar. This could be provided
> as a new bundle in the blueprint project.
>
> Adding some XML along the lines of the following to your blueprint:
>
> <bean class="builderClass" fluent:begin-method="getConfigurable"
> fluent:end-method="create">
>
> <argument>2</argument>
>
> <fluent:configure method="setJDBCURL" value="someValue"/>
> <fluent:configure method="autoCommit">
> <value>true</value>
> <fluent:configure method="addListener" ref="someBeanId"/>
> </bean>
>
>
> could result in a configured bean using a fluent API like
>
> builderClass.getConfigurable(2).setJDBCURL("someValue").autoCommit(true).addListener(blueprintBean).create();
>
> Under the covers the namespace handler can turn the bean metadata into a
> "normal" blueprint metadata tree like the really verbose XML I gave as an
> example before.
>
> What do you think?
>
> Regards,
>
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
>
>
> From: [email protected]
> Subject: Re: Aries and fluent builders
> Date: Thu, 15 Dec 2011 09:42:40 +0100
> To: [email protected]
>
> Timothy,
> If you could give an advice where to start, I can experiment. Maybe we can
> add an attribute from additional namespace (aries-util?) which will mark an
> field as non standard java bean and let inject given value? But, it is
> possible to extend a <property> behavior somehow?
>
> Regards,
> Lukasz
>
> We could look at adding some better fluent support in Aries blueprint
> (although it would be in a non-standard namespace). It might be a while
> before there was anything actually in trunk though.
>
> Regards
>
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
>
>
> From: [email protected]
> Subject: Re: Aries and fluent builders
> Date: Thu, 15 Dec 2011 09:26:37 +0100
> To: [email protected]
>
> Hey Timothy,
> I know that solution proposed by you will work but it will mess a XML. Once
> I'll need to inject more values I will have 100 lines only to put true or
> false in some fields.
>
> Regards,
> Lukasz
>
>
> Hi,
>
> It's not very concise, but this should work:
>
> <bean id="processEngineConfiguration1"
> class="org.activiti.engine.ProcessEngineConfiguration"
> factory-method="createStandaloneInMemProcessEngineConfiguration"/>
>
> <bean id="processEngineConfiguration2"
> factory-ref="processEngineConfiguration1"
> factory-method="setDatabaseSchemaUpdate">
> <argument value="false"/>
> </bean>
>
> <bean id="processEngineConfiguration3"
> factory-ref="processEngineConfiguration2" factory-method="setDataSource">
> <argument>
> <bean class="org.h2.jdbcx.JdbcDataSource">
> <property name="url" value="jdbc:h2:mem:activiti" />
> </bean>
> </argument>
> </bean>
>
> <bean id="processEngineConfiguration4"
> factory-ref="processEngineConfiguration3"
> factory-method="setJobExecutorActivate">
> <argument value="true"/>
> </bean>
>
>
> <bean id="processEngine" factory-ref="processEngineConfiguration4"
> factory-method="buildProcessEngine"/>
>
> If you're interested in more information about advanced blueprint techniques
> then you may find Enterprise OSGi in Action to be a useful resource. You can
> get 37% off if you use the code eosgi37 at the Manning website -
> http://www.manning.com/cummins
>
> Regards,
>
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
>
>
> From: [email protected]
> Subject: Aries and fluent builders
> Date: Thu, 15 Dec 2011 08:58:47 +0100
> To: [email protected]
>
> Hello,
> I tried to use Aries instead of Spring to configure Activiti process engine.
> The problem I meet was related to fluent builders. Activiti can be configured
> with fluent builder, for example:
>
> ProcessEngine processEngine =
> ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
> .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
> .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
> .setJobExecutorActivate(true)
> .buildProcessEngine();
>
> I ported this fragment to an XML fragment:
>
> <bean id="processEngineConfiguration"
> class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
> <property name="jobExecutorActivate" value="true" />
> <property name="databaseSchemaUpdate" value="false" />
> <property name="dataSource">
> <bean class="org.h2.jdbcx.JdbcDataSource">
> <property name="url" value="jdbc:h2:mem:activiti" />
> </bean>
> </property>
> </bean>
> <bean id="processEngine" factory-ref="processEngineConfiguration"
> factory-method="buildProcessEngine">
> </bean>
>
> The error reported by blueprint is:
> org.osgi.service.blueprint.container.ComponentDefinitionException: No setter
> for jobExecutorActivate property
>
> The jobExecutorActivate property returns an instance of
> ProcessEngineConfiguration so it is not a regular Java Bean property. Do you
> have any ideas how to manage both - Aries and Activiti to work together?
>
> Best regards,
> Lukasz
>
>
>
>