/*
* 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 org.apache.axis.wsdl.toJava;
import org.apache.axis.wsdl.symbolTable.BindingEntry;
import org.apache.axis.wsdl.symbolTable.Parameters;
import org.apache.axis.wsdl.symbolTable.PortTypeEntry;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
import javax.wsdl.Operation;
import javax.wsdl.PortType;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
/**
* This is Wsdl2java's PortType Writer. It writes the <portTypeName>.java file
* which contains the <portTypeName> interface.
*/
public class JavaInterfaceWriter extends JavaClassWriter {
/** Field portType */
protected PortType portType;
/** Field bEntry */
protected BindingEntry bEntry;
/**
* Constructor.
*
* @param emitter
* @param ptEntry
* @param bEntry
* @param symbolTable
*/
protected JavaInterfaceWriter(Emitter emitter, PortTypeEntry ptEntry,
BindingEntry bEntry,
SymbolTable symbolTable) {
super(emitter,
(String) bEntry.getDynamicVar(JavaBindingWriter.INTERFACE_NAME),
"interface");
this.portType = ptEntry.getPortType();
this.bEntry = bEntry;
} // ctor
/**
* Override generate method to prevent duplicate interfaces because
* of two bindings referencing the same portType
*
* @throws IOException
*/
public void generate() throws IOException {
String fqClass = getPackage() + "." + getClassName();
// Do not emit the same portType/interface twice
if (!emitter.getGeneratedFileInfo().getClassNames().contains(fqClass)) {
super.generate();
}
} // generate
/**
* Returns "interface ".
*
* @return
*/
protected String getClassText() {
return "interface ";
} // getClassString
/**
* Returns "extends java.rmi.Remote ".
*
* @return
*/
protected String getExtendsText() {
return "extends java.rmi.Remote ";
} // getExtendsText
/**
* Write the body of the portType interface file.
*
* @param pw
* @throws IOException
*/
protected void writeFileBody(PrintWriter pw) throws IOException {
Iterator operations = portType.getOperations().iterator();
while (operations.hasNext()) {
Operation operation = (Operation) operations.next();
writeOperation(pw, operation);
}
} // writeFileBody
/**
* This method generates the interface signatures for the given operation.
*
* @param pw
* @param operation
* @throws IOException
*/
protected void writeOperation(PrintWriter pw, Operation operation)
throws IOException {
writeComment(pw, operation.getDocumentationElement(), true);
Parameters parms = bEntry.getParameters(operation);
pw.println(parms.signature + ";");
} // writeOperation
} // class JavaInterfaceWriter
|