
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.wsdl.Port;
import javax.wsdl.Service;

import org.apache.axis.wsdl.gen.Generator;

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.Utils;

public class PortNamesGenerator implements Generator {
    private Service   service;
    private static ArrayList portMethodNames;

    /**
     * Constructor.
     */
    public PortNamesGenerator(
            Emitter emitter,
            ServiceEntry sEntry,
            SymbolTable symbolTable) {
        this.service = sEntry.getService();
    } // ctor

    /**
     * Generate the port names list.
     */
    public void generate() {
        Iterator ports = service.getPorts().values().iterator();
        portMethodNames = new ArrayList();
        while (ports.hasNext()) {
            Port port = (Port) ports.next();
            portMethodNames.add("get" + Utils.xmlNameToJavaClass(port.getName()));
        }
    } // generate

    /**
     * Get a list of the port method names.  Ideally, you'd also extend
     * emitter and generate would set the portMethodNames on your emitter
     * extension rather than provide static access.  But for the purpose
     * of this little test, this works just fine.
     */
    public static List getPortMethodNames() {
        return portMethodNames;
    } // getPortMethodNames
} // class PortNamesGenerator
