[Yanel-commits] rev 28116 -
public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase
simon at wyona.com
simon at wyona.com
Thu Oct 25 11:46:07 CEST 2007
Author: simon
Date: 2007-10-25 11:46:07 +0200 (Thu, 25 Oct 2007)
New Revision: 28116
Modified:
public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseResource.java
Log:
fixes bug#5612 thanks to josias
Modified: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseResource.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseResource.java 2007-10-25 09:45:24 UTC (rev 28115)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseResource.java 2007-10-25 09:46:07 UTC (rev 28116)
@@ -47,7 +47,9 @@
import org.wyona.yanel.core.attributes.viewable.View;
import org.wyona.yanel.core.attributes.viewable.ViewDescriptor;
import org.wyona.yanel.core.serialization.SerializerFactory;
+import org.wyona.yanel.core.source.SourceResolver;
import org.wyona.yanel.core.transformation.I18nTransformer2;
+import org.wyona.yanel.core.transformation.XIncludeTransformer;
import org.wyona.yanel.core.util.PathUtil;
import org.wyona.yarep.core.Repository;
import org.xml.sax.InputSource;
@@ -136,6 +138,7 @@
protected void renderJellyView(UsecaseView view, String viewTemplate) throws UsecaseException {
try {
+ String viewId = view.getID();
Repository repo = this.getRealm().getRepository();
JellyContext jellyContext = new JellyContext();
@@ -172,32 +175,47 @@
xsltHandlers[i].getTransformer().setParameter("yanel.path", getPath());
xsltHandlers[i].getTransformer().setParameter("yanel.back2context", PathUtil.backToContext(realm, getPath()));
xsltHandlers[i].getTransformer().setParameter("yanel.back2realm", PathUtil.backToRealm(getPath()));
+ xsltHandlers[i].getTransformer().setParameter("yarep.back2realm", PathUtil.backToRealm(getPath())); // for backwards compatibility
xsltHandlers[i].getTransformer().setParameter("language", getRequestedLanguage());
xsltHandlers[i].getTransformer().setParameter("yanel.reservedPrefix", "yanel"); // TODO don't hardcode
}
// create i18n transformer:
- //I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getRequestedLanguage(), getRealm().getDefaultLanguage());
- //i18nTransformer.setEntityResolver(catalogResolver);
+ I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getRequestedLanguage(), getRealm().getDefaultLanguage());
+ i18nTransformer.setEntityResolver(catalogResolver);
- Serializer serializer = SerializerFactory.getSerializer(SerializerFactory.XHTML_STRICT);
+ // create xinclude transformer:
+ XIncludeTransformer xIncludeTransformer = new XIncludeTransformer();
+ SourceResolver resolver = new SourceResolver(this);
+ xIncludeTransformer.setResolver(resolver);
+
+ // create serializer
+ Serializer serializer = null;
+ if (getMimeType(viewId).equals("text/html")) {
+ serializer = SerializerFactory.getSerializer(SerializerFactory.HTML_TRANSITIONAL);
+ } else if (getMimeType(viewId).equals("application/xhtml+xml")) {
+ serializer = SerializerFactory.getSerializer(SerializerFactory.XHTML_STRICT);
+ } else {
+ serializer = SerializerFactory.getSerializer(SerializerFactory.XML);
+ }
+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- serializer.setOutputStream(baos);
-
- //XMLOutput jellyOutput = new XMLOutput(xsltHandlers[0]);
+
+ // chain everything together (create a pipeline):
xmlReader.setContentHandler(xsltHandlers[0]);
for (int i = 0; i < xsltHandlers.length - 1; i++) {
xsltHandlers[i].setResult(new SAXResult(xsltHandlers[i+1]));
}
- xsltHandlers[xsltHandlers.length - 1].setResult(new SAXResult(serializer.asContentHandler()));
- //XMLOutput jellyOutput = new XMLOutput(serializer.asContentHandler());
- //FileOutputStream os = new FileOutputStream("/home/josias/tmp/test2.xml");
+ xsltHandlers[xsltHandlers.length - 1].setResult(new SAXResult(xIncludeTransformer));
+ xIncludeTransformer.setResult(new SAXResult(i18nTransformer));
+ i18nTransformer.setResult(new SAXResult(serializer.asContentHandler()));
+ serializer.setOutputStream(baos);
// execute pipeline:
xmlReader.parse(new InputSource(new ByteArrayInputStream(jellyResultStream.toByteArray())));
view.setInputStream(new ByteArrayInputStream(baos.toByteArray()));
- view.setMimeType("application/xhtml+xml");
+ view.setMimeType(getMimeType(viewId));
} catch (Exception e) {
String errorMsg = "Error creating jelly view of usecase: " + getName() + ": " + e;
log.error(errorMsg, e);
@@ -219,6 +237,8 @@
}
public String getMimeType(String viewId) throws Exception {
+ String mimeType = getResourceConfigProperty("mime-type");
+ if (mimeType != null) return mimeType;
return "application/xhtml+xml";
}
More information about the Yanel-commits
mailing list