KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > tools > WSDLToJava


1 package org.objectweb.celtix.tools;
2
3 import java.io.File JavaDoc;
4 import java.util.HashSet JavaDoc;
5 import java.util.Iterator JavaDoc;
6 import java.util.Properties JavaDoc;
7 import java.util.Set JavaDoc;
8
9 import org.objectweb.celtix.common.i18n.Message;
10 import org.objectweb.celtix.tools.common.ProcessorEnvironment;
11 import org.objectweb.celtix.tools.common.ToolConstants;
12 import org.objectweb.celtix.tools.common.ToolException;
13 import org.objectweb.celtix.tools.common.toolspec.ToolRunner;
14 import org.objectweb.celtix.tools.common.toolspec.ToolSpec;
15 import org.objectweb.celtix.tools.common.toolspec.parser.BadUsageException;
16 import org.objectweb.celtix.tools.common.toolspec.parser.CommandDocument;
17 import org.objectweb.celtix.tools.common.toolspec.parser.ErrorVisitor;
18 import org.objectweb.celtix.tools.processors.wsdl2.WSDLToJavaProcessor;
19
20 public class WSDLToJava extends AbstractCeltixToolContainer {
21     
22     private static final String JavaDoc TOOL_NAME = "wsdl2java";
23     private static String JavaDoc[] args;
24
25     public WSDLToJava(ToolSpec toolspec) throws Exception JavaDoc {
26         super(TOOL_NAME, toolspec);
27     }
28
29     private Set JavaDoc getArrayKeys() {
30         Set JavaDoc<String JavaDoc> set = new HashSet JavaDoc<String JavaDoc>();
31         set.add(ToolConstants.CFG_BINDING);
32         set.add(ToolConstants.CFG_PACKAGENAME);
33         set.add(ToolConstants.CFG_NEXCLUDE);
34         return set;
35     }
36     
37     public void execute(boolean exitOnFinish) {
38         WSDLToJavaProcessor processor = new WSDLToJavaProcessor();
39         try {
40             super.execute(exitOnFinish);
41             if (!hasInfoOption()) {
42                 ProcessorEnvironment env = new ProcessorEnvironment();
43                 env.setParameters(getParametersMap(getArrayKeys()));
44                 if (env.get(ToolConstants.CFG_OUTPUTDIR) == null) {
45                     env.put(ToolConstants.CFG_OUTPUTDIR, ".");
46                 }
47
48                 if (env.containsKey(ToolConstants.CFG_ANT)) {
49                     setAntProperties(env);
50                     setLibraryReferences(env);
51                 }
52
53                 if (isVerboseOn()) {
54                     env.put(ToolConstants.CFG_VERBOSE, Boolean.TRUE);
55                 }
56                 env.put(ToolConstants.CFG_CMD_ARG, args);
57
58                 validate(env);
59                 loadDefaultNSPackageMapping(env);
60                 setPackageAndNamespaces(env);
61                 setExcludePackageAndNamespaces(env);
62                 
63                 processor.setEnvironment(env);
64                 processor.process();
65             }
66         } catch (ToolException ex) {
67             System.err.println("Error : " + ex.getMessage());
68             if (ex.getCause() instanceof BadUsageException) {
69                 getInstance().printUsageException(TOOL_NAME, (BadUsageException)ex.getCause());
70             }
71             System.err.println();
72             if (isVerboseOn()) {
73                 ex.printStackTrace();
74             }
75         } catch (Exception JavaDoc ex) {
76             System.err.println("Error : " + ex.getMessage());
77             System.err.println();
78             if (isVerboseOn()) {
79                 ex.printStackTrace();
80             }
81         }
82     }
83
84     private void loadDefaultNSPackageMapping(ProcessorEnvironment env) {
85         if (env.getBooleanValue(ToolConstants.CFG_DEFAULT_NS, "true")) {
86             env.loadDefaultNS2Pck();
87         }
88         if (env.getBooleanValue(ToolConstants.CFG_DEFAULT_EX, "true")) {
89             env.loadDefaultExcludes();
90         }
91     }
92
93
94     private void setExcludePackageAndNamespaces(ProcessorEnvironment env) {
95         if (env.get(ToolConstants.CFG_NEXCLUDE) != null) {
96             String JavaDoc[] pns = (String JavaDoc[])env.get(ToolConstants.CFG_NEXCLUDE);
97             for (int j = 0; j < pns.length; j++) {
98                 int pos = pns[j].indexOf("=");
99                 String JavaDoc excludePackagename = pns[j];
100                 if (pos != -1) {
101                     String JavaDoc ns = pns[j].substring(0, pos);
102                     excludePackagename = pns[j].substring(pos + 1);
103                     env.addExcludeNamespacePackageMap(ns, excludePackagename);
104                 } else {
105                     env.addExcludeNamespacePackageMap(pns[j], null);
106                 }
107             }
108         }
109     }
110     
111     private void setPackageAndNamespaces(ProcessorEnvironment env) {
112         if (env.get(ToolConstants.CFG_PACKAGENAME) != null) {
113             String JavaDoc[] pns = (String JavaDoc[])env.get(ToolConstants.CFG_PACKAGENAME);
114             for (int j = 0; j < pns.length; j++) {
115                 int pos = pns[j].indexOf("=");
116                 String JavaDoc packagename = pns[j];
117                 if (pos != -1) {
118                     String JavaDoc ns = pns[j].substring(0, pos);
119                     packagename = pns[j].substring(pos + 1);
120                     env.addNamespacePackageMap(ns, packagename);
121                 } else {
122                     env.setPackageName(packagename);
123                 }
124             }
125         }
126     }
127
128     private void validate(ProcessorEnvironment env) throws ToolException {
129         String JavaDoc outdir = (String JavaDoc)env.get(ToolConstants.CFG_OUTPUTDIR);
130         if (outdir != null) {
131             File JavaDoc dir = new File JavaDoc(outdir);
132             if (!dir.exists()) {
133                 Message msg = new Message("DIRECTORY_NOT_EXIST", LOG, outdir);
134                 throw new ToolException(msg);
135             }
136             if (!dir.isDirectory()) {
137                 Message msg = new Message("NOT_A_DIRECTORY", LOG, outdir);
138                 throw new ToolException(msg);
139             }
140         }
141
142         if (env.containsKey(ToolConstants.CFG_BINDING)) {
143             String JavaDoc[] bindings = (String JavaDoc[])env.get(ToolConstants.CFG_BINDING);
144             for (int i = 0; i < bindings.length; i++) {
145                 File JavaDoc binding = new File JavaDoc(bindings[i]);
146                 if (!binding.exists()) {
147                     Message msg = new Message("FILE_NOT_EXIST", LOG, binding);
148                     throw new ToolException(msg);
149                 } else if (binding.isDirectory()) {
150                     Message msg = new Message("NOT_A_FILE", LOG, binding);
151                     throw new ToolException(msg);
152                 }
153             }
154         }
155         
156         if (!env.optionSet(ToolConstants.CFG_EXTRA_SOAPHEADER)) {
157             env.put(ToolConstants.CFG_EXTRA_SOAPHEADER, "false");
158         }
159         
160         if (env.optionSet(ToolConstants.CFG_COMPILE)) {
161             String JavaDoc clsdir = (String JavaDoc)env.get(ToolConstants.CFG_CLASSDIR);
162             if (clsdir != null) {
163                 File JavaDoc dir = new File JavaDoc(clsdir);
164                 if (!dir.exists()) {
165                     Message msg = new Message("DIRECTORY_NOT_EXIST", LOG, clsdir);
166                     throw new ToolException(msg);
167                 }
168             }
169         }
170     }
171
172     protected void setAntProperties(ProcessorEnvironment env) {
173         String JavaDoc installDir = System.getProperty("install.dir");
174         if (installDir != null) {
175             env.put(ToolConstants.CFG_INSTALL_DIR, installDir);
176         } else {
177             env.put(ToolConstants.CFG_INSTALL_DIR, ".");
178         }
179     }
180
181     protected void setLibraryReferences(ProcessorEnvironment env) {
182         Properties JavaDoc props = loadProperties("wsdltojavalib.properties");
183         if (props != null) {
184             for (Iterator JavaDoc keys = props.keySet().iterator(); keys.hasNext();) {
185                 String JavaDoc key = (String JavaDoc)keys.next();
186                 env.put(key, props.get(key));
187             }
188         }
189         env.put(ToolConstants.CFG_ANT_PROP, props);
190     }
191
192     public static void main(String JavaDoc[] pargs) {
193         args = pargs;
194
195         try {
196             ToolRunner.runTool(WSDLToJava.class,
197                                WSDLToJava.class.getResourceAsStream(ToolConstants.TOOLSPECS_BASE
198                                                                     + "wsdl2java.xml"),
199                                false,
200                                args);
201         } catch (BadUsageException ex) {
202             getInstance().printUsageException(TOOL_NAME, ex);
203         } catch (Exception JavaDoc ex) {
204             System.err.println("Error : " + ex.getMessage());
205             System.err.println();
206             ex.printStackTrace();
207         }
208     }
209
210     public void checkParams(ErrorVisitor errors) throws ToolException {
211         CommandDocument doc = super.getCommandDocument();
212
213         if (!doc.hasParameter("wsdlurl")) {
214             errors.add(new ErrorVisitor.UserError("WSDL/SCHEMA URL has to be specified"));
215         }
216         if (errors.getErrors().size() > 0) {
217             Message msg = new Message("PARAMETER_MISSING", LOG);
218             throw new ToolException(msg, new BadUsageException(getUsage(), errors));
219         }
220     }
221 }
222
Popular Tags