2010-07-23 16 views
5

मुझे पता है कि मैं कैसे कर सकते हैं JAXB संकलक मेरी XML स्कीमा में कुछ तत्वों बनाने के जावा वर्ग परिभाषा में अंतिम के रूप में घोषित किया और मैं भी विभिन्न निर्माताओं को नियंत्रित करने, के रूप में सक्षम होने के लिए चाहते हैं चाहते हैं मैं एक कन्स्ट्रक्टर चाहता हूं जो कक्षा में निहित पैरामीटर की पूरी सूची के साथ ऑब्जेक्ट बना सकता है और साथ ही साथ JAXB द्वारा आवश्यक डिफ़ॉल्ट निजी कन्स्ट्रक्टर भी बना सकता है।JAXB निर्माता इंजेक्शन

कोई मदद?

धन्यवाद।

यहाँ मैं क्या करने की कोशिश कर रहा हूँ का एक उदाहरण है: अब उत्पन्न कोड की तरह

public class mycomplex 
{ 
     protected boolean myboolean; 

     public boolean getMyboolean() { return myboolean; } 
     public void setMyboolean(boolean b) { this.myboolean = b; } 
} 

कुछ ऐसी दिखाई देगी

<xs:complexType name="mycomplex"> 
    <xs:all> 
     <xs:element name="myboolean" type="xs:boolean"/> 
    </xs:all> 
</xs:complexType> 

लेकिन मैं इसे बनाने के लिए स्कीमा संपादित करना चाहते हैं जैसे:

public class mycomplex 
{ 
     protected final boolean myboolean; 

     public mycomplex(boolean b) { this.myboolean = b; } 

     public boolean getMyboolean() { return myboolean; } 
} 

क्या यह हासिल किया जा सकता है?

+0

कृपया हमें उदाहरण देते हैं, स्कीमा की तरह सहित जिन घटकों के बारे में आप बात कर रहे हैं, और आप उन्हें जावा में कैसे दिखाना चाहते हैं। – skaffman

+0

मूल पोस्ट संपादित। क्या यह संभव है? – ExtremeCoder

+0

मुझे नहीं लगता कि यह है, नहीं। मेरे ज्ञान के लिए, जेएक्सबी 2 में कन्स्ट्रक्टर इंजेक्शन कभी नहीं जोड़ा गया था, हालांकि मुझे लगता है कि यह एक बिंदु पर योजना बनाई गई थी। – skaffman

उत्तर

0

मैंने इसे किसी अन्य तरीके से हल किया है। मैं एक ऐसा उपकरण बना रहा हूं जो उत्पादित जावा स्रोत कोड फ़ाइलों को संपादित करेगा और जो मुझे चाहिए उसे जोड़/हटा देगा। अधिक जानकारी के लिए इस का संदर्भ लें: Using the Eclipse AST

0

वहाँ क्योंकि JAXB कल्पना ऐसे ही एक वर्ग के लिए मानचित्रण का समर्थन नहीं करता, एक मानक JAXB तरह से एक वर्ग है कि उस तरह लग रहा है उत्पन्न करने के लिए नहीं है।

आप एक सेट विधि होने से बचने के लिए निम्न कोड इस्तेमाल कर सकते हैं। यदि आप सार्वजनिक रूप से एक डिफ़ॉल्ट डिफ़ॉल्ट चाहते हैं तो आप अतिरिक्त रचनाकार जोड़ सकते हैं।

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 

@XmlAccessorType(XmlAccessType.FIELD) 
public class mycomplex  
{  
     protected final boolean myboolean;  

     public boolean getMyboolean() { return myboolean; }  
}  

आप वर्ग है कि आप एक गैर-डिफ़ॉल्ट निर्माता के साथ ऊपर वर्णित है और एक क्षेत्र अंतिम आप एक XmlAdapter बनाने की आवश्यकता होगी चिह्नित उपयोग करना चाहते हैं:

+0

आप इस के लिए बहुत बहुत धन्यवाद, लेकिन यह पूरी तरह से नहीं है कि मैं क्या कर रहा हूँ खोज रहे हैं मैं सैकड़ों कक्षाओं को निर्बाध कर दूंगा, जिसका अर्थ है कि ऐसा कुछ करने से काफी कठिन हो जाएगा क्योंकि मुझे खुद सबकुछ परिभाषित करना है और ये कक्षाएं समय-समय पर अलग-अलग होंगी -> मुझे फिर से परिभाषित करने के लिए बहुत समय लगता है चीजें हर समय। सैकड़ों विभिन्न वर्गों में एक और स्वचालित प्रक्रिया में इस प्रकार के व्यवहार को समायोजित करने का कोई तरीका है? फिर से धन्यवाद। – ExtremeCoder

+0

@BlaiseDoughan किसी भी मौके पर आप http://docs.oracle.com/javase/6/docs/api/java/beans/ConstructorProperties.html को अपनी मोक्सी में जोड़ देंगे? –

+0

@AdamGent - क्या आप इसे निम्नलिखित वृद्धि अनुरोध पर टिप्पणी के रूप में प्रदान करना चाहते हैं ?: http://bugs.eclipse.org/328951 –