* @throws IOException
*/
public void handleJavaToWSDLGeneration(Configuration config, String outDir) throws IOException
{
JavaToWSDLConfig j2wc = config.getJavaToWSDLConfig(false);
JavaToWSDL jwsdl = new JavaToWSDL(Constants.NS_WSDL11);
jwsdl.setServiceName(j2wc.serviceName);
jwsdl.setTargetNamespace(j2wc.targetNamespace);
jwsdl.setTypeNamespace(j2wc.typeNamespace);
jwsdl.setOperationMap(j2wc.operations);
if ("document".equals(j2wc.wsdlStyle))
jwsdl.setStyle(Style.DOCUMENT);
else if ("rpc".equals(j2wc.wsdlStyle))
jwsdl.setStyle(Style.RPC);
else throw new WSException("Unrecognized Style:" + j2wc.wsdlStyle);
if ("wrapped".equals(j2wc.parameterStyle))
jwsdl.setParameterStyle(ParameterStyle.WRAPPED);
else if ("bare".equals(j2wc.parameterStyle))
jwsdl.setParameterStyle(ParameterStyle.BARE);
else throw new WSException("Unrecognized Parameter Style:" + j2wc.parameterStyle);
Class endpointClass = loadClass(j2wc.endpointName);
if (endpointClass == null)
throw new WSException("Endpoint " + j2wc.endpointName + " cannot be loaded");
//Take care of passing global config details
GlobalConfig gcfg = config.getGlobalConfig(false);
if (gcfg != null)
{
if (gcfg.packageNamespaceMap != null)
jwsdl.setPackageNamespaceMap(gcfg.packageNamespaceMap);
}
WSDLDefinitions wsdl = jwsdl.generate(endpointClass);
//Create the WSDL Directory
createDir(outDir + "/wsdl");
String wsdlPath = outDir + "/wsdl/" + j2wc.serviceName + ".wsdl";
//Generate the WSDL
Writer fw = IOUtils.getCharsetFileWriter(new File(wsdlPath), Constants.DEFAULT_XML_CHARSET);
new WSDLWriter(wsdl).write(fw, Constants.DEFAULT_XML_CHARSET);
fw.close();
//Generate the Mapping File
if (j2wc.mappingFileNeeded)
{
UnifiedMetaData unifiedMetaData = jwsdl.getUnifiedMetaData();
JavaWsdlMapping mapping = jwsdl.getJavaWsdlMapping();
createWrapperTypes(j2wc, outDir, unifiedMetaData, mapping, endpointClass);
Writer writer = IOUtils.getCharsetFileWriter(new File(outDir + "/" + j2wc.mappingFileName), Constants.DEFAULT_XML_CHARSET);
writer.write(Constants.XML_HEADER);
writer.write(DOMWriter.printNode(DOMUtils.parse(mapping.serialize()), true));