GinMapProvider स्टैक ओवरफ़्लो

मुझे एक ढेर ओवरफ्लो मिल रहा है लेकिन मुझे लगता है कि मैंने समस्या को कम कर दिया है। मेरे पैनल विजेट को बाध्य करते समय समस्या एक पुनरावर्ती इंजेक्शन है। जिस समस्या में मैंने भाग लिया है वह यह है कि मेरा पैनलविड्ट मानचित्र को पैरामीटर के रूप में ले जाता है। समस्या यह है कि यह एक अनंत पाश बनाता है।

GinMapProvider

    GinMapBinder mapBinder = GinMapBinder
            .newMapBinder(binder(), String.class, IDashboardWidget.class);

    mapBinder.addBinding(IGaugeWidgetModel.class.getName()).to(MockGaugeWidget.class);
    mapBinder.addBinding(IPlotWidgetModel.class.getName()).to(PlotWidget.class);
    mapBinder.addBinding(ITableWidgetModel.class.getName()).to(TableWidget.class);
    mapBinder.addBinding(IPanelWidgetModel.class.getName()).to(PanelWidget.class);

If I remove Map the problem goes away of course.

पैनल विजिट क्लास

@Inject
public PanelWidget(final EventBus eventBus, final Resources resources, Map widgetProvider) {
    super(eventBus, resources);
    this.widgetProvider = widgetProvider;
    initWidget(GWT. create(Binder.class).createAndBindUi(this));
    widgetsPanel.getElement().getStyle().setPosition(Position.RELATIVE);

    this.addDomHandler(widgetSelectedHandler, ClickEvent.getType());
}

मैंने इसे भी कोशिश की और विजेट फैक्ट्री क्लास इंजेक्ट किया लेकिन इससे मेरी समस्या हल नहीं हुई। मैंने आशा की थी कि एक सिंगलटन इसे बांधने से रोक देगा।

@Inject
@Provides
@Singleton
WidgetFactory widgetFactory(Map widgetProvider) {
    return new WidgetFactory(widgetProvider);
}

बीटीडब्ल्यू मैं इसे एक जीडब्ल्यूटीटेस्टकेस में चला रहा हूं लेकिन मुझे नहीं लगता कि इससे कोई फर्क पड़ता है।

0
थॉमस !! आपने धमाल मचाया। प्रदाता को हल करने के लिए @ इंजेक्टर कन्स्ट्रक्टर पैरामीटर को बदलना समस्या हल हो गई। एक उत्तर जोड़ें और बीमार अंक भेजें।
जोड़ा लेखक Chris Hinshaw, स्रोत
PanelWidget के आधार पर आपके मानचित्र मानों में से एक है? ऐसा लगता है कि आपको शायद मानचित्र <�स्ट्रिंग, प्रदाता > इंजेक्ट करना चाहिए
जोड़ा लेखक Thomas Broyer, स्रोत
उत्तर के रूप में पोस्ट किया गया।
जोड़ा लेखक Thomas Broyer, स्रोत

1 उत्तर

आपके पास शायद परिपत्र निर्भरताएं हैं, विशेष रूप से मानचित्र में रखी गई चीज़ों में से एक और PanelWidget के बीच।

Given the look of your code (WidgetFactory), I think you might actually need a Map> instead of a Map. And that would cut the circular dependency as a side effect.

1
जोड़ा