blob: d6dff418bac3e671fb9092ed359d9bc25bb2c51e [file] [log] [blame]
/*
* 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.deployment.wsdd.WSDDConstants;
import org.apache.axis.utils.Messages;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
import javax.wsdl.Definition;
import javax.wsdl.Port;
import javax.wsdl.Service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Map;
/**
* This is Wsdl2java's deploy Writer. It writes the deploy.java file.
*/
public class JavaUndeployWriter extends JavaWriter {
/** Field definition */
protected Definition definition;
/**
* Constructor.
*
* @param emitter
* @param definition
* @param notUsed
*/
public JavaUndeployWriter(Emitter emitter, Definition definition,
SymbolTable notUsed) {
super(emitter, "undeploy");
this.definition = definition;
} // ctor
/**
* Generate undeploy.wsdd. Only generate it if the emitter
* is generating server-side mappings.
*
* @throws IOException
*/
public void generate() throws IOException {
if (emitter.isServerSide()) {
super.generate();
}
} // generate
/**
* Return the fully-qualified name of the undeploy.wsdd file
* to be generated.
*
* @return
*/
protected String getFileName() {
String dir =
emitter.getNamespaces().getAsDir(definition.getTargetNamespace());
return dir + "undeploy.wsdd";
} // getFileName
/**
* Replace the default file header with the deployment doc file header.
*
* @param pw
* @throws IOException
*/
protected void writeFileHeader(PrintWriter pw) throws IOException {
pw.println(Messages.getMessage("deploy01"));
pw.println(Messages.getMessage("deploy02"));
pw.println(Messages.getMessage("deploy04"));
pw.println(Messages.getMessage("deploy05"));
pw.println(Messages.getMessage("deploy06"));
pw.println(Messages.getMessage("deploy08"));
pw.println(Messages.getMessage("deploy09"));
pw.println();
pw.println("<undeployment");
pw.println(" xmlns=\"" + WSDDConstants.URI_WSDD + "\">");
} // writeFileHeader
/**
* Write the body of the deploy.wsdd file.
*
* @param pw
* @throws IOException
*/
protected void writeFileBody(PrintWriter pw) throws IOException {
writeDeployServices(pw);
pw.println("</undeployment>");
} // writeFileBody
/**
* Write out deployment and undeployment instructions for each WSDL service
*
* @param pw
* @throws IOException
*/
protected void writeDeployServices(PrintWriter pw) throws IOException {
// deploy the ports on each service
Map serviceMap = definition.getServices();
for (Iterator mapIterator = serviceMap.values().iterator();
mapIterator.hasNext();) {
Service myService = (Service) mapIterator.next();
pw.println();
pw.println(
" <!-- "
+ Messages.getMessage(
"wsdlService00", myService.getQName().getLocalPart()) + " -->");
pw.println();
for (Iterator portIterator = myService.getPorts().values().iterator();
portIterator.hasNext();) {
Port myPort = (Port) portIterator.next();
writeDeployPort(pw, myPort);
}
}
} // writeDeployServices
/**
* Write out deployment and undeployment instructions for given WSDL port
*
* @param pw
* @param port
* @throws IOException
*/
protected void writeDeployPort(PrintWriter pw, Port port) throws IOException {
String serviceName = port.getName();
pw.println(" <service name=\"" + serviceName + "\"/>");
} // writeDeployPort
/**
* Method getPrintWriter
*
* @param filename
* @return
* @throws IOException
*/
protected PrintWriter getPrintWriter(String filename) throws IOException {
File file = new File(filename);
File parent = new File(file.getParent());
parent.mkdirs();
FileOutputStream out = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8");
return new PrintWriter(writer);
}
} // class JavaUndeployWriter