/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package samples.integrationGuide.example1;
import org.apache.axis.wsdl.symbolTable.ServiceEntry;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
import org.apache.axis.wsdl.toJava.Emitter;
import org.apache.axis.wsdl.toJava.JavaWriter;
import org.apache.axis.wsdl.toJava.Utils;
import javax.wsdl.Port;
import javax.wsdl.Service;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Map;
/**
* This is my example of a class that writes a list of a service's
* ports to a file named <serviceName>Lst.lst.
*
* Note: because of a name clash problem, I add the suffix "Lst".
* I hope to remove this in a future version of this example.
*
* Details of the JavaWriter bug: JavaWriter looks to make sure a
* class doesn't already exist before creating a file, but not all
* files that we generate are .class files! This works with
* deploy.wsdd and undeploy.wsdd because these files just happen
* to begin with lowercase letters, where Java classes begin with
* uppercase letters. But this example shows the problem quite
* well. I would LIKE to call the file <serviceName>.lst, but
* JavaWriter sees that we already have a class called
* <serviceName> and won't let me proceed.
*/
public class MyListPortsWriter extends JavaWriter {
private Service service;
private String fileName;
/**
* Constructor.
*/
public MyListPortsWriter(
Emitter emitter,
ServiceEntry sEntry,
SymbolTable symbolTable) {
super(emitter, "service list");
this.service = sEntry.getService();
// Create the fully-qualified file name
String javaName = sEntry.getName();
fileName = emitter.getNamespaces().toDir(
Utils.getJavaPackageName(javaName))
+ Utils.getJavaLocalName(javaName) + ".lst";
} // ctor
protected String getFileName() {
return fileName;
} // getFileName
/**
* Override the common JavaWriter header to a no-op.
*/
protected void writeFileHeader(PrintWriter pw) throws IOException {
} // writeFileHeader
/**
* Write the service list file.
*/
protected void writeFileBody(PrintWriter pw) throws IOException {
Map portMap = service.getPorts();
Iterator portIterator = portMap.values().iterator();
while (portIterator.hasNext()) {
Port p = (Port) portIterator.next();
pw.println(p.getName());
}
pw.close(); // Note: this really should be done in JavaWriter.
} // writeFileBody
} // class MyListPortsWriter