[Yanel-commits] rev 29163 - in
public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources:
. usecase usecase/thread
michi at wyona.com
michi at wyona.com
Fri Nov 23 12:03:36 CET 2007
Author: michi
Date: 2007-11-23 12:03:35 +0100 (Fri, 23 Nov 2007)
New Revision: 29163
Modified:
public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java
public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/ExecutableUsecaseResource.java
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/UsecaseView.java
public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/thread/ThreadUsecaseResource.java
Log:
configurable view descriptor added
Modified: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java 2007-11-23 11:03:13 UTC (rev 29162)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicXMLResource.java 2007-11-23 11:03:35 UTC (rev 29163)
@@ -19,6 +19,9 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Properties;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
@@ -27,9 +30,13 @@
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamSource;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.configuration.ConfigurationUtil;
import org.apache.log4j.Category;
import org.apache.xml.resolver.tools.CatalogResolver;
import org.apache.xml.serializer.Serializer;
+import org.w3c.dom.Document;
import org.wyona.security.core.api.Identity;
import org.wyona.yanel.core.Resource;
import org.wyona.yanel.core.api.attributes.ViewableV2;
@@ -40,6 +47,8 @@
import org.wyona.yanel.core.transformation.I18nTransformer2;
import org.wyona.yanel.core.transformation.XIncludeTransformer;
import org.wyona.yanel.core.util.PathUtil;
+import org.wyona.yanel.impl.resources.xml.ConfigurableViewDescriptor;
+import org.wyona.yanel.impl.resources.usecase.UsecaseException;
import org.wyona.yarep.core.Repository;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
@@ -52,24 +61,68 @@
private static Category log = Category.getInstance(BasicXMLResource.class);
+ protected static String DEFAULT_VIEW_ID = "default";
protected static String SOURCE_VIEW_ID = "source";
+
+ protected static String SERIALIZER_OMIT_XML_DECLARATION = "serializer-omit-xml-declaration";
+ protected static String SERIALIZER_DOCTYPE_PUBLIC = "serializer-doctype-public";
+ protected static String SERIALIZER_DOCTYPE_SYSTEM = "serializer-doctype-system";
+ protected HashMap viewDescriptors;
+
+ public ViewDescriptor getViewDescriptor(String viewId) {
+ ViewDescriptor[] viewDescriptors = getViewDescriptors();
+ for (int i = 0; i < viewDescriptors.length; i++) {
+ if (viewDescriptors[i].getId().equals(viewId)) {
+ return viewDescriptors[i];
+ }
+ }
+ return null;
+ }
+
/**
* @see org.wyona.yanel.core.api.attributes.ViewableV2#getViewDescriptors()
*/
public ViewDescriptor[] getViewDescriptors() {
- ViewDescriptor[] vd = new ViewDescriptor[2];
+ if (this.viewDescriptors != null) {
+ return (ViewDescriptor[])this.viewDescriptors.values().toArray(new ViewDescriptor[this.viewDescriptors.size()]);
+ }
try {
- vd[0] = new ViewDescriptor("default");
- vd[0].setMimeType(getMimeType(null));
-
- vd[1] = new ViewDescriptor(SOURCE_VIEW_ID);
- vd[1].setMimeType(getMimeType(SOURCE_VIEW_ID));
+ this.viewDescriptors = new HashMap();
+ // reads views from configuration:
+ Document customConfigDoc = getConfiguration().getCustomConfiguration();
+ if (customConfigDoc != null) {
+ Configuration config = ConfigurationUtil.toConfiguration(customConfigDoc.getDocumentElement());
+ Configuration viewsConfig = config.getChild("views");
+ Configuration[] viewConfigs = viewsConfig.getChildren("view");
+ for (int i = 0; i < viewConfigs.length; i++) {
+ String id = viewConfigs[i].getAttribute("id");
+ ConfigurableViewDescriptor viewDescriptor = new ConfigurableViewDescriptor(id);
+ viewDescriptor.configure(viewConfigs[i]);
+ this.viewDescriptors.put(id, viewDescriptor);
+ }
+ } else {
+ // no custom config
+ ConfigurableViewDescriptor[] vd = new ConfigurableViewDescriptor[2];
+ vd[0] = new ConfigurableViewDescriptor(DEFAULT_VIEW_ID);
+ String mimeType = getResourceConfigProperty("mime-type");
+ vd[0].setMimeType(mimeType);
+ this.viewDescriptors.put(DEFAULT_VIEW_ID, vd[0]);
+
+ vd[1] = new ConfigurableViewDescriptor(SOURCE_VIEW_ID);
+ mimeType = getResourceConfigProperty("source-view-mime-type");
+ vd[1].setMimeType(mimeType);
+ this.viewDescriptors.put(SOURCE_VIEW_ID, vd[1]);
+ return vd;
+ }
} catch (Exception e) {
- log.error(e.getMessage(), e);
+ String errorMsg = "Error configuring resource: " + getPath() + ": " + e.toString();
+ log.error(errorMsg, e);
+ // TODO: throw exception
+ return null;
}
-
- return vd;
+
+ return null;
}
/**
@@ -84,14 +137,18 @@
* @see org.wyona.yanel.core.api.attributes.ViewableV2#getMimeType(java.lang.String)
*/
public String getMimeType(String viewId) throws Exception {
- if (viewId != null && viewId.equals(SOURCE_VIEW_ID)) {
- String mimeType = getResourceConfigProperty("source-view-mime-type");
- if (mimeType != null) return mimeType;
- } else {
- String mimeType = getResourceConfigProperty("mime-type");
- if (mimeType != null) return mimeType;
+ String mimeType = null;
+ ViewDescriptor viewDescriptor = getViewDescriptor(viewId);
+ if (viewDescriptor != null) {
+ mimeType = viewDescriptor.getMimeType();
}
- return "application/xml";
+ if (mimeType == null) {
+ mimeType = this.getResourceConfigProperty("mime-type");
+ }
+ if (mimeType != null) {
+ return mimeType;
+ }
+ return "application/xhtml+xml";
}
/**
@@ -111,6 +168,10 @@
public View getXMLView(String viewId, InputStream xmlInputStream) throws Exception {
View view = new View();
+ if (viewId == null) {
+ viewId = DEFAULT_VIEW_ID;
+ }
+ ConfigurableViewDescriptor viewDescriptor = (ConfigurableViewDescriptor)getViewDescriptor(viewId);
String mimeType = getMimeType(viewId);
view.setMimeType(mimeType);
@@ -119,11 +180,9 @@
if (viewId != null && viewId.equals(SOURCE_VIEW_ID)) {
view.setInputStream(xmlInputStream);
- view.setMimeType(getMimeType(viewId));
return view;
}
-
// create reader:
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
CatalogResolver catalogResolver = new CatalogResolver();
@@ -133,10 +192,13 @@
// create xslt transformer:
SAXTransformerFactory tf = (SAXTransformerFactory)TransformerFactory.newInstance();
- String[] xsltPath = getXSLTPath(getPath());
- TransformerHandler[] xsltHandlers = new TransformerHandler[xsltPath.length];
- for (int i = 0; i < xsltPath.length; i++) {
- xsltHandlers[i] = tf.newTransformerHandler(new StreamSource(repo.getNode(xsltPath[i]).getInputStream()));
+ String[] xsltPaths = viewDescriptor.getXSLTPaths();
+ if (xsltPaths == null || xsltPaths.length == 0) {
+ xsltPaths = getXSLTPath(getPath());
+ }
+ TransformerHandler[] xsltHandlers = new TransformerHandler[xsltPaths.length];
+ for (int i = 0; i < xsltPaths.length; i++) {
+ xsltHandlers[i] = tf.newTransformerHandler(new StreamSource(repo.getNode(xsltPaths[i]).getInputStream()));
passTransformerParameters(xsltHandlers[i].getTransformer());
}
@@ -150,14 +212,8 @@
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);
- }
+ Serializer serializer = createSerializer(viewDescriptor);
+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// chain everything together (create a pipeline):
@@ -188,6 +244,45 @@
}
/**
+ * Creates an html or xml serializer for the given view id.
+ * @param viewId
+ * @return serializer
+ * @throws Exception
+ */
+ protected Serializer createSerializer(ConfigurableViewDescriptor viewDescriptor) throws Exception {
+ Serializer serializer = null;
+ String serializerKey = viewDescriptor.getSerializerKey();
+ if (serializerKey != null) {
+ serializer = SerializerFactory.getSerializer(serializerKey);
+ if (serializer == null) {
+ throw new Exception("could not create serializer for key: " + serializerKey);
+ }
+ } else {
+ String mimeType = getMimeType(viewDescriptor.getId());
+
+ if (mimeType.equals("text/html")) {
+ serializer = SerializerFactory.getSerializer(SerializerFactory.HTML_TRANSITIONAL);
+ } else if (mimeType.equals("application/xml")) {
+ serializer = SerializerFactory.getSerializer(SerializerFactory.XML);
+ } else {
+ serializer = SerializerFactory.getSerializer(SerializerFactory.XHTML_STRICT);
+ }
+ }
+ // allow to override xml declaration and doctype:
+ Properties properties = viewDescriptor.getSerializerProperties();
+ if (properties != null) {
+ Enumeration propNames = properties.propertyNames();
+ while (propNames.hasMoreElements()) {
+ String name = (String)propNames.nextElement();
+ String value = properties.getProperty(name);
+
+ serializer.getOutputFormat().setProperty(name, value);
+ }
+ }
+ return serializer;
+ }
+
+ /**
* Gets the names of the i18n message catalogues used for the i18n transformation.
* Looks for an rc config property named 'i18n-catalogue'. Defaults to 'global'.
* @return i18n catalogue name
@@ -228,6 +323,7 @@
// username
String username = getUsername();
if (username != null) transformer.setParameter("username", username);
+ transformer.setParameter("yanel.reservedPrefix", "yanel"); // TODO don't hardcode
}
/**
Modified: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/ExecutableUsecaseResource.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/ExecutableUsecaseResource.java 2007-11-23 11:03:13 UTC (rev 29162)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/ExecutableUsecaseResource.java 2007-11-23 11:03:35 UTC (rev 29163)
@@ -21,6 +21,7 @@
import java.util.List;
import org.apache.log4j.Category;
+import org.wyona.yanel.core.attributes.viewable.View;
/**
* The standard executable usecase works as follows:
@@ -37,6 +38,7 @@
private static Category log = Category.getInstance(ExecutableUsecaseResource.class);
+ protected static final String VIEW_DEFAULT = "default";
protected static final String VIEW_DONE = "done";
protected static final String VIEW_CANCEL = "cancel";
@@ -54,7 +56,7 @@
this.errorMessages = new LinkedList();
}
- protected UsecaseView processUsecase(String viewID) throws UsecaseException {
+ protected View processUsecase(String viewID) throws UsecaseException {
if (getParameter(PARAM_SUBMIT) != null) {
if (!checkPreconditions() || hasErrors()) {
return generateView(VIEW_DEFAULT);
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-11-23 11:03:13 UTC (rev 29162)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseResource.java 2007-11-23 11:03:35 UTC (rev 29163)
@@ -19,6 +19,7 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
+import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.HashMap;
@@ -51,6 +52,8 @@
import org.wyona.yanel.core.transformation.I18nTransformer2;
import org.wyona.yanel.core.transformation.XIncludeTransformer;
import org.wyona.yanel.core.util.PathUtil;
+import org.wyona.yanel.impl.resources.xml.ConfigurableViewDescriptor;
+import org.wyona.yanel.impl.resources.BasicXMLResource;
import org.wyona.yarep.core.Repository;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
@@ -59,14 +62,10 @@
/**
*
*/
-public class UsecaseResource extends Resource implements ViewableV2 {
+public class UsecaseResource extends BasicXMLResource {
private static Category log = Category.getInstance(UsecaseResource.class);
- protected static final String VIEW_DEFAULT = "default";
-
- protected HashMap views;
-
/**
*
*/
@@ -77,70 +76,55 @@
init();
return processUsecase(viewID);
}
-
+
protected void init() throws UsecaseException {
- // reads views from configuration:
- try {
- this.views = new HashMap();
- Document customConfigDoc = getConfiguration().getCustomConfiguration();
- if (customConfigDoc != null) {
- Configuration config = ConfigurationUtil.toConfiguration(customConfigDoc.getDocumentElement());
- Configuration viewsConfig = config.getChild("views");
- Configuration[] viewConfigs = viewsConfig.getChildren("view");
- for (int i = 0; i < viewConfigs.length; i++) {
- String id = viewConfigs[i].getAttribute("id");
- String type = viewConfigs[i].getAttribute("type");
- UsecaseView view = new UsecaseView(id, type);
- view.configure(viewConfigs[i]);
- this.views.put(id, view);
- }
- }
- } catch (ConfigurationException e) {
- String errorMsg = "Error configuring usecase: " + getName() + ": " + e.toString();
- log.error(errorMsg, e);
- throw new UsecaseException(errorMsg, e);
- }
+ // implement in subclass
}
-
- protected UsecaseView processUsecase(String viewID) throws UsecaseException {
+
+ protected View processUsecase(String viewID) throws UsecaseException {
return generateView(viewID);
}
-
- protected UsecaseView generateView(String viewID) throws UsecaseException {
+
+ protected View generateView(String viewID) throws UsecaseException {
if (viewID == null || viewID.length() == 0) {
- viewID = VIEW_DEFAULT;
+ viewID = DEFAULT_VIEW_ID;
}
- UsecaseView view = (UsecaseView)this.views.get(viewID);
-
- if (view == null) {
- throw new UsecaseException("Usecase " + getName() + " has no view with id: " + viewID);
+ try {
+ ConfigurableViewDescriptor viewDescriptor = (ConfigurableViewDescriptor)getViewDescriptor(viewID);
+
+ if (viewDescriptor == null) {
+ throw new UsecaseException("Usecase " + getName() + " has no view with id: " + viewID);
+ }
+
+ if (viewDescriptor.getType().equals(ConfigurableViewDescriptor.TYPE_JELLY)) {
+ InputStream xmlInputStream = getJellyXML(viewDescriptor);
+ return getXMLView(viewID, xmlInputStream);
+ /*} else if (viewDescriptor.getType().equals(ViewDescriptor.TYPE_REDIRECT)) {
+ String redirectURL = getRedirectURL(viewDescriptor);
+ UsecaseView view = new UsecaseView(viewDescriptor.getId(), UsecaseView.TYPE_REDIRECT);
+ view.setRedirectURL(redirectURL);
+ return view;*/
+ } else if (viewDescriptor.getType().equals(ConfigurableViewDescriptor.TYPE_CUSTOM)) {
+ return renderCustomView(viewDescriptor);
+ } else {
+ throw new UsecaseException("Usecase " + getName() + " has invalid view type: " + viewDescriptor.getType());
+ }
+ } catch (Exception e) {
+ String errorMsg = "Error generating view of usecase: " + getName() + ": " + e;
+ log.error(errorMsg, e);
+ throw new UsecaseException(errorMsg, e);
}
-
- if (view.getType().equals(UsecaseView.TYPE_JELLY)) {
- String viewTemplate = view.getTemplate();
- renderJellyView(view, viewTemplate);
- return view;
- } else if (view.getType().equals(UsecaseView.TYPE_REDIRECT)) {
- String redirectURL = getRedirectURL(view);
- view.setRedirectURL(redirectURL);
- return view;
- } else if (view.getType().equals(UsecaseView.TYPE_CUSTOM)) {
- renderCustomView(view);
- return view;
- } else {
- throw new UsecaseException("Usecase " + getName() + " has invalid view type: " + view.getType());
- }
}
-
+
protected String getName() {
return "name";
}
- protected void renderJellyView(UsecaseView view, String viewTemplate) throws UsecaseException {
+ protected InputStream getJellyXML(ConfigurableViewDescriptor viewDescriptor) throws UsecaseException {
try {
- String viewId = view.getID();
+ String viewTemplate = viewDescriptor.getTemplate();
Repository repo = this.getRealm().getRepository();
-
+
JellyContext jellyContext = new JellyContext();
jellyContext.setVariable("resource", this);
jellyContext.setVariable("yanel.back2context", PathUtil.backToContext(realm, getPath()));
@@ -150,127 +134,31 @@
jellyContext.setVariable("yanel.reservedPrefix", this.getYanel().getReservedPrefix());
//jellyContext.setVariable("request", request);
- // at first we write the jelly output to a stream,
- // instead of feeding it directly to the sax pipeline,
- // because otherwise there is an error: EmptyStackException
ByteArrayOutputStream jellyResultStream = new ByteArrayOutputStream();
XMLOutput jellyOutput = XMLOutput.createXMLOutput(jellyResultStream);
-
+
//String viewTemplate = view.getTemplate();
jellyContext.runScript(new InputSource(repo.getNode(viewTemplate).getInputStream()), jellyOutput);
jellyOutput.flush();
-
- // create reader:
- XMLReader xmlReader = XMLReaderFactory.createXMLReader();
- CatalogResolver catalogResolver = new CatalogResolver();
- xmlReader.setEntityResolver(catalogResolver);
-
- // create xslt transformer:
- SAXTransformerFactory tf = (SAXTransformerFactory)TransformerFactory.newInstance();
-
- String[] xsltPath = getResourceConfigProperties("xslt");
-
- TransformerHandler[] xsltHandlers = new TransformerHandler[xsltPath.length];
- for (int i = 0; i < xsltPath.length; i++) {
- xsltHandlers[i] = tf.newTransformerHandler(new StreamSource(repo.getNode(xsltPath[i]).getInputStream()));
- xsltHandlers[i].getTransformer().setParameter("yanel.path.name", PathUtil.getName(getPath()));
- xsltHandlers[i].getTransformer().setParameter("yanel.path", getPath());
- xsltHandlers[i].getTransformer().setParameter("yanel.back2context", PathUtil.backToContext(realm, getPath()));
- xsltHandlers[i].getTransformer().setParameter("yanel.globalHtdocsPath", PathUtil.getGlobalHtdocsPath(this));
- xsltHandlers[i].getTransformer().setParameter("yanel.resourcesHtdocsPath", PathUtil.getResourcesHtdocsPath(this));
- 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", this.getYanel().getReservedPrefix());
- }
-
- // create i18n transformer:
- I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getRequestedLanguage(), getRealm().getDefaultLanguage());
- i18nTransformer.setEntityResolver(catalogResolver);
-
- // 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();
-
- // 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(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(getMimeType(viewId));
+ return new ByteArrayInputStream(jellyResultStream.toByteArray());
} catch (Exception e) {
String errorMsg = "Error creating jelly view of usecase: " + getName() + ": " + e;
log.error(errorMsg, e);
throw new UsecaseException(errorMsg, e);
}
}
-
- protected String getRedirectURL(UsecaseView view) {
- return view.getRedirectURL();
+
+ protected String getRedirectURL(ConfigurableViewDescriptor viewDescriptor) {
+ return viewDescriptor.getRedirectURL();
}
-
- protected void renderCustomView(UsecaseView view) throws UsecaseException {
+
+ protected View renderCustomView(ConfigurableViewDescriptor viewDescriptor) throws UsecaseException {
// implement in subclass
+ return null;
}
-
-
+
public boolean exists() throws Exception {
return true;
}
- public String getMimeType(String viewId) throws Exception {
- String mimeType = getResourceConfigProperty("mime-type");
- if (mimeType != null) return mimeType;
- return "application/xhtml+xml";
- }
-
- public long getSize() throws Exception {
- // TODO Auto-generated method stub
- return -1;
- }
-
- public ViewDescriptor[] getViewDescriptors() {
- // TODO: call init() instead of return null
- if (this.views != null) {
- ViewDescriptor[] descriptors = new ViewDescriptor[this.views.size()];
-
- Iterator iter = this.views.keySet().iterator();
- int i = 0;
- while (iter.hasNext()) {
- UsecaseView view = (UsecaseView)iter.next();
- descriptors[i] = new ViewDescriptor(view.getID());
- String mimeType = view.getMimeType();
- if (mimeType == null || mimeType.length() == 0) {
- mimeType = "application/xhtml+xml";
- }
- descriptors[i].setMimeType(mimeType);
- i++;
- }
- return descriptors;
- }
- return null;
- }
-
}
Modified: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseView.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseView.java 2007-11-23 11:03:13 UTC (rev 29162)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/UsecaseView.java 2007-11-23 11:03:35 UTC (rev 29163)
@@ -1,89 +0,0 @@
-/*
- * Copyright 2006 Wyona
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.wyona.org/licenses/APACHE-LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.wyona.yanel.impl.resources.usecase;
-
-
-import org.wyona.yanel.core.attributes.viewable.View;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.log4j.Category;
-
-/**
- *
- */
-public class UsecaseView extends View {
-
- private static Category log = Category.getInstance(UsecaseView.class);
-
- public static final String TYPE_JELLY = "jelly";
- public static final String TYPE_REDIRECT = "redirect";
- public static final String TYPE_CUSTOM = "custom";
-
- protected String template;
- protected String type;
- protected String id;
- protected String redirectURL;
-
- /**
- *
- */
- public UsecaseView(String id, String type) {
- this.id = id;
- this.type = type;
- }
-
- /**
- *
- */
- public void configure(Configuration config) throws ConfigurationException {
- if (getType().equals(TYPE_JELLY)) {
- setTemplate(config.getChild("template").getValue());
- }
- if (getType().equals(TYPE_REDIRECT)) {
- setRedirectURL(config.getChild("url").getValue());
- }
- }
-
- public String getRedirectURL() {
- return redirectURL;
- }
-
- public void setRedirectURL(String redirectURL) {
- this.redirectURL = redirectURL;
- }
-
- public String getTemplate() {
- return template;
- }
-
- public void setTemplate(String template) {
- this.template = template;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getID() {
- return this.id;
- }
-
-}
Modified: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/thread/ThreadUsecaseResource.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/thread/ThreadUsecaseResource.java 2007-11-23 11:03:13 UTC (rev 29162)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/usecase/thread/ThreadUsecaseResource.java 2007-11-23 11:03:35 UTC (rev 29163)
@@ -7,9 +7,9 @@
import javax.servlet.http.HttpSession;
import org.apache.log4j.Category;
+import org.wyona.yanel.core.attributes.viewable.View;
import org.wyona.yanel.impl.resources.usecase.ExecutableUsecaseResource;
import org.wyona.yanel.impl.resources.usecase.UsecaseException;
-import org.wyona.yanel.impl.resources.usecase.UsecaseView;
/**
* A resource which executes a background thread and shows periodical status information.
@@ -26,8 +26,8 @@
/**
* @see org.wyona.yanel.impl.resources.usecase.UsecaseResource#processUsecase(java.lang.String)
*/
- protected UsecaseView processUsecase(String viewID) throws UsecaseException {
- UsecaseView view = null;
+ protected View processUsecase(String viewID) throws UsecaseException {
+ View view = null;
try {
HttpSession session = getEnvironment().getRequest().getSession();
More information about the Yanel-commits
mailing list