[Yanel-commits] rev 22797 - in public/yanel/trunk/src:
core/java/org/wyona/yanel/core/transformation
resources/xml/src/java/org/wyona/yanel/impl/resources
josias at wyona.com
josias at wyona.com
Mon Feb 19 22:27:34 CET 2007
Author: josias
Date: 2007-02-19 22:27:33 +0100 (Mon, 19 Feb 2007)
New Revision: 22797
Modified:
public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java
public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
Log:
allow to set the entity resolver of the i18n transformer and re-enabled i18n transformation of the xml resource, it uses the catalog resolver now. fixes bug #4761
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java 2007-02-19 21:23:09 UTC (rev 22796)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java 2007-02-19 21:27:33 UTC (rev 22797)
@@ -1,11 +1,14 @@
package org.wyona.yanel.core.transformation;
import java.io.ByteArrayInputStream;
+import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Locale;
import java.util.ResourceBundle;
import org.apache.log4j.Category;
import org.xml.sax.Attributes;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
@@ -17,6 +20,7 @@
private ByteArrayInputStream byteArrayInputStream = null;
private StringBuffer transformedXmlAsBuffer = null;
private String cachedEname;
+ private EntityResolver entityResolver;
public I18nTransformer(String messages, String language) {
currentLocale = new Locale(language);
@@ -130,4 +134,21 @@
log.debug("[" + inputString + "] replaced with [" + replacedAmpersand + "]");
return replacedAmpersand;
}
+
+ public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
+ try {
+ if (this.entityResolver != null) {
+ return this.entityResolver.resolveEntity(publicId, systemId);
+ } else {
+ return super.resolveEntity(publicId, systemId);
+ }
+ } catch (IOException e) {
+ log.error(e.getMessage(), e);
+ throw new SAXException(e);
+ }
+ }
+
+ public void setEntityResolver(EntityResolver entityResolver) {
+ this.entityResolver = entityResolver;
+ }
}
Modified: public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
===================================================================
--- public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-02-19 21:23:09 UTC (rev 22796)
+++ public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-02-19 21:27:33 UTC (rev 22797)
@@ -64,6 +64,7 @@
import java.util.jar.JarInputStream;
import org.apache.log4j.Category;
+import org.apache.xml.resolver.tools.CatalogResolver;
/**
*
@@ -135,28 +136,26 @@
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
org.xml.sax.XMLReader xmlReader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
- xmlReader.setEntityResolver(new org.apache.xml.resolver.tools.CatalogResolver());
+ CatalogResolver catalogResolver = new CatalogResolver();
+ xmlReader.setEntityResolver(catalogResolver);
transformer.transform(new SAXSource(xmlReader, new org.xml.sax.InputSource(getContentXML(repo, yanelPath, revisionName))), new StreamResult(baos));
InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());
defaultView.setInputStream(inputStream);
- // TODO: Seems to have problems accessing remote DTDs when being offline
-/*
I18nTransformer i18nTransformer = new I18nTransformer("global", getLanguage());
+ i18nTransformer.setEntityResolver(catalogResolver);
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
saxParser.parse(inputStream, i18nTransformer);
defaultView.setInputStream(i18nTransformer.getInputStream());
-*/
-
return defaultView;
} else {
log.debug("Mime-Type: " + mimeType);
defaultView.setInputStream(getContentXML(repo, yanelPath, revisionName));
}
} catch(Exception e) {
- log.error(e + " (" + getPath() + ", " + getRealm() + ")");
+ log.error(e + " (" + getPath() + ", " + getRealm() + ")", e);
throw new Exception(e);
}
More information about the Yanel-commits
mailing list