Search code examples
javaxmlapache-cameljavabeansblueprint-osgi

Xml - Inject result of method in a bean property


I'm using Apache Camel and i have a bean tag in the blueprint.xml file as shown below:

 <bean id="shiroPolicy" class="org.apache.camel.component.shiro.security.ShiroSecurityPolicy">
          <argument value="shiro.ini"/>
               <property name="permissionsList" >
             <list>
                .......
            </list> 
          </property>
       </bean> 

The permissionsList property is a result of method perm() on this class:

public class testshiro{

    public List<Permission> perm()
    {
        List<Permission> permissionsList = new ArrayList<Permission>();
        Permission permission = new WildcardPermission("zone");
        permissionsList.add(permission);
        return permissionsList;
    }
    ....

How can i call this method and set the result in permissionsList property on the bean tag ?


Solution

  • <bean id="permissionsFactory" class="com.ngt.shiropermission.testshiro"/>
    <bean id="permissions" factory-ref="permissionsFactory" factory-method="perm" />
    <bean id="shiroPolicy" class="org.apache.camel.component.shiro.security.ShiroSecurityPolicy">
        <argument value="shiro.ini"/>
        <property  name="permissionsList" ref="permissions" />
    </bean>