[Yanel-commits] rev 29459 -
public/yanel/contributions/realms/foaf/src/resources/foaf/src/java/org/wyona/yanel/impl/resources/foaf
michi at wyona.com
michi at wyona.com
Sun Dec 2 23:28:02 CET 2007
Author: michi
Date: 2007-12-02 23:28:02 +0100 (Sun, 02 Dec 2007)
New Revision: 29459
Modified:
public/yanel/contributions/realms/foaf/src/resources/foaf/src/java/org/wyona/yanel/impl/resources/foaf/FOAFResource.java
Log:
use XIncludeTransformer
Modified: public/yanel/contributions/realms/foaf/src/resources/foaf/src/java/org/wyona/yanel/impl/resources/foaf/FOAFResource.java
===================================================================
--- public/yanel/contributions/realms/foaf/src/resources/foaf/src/java/org/wyona/yanel/impl/resources/foaf/FOAFResource.java 2007-12-02 20:52:13 UTC (rev 29458)
+++ public/yanel/contributions/realms/foaf/src/resources/foaf/src/java/org/wyona/yanel/impl/resources/foaf/FOAFResource.java 2007-12-02 22:28:02 UTC (rev 29459)
@@ -93,6 +93,7 @@
} else {
sb.append("<wyona:source href=\"" + path.substring(0, path.lastIndexOf(".html")) + ".rdf\"/>");
}
+/*
// TODO: The following leads to errors if the RDF contains special characters!
BufferedReader br = new BufferedReader(new InputStreamReader(getRDFAsInputStream()));
String line;
@@ -101,12 +102,36 @@
sb.append(line);
}
}
+*/
+ if (getRequest().getParameter("href") != null) {
+ URL url = new URL(getRequest().getParameter("href"));
+ sb.append("<xi:include href=\"" + url.toString() + "\" xmlns:xi=\"http://www.w3.org/2001/XInclude\"/>");
+ } else {
+ String rdfPath = getPath();
+ if (rdfPath.endsWith(".html")) {
+ rdfPath = path.substring(0, path.lastIndexOf(".html")) + ".rdf";
+ }
+ sb.append("<xi:include href=\"yanelresource:" + rdfPath + "\" xmlns:xi=\"http://www.w3.org/2001/XInclude\"/>");
+ }
sb.append("</wyona:foaf>");
+ org.xml.sax.XMLReader xmlReader = getXMLReader();
+ org.apache.xml.serializer.Serializer serializer = getSerializer();
+ java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
+ serializer.setOutputStream(baos);
+ org.wyona.yanel.core.transformation.XIncludeTransformer xIncludeTransformer = new org.wyona.yanel.core.transformation.XIncludeTransformer();
+ org.wyona.yanel.core.source.SourceResolver resolver = new org.wyona.yanel.core.source.SourceResolver(this);
+ xIncludeTransformer.setResolver(resolver);
+ xmlReader.setContentHandler(new javax.xml.transform.sax.SAXResult(xIncludeTransformer).getHandler());
+ xIncludeTransformer.setResult(new javax.xml.transform.sax.SAXResult(serializer.asContentHandler()));
+ //xmlReader.setContentHandler(serializer.asContentHandler());
+ xmlReader.parse(new org.xml.sax.InputSource(new StringBufferInputStream(sb.toString())));
+
//log.error("DEBUG: XML: " + sb.toString());
if (viewId != null && viewId.equals("source")) {
- view.setInputStream(new StringBufferInputStream(sb.toString()));
+ view.setInputStream(new java.io.ByteArrayInputStream(baos.toByteArray()));
+ //view.setInputStream(new StringBufferInputStream(sb.toString()));
view.setMimeType(getMimeType(viewId));
return view;
} else if (viewId != null && viewId.equals("rdf+xml")) {
@@ -289,4 +314,22 @@
}
return path;
}
+
+ /**
+ *
+ */
+ private org.xml.sax.XMLReader getXMLReader() throws Exception {
+ org.xml.sax.XMLReader xmlReader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
+ org.apache.xml.resolver.tools.CatalogResolver catalogResolver = new org.apache.xml.resolver.tools.CatalogResolver();
+ xmlReader.setEntityResolver(catalogResolver);
+ xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+ return xmlReader;
+ }
+
+ /**
+ *
+ */
+ private org.apache.xml.serializer.Serializer getSerializer() {
+ return org.wyona.yanel.core.serialization.SerializerFactory.getSerializer(org.wyona.yanel.core.serialization.SerializerFactory.XML);
+ }
}
More information about the Yanel-commits
mailing list