You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2001/10/24 20:45:56 UTC
cvs commit: xml-axis/java/src/org/apache/axis/wsdl Wsdl2java.java TypeFactory.java TestCaseEmitter.java Emitter.java
butek 01/10/24 11:45:56
Modified: java/src/org/apache/axis/wsdl Wsdl2java.java
TypeFactory.java TestCaseEmitter.java Emitter.java
Log:
Step 2 in fixing namespaces and imports: implement option --NStoPkg and change
everything to use the new namespace/package mapping.
Revision Changes Path
1.17 +15 -11 xml-axis/java/src/org/apache/axis/wsdl/Wsdl2java.java
Index: Wsdl2java.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Wsdl2java.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- Wsdl2java.java 2001/10/16 19:23:35 1.16
+++ Wsdl2java.java 2001/10/24 18:45:56 1.17
@@ -59,6 +59,7 @@
import org.apache.avalon.excalibur.cli.CLOptionDescriptor;
import org.apache.avalon.excalibur.cli.CLUtil;
+import java.util.HashMap;
import java.util.List;
/**
@@ -72,7 +73,7 @@
protected static final int VERBOSE_OPT = 'v';
protected static final int MESSAGECONTEXT_OPT = 'm';
protected static final int SKELETON_OPT = 's';
- protected static final int PACKAGE_OPT = 'p';
+ protected static final int NAMESPACE_OPT = 'N';
protected static final int OUTPUT_OPT = 'o';
protected static final int SCOPE_OPT = 'd';
protected static final int TEST_OPT = 't';
@@ -104,10 +105,10 @@
CLOptionDescriptor.ARGUMENT_DISALLOWED,
MESSAGECONTEXT_OPT,
"emit a MessageContext parameter to skeleton methods"),
- new CLOptionDescriptor("package",
- CLOptionDescriptor.ARGUMENT_REQUIRED,
- PACKAGE_OPT,
- "package to put emitted files in"),
+ new CLOptionDescriptor("NStoPkg",
+ CLOptionDescriptor.ARGUMENTS_REQUIRED_2,
+ NAMESPACE_OPT,
+ "mapping of namespace to package"),
new CLOptionDescriptor("output",
CLOptionDescriptor.ARGUMENT_REQUIRED,
OUTPUT_OPT,
@@ -134,6 +135,7 @@
boolean bMessageContext = false;
boolean bTestClass = false;
String wsdlURI = null;
+ HashMap namespaceMap = new HashMap();
// Parse the arguments
CLArgsParser parser = new CLArgsParser(args, options);
@@ -183,12 +185,10 @@
emitter.generateMessageContext(true);
break;
- case PACKAGE_OPT:
- String packageName = option.getArgument();
- if (packageName == null)
- emitter.generatePackageName(true);
- else
- emitter.setPackageName(packageName);
+ case NAMESPACE_OPT:
+ String namespace = option.getArgument(0);
+ String packageName = option.getArgument(1);
+ namespaceMap.put(namespace, packageName);
break;
case OUTPUT_OPT:
@@ -230,6 +230,10 @@
}
if (wsdlURI == null) {
printUsage();
+ }
+
+ if (!namespaceMap.isEmpty()) {
+ emitter.setNamespaceMap(namespaceMap);
}
emitter.emit(wsdlURI);
1.9 +4 -15 xml-axis/java/src/org/apache/axis/wsdl/TypeFactory.java
Index: TypeFactory.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/TypeFactory.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- TypeFactory.java 2001/10/23 21:04:54 1.8
+++ TypeFactory.java 2001/10/24 18:45:56 1.9
@@ -72,18 +72,17 @@
*/
public class TypeFactory {
- private HashMap types; // All Types
- private HashMap mapNamespaceToPackage; // Mapping from Namespace to Java Package
- private HashMap mapPackageToNamespace; // Mapping from Java Package to Namespace
+ private HashMap types; // All Types
+ private Namespaces mapNamespaceToPackage; // Mapping from Namespace to Java Package
private static int nameSpaceSuffix = 1;
private String nameSpacePrefix = null;
/**
* Create an Emit Type Factory
*/
- public TypeFactory() {
+ public TypeFactory(Namespaces namespaces) {
types = new HashMap();
- mapNamespaceToPackage = new HashMap();
+ mapNamespaceToPackage = namespaces;
}
/**
@@ -114,16 +113,6 @@
*/
public void buildTypes(Document doc) {
addTypes(doc, false);
- }
-
-
- private String getPackageNamespace(String pkgName) {
- String nsPrefix = (String)mapPackageToNamespace.get(pkgName);
- if (nsPrefix == null) {
- nsPrefix = "ns" + nameSpaceSuffix++;
- mapPackageToNamespace.put(pkgName, nsPrefix);
- }
- return nsPrefix;
}
/**
1.10 +7 -28 xml-axis/java/src/org/apache/axis/wsdl/TestCaseEmitter.java
Index: TestCaseEmitter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/TestCaseEmitter.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- TestCaseEmitter.java 2001/10/18 14:36:59 1.9
+++ TestCaseEmitter.java 2001/10/24 18:45:56 1.10
@@ -68,7 +68,7 @@
* generated stubs.
*
* @author <a href="bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.9 $ $Date: 2001/10/18 14:36:59 $
+ * @version CVS $Revision: 1.10 $ $Date: 2001/10/24 18:45:56 $
*/
public class TestCaseEmitter {
@@ -81,45 +81,23 @@
private final PrintWriter writer;
private final String className;
- private final String packageName;
private final Emitter emitter;
private int state = IMPORTS;
- public TestCaseEmitter(PrintWriter testCase, String packageName, String className, Emitter emit) {
+ public TestCaseEmitter(PrintWriter testCase, String className, Emitter emit) {
this.emitter = emit;
this.writer = testCase;
this.className = className;
- if (packageName == null) {
- this.packageName = null;
- } else {
- this.packageName = packageName;
- }
- this.initFile();
}
-
- private final void initFile() {
- if (this.packageName != null) {
- writer.print("package ");
- writer.print(this.packageName);
- writer.println(";");
- }
- writer.println();
- }
-
- public final void writeHeader(String filename) {
+ public final void writeHeader(String filename, String namespace) {
if (this.state > IMPORTS) {
throw new IllegalStateException("You cannot write the header now!");
}
+ emitter.writeFileHeader(filename, namespace, writer);
this.state = HEADER;
- writer.println("/**");
- writer.print(" * ");
- writer.println(filename);
- writer.println(" *");
- writer.println(" * This file was auto-generated from WSDL");
- writer.println(" * by the Apache Axis Wsdl2java emitter.");
- writer.println(" */");
+
writer.print("public class ");
writer.print(this.className);
writer.println(" extends junit.framework.TestCase {");
@@ -182,7 +160,8 @@
while (ops.hasNext()) {
writer.println(" try {");
Operation op = (Operation) ops.next();
- Emitter.Parameters params = this.emitter.parameters(op);
+ String namespace = (String) emitter.getNamespaces().get(port.getQName().getNamespaceURI());
+ Emitter.Parameters params = this.emitter.parameters(op, namespace);
if ( !"void".equals( params.returnType ) ) {
writer.print(INDENT);
1.77 +88 -340 xml-axis/java/src/org/apache/axis/wsdl/Emitter.java
Index: Emitter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Emitter.java,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- Emitter.java 2001/10/24 16:53:08 1.76
+++ Emitter.java 2001/10/24 18:45:56 1.77
@@ -121,7 +121,6 @@
private boolean bMessageContext = false;
private boolean bEmitTestCase = false;
private boolean bVerbose = false;
- private boolean bGeneratePackageName = true;
private boolean bGenerateImports = true;
private String packageName = null;
private String packageDirName = "";
@@ -129,9 +128,10 @@
private byte scope = NO_EXPLICIT_SCOPE;
private ArrayList classList = new ArrayList();
private ArrayList fileList = new ArrayList();
+ private Namespaces namespaces = null;
+ private HashMap delaySetMap = null;
+ private TypeFactory emitFactory = null;
- private TypeFactory emitFactory = new TypeFactory();
-
private HashMap portTypesInfo = null;
/**
@@ -149,12 +149,10 @@
this.bMessageContext = that.bMessageContext;
this.bEmitTestCase = that.bEmitTestCase;
this.bVerbose = that.bVerbose;
- this.bGeneratePackageName = that.bGeneratePackageName;
this.bGenerateImports = that.bGenerateImports;
-// this.packageName = that.packageName;
-// this.packageDirName = that.packageDirName;
this.outputDir = that.outputDir;
this.scope = that.scope;
+ this.namespaces = that.namespaces;
this.emitFactory = that.emitFactory;
this.portTypesInfo = that.portTypesInfo;
} // ctor
@@ -182,7 +180,11 @@
try {
WSDLReader reader = new WSDLReader();
def = reader.readWSDL(null, doc);
- setup();
+ namespaces = new Namespaces(outputDir);
+ if (delaySetMap != null) {
+ namespaces.putAll(delaySetMap);
+ }
+ emitFactory = new TypeFactory(namespaces);
emit(def, doc);
}
catch (Throwable t) {
@@ -195,17 +197,6 @@
this.def = def;
this.doc = doc;
- if (def != null) {
- // Generate package name if desired
- if (packageName == null && bGeneratePackageName) {
- makePackageName();
- }
- emitFactory.map(def.getTargetNamespace(), packageName);
- }
- else {
- emitFactory.map(doc.getNamespaceURI(), packageName);
- }
-
// Generate types from doc
if (doc != null) {
emitFactory.buildTypes(doc);
@@ -250,30 +241,11 @@
// Output deploy.xml and undeploy.xml
if (bEmitSkeleton) {
- writeDeploymentXML();
+ writeDeploymentXML(def.getTargetNamespace());
}
}
} // emit
- /**
- * Set up the emitter variables: packageName, wsdlAttr, output directory, etc.
- */
- private void setup() {
- // Make sure the directory that the files will go into exists
- File outputFile = null;
- if (outputDir == null) {
- outputFile = new File(packageDirName);
- } else {
- outputFile = new File(outputDir, packageDirName);
- }
- outputFile.mkdirs();
-
- if (bVerbose && packageName != null) {
- System.out.println("Using package name: " + packageName);
- }
-
- } // setup
-
///////////////////////////////////////////////////
//
// Command line switches
@@ -319,32 +291,8 @@
this.bVerbose = value;
}
- /**
- * Turn on/off automatic package name generation
- */
- public void generatePackageName(boolean generatePackageName) {
- this.bGeneratePackageName = generatePackageName;
- }
-
- /**
- * Set the package name to use in emitted source files
- */
- public void setPackageName(String packageName) {
- this.packageName = packageName;
- this.packageDirName = getPackageDir();
- }
-
- private String getPackageDir() {
- String value = (packageName == null ? "" : packageName.replace('.', File.separatorChar));
- if("".equals(value))
- return value;
- else {
- return value + File.separatorChar;
- }
- } // getPackageDir
-
public void setNamespaceMap(HashMap map) {
- emitFactory.setNamespaceMap(map);
+ delaySetMap = map;
}
@@ -508,22 +456,11 @@
* Generate the interface for the given port type.
*/
private HashMap writePortType(PortType portType) throws IOException {
- String nameValue = xmlNameToJava(portType.getQName().getLocalPart());
- String fileName = nameValue + ".java";
-
- this.fileList.add(packageDirName + fileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(nameValue);
- } else {
- this.classList.add(packageName + "." + nameValue);
- }
+ QName portTypeQName = portType.getQName();
+ PrintWriter interfacePW = printWriter(portTypeQName, null, "java", "Generating portType interface: ");
+ String nameValue = xmlNameToJava(portTypeQName.getLocalPart());
- PrintWriter interfacePW = printWriter (fileName);
- if (bVerbose)
- System.out.println("Generating portType interface: " + fileName);
-
- writeFileHeader(fileName, interfacePW);
+ writeFileHeader(nameValue + ".java", namespaces.getCreate(portTypeQName.getNamespaceURI()), interfacePW);
interfacePW.println("public interface " + nameValue + " extends java.rmi.Remote {");
HashMap portTypeInfo = new HashMap();
@@ -531,7 +468,7 @@
for (int i = 0; i < operations.size(); ++i) {
Operation operation = (Operation) operations.get(i);
- Parameters operationInfo = writeOperation(operation, interfacePW);
+ Parameters operationInfo = writeOperation(operation, portType.getQName().getNamespaceURI(), interfacePW);
portTypeInfo.put(operation, operationInfo);
}
@@ -546,28 +483,18 @@
* Generate the server-side (Axis) interface for the given port type.
*/
private void writeAxisPortType(PortType portType) throws IOException {
- String nameValue = xmlNameToJava(portType.getQName().getLocalPart()) + "Axis";
- String fileName = nameValue + ".java";
+ QName portTypeQName = portType.getQName();
+ PrintWriter interfacePW = printWriter(portTypeQName, "Axis", "java", "Generating server-side PortType interface: ");
+ String nameValue = xmlNameToJava(portTypeQName.getLocalPart()) + "Axis";
- this.fileList.add(packageDirName + fileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(nameValue);
- } else {
- this.classList.add(packageName + "." + nameValue);
- }
-
- PrintWriter interfacePW = printWriter(fileName);
- if (bVerbose)
- System.out.println("Generating server-side PortType interface: " + fileName);
- writeFileHeader(fileName, interfacePW);
+ writeFileHeader(nameValue + ".java", namespaces.getCreate(portTypeQName.getNamespaceURI()), interfacePW);
interfacePW.println("public interface " + nameValue + " extends java.rmi.Remote {");
List operations = portType.getOperations();
for (int i = 0; i < operations.size(); ++i) {
Operation operation = (Operation) operations.get(i);
- Parameters operationInfo = writeOperationAxisSkelSignatures(operation, interfacePW);
+ Parameters operationInfo = writeOperationAxisSkelSignatures(operation, portType.getQName().getNamespaceURI(), interfacePW);
}
interfacePW.println("}");
@@ -647,7 +574,7 @@
* Rather than do that processing 3 times, it is done once, here, and stored in the
* Parameters object.
*/
- protected Parameters parameters(Operation operation) throws IOException {
+ protected Parameters parameters(Operation operation, String namespace) throws IOException {
Parameters parameters = new Parameters();
// The input and output Vectors, when filled in, will be of the form:
@@ -740,9 +667,9 @@
Iterator i = faults.values().iterator();
while (i.hasNext()) {
if (parameters.faultString == null)
- parameters.faultString = fault((Fault) i.next());
+ parameters.faultString = fault((Fault) i.next(), namespace);
else
- parameters.faultString = parameters.faultString + ", " + fault((Fault) i.next());
+ parameters.faultString = parameters.faultString + ", " + fault((Fault) i.next(), namespace);
}
if (parameters.returnType == null)
@@ -930,9 +857,9 @@
/**
* This method generates the interface signatures for the given operation.
*/
- private Parameters writeOperation(Operation operation, PrintWriter interfacePW) throws IOException {
+ private Parameters writeOperation(Operation operation, String namespace, PrintWriter interfacePW) throws IOException {
String name = operation.getName();
- Parameters parms = parameters(operation);
+ Parameters parms = parameters(operation, namespace);
writeComment(interfacePW, operation.getDocumentationElement());
interfacePW.println(parms.signature + ";");
@@ -943,9 +870,9 @@
/**
* This method generates the axis server side impl interface signatures operation.
*/
- private Parameters writeOperationAxisSkelSignatures(Operation operation, PrintWriter interfacePW) throws IOException {
+ private Parameters writeOperationAxisSkelSignatures(Operation operation, String namespace, PrintWriter interfacePW) throws IOException {
String name = operation.getName();
- Parameters parms = parameters(operation);
+ Parameters parms = parameters(operation, namespace);
interfacePW.println(parms.axisSignature + ";");
@@ -956,35 +883,12 @@
* This generates an exception class for the given fault and returns the capitalized name of
* the fault.
*/
- private String fault(Fault operation) throws IOException {
+ private String fault(Fault operation, String namespace) throws IOException {
String exceptionName = Utils.capitalize(xmlNameToJava(operation.getName()));
- String fileName = exceptionName + ".java";
-
- // check to make sure we haven't already emitted this fault
- if (packageName == null||packageName.trim().length()==0) {
- if ( this.classList.contains(exceptionName) ) {
- return exceptionName;
- }
- } else {
- if ( this.classList.contains(packageName + "." + exceptionName) ) {
- return exceptionName;
- }
- }
-
- this.fileList.add(packageDirName + fileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(exceptionName);
- } else {
- this.classList.add(packageName + "." + exceptionName);
- }
-
- PrintWriter pw = printWriter(fileName);
+ QName qname = new QName(namespace, exceptionName);
+ PrintWriter pw = printWriter(qname, null, "java", "Generating Fault class: ");
- if (bVerbose)
- System.out.println("Generating Fault class: " + fileName);
-
- writeFileHeader(fileName, pw);
+ writeFileHeader(exceptionName + ".java", namespaces.getCreate(namespace), pw);
pw.println("public class " + exceptionName + " extends Exception {");
Vector params = new Vector();
@@ -1042,11 +946,12 @@
* Generate a stub and a skeleton for the given binding tag.
*/
private void writeBinding(Binding binding, HashMap portTypeInfo) throws IOException {
+ QName bindingQName = binding.getQName();
if (portTypeInfo == null)
- throw new IOException("Emitter failure. Can't find interal classes for portType for binding " + binding.getQName());
+ throw new IOException("Emitter failure. Can't find interal classes for portType for binding " + bindingQName);
PortType portType = binding.getPortType();
- String name = xmlNameToJava(binding.getQName().getLocalPart());
+ String name = xmlNameToJava(bindingQName.getLocalPart());
String portTypeName = portType.getQName().getLocalPart();
boolean isRPC = true;
if (wsdlAttr.getBindingStyle(binding) == WsdlAttributes.STYLE_DOCUMENT) {
@@ -1054,21 +959,9 @@
}
String stubName = name + "Stub";
- String stubFileName = stubName + ".java";
-
- this.fileList.add(packageDirName + stubFileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(stubName);
- } else {
- this.classList.add(packageName + "." + stubName);
- }
-
- PrintWriter stubPW = printWriter(stubFileName);
- if (bVerbose)
- System.out.println("Generating client-side stub: " + stubFileName);
+ PrintWriter stubPW = printWriter(bindingQName, "Stub", "java", "Generating client-side stub: ");
- writeFileHeader(stubFileName, stubPW);
+ writeFileHeader(stubName + ".java", namespaces.getCreate(bindingQName.getNamespaceURI()), stubPW);
stubPW.println("public class " + stubName + " extends javax.xml.rpc.Stub implements " + portTypeName + " {");
stubPW.println(" private org.apache.axis.client.Service service = null ;");
stubPW.println(" private org.apache.axis.client.Call call = null ;");
@@ -1141,26 +1034,15 @@
if (bEmitSkeleton) {
String skelName = name + "Skeleton";
- String skelFileName = skelName + ".java";
- this.fileList.add(packageDirName + skelFileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(skelName);
- } else {
- this.classList.add(packageName + "." + skelName);
- }
-
- skelPW = printWriter(skelFileName);
+ skelPW = printWriter(bindingQName, "Skeleton", "java", "Generating server-side skeleton: ");
String implType = portTypeName + " impl";
String implName = name + "Impl";
- if (bVerbose)
- System.out.println("Generating server-side skeleton: " + skelFileName);
if (bMessageContext) {
implType = portTypeName + "Axis impl";
}
- writeFileHeader(skelFileName, skelPW);
+ writeFileHeader(skelName + ".java", namespaces.getCreate(bindingQName.getNamespaceURI()), skelPW);
skelPW.println("public class " + skelName + " {");
skelPW.println(" private " + implType + ";");
skelPW.println();
@@ -1176,19 +1058,9 @@
String implFileName = implName + ".java";
- this.fileList.add(packageDirName + implFileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(implName);
- } else {
- this.classList.add(packageName + "." + implName);
- }
-
- if (!fileExists (implFileName)) {
- implPW = printWriter(implFileName);
- if (bVerbose)
- System.out.println("Generating server-side impl template: " + implFileName);
- writeFileHeader(implFileName, implPW);
+ if (!fileExists (implFileName, bindingQName.getNamespaceURI())) {
+ implPW = printWriter(bindingQName, "Impl", "java", "Generating server-side impl template: ");
+ writeFileHeader(implFileName, namespaces.getCreate(bindingQName.getNamespaceURI()), implPW);
implPW.print("public class " + implName + " implements " + portTypeName);
if (bMessageContext) {
implPW.print("Axis");
@@ -1527,50 +1399,20 @@
* Write out a single service class
*/
private void writeService(Service service) throws IOException {
- String serviceName = xmlNameToJava(service.getQName().getLocalPart());
- String fileName = serviceName + ".java";
-
- this.fileList.add(packageDirName + fileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(serviceName);
- } else {
- this.classList.add(packageName + "." + serviceName);
- }
+ QName serviceQName = service.getQName();
+ String serviceName = xmlNameToJava(serviceQName.getLocalPart());
+ PrintWriter servicePW = printWriter(serviceQName, null, "java", "Generating service class: ");
- PrintWriter servicePW = printWriter(fileName);
TestCaseEmitter testFactory = null;
-
- if (this.bVerbose) {
- System.out.println("Generating service class: " + fileName);
- }
-
if (this.bEmitTestCase) {
- String testCase = serviceName + "TestCase";
- String testCaseFileName = testCase + ".java";
-
- this.fileList.add(packageDirName + testCaseFileName);
-
- if (packageName == null||packageName.trim().length()==0) {
- this.classList.add(testCase);
- } else {
- this.classList.add(packageName + "." + testCase);
- }
-
- testFactory = new TestCaseEmitter(this.printWriter(testCaseFileName),
- this.packageName,
- testCase,
- this);
-
- if (this.bVerbose) {
- System.out.println("Generating service test class: " + serviceName + "TestCase.java");
- }
+ String className = serviceName = "TestCase";
+ testFactory = new TestCaseEmitter(printWriter(serviceQName, "TestCase", "java", "Generating service test class: "), className, this);
- testFactory.writeHeader(serviceName + "TestCase.java");
+ testFactory.writeHeader(className, serviceQName.getNamespaceURI());
testFactory.writeInitCode();
}
- writeFileHeader(fileName, servicePW);
+ writeFileHeader(serviceName + ".java", namespaces.getCreate(serviceQName.getNamespaceURI()), servicePW);
// declare class
servicePW.println("public class " + serviceName + " {");
@@ -1682,27 +1524,14 @@
* Generate the deployment descriptor and undeployment descriptor
* for the current WSDL file
*/
- private void writeDeploymentXML() {
+ private void writeDeploymentXML(String namespace) {
try {
- PrintWriter deployPW = printWriter("deploy.xml");
- if(packageDirName == null || packageDirName.trim().length()==0)
- this.fileList.add("deploy.xml");
- else
- this.fileList.add(packageDirName + "deploy.xml");
-
- if (bVerbose) {
- System.out.println("Generating deployment document: deploy.xml");
- }
+ QName dummyQName = new QName(namespace, "deploy");
+ PrintWriter deployPW = printWriter(dummyQName, null, "xml", "Generating deployment document: ");
initializeDeploymentDoc(deployPW, "deploy");
- PrintWriter undeployPW = printWriter("undeploy.xml");
- if(packageDirName == null || packageDirName.trim().length()==0)
- this.fileList.add("undeploy.xml");
- else
- this.fileList.add(packageDirName + "undeploy.xml");
- if (bVerbose) {
- System.out.println("Generating deployment document: undeploy.xml");
- }
+ dummyQName = new QName(namespace, "undeploy");
+ PrintWriter undeployPW = printWriter(dummyQName, null, "xml", "Generating deployment document: ");
initializeDeploymentDoc(undeployPW, "undeploy");
writeDeployServices(deployPW, undeployPW);
writeDeployTypes(deployPW);
@@ -1833,15 +1662,11 @@
* Write out deployment instructions for given WSDL binding
*/
private void writeDeployBinding(PrintWriter deployPW, Binding binding) throws IOException {
- if (packageName == null||packageName.trim().length()==0) {
- deployPW.println(" <option name=\"className\" value=\""
- + binding.getQName().getLocalPart() + "Skeleton" + "\"/>");
- }
- else {
- deployPW.println(" <option name=\"className\" value=\""
- + packageName + "."
- + binding.getQName().getLocalPart() + "Skeleton" + "\"/>");
- }
+ QName bindingQName = binding.getQName();
+ String packageName = namespaces.getCreate(bindingQName.getNamespaceURI());
+ deployPW.println(" <option name=\"className\" value=\""
+ + packageName + "."
+ + bindingQName.getLocalPart() + "Skeleton" + "\"/>");
String methodList = "";
Iterator operationsIterator = binding.getBindingOperations().iterator();
@@ -1918,22 +1743,10 @@
}
String javaName = type.getJavaLocalName();
- String fileName = javaName + ".java";
- if (type.getJavaPackageName() == null||type.getJavaPackageName().trim().length()==0) {
- this.classList.add(javaName);
- this.fileList.add(fileName);
- } else {
- String complexJavaName = type.getJavaPackageName() + "." + javaName;
- this.classList.add(complexJavaName);
- this.fileList.add(complexJavaName.replace('.','/')+".java");
- }
- PrintWriter typePW = printWriter(fileName, type.getJavaPackageName());
+ PrintWriter typePW = printWriter(type.getQName(), null, "java", "Generating type implementation: ");
- if (bVerbose)
- System.out.println("Generating type implementation: " + fileName);
-
- writeFileHeader(fileName, type.getJavaPackageName(), typePW);
+ writeFileHeader(javaName + ".java", type.getJavaPackageName(), typePW);
typePW.println("public class " + javaName + " implements java.io.Serializable {");
for (int i = 0; i < elements.size(); i += 2) {
@@ -2003,23 +1816,10 @@
String baseType = ((Type) values.get(0)).getJavaName();
String javaName = eType.getJavaLocalName();
-
- String fileName = javaName + ".java";
-
- if (eType.getJavaPackageName() == null||eType.getJavaPackageName().trim().length()==0) {
- this.classList.add(javaName);
- this.fileList.add(fileName);
- } else {
- String enumJavaName = eType.getJavaPackageName() + "." + javaName;
- this.classList.add(enumJavaName);
- this.fileList.add(enumJavaName.replace('.','/')+".java");
- }
- PrintWriter typePW = printWriter(fileName, eType.getJavaPackageName());
- if (bVerbose)
- System.out.println("Generating enum type implementation: " + fileName);
+ PrintWriter typePW = printWriter(eType.getQName(), null, "java", "Generating enum type implementation: ");
- writeFileHeader(fileName, eType.getJavaPackageName(), typePW);
+ writeFileHeader(javaName + ".java", eType.getJavaPackageName(), typePW);
typePW.println("public class " + javaName + " implements java.io.Serializable {");
for (int i=1; i < values.size(); i++) {
typePW.println(" public static final " + baseType + " _" + values.get(i)
@@ -2036,23 +1836,10 @@
private void writeHolder(Type type) throws IOException {
Node node = type.getNode();
String javaName = type.getJavaLocalName();
-
- String fileName = javaName + "Holder.java";
- if (type.getJavaPackageName() == null||type.getJavaPackageName().trim().length()==0) {
- this.classList.add(javaName + "Holder");
- this.fileList.add(javaName + "Holder.java");
- } else {
- String holderJavaName = type.getJavaPackageName() + "." + javaName + "Holder";
- this.classList.add(holderJavaName);
- this.fileList.add(holderJavaName.replace('.','/')+".java");
- }
+ PrintWriter pw = printWriter(type.getQName(), "Holder", "java", "Generating type implementation holder: ");
- PrintWriter pw = printWriter(fileName, type.getJavaPackageName());
- if (bVerbose)
- System.out.println("Generating type implementation holder: " + fileName);
-
- writeFileHeader(fileName, type.getJavaPackageName(), pw);
+ writeFileHeader(javaName + "Holder.java", type.getJavaPackageName(), pw);
pw.println("public final class " + javaName + "Holder implements java.io.Serializable {");
pw.println(" public " + javaName + " _value;");
pw.println();
@@ -2079,53 +1866,36 @@
// Utility methods
//
+ public Namespaces getNamespaces(){
+ return namespaces;
+ } // getNamespaces
+
/**
* Does the given file already exist?
*/
- private boolean fileExists (String name) throws IOException
+ private boolean fileExists (String name, String namespace) throws IOException
{
- String fullName;
- if (outputDir == null) {
- fullName = packageDirName + name;
- }
- else {
- fullName = outputDir + File.separatorChar + packageDirName + name;
- }
+ String packageName = namespaces.getAsDir(namespace);
+ String fullName = packageName + name;
return new File (fullName).exists();
} // fileExists
- /**
- * Get a PrintWriter attached to a file with the given name. The location of this file
- * is determined from the values of outputDir and packageDirName.
- */
- private PrintWriter printWriter(String name) throws IOException
- {
- return printWriter(name, null);
- } // printWriter
-
/**
- * Get a PrintWriter attached to a file with the given name. The location of this file
- * is determined from the values of outputDir and packageDirName.
+ * Get a PrintWriter attached to a file with the given name.
*/
- private PrintWriter printWriter(String name, String packageName) throws IOException
+ private PrintWriter printWriter(QName qname, String suffix, String extension, String message) throws IOException
{
- String pkgDirName = packageDirName;
- if (packageName != null) {
- pkgDirName = packageName.replace('.', '/');
- }
-
- File dir = null;
- if (pkgDirName != null) {
- if (outputDir == null)
- dir = new File(pkgDirName);
- else
- dir = new File(outputDir, pkgDirName);
- if (!dir.exists()) {
- dir.mkdirs();
- }
+ String name = Utils.capitalize(xmlNameToJava(qname.getLocalPart()));
+ String fileName = name + (suffix == null ? "" : suffix) + '.' + extension;
+ String packageName = namespaces.getCreate(qname.getNamespaceURI());
+ String packageDirName = namespaces.toDir(packageName);
+ fileList.add(packageDirName + fileName);
+ classList.add(packageName + "." + name);
+ File file = new File(packageDirName, fileName);
+ if (bVerbose) {
+ System.out.println(message + file.getPath());
}
-
- return new PrintWriter(new FileWriter(new File(dir, name)));
+ return new PrintWriter(new FileWriter(file));
} // printWriter
/**
@@ -2254,18 +2024,10 @@
}
/**
- * Write a common header, including the package name (if any) to the
+ * Write a common header, including the package name to the
* provided stream
*/
- private void writeFileHeader(String filename, PrintWriter pw) {
- writeFileHeader(filename, null, pw);
- }
-
- /**
- * Write a common header, including the package name (if any) to the
- * provided stream
- */
- private void writeFileHeader(String filename, String pkgName, PrintWriter pw) {
+ protected void writeFileHeader(String filename, String pkgName, PrintWriter pw) {
pw.println("/**");
pw.println(" * " + filename);
pw.println(" *");
@@ -2275,22 +2037,8 @@
pw.println();
// print package declaration
- if (pkgName == null) {
- if (packageName != null && packageName.trim().length()>0) {
- pw.println("package " + packageName + ";");
- pw.println();
- }
- }
- else {
- pw.println("package " + pkgName + ";");
- pw.println();
- }
- }
-
- private void makePackageName()
- {
- String pkgName = Utils.makePackageName(def.getTargetNamespace());
- setPackageName(pkgName);
+ pw.println("package " + pkgName + ";");
+ pw.println();
}
protected boolean isPrimitiveType(String type) {