1 package org.objectweb.celtix.tools; 2 3 import java.io.File ; 4 import java.util.HashSet ; 5 import java.util.Set ; 6 7 import org.objectweb.celtix.common.i18n.Message; 8 import org.objectweb.celtix.tools.common.ProcessorEnvironment; 9 import org.objectweb.celtix.tools.common.ToolConstants; 10 import org.objectweb.celtix.tools.common.ToolException; 11 import org.objectweb.celtix.tools.common.toolspec.ToolRunner; 12 import org.objectweb.celtix.tools.common.toolspec.ToolSpec; 13 import org.objectweb.celtix.tools.common.toolspec.parser.BadUsageException; 14 import org.objectweb.celtix.tools.common.toolspec.parser.CommandDocument; 15 import org.objectweb.celtix.tools.common.toolspec.parser.ErrorVisitor; 16 import org.objectweb.celtix.tools.processors.wsdl2.WSDLToSoapProcessor; 17 18 public class WSDLToSoap extends AbstractCeltixToolContainer { 19 20 static final String TOOL_NAME = "wsdl2soap"; 21 static final String BINDING_NAME_POSFIX = "_Binding"; 22 static final String STYLE_DEF_VALUE = "document"; 23 static final String USE_DEF_VALUE = "literal"; 24 25 private static String [] args; 26 27 public WSDLToSoap(ToolSpec toolspec) throws Exception { 28 super(TOOL_NAME, toolspec); 29 } 30 31 private Set getArrayKeys() { 32 return new HashSet <String >(); 33 } 34 35 public void execute(boolean exitOnFinish) { 36 WSDLToSoapProcessor processor = new WSDLToSoapProcessor(); 37 try { 38 super.execute(exitOnFinish); 39 if (!hasInfoOption()) { 40 ProcessorEnvironment env = new ProcessorEnvironment(); 41 env.setParameters(getParametersMap(getArrayKeys())); 42 if (isVerboseOn()) { 43 env.put(ToolConstants.CFG_VERBOSE, Boolean.TRUE); 44 } 45 env.put(ToolConstants.CFG_CMD_ARG, args); 46 47 validate(env); 48 setEnvParamDefValues(env); 49 50 processor.setEnvironment(env); 51 processor.process(); 52 } 53 } catch (ToolException ex) { 54 System.err.println("Error : " + ex.getMessage()); 55 if (ex.getCause() instanceof BadUsageException) { 56 getInstance().printUsageException(TOOL_NAME, (BadUsageException)ex.getCause()); 57 } 58 System.err.println(); 59 if (isVerboseOn()) { 60 ex.printStackTrace(); 61 } 62 } catch (Exception ex) { 63 System.err.println("Error : " + ex.getMessage()); 64 System.err.println(); 65 if (isVerboseOn()) { 66 ex.printStackTrace(); 67 } 68 } 69 } 70 71 private void setEnvParamDefValues(ProcessorEnvironment env) { 72 if (!env.optionSet(ToolConstants.CFG_BINDING)) { 73 env.put(ToolConstants.CFG_BINDING, env.get(ToolConstants.CFG_PORTTYPE) + BINDING_NAME_POSFIX); 74 } 75 if (!env.optionSet(ToolConstants.CFG_STYLE)) { 76 env.put(ToolConstants.CFG_STYLE, STYLE_DEF_VALUE); 77 } 78 if (!env.optionSet(ToolConstants.CFG_USE)) { 79 env.put(ToolConstants.CFG_USE, USE_DEF_VALUE); 80 } 81 } 82 83 private void validate(ProcessorEnvironment env) throws ToolException { 84 String outdir = (String )env.get(ToolConstants.CFG_OUTPUTDIR); 85 if (outdir != null) { 86 File dir = new File (outdir); 87 if (!dir.exists()) { 88 Message msg = new Message("DIRECTORY_NOT_EXIST", LOG, outdir); 89 throw new ToolException(msg); 90 } 91 if (!dir.isDirectory()) { 92 Message msg = new Message("NOT_A_DIRECTORY", LOG, outdir); 93 throw new ToolException(msg); 94 } 95 } 96 } 97 98 public static void main(String [] pargs) { 99 args = pargs; 100 try { 101 ToolRunner.runTool(WSDLToSoap.class, 102 WSDLToSoap.class.getResourceAsStream(ToolConstants.TOOLSPECS_BASE 103 + "wsdl2soap.xml"), 104 false, 105 args); 106 } catch (BadUsageException ex) { 107 getInstance().printUsageException(TOOL_NAME, ex); 108 } catch (Exception ex) { 109 System.err.println("Error : " + ex.getMessage()); 110 System.err.println(); 111 ex.printStackTrace(); 112 } 113 } 114 115 public void checkParams(ErrorVisitor errors) throws ToolException { 116 CommandDocument doc = super.getCommandDocument(); 117 118 if (!doc.hasParameter("wsdlurl")) { 119 errors.add(new ErrorVisitor.UserError("WSDL/SCHEMA URL has to be specified")); 120 } 121 if (errors.getErrors().size() > 0) { 122 Message msg = new Message("PARAMETER_MISSING", LOG); 123 throw new ToolException(msg, new BadUsageException(getUsage(), errors)); 124 } 125 } 126 127 } 128 | Popular Tags |