/** * Class file to generate the web.xml configuration from a list of services */ import java.io.File; import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.w3c.dom.Document; public class OwsAdmin { static final String WEB_STYLESHEET = "metaWeb.xsl"; static final String WEB_XML = "web.xml"; static void generateWebXml(String[] args) throws Throwable { File webXmlDirectory = new File(args[0]); String servicesFilename = "services.xml"; if (args.length == 2) servicesFilename = args[1]; File stylesheet = new File(webXmlDirectory, WEB_STYLESHEET); File datafile = new File(webXmlDirectory, servicesFilename); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = builder.parse(datafile); TransformerFactory tFactory = TransformerFactory.newInstance(); StreamSource stylesource = new StreamSource(stylesheet); Transformer transformer = tFactory.newTransformer(stylesource); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml. customer .org/xslt}indent-amount", "4"); DOMSource source = new DOMSource(document); FileOutputStream fo = new FileOutputStream(new File(webXmlDirectory, WEB_XML)); StreamResult result = new StreamResult(fo); transformer.transform(source, result); } public static void main (String args[]) { if (args.length < 1 || args.length > 2) { System.err.println ("Usage: java OwsAdmin DIRECTORY [SERVICES_FILE]"); System.exit (1); } try { generateWebXml(args); } catch (Throwable e) { System.out.println("Error while generating web.xml:"); e.printStackTrace(); } } }