/[classpath]/gjdoc/src/gnu/classpath/tools/doclets/xmldoclet/doctranslet/DocTranslet.java
ViewVC logotype

Diff of /gjdoc/src/gnu/classpath/tools/doclets/xmldoclet/doctranslet/DocTranslet.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13 by julian, Thu Nov 25 14:40:20 2004 UTC revision 1.14 by julian, Mon Nov 29 13:46:52 2004 UTC
# Line 50  import javax.xml.transform.TransformerFa Line 50  import javax.xml.transform.TransformerFa
50  import javax.xml.transform.TransformerFactoryConfigurationError;  import javax.xml.transform.TransformerFactoryConfigurationError;
51  import javax.xml.transform.URIResolver;  import javax.xml.transform.URIResolver;
52    
53    import javax.xml.transform.dom.DOMResult;
54    
55  import javax.xml.transform.stream.StreamResult;  import javax.xml.transform.stream.StreamResult;
56  import javax.xml.transform.stream.StreamSource;  import javax.xml.transform.stream.StreamSource;
57    
# Line 59  import javax.xml.parsers.ParserConfigura Line 61  import javax.xml.parsers.ParserConfigura
61    
62  import org.w3c.dom.Document;  import org.w3c.dom.Document;
63  import org.w3c.dom.Element;  import org.w3c.dom.Element;
64    import org.w3c.dom.Node;
65  import org.w3c.dom.NodeList;  import org.w3c.dom.NodeList;
66    
67  import org.xml.sax.SAXException;  import org.xml.sax.SAXException;
# Line 234  public class DocTranslet implements Erro Line 237  public class DocTranslet implements Erro
237    
238                 StreamSource in = new StreamSource(new File(xmlSourceDirectory, "index.xml").getAbsolutePath());                 StreamSource in = new StreamSource(new File(xmlSourceDirectory, "index.xml").getAbsolutePath());
239                 URL resource = new URL(mainResourceURL, fileInfo.getSheet());                 URL resource = new URL(mainResourceURL, fileInfo.getSheet());
240                 if (null == resource) {  
241                    throw new DocTransletException("Couldn't perform XSLT transformation: stylesheet not found '" + resource + "'");  
                }  
242                 StreamSource xsltSource = new StreamSource(resource.toExternalForm());                 StreamSource xsltSource = new StreamSource(resource.toExternalForm());
243    
244                 if (null != fileInfo.getInfo()) {                 if (null != fileInfo.getInfo()) {
# Line 295  public class DocTranslet implements Erro Line 297  public class DocTranslet implements Erro
297    
298           OutputStream out = new ByteArrayOutputStream();           OutputStream out = new ByteArrayOutputStream();
299    
300             DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
301             DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
302             Document document = documentBuilder.newDocument();
303             DOMResult domResult = new DOMResult(document);        
304           {           {
305              StreamSource source = new StreamSource(resource.toExternalForm());              StreamSource source = new StreamSource(resource.toExternalForm());
306                
307              TransformerFactory transformerFactory = TransformerFactory.newInstance();              TransformerFactory transformerFactory = TransformerFactory.newInstance();
308              Transformer transformer = (Transformer)transformerFactory.newTransformer(source);              Transformer transformer = (Transformer)transformerFactory.newTransformer(source);
309                
310              transformer.clearParameters();              transformer.clearParameters();
311              for (Iterator pit = parameters.keySet().iterator(); pit.hasNext(); ) {              for (Iterator pit = parameters.keySet().iterator(); pit.hasNext(); ) {
312                 String key = (String)pit.next();                 String key = (String)pit.next();
313                 String value = (String)parameters.get(key);                 String value = (String)parameters.get(key);
314                 transformer.setParameter(key, value);                 transformer.setParameter(key, value);
315              }              }
316                        
317              transformer.transform(new StreamSource(new File(xmlSourceDirectory,              transformer.transform(new StreamSource(new File(xmlSourceDirectory,
318                                                              "index.xml").getAbsolutePath()),                                                              "index.xml").getAbsolutePath()),
319                                    new StreamResult(out));                                    domResult);
320           }           }
321    
322           {           {      
             byte[] transformedIndexBytes = ((ByteArrayOutputStream)out).toByteArray();  
             DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();  
             documentBuilderFactory.setValidating(false);  
   
             DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();  
             Document document = documentBuilder.parse(new ByteArrayInputStream(transformedIndexBytes));  
           
323              NodeList nodeList = document.getElementsByTagName("outputfile");              NodeList nodeList = document.getElementsByTagName("outputfile");
324              result = new ArrayList(nodeList.getLength());              result = new ArrayList(nodeList.getLength());
325    
326              for (int i=0; i<nodeList.getLength(); ++i) {              for (int i=0; i<nodeList.getLength(); ++i) {
327                 Element elem = (Element)nodeList.item(i);                 Element elem = (Element)nodeList.item(i);
328                 String name    = elem.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();                 String name    = getTextContent(elem.getElementsByTagName("name").item(0));
329                 String source                   String source  
330                    = (null != elem.getElementsByTagName("source").item(0))                    = (null != elem.getElementsByTagName("source").item(0))
331                    ? elem.getElementsByTagName("source").item(0).getFirstChild().getNodeValue()                    ? getTextContent(elem.getElementsByTagName("source").item(0))
332                    : null;                    : null;
333                 String sheet                 String sheet
334                    = (null != elem.getElementsByTagName("sheet").item(0))                    = (null != elem.getElementsByTagName("sheet").item(0))
335                    ? elem.getElementsByTagName("sheet").item(0).getFirstChild().getNodeValue()                    ? getTextContent(elem.getElementsByTagName("sheet").item(0))
336                    : null;                    : null;
337                 String comment = elem.getElementsByTagName("comment").item(0).getFirstChild().getNodeValue();                 String comment = getTextContent(elem.getElementsByTagName("comment").item(0));
338                 String info    = null;                 String info    = null;
339                 if (elem.getElementsByTagName("info").getLength() > 0) {                 if (elem.getElementsByTagName("info").getLength() > 0) {
340                    if (null != elem.getElementsByTagName("info").item(0).getFirstChild()) {                    if (null != elem.getElementsByTagName("info").item(0).getFirstChild()) {
341                       info = elem.getElementsByTagName("info").item(0).getFirstChild().getNodeValue();                       info = getTextContent(elem.getElementsByTagName("info").item(0));
342                    }                    }
343                    else {                    else {
344                       info = "";                       info = "";
# Line 359  public class DocTranslet implements Erro Line 358  public class DocTranslet implements Erro
358        catch (ParserConfigurationException e) {        catch (ParserConfigurationException e) {
359           throw new DocTransletException(e);           throw new DocTransletException(e);
360        }        }
361        catch (SAXException e) {     }
362           throw new DocTransletException(e);  
363        }     private String getTextContent(Node elem)
364        catch (IOException e) {     {
365           throw new DocTransletException(e);        StringBuffer result = new StringBuffer();
366          NodeList children = elem.getChildNodes();
367          for (int i=0; i<children.getLength(); ++i) {
368             Node item = children.item(i);
369             if (null != item) {
370                String value = item.getNodeValue();
371                if (null != value) {
372                   result.append(value);
373                }
374             }
375        }        }
376          return result.toString();
377     }     }
378    
379     public void setOptions(DocTransletOptions options) {     public void setOptions(DocTransletOptions options) {

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26