Author: deepal Date: Mon Mar 3 03:58:15 2008 New Revision: 633048 URL: http://svn.apache.org/viewvc?rev=633048&view=rev Log: added a way to give a custom schema when generating java2wsdl [http://jadeepal.blogspot.com/2008/03/java2wsdl-generation-with-custom-schema.html]
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/JaxbSchemaGenerator.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/SchemaGenerator.java Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java?rev=633048&r1=633047&r2=633048&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java (original) +++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java Mon Mar 3 03:58:15 2008 @@ -74,6 +74,10 @@ private String schemaGenClassName = null; private boolean generateDocLitBare = false; private AxisConfiguration axisConfig; + private String customScheamLocation; + // location of the class name to package mapping file + // File is simple file with qualifiedClassName:SchemaQName + private String mappingFileLocation; public Java2WSDLBuilder() { try { @@ -208,6 +212,8 @@ schemaGenerator.setExtraClasses(getExtraClasses()); schemaGenerator.setNsGen(resolveNSGen()); schemaGenerator.setPkg2nsmap(getPkg2nsMap()); + schemaGenerator.setMappingFileLocation(mappingFileLocation); + schemaGenerator.setCustomScheamLocation(customScheamLocation); if (getPkg2nsMap() != null && !getPkg2nsMap().isEmpty() && (getPkg2nsMap().containsKey(ALL) || getPkg2nsMap().containsKey(ALL.toUpperCase()))) { schemaGenerator.setUseWSDLTypesNamespace(true); @@ -382,6 +388,23 @@ public void setWSDLVersion(String wsdlVersion) { this.wsdlVersion = wsdlVersion; + } + + + public String getCustomScheamLocation() { + return customScheamLocation; + } + + public void setCustomScheamLocation(String customScheamLocation) { + this.customScheamLocation = customScheamLocation; + } + + public String getMappingFileLocation() { + return mappingFileLocation; + } + + public void setMappingFileLocation(String mappingFileLocation) { + this.mappingFileLocation = mappingFileLocation; } } Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java?rev=633048&r1=633047&r2=633048&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java (original) +++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java Mon Mar 3 03:58:15 2008 @@ -223,6 +223,19 @@ if (option != null) { java2WsdlBuilder.setGenerateDocLitBare(true); } + + option = loadOption(Java2WSDLConstants.CUSTOM_SCHEMA_LOCATION, + Java2WSDLConstants.CUSTOM_SCHEMA_LOCATION_LONG, + optionsMap); + if (option != null) { + java2WsdlBuilder.setCustomScheamLocation(option.getOptionValue()); + } + option = loadOption(Java2WSDLConstants.SCHEMA_MAPPING_FILE_LOCATION, + Java2WSDLConstants.SCHEMA_MAPPING_FILE_LOCATION_LONG, + optionsMap); + if (option != null) { + java2WsdlBuilder.setMappingFileLocation(option.getOptionValue()); + } } private Java2WSDLCommandLineOption loadOption(String shortOption, String longOption, Map options) { Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java?rev=633048&r1=633047&r2=633048&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java (original) +++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java Mon Mar 3 03:58:15 2008 @@ -65,10 +65,12 @@ Java2WSDLConstants.USE_OPTION.equalsIgnoreCase(optionType) || Java2WSDLConstants.USE_OPTION_LONG.equalsIgnoreCase(optionType)|| Java2WSDLConstants.WSDL_VERSION_OPTION.equalsIgnoreCase(optionType)|| + Java2WSDLConstants.CUSTOM_SCHEMA_LOCATION.equalsIgnoreCase(optionType)|| + Java2WSDLConstants.CUSTOM_SCHEMA_LOCATION_LONG.equalsIgnoreCase(optionType)|| + Java2WSDLConstants.SCHEMA_MAPPING_FILE_LOCATION.equalsIgnoreCase(optionType)|| + Java2WSDLConstants.SCHEMA_MAPPING_FILE_LOCATION_LONG.equalsIgnoreCase(optionType)|| Java2WSDLConstants.WSDL_VERSION_OPTION_LONG.equalsIgnoreCase(optionType) ); - - return invalid; } } Modified: webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/JaxbSchemaGenerator.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/JaxbSchemaGenerator.java?rev=633048&r1=633047&r2=633048&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/JaxbSchemaGenerator.java (original) +++ webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/JaxbSchemaGenerator.java Mon Mar 3 03:58:15 2008 @@ -19,12 +19,15 @@ package org.apache.axis2.jaxbri; import org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator; +import org.apache.axis2.description.AxisOperation; import org.apache.axis2.util.Loader; import org.apache.ws.commons.schema.XmlSchema; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import org.codehaus.jam.JMethod; +import org.codehaus.jam.JClass; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -125,6 +128,7 @@ return itr.next(); } + protected List<Class<?>> processMethods(Method[] declaredMethods) throws Exception { List<Class<?>> list = new ArrayList<Class<?>>(); Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java?rev=633048&r1=633047&r2=633048&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java Mon Mar 3 03:58:15 2008 @@ -33,9 +33,14 @@ import org.apache.ws.commons.schema.utils.NamespaceMap; import org.apache.ws.commons.schema.utils.NamespacePrefixList; import org.codehaus.jam.*; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; import javax.xml.namespace.QName; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import java.util.*; +import java.io.*; public class DefaultSchemaGenerator implements Java2WSDLConstants, SchemaGenerator { @@ -88,6 +93,11 @@ protected Class serviceClass = null; protected AxisService service; + // location of the custom schema , if any + protected String customScheamLocation; + // location of the class name to package mapping file + // File is simple file with qualifiedClassName:SchemaQName + protected String mappingFileLocation; //To check whether we need to generate Schema element for Exception protected boolean generateBaseException ; @@ -135,6 +145,57 @@ } } + //This will locad the custom scheam file and add that into the scheam map + private void loadCustomSchemaFile(){ + if (customScheamLocation != null) { + try { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + documentBuilderFactory.setNamespaceAware(true); + Document doc = documentBuilderFactory.newDocumentBuilder().parse(new File(customScheamLocation)); + XmlSchema schema = xmlSchemaCollection.read(doc,null); + schemaMap.put(schema.getTargetNamespace() ,schema); + } catch (Exception e) { + log.info(e.getMessage()); + } + } + } + + /**This will load the mapping file and update the Typetable with the Class name and the Qname + * Mapping file look like + * org.foo.bar.FooException|http://www.abc.com/soaframework/common/types|ErrorMessage + */ + private void loadMappingFile(){ + if(mappingFileLocation != null){ + File file = new File(mappingFileLocation); + BufferedReader input = null; + try { + input = new BufferedReader(new InputStreamReader(new FileInputStream(file))); + String line; + while ((line = input.readLine()) != null) { + line = line.trim(); + if (line.length() > 0 && line.charAt(0)!='#') { + String values [] = line.split("\\|"); + if (values != null && values.length >2) { + typeTable.addComplexSchema(values[0],new QName(values[1] , values[2])); + } + } + } + } catch (IOException ex) { + ex.printStackTrace(); + } finally { + try { + if (input != null) { + input.close(); + } + } + catch (IOException ex) { + ex.printStackTrace(); + } + } + } + } + + /** * Generates schema for all the parameters in method. First generates schema for all different * parameter type and later refers to them. @@ -143,7 +204,8 @@ * @throws Exception */ public Collection generateSchema() throws Exception { - + loadCustomSchemaFile(); + loadMappingFile(); JamServiceFactory factory = JamServiceFactory.getInstance(); JamServiceParams jam_service_parms = factory.createServiceParams(); //setting the classLoder @@ -1012,5 +1074,22 @@ public void setAxisService(AxisService service) { this.service = service; + } + + + public String getCustomScheamLocation() { + return customScheamLocation; + } + + public void setCustomScheamLocation(String customScheamLocation) { + this.customScheamLocation = customScheamLocation; + } + + public String getMappingFileLocation() { + return mappingFileLocation; + } + + public void setMappingFileLocation(String mappingFileLocation) { + this.mappingFileLocation = mappingFileLocation; } } Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java?rev=633048&r1=633047&r2=633048&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java Mon Mar 3 03:58:15 2008 @@ -132,7 +132,11 @@ String USE_OPTION_LONG = "use"; String WSDL_VERSION_OPTION = "wv"; String WSDL_VERSION_OPTION_LONG = "wsdl-version"; - + String CUSTOM_SCHEMA_LOCATION = "csl"; + String CUSTOM_SCHEMA_LOCATION_LONG = "custom-schema-location"; + String SCHEMA_MAPPING_FILE_LOCATION = "mfl"; + String SCHEMA_MAPPING_FILE_LOCATION_LONG = "mapping-file-location"; + String AXIS2_NAMESPACE_PREFIX = "ns1"; public static final String SOLE_INPUT = "SOLE_INPUT"; Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/SchemaGenerator.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/SchemaGenerator.java?rev=633048&r1=633047&r2=633048&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/SchemaGenerator.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/java2wsdl/SchemaGenerator.java Mon Mar 3 03:58:15 2008 @@ -54,4 +54,13 @@ void setNonRpcMethods(ArrayList nonRpcMethods); void setAxisService(AxisService service); + + String getCustomScheamLocation(); + + + void setCustomScheamLocation(String customScheamLocation); + + String getMappingFileLocation() ; + + void setMappingFileLocation(String mappingFileLocation) ; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]