2013-03-13 10 views
7

मैं चाहता हूँ में जावा डीएसएल च्वाइसऊंट एक विकल्प

_ from(A) 
_ .split()... 
_ .choice() //Choice 1 
_ .when(predicate) 
_  .process() 

_  .choice() // Choice 2 
_  .when(x) 
_   .to(X) 
_  .otherwise() 
_   .to(Y) 
_  .end() // to terminate inner choice 

_ .endchoice() // tell camel we're back in the outer-choice - gets exception 
_ .otherwise() // Choice 1 
_  .to(Z) 
_ .end() 

के लिए, लेकिन मैं endChoice()

java.lang.ClassCastException: org.apache.camel.model.SplitDefinition cannot be cast to org.apache.camel.model.ChoiceDefinition 

मैं बिना यह

मैं टाइम त्रुटि संकलन मिल पर क्रम अपवाद संदिग्ध अंत() आंतरिक और बाहरी पसंद को समाप्त कर रहा है, मैं केवल इसे आंतरिक को समाप्त करना चाहता हूं।

अंत में डालने से नहीं() यह दूसरे विकल्प() को आंतरिक पसंद के विस्तार के रूप में बनाता है। जो यह नहीं है

मुझे दूसरी पसंद को उप-मार्ग और "प्रत्यक्ष: SUB_ROUTE" में डालकर कामकाज मिल गया है, लेकिन मैं उस सादे संरचना का उपयोग करना पसंद करूंगा जो मैंने ऊपर उल्लिखित किया है। क्या विकल्पों में विकल्पों को हासिल करने का कोई तरीका है या क्या यह जावा डीएसएल की एक सीमा है?

उत्तर

6

अंत में डालने से नहीं() यह दूसरी पसंद() को आंतरिक पसंद के विस्तार के रूप में बनाता है। जो यह नहीं है

क्या आप इसके बारे में निश्चित हैं? असल में, मुझे लगता है कि वहां से अंत() को हटाने से आपकी समस्या का समाधान होना चाहिए। एंडचॉइस() आंतरिक पसंद निर्माण के अंत को इंगित करने के लिए पर्याप्त है।

मैं इसके साथ एक नमूना कोड की कोशिश की थी और यह ठीक काम कर रहा था ..

धन्यवाद!

+0

मैंने सोचा कि एंडचॉइस() केवल एक विकल्प की एक शाखा समाप्त कर चुका है और अंत() ने पूरी संरचना समाप्त कर दी है। मैं कोशिश करूँगा –

+0

हम्म, कोशिश की और यह ठीक काम किया। अनुमान है कि मुझे endChoice() –

+4

समझ में नहीं आया कृपया संदर्भ के लिए समाधान का कोड सबमिट करें – TecHunter

संबंधित मुद्दे