1 10 package org.mmbase.util; 11 12 import java.io.*; 13 import java.util.*; 14 15 import javax.xml.parsers.DocumentBuilder ; 16 import javax.xml.parsers.DocumentBuilderFactory ; 17 import javax.xml.transform.stream.StreamResult ; 18 import javax.xml.transform.OutputKeys ; 19 import javax.xml.transform.Transformer ; 20 import javax.xml.transform.TransformerException ; 21 import javax.xml.transform.TransformerFactory ; 22 import javax.xml.transform.dom.DOMSource ; 23 24 import org.w3c.dom.Document ; 25 26 27 35 public class BuilderList { 36 39 43 public void write(Document doc, StreamResult result) throws IOException, TransformerException { 44 TransformerFactory tfactory = TransformerFactory.newInstance(); 45 tfactory.setURIResolver(new org.mmbase.util.xml.URIResolver(new java.io.File (""))); 46 Transformer serializer = tfactory.newTransformer(); 49 serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 52 serializer.setOutputProperty(OutputKeys.INDENT, "yes"); 54 serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 55 serializer.transform(new DOMSource (doc), result); 56 } 57 58 62 void listBuilders(ResourceLoader config, Writer writer) throws IOException { 63 Set xmls = config.getResourcePaths(ResourceLoader.XML_PATTERN, false); 64 writer.write("<buildertype name=\"" + config.getContext() + "\">\n"); 65 Iterator i = xmls.iterator(); 66 while (i.hasNext()) { 67 String name = (String ) i.next(); 68 try { 69 Document document = config.getDocument(name); 70 if (document.getDocumentElement().getTagName().equals("builder")) { 72 write(document, new StreamResult (writer)); 73 } 74 } catch (Exception e) { 75 } 76 } 77 writer.write("</buildertype>\n"); 78 Iterator j = config.getChildContexts(null, false).iterator(); 79 while (j.hasNext()) { 80 String sub = (String ) j.next(); 81 if ("CVS".equals(sub)) continue; 82 listBuilders(config.getChildResourceLoader(sub), writer); 83 } 84 85 86 } 87 88 94 public static void main(String [] args) throws UnsupportedEncodingException, IOException { 95 if (args.length != 0) { 96 BuilderList bulList = new BuilderList(); 97 Writer s = new OutputStreamWriter(System.out, "UTF-8"); 98 s.write("<builders>\n"); 99 String [] builderDirs = args[0].split(";"); 100 for (int i = 0; i < builderDirs.length ; i++) { 101 ResourceLoader config = ResourceLoader.getConfigurationRoot().getChildResourceLoader(builderDirs[i]); 102 bulList.listBuilders(config, s); 103 } 104 s.write("</builders>\n"); 105 s.flush(); 106 } else { 107 System.out.println("usage: java BuilderList <basedirwithbuilderconfig>"); 108 } 109 } 110 } 111 | Popular Tags |