पर शामिल करें हम स्वचालित WADL पीढ़ी की अपनी शानदार सुविधा का उपयोग कर रीस्टफुल एपीआई कार्यान्वयन के लिए जर्सी का उपयोग कर रहे हैं।@PathParam के संभावित मूल्यों को WADL
बस एक उदाहरण के रूप हमारे पास विधि
@GET
@Path("/{id}/{attribute}")
@Produces(MediaType.APPLICATION_JSON)
public Object getAttributeByID(@PathParam("id") long id, @PathParam("attribute") String attribute) {
....
}
यह WADL में निम्नलिखित टुकड़ा उत्पन्न करता है:
<param type="xs:string" style="template" name="attribute:.*"/>
गुण name
, type
, size
हो सकता है और हम न केवल मूल्य मान्य करने के लिए चाहते हैं रनटाइम पर, लेकिन इसे जेनरेटेड वैडल में भी दिखाएं this document के अनुसार ऐसी सुविधा <param>
के अंदर कई टैग <option>
उत्पन्न करके समर्थित की जानी चाहिए, i मैं। निम्नलिखित की तरह कुछ उम्मीद कर रहा हूं:
<param type="aws:Attributes" style="template" name="attribute">
<option value="name"/>
<option value="type"/>
<option value="size"/>
</param>
मेरी समस्या यह जर्सी के साथ सक्षम करने के लिए है।
@Path("/{id}/{attribute}")
@Produces(MediaType.APPLICATION_JSON)
public Object getAttributeByID(@PathParam("id") long id, @PathParam("attribute") Attribute attribute) {
....
}
जहां
public enum Attribute {
name, type, size
}
: अगर प्रासंगिक दस्तावेज खोजने में असफल रहा और मान लिया है कि शायद अगर मैं String
से enum
लिए पैरामीटर का प्रकार बदलने के लिए इस सुविधा को स्वचालित रूप से काम करेंगे, तो मैं करने के लिए विधि हस्ताक्षर बदल लेकिन जर्सी अभी भी विकल्पों के बिना <param>
टैग उत्पन्न करता है और पैरामीटर का प्रकार अभी भी xs:string
है।
मैंने इसे जर्सी के कोड में खोजने की कोशिश की और प्रासंगिक जेएक्सबी एनोटेशन के साथ com.sun.research.ws.wadl.Option
कक्षा मिली, इसलिए यह प्रासंगिक प्रतीत होता है, लेकिन मुझे नहीं पता कि यह कैसे काम कर रहा है। मुझे लगता है कि समस्या WadlGeneratorConfig
में है।
public class OurWADLGenerator extends WadlGeneratorConfig {
@Override
public List<WadlGeneratorDescription> configure() {
return generator(WadlGeneratorApplicationDoc.class)
.prop("applicationDocsStream", "application-doc.xml")
.generator(WadlGeneratorResourceDocSupport.class)
.prop("resourceDocStream", "resourcedoc.xml").descriptions();
}
}
क्या मैं यहाँ याद आ रही है:
यहाँ हमारे web.xml
<filter>
<filter-name>REST-API</filter-name>
<filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
................
<init-param>
<param-name>com.sun.jersey.config.property.WadlGeneratorConfig</param-name>
<param-value>com.mycompany.resource.OurWADLGenerator</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mycompany</param-value>
</init-param>
</filter>
जहां OurWADLGenerator
कोड है में जर्सी परिभाषा के प्रासंगिक हिस्सा है? अग्रिम धन्यवाद।
'सार्वजनिक enum Attribure' 'सार्वजनिक enum विशेषता 'होना चाहिए ... क्या यह आपके कोड या सिर्फ एक टाइपो से कॉपी किया गया था? –
@ मार्टिनजाकुबिक, यकीन है कि यह टाइपो था। धन्यवाद। मैंने अभी पोस्ट संपादित किया है और इस गलती को ठीक कर दिया है। – AlexR