package org.distributeme.generator.ws;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import java.io.PrintWriter;
/**
* <p>ConfigurationGenerator class.</p>
*
* @author another
* @version $Id: $Id
*/
public class ConfigurationGenerator extends WSStructureGenerator implements WebServiceMeGenerator {
/**
* <p>Constructor for ConfigurationGenerator.</p>
*
* @param filer a {@link javax.annotation.processing.ProcessingEnvironment} object.
*/
public ConfigurationGenerator(ProcessingEnvironment filer) {
super(filer);
}
/** {@inheritDoc} */
@Override
public void generate(TypeElement type) {
// create WebContent folder structure
// create META-INF directory
PrintWriter writer = createTextFile(type.getSimpleName().toString(), getMetaInfDir(), "MANIFEST", "MF");
writer.print("Manifest-Version: 1.0\n");
writer.print("Class-Path: \n");
closeWriter(writer);
// create libraries directory
writer = createTextFile(type.getSimpleName().toString(), getWebInfLibDir(), "readme", "txt");
writer.print("Directory for project libraries");
closeWriter(writer);
// generate web.xml
generateWebXml(type);
// generate sun-jaxws.xml
generateSunJaxWsXml(type);
}
private void generateWebXml(Element type) {
PrintWriter writer = createXmlFile(type.getSimpleName().toString(), getWebInfDir(), "web");
writer.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
writer.print("<web-app id=\"WebApp_ID\" version=\"2.4\" xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n");
writer.print("\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
writer.print("\txsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">\n");
writer.print("\t<display-name>" + type.getSimpleName().toString() + "</display-name>\n");
writer.print("\t<listener>\n");
writer.print("\t\t<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>\n");
writer.print("\t</listener>\n");
writer.print("\t<servlet>\n");
writer.print("\t\t<servlet-name>" + type.getSimpleName().toString() + "</servlet-name>\n");
writer.print("\t\t<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>\n");
writer.print("\t\t<load-on-startup>1</load-on-startup>\n");
writer.print("\t</servlet>\n");
writer.print("\t<servlet-mapping>\n");
writer.print("\t\t<servlet-name>" + type.getSimpleName().toString() + "</servlet-name>\n");
writer.print("\t\t<url-pattern>/" + type.getSimpleName().toString() + "</url-pattern>\n");
writer.print("\t</servlet-mapping>\n");
writer.print("</web-app>\n");
closeWriter(writer);
}
private void generateSunJaxWsXml(Element type) {
PrintWriter writer = createXmlFile(type.getSimpleName().toString(), getWebInfDir(), "sun-jaxws");
writer.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
writer.print("<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'>\n");
writer.print("\t<endpoint\n");
writer.print("\t\tname='" + type.getSimpleName().toString() + "'\n");
writer.print("\t\timplementation='" + getWSProxyName(type) + "'\n");
writer.print("\t\turl-pattern='/" + type.getSimpleName().toString() + "'/>\n");
writer.print("</endpoints>");
closeWriter(writer);
}
}