2016-01-07 6 views
0

Я использую Apache Camel и у меня есть фасоль тег в blueprint.xml файла, как показано ниже:Xml - Вводить результат метода в свойстве боба

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

Свойство PERMISSIONSLIST является результатом метода завивка() в этом классе:

public class testshiro{ 

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

Как я называю этот метод и установить результат в PERMISSIONSLIST собственности на боб тег?

+0

Вы можете создать OSGI-сервис, который предоставит вам список разрешений. Это не слишком сложно. –

ответ

0
<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> 
1

Вы должны быть в состоянии создать экземпляр testshiro в качестве фабрики, а затем speficy perm() как фабричный метод для создания списка. Затем передать ссылку на список в политику Shiro:

<bean id="permissionsFactory" class="your.package.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> 

Это tutorial дает хороший обзор о том, как использовать заводы в Blueprint.

+0

Я сделал это: ' <значение аргумента =" shiro.ini "/> <имя свойства =" PERMISSIONSLIST»реф = "разрешения"/> ' И я получил сообщение об ошибке: 'Невозможно найти подходящий заводский метод perm на классе com.ngt.shiropermission.wcard для аргументов [], когда инстанцируемые бина разрешения – zied123456

+0

@ zied123456, а perm() не принимает аргументов? – Ralf

+0

нет таких аргументов: 'public List perm() { Список permissionsList = new ArrayList (); Разрешение = новый WildcardPermission («зона»); permissionsList.add (разрешение); return permissionsList; } ' – zied123456

 Смежные вопросы

  • Нет связанных вопросов^_^