2016-01-21 4 views
0

У меня есть простой компонент следующим образом:Как получить недвижимость в iPOJO

@Component (name="Test") 
@Instantiate 
public class Test { 
    @Property(name="foo", value="my-instance-2") 
    String buffer = "abcbuffer"; 
    public Test() { 
     System.out.println("test running"); 
    } 
} 

я использую «экземпляр ITEST» я есть результат

g! instance iTest 
instance name="iTest" state="valid" bundle="31" component.type="Test" 
     handler name="org.apache.felix.ipojo:properties" state="valid" 
       property name="foo" value="abcbuffer" 
     handler name="org.apache.felix.ipojo:callback" state="valid" 
     handler name="org.apache.felix.ipojo:architecture" state="valid" 
     object name="[email protected]" 

Как я получить «буфер» свойство через «интроспекцию» из другого компонента? Я хочу получить значение «abcbuffer».

Спасибо,

ответ

0

Для того, чтобы ответить на этот вопрос, я делаю следующим образом:

for (Factory factory : factories) { 
     if (factory.getName().equals("Test")) { //Test is default name of a component name 
      InstanceManager im = (InstanceManager) factory.getInstances().get(0); 

      String buffer = (Strig) im.getFieldValue("buffer"); 

      System.out.println(buffer); 
    } 

} 
0

и обновлять динамически значения буфера, мы используем:

  ComponentInstance ci = (ComponentInstance) factory.getInstances().get(0); 
      Properties props = new Properties(); 
      String newbuffer = new String("newValue"); 
      props.put("buffer", newbuffer); 
      ci.reconfigure(props); 
0

Все iPOJO компонент обернуты обработчиком архитектуры. Вы можете отслеживать этот обработчик архитектуры через службу архитектуры и использовать его для интроспекции компонента. В настоящее время это команда экземпляра, если я помню.

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

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