You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2005/03/11 12:16:08 UTC

svn commit: r157071 - cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/tools/generation/I18nCatalogueGenerator.java

Author: cziegeler
Date: Fri Mar 11 03:16:05 2005
New Revision: 157071

URL: http://svn.apache.org/viewcvs?view=rev&rev=157071
Log:
Make Cocoon compilable with JDK 1.3. Patch by Jens Maukisch

Modified:
    cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/tools/generation/I18nCatalogueGenerator.java

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/tools/generation/I18nCatalogueGenerator.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/tools/generation/I18nCatalogueGenerator.java?view=diff&r1=157070&r2=157071
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/tools/generation/I18nCatalogueGenerator.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/tools/generation/I18nCatalogueGenerator.java Fri Mar 11 03:16:05 2005
@@ -15,10 +15,7 @@
  */
 package org.apache.cocoon.portal.tools.generation;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringReader;
 import java.net.MalformedURLException;
 import java.util.Iterator;
 import java.util.List;
@@ -26,15 +23,18 @@
 
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.generation.ServiceableGenerator;
 import org.apache.cocoon.portal.tools.PortalToolCatalogue;
 import org.apache.cocoon.portal.tools.PortalToolManager;
+import org.apache.cocoon.xml.IncludeXMLConsumer;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.xml.sax.SAXParser;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
 
 /**
  * 
@@ -43,9 +43,8 @@
 public class I18nCatalogueGenerator extends ServiceableGenerator {
     
     private SAXParser parser;
-
-    private String catalogueStartTag = "<?xml version=\"1.0\"?><catalogue>";
-    private String catalogueEndTag = "</catalogue>";
+    private PortalToolManager ptm;
+    private final String CATALOGUE_TAG = "catalogue";
     private String lang = ".xml";
     private StringBuffer i18n = new StringBuffer();
     
@@ -54,59 +53,55 @@
      */
     public void generate() throws IOException, SAXException,
             ProcessingException {
-        StringBuffer catalogue = new StringBuffer();
-        catalogue.append(catalogueStartTag).append(i18n.toString()).append(catalogueEndTag); //add pi and catalogue tags
-        final InputSource inputSource = new InputSource(new StringReader(catalogue.toString()));
-        try {
-            parser = (SAXParser)this.manager.lookup(SAXParser.ROLE);
-        } catch (ServiceException e) {
-            e.printStackTrace();
-        }
-        parser.parse(inputSource, super.xmlConsumer);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) 
-    					throws ProcessingException, SAXException, IOException {
-        super.setup(resolver, objectModel, src, par);
-        if(src.indexOf("_") != -1) {
-            lang = src.substring(src.indexOf("_"), src.length());
-            lang = lang.toLowerCase();
-        }
-        PortalToolManager ptm = null;
-        try {
-            ptm = (PortalToolManager) this.manager.lookup(PortalToolManager.ROLE);
+    	this.xmlConsumer.startDocument();
+    	this.xmlConsumer.startElement("", CATALOGUE_TAG, CATALOGUE_TAG, new AttributesImpl());
             List cats = ptm.getI18n();
             for(Iterator it = cats.iterator(); it.hasNext();) {
                 PortalToolCatalogue ptc = (PortalToolCatalogue) it.next();
                 try {
                     Source cat;
 	                cat = resolver.resolveURI(ptc.getLocation() + ptc.getName() + lang);
-	                // if(!cat.exists()) {
-	                //    cat = resolver.resolveURI(ptc.getLocation() + ptc.getName() + ".xml"); // default file
-	                // }
-	                BufferedReader br = new BufferedReader(new InputStreamReader(cat.getInputStream()));
-	                String tmp = new String();
-	                while(br.ready()) {
-	                    tmp = tmp + br.readLine();
-	                }
-                    tmp = tmp.replaceAll("<\\?(.+)\\?>",""); // remove processing instr.
-                    tmp = tmp.replaceAll("<catalogue([^>]+)?>{1}" ,""); // remove catalogue tags
-                    tmp = tmp.replaceAll("</catalogue>", "");
-                    tmp = tmp.replaceAll("<!--(.+)-->", "");
-                    i18n.append(tmp);
+	                IncludeXMLConsumer ixc = new IncludeXMLConsumer(this.xmlConsumer);
+	                ixc.setIgnoreRootElement(true);
+	                this.parser.parse(new InputSource(cat.getInputStream()),  ixc);
                 } catch (MalformedURLException e) {
+                	// ignore
                 } catch (IOException e) {
+                	// ignore
                 }
             }
-        } catch (ServiceException e) {
-            e.printStackTrace();
-        } finally {
-            this.manager.release(ptm);
+        this.xmlConsumer.endElement("", CATALOGUE_TAG, CATALOGUE_TAG);
+        this.xmlConsumer.endDocument();
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
+     */
+    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) 
+    					throws ProcessingException, SAXException, IOException {
+        super.setup(resolver, objectModel, src, par);
+        if(src.indexOf("_") != -1) {
+            this.lang = src.substring(src.indexOf("_"), src.length());
+            this.lang = this.lang.toLowerCase();
         }
-        
+
     }
+    
+    /* (non-Javadoc)
+	 * @see org.apache.cocoon.generation.ServiceableGenerator#service(org.apache.avalon.framework.service.ServiceManager)
+	 */
+	public void service(ServiceManager manager) throws ServiceException {
+		super.service(manager);
+		this.parser = (SAXParser)this.manager.lookup(SAXParser.ROLE);
+		ptm = (PortalToolManager) this.manager.lookup(PortalToolManager.ROLE);
+	}
 
+	/* (non-Javadoc)
+	 * @see org.apache.cocoon.generation.ServiceableGenerator#dispose()
+	 */
+	public void dispose() {
+		super.dispose();
+		this.manager.release(this.parser);
+		this.manager.release(this.ptm);
+	}
 }