2015-10-15 5 views
0

Я использую hk2 как двигатель CDI. У меня есть 2 вложенные инъекции, как в коде ниже:HK2 InstantiationУслуги вложенные инъекции

public class Root { 
@Inject 
Son son; 
... 
} 

public class Son { 
@Inject 
GrandSon gs; //should i put it here? 
    ... 
} 

public class GrandSon { 

    ... 
} 

Эти классы Factory:

public class SonFactory implements Factory<Son>{ 
    @Inject 
    InstantionService is; 

    @Inject 
    GrandSon gs; //should i put it here? 

    public Son provide(){ 
     is.getInstantiationData() 
     return sonImpl; 
    } 

    public dispose(Son instance){ 
    // destroy 
    } 

} 

public GrandsonFactory implements Factory <GrandSon>{ 
    @Inject 
    InstantionService is 

    public GrandSon provide(){ 
     is.getInstantiationData() 
     return sonImple; 
    } 

    public dispose(GrandSon instance){ 
    // destroy 
    } 
} 

я связан как завод, как: bindFactory (SonFactory.class) .то (Son. класс) .в (RequestScoped.class) bindFactory (GrandSonFactory.class) .то (GrandSon.class) .в (RequestScoped.class)

Теперь я хочу просто с помощью InstantionService.getInstantiationData() для получения данных дескриптора из c всеохватывающий родительский класс в классе GrandSon. В частности, мне нужно вернуться обратно до класса Root, проверяющего родителя-инъектора. Я могу получить данные с метода factory.provide класса Son, но я не могу получить действительный getInstantiationdata() из класса grandSon. Что я не так с кодом?

+0

В вашем коде выше я не вижу, кто предоставляет FirstSon? Я вижу поставщиков Factory для Son и GrandSon, но не FirstSon. – jwells131313

+0

Извините, что это первый сын ... я только что отредактировал – Alex

+0

Возможно, возникла проблема с InstantiationService при получении Factory services. Я напишу единичный тест и узнаю – jwells131313

ответ

0

Это, кажется, ошибка в HK2. Я вошел в следующую JIRA:

Nested Factory Instantation Service Issue

Я буду обновлять этот ответ, как только эта ошибка будет исправлена. Я проверил неудачный тест, демонстрирующий проблему

+0

... спасибо! Я проверю его! – Alex

+0

Исправлена ​​ошибка, но теперь ей нужно пройти цикл выпуска, чтобы Джерси забрала его – jwells131313

+0

Thats great ... Спасибо ... – Alex

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