You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2008/06/18 16:19:53 UTC
svn commit: r669176 - in /cocoon/whiteboard/corona/trunk:
corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/
corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/
corona-sitemap/ corona-sitemap/src/main/java/org/apache/cocoon/...
Author: reinhard
Date: Wed Jun 18 07:19:52 2008
New Revision: 669176
URL: http://svn.apache.org/viewvc?rev=669176&view=rev
Log:
. introduce an explicit object model
(not completely finished yet -> ObjectModel.sitemapParameters needs to be improved)
. support JEXL expressions
. implicit mime-type (by asking the servlet-container)
this is different to Cocoon 2.x because mime-type guessing is done based on the requestURI and
not based on the resource used by a reader
. fix Last-Modified-Since (non all pipelines produce a Last-Modified value)
Added:
cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java (with props)
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java (with props)
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java (with props)
Modified:
cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapDelegator.java
cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/HttpContextHelper.java
cocoon/whiteboard/corona/trunk/corona-sitemap/pom.xml
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreter.java
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreterFactory.java
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/SitemapLanguageInterpreter.java
cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml
Modified: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapDelegator.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapDelegator.java?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapDelegator.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapDelegator.java Wed Jun 18 07:19:52 2008
@@ -23,7 +23,8 @@
private static final ThreadLocal<SitemapServlet> SITEMAP_SERVLET = new ThreadLocal<SitemapServlet>();
- public static void delegate(String requestURI, Map<String, Object> parameters, OutputStream outputStream) throws Exception {
+ public static void delegate(String requestURI, Map<String, Object> parameters, OutputStream outputStream)
+ throws Exception {
SitemapServlet sitemapServlet = SITEMAP_SERVLET.get();
if (sitemapServlet == null) {
Modified: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java Wed Jun 18 07:19:52 2008
@@ -33,10 +33,13 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.cocoon.configuration.Settings;
import org.apache.cocoon.corona.servlet.node.LastModifiedCollector;
import org.apache.cocoon.corona.servlet.node.MimeTypeCollector;
import org.apache.cocoon.corona.servlet.node.StatusCodeCollector;
import org.apache.cocoon.corona.servlet.util.HttpContextHelper;
+import org.apache.cocoon.corona.servlet.util.ObjectModelProvider;
+import org.apache.cocoon.corona.servlet.util.SettingsHelper;
import org.apache.cocoon.corona.sitemap.Invocation;
import org.apache.cocoon.corona.sitemap.InvocationImpl;
import org.apache.cocoon.corona.sitemap.SitemapBuilder;
@@ -71,6 +74,7 @@
invocation.setRequestURI(requestURI);
invocation.setParameters(parameters);
invocation.setOutputStream(outputStream);
+ invocation.setObjectModel(ObjectModelProvider.provide(parameters));
this.sitemap.invoke(invocation);
}
@@ -97,6 +101,9 @@
Map<String, Object> parameters = this.getInvocationParameters(request);
HttpContextHelper.storeRequest(request, parameters);
HttpContextHelper.storeResponse(response, parameters);
+ HttpContextHelper.storeServletContext(this.getServletContext(), parameters);
+ Settings settings = (Settings) this.beanFactory.getBean(Settings.class.getName());
+ SettingsHelper.storeSettings(settings, parameters);
// invoke the sitemap engine
ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
@@ -108,14 +115,14 @@
int contentLengh = baos.size();
int statusCode = StatusCodeCollector.getStatusCode();
- // send the Last-Modified header in every case
+ // send the Last-Modified header
if (lastModified > -1) {
response.setDateHeader("Last-Modified", lastModified);
}
// conditional request support
long ifLastModifiedSince = request.getDateHeader("If-Modified-Since");
- if (ifLastModifiedSince > 0 && ifLastModifiedSince / 1000 >= lastModified / 1000) {
+ if (ifLastModifiedSince > 0 && ifLastModifiedSince / 1000 >= lastModified / 1000 && lastModified > 0) {
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
if (this.logger.isInfoEnabled()) {
this.logger.info("The requested resource " + request.getRequestURI()
@@ -127,7 +134,13 @@
}
// write the sitemap result to the output stream
- response.setContentType(mimeType);
+ if (mimeType == null || "".equals(mimeType) || "content/unknown".equals(mimeType)) {
+ mimeType = this.servletConfig.getServletContext().getMimeType(request.getRequestURI());
+ }
+ if (mimeType != null) {
+ response.setContentType(mimeType);
+ }
+
response.setContentLength(contentLengh);
response.setStatus(statusCode);
if (this.logger.isInfoEnabled()) {
Modified: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/HttpContextHelper.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/HttpContextHelper.java?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/HttpContextHelper.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/HttpContextHelper.java Wed Jun 18 07:19:52 2008
@@ -20,16 +20,18 @@
import java.util.Map;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
public class HttpContextHelper {
private static final String HTTP_SERVLET_REQUEST_KEY = HttpServletRequest.class.getName();
private static final String HTTP_SERVLET_RESPONSE_KEY = HttpServletResponse.class.getName();
+ private static final String HTTP_SERVLET_CONTEXT_KEY = ServletContext.class.getName();
+
public static HttpServletRequest getRequest(Map<String, ? extends Object> parameters) {
Object parameter = parameters.get(HTTP_SERVLET_REQUEST_KEY);
if (parameter instanceof HttpServletRequest) {
@@ -50,6 +52,16 @@
"A HttpServletResponse is not available. This might indicate an invocation outside a servlet.");
}
+ public static ServletContext getServletContext(Map<String, ? extends Object> parameters) {
+ Object parameter = parameters.get(HTTP_SERVLET_CONTEXT_KEY);
+ if (parameter instanceof ServletContext) {
+ return (ServletContext) parameter;
+ }
+
+ throw new IllegalStateException(
+ "The ServletContext is not available. This might indicate an invocation outside a servlet.");
+ }
+
public static void storeRequest(HttpServletRequest httpServletRequest, Map<String, Object> parameters) {
parameters.put(HTTP_SERVLET_REQUEST_KEY, httpServletRequest);
}
@@ -57,4 +69,8 @@
public static void storeResponse(HttpServletResponse httpServletResponse, Map<String, Object> parameters) {
parameters.put(HTTP_SERVLET_RESPONSE_KEY, httpServletResponse);
}
+
+ public static void storeServletContext(ServletContext servletContext, Map<String, Object> parameters) {
+ parameters.put(HTTP_SERVLET_CONTEXT_KEY, servletContext);
+ }
}
Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java?rev=669176&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java Wed Jun 18 07:19:52 2008
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.org/licenses/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.apache.cocoon.corona.servlet.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+import org.apache.cocoon.corona.sitemap.objectmodel.ObjectModel;
+
+public class ObjectModelProvider {
+
+ public static ObjectModel provide(Map<String, Object> parameters) {
+ Map<String, Object> corona = new HashMap<String, Object>();
+ ObjectModel objectModel = new ObjectModel();
+ objectModel.put("corona", corona);
+
+ HttpServletRequest request = HttpContextHelper.getRequest(parameters);
+ corona.put("request", new ObjectModelRequest(request));
+ corona.put("response", HttpContextHelper.getResponse(parameters));
+ corona.put("context", HttpContextHelper.getServletContext(parameters));
+ corona.put("settings", SettingsHelper.getSettings(parameters));
+
+ return objectModel;
+ }
+
+ public static class ObjectModelRequest extends HttpServletRequestWrapper {
+
+ public ObjectModelRequest(HttpServletRequest request) {
+ super(request);
+ }
+
+ public String get(String key) {
+ return this.getParameter(key);
+ }
+ }
+}
Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/util/ObjectModelProvider.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/pom.xml?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/pom.xml (original)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/pom.xml Wed Jun 18 07:19:52 2008
@@ -46,10 +46,18 @@
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
+ <groupId>commons-jexl</groupId>
+ <artifactId>commons-jexl</artifactId>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>junit-addons</groupId>
+ <artifactId>junit-addons</artifactId>
+ </dependency>
</dependencies>
</project>
Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java Wed Jun 18 07:19:52 2008
@@ -30,6 +30,7 @@
import org.apache.cocoon.corona.pipeline.action.Action;
import org.apache.cocoon.corona.pipeline.component.PipelineComponent;
import org.apache.cocoon.corona.sitemap.expression.LanguageInterpreter;
+import org.apache.cocoon.corona.sitemap.objectmodel.ObjectModel;
import org.apache.cocoon.corona.sitemap.util.ParameterHelper;
public class InvocationImpl implements Invocation {
@@ -41,18 +42,18 @@
private Map<String, Object> parameters = new HashMap<String, Object>();
private Pipeline pipeline;
private String requestURI;
- private SitemapParameters sitemapParameters = new SitemapParameters();
private URL baseURL;
+ private ObjectModel objectModel;
+
public InvocationImpl() {
}
/**
* Create a {@link InvocationImpl} object using the given output stream.
*
- * @param outputStream
- * The {@link OutputStream} where the result is writen to.
+ * @param outputStream The {@link OutputStream} where the result is writen to.
*/
public InvocationImpl(OutputStream outputStream) {
super();
@@ -60,13 +61,10 @@
}
/**
- * Create a {@link InvocationImpl} object using the given output stream and
- * requestURI.
+ * Create a {@link InvocationImpl} object using the given output stream and requestURI.
*
- * @param outputStream
- * The {@link OutputStream} where the result is writen to.
- * @param requestURI
- * The requested path.
+ * @param outputStream The {@link OutputStream} where the result is written to.
+ * @param requestURI The requested path.
*/
public InvocationImpl(OutputStream outputStream, String requestURI) {
super();
@@ -75,16 +73,11 @@
}
/**
- * Create a {@link InvocationImpl} object using the given output stream,
- * requestURI and parameters.
+ * Create a {@link InvocationImpl} object using the given output stream, requestURI and parameters.
*
- * @param outputStream
- * The {@link OutputStream} where the result is written to.
- * @param requestURI
- * The requested path.
- * @param parameters
- * A {@link Map} of parameters that are used when the pipeline is
- * being executed.
+ * @param outputStream The {@link OutputStream} where the result is written to.
+ * @param requestURI The requested path.
+ * @param parameters A {@link Map} of parameters that are used when the pipeline is being executed.
*/
public InvocationImpl(OutputStream outputStream, String requestURI, Map<String, Object> parameters) {
super();
@@ -146,7 +139,7 @@
}
public String getSitemapParameter(String parameterName) {
- return this.sitemapParameters.getParameter(parameterName);
+ return this.objectModel.sitemapParameters.getParameter(parameterName);
}
/**
@@ -175,8 +168,7 @@
/**
* {@inheritDoc}
*
- * @see org.apache.cocoon.corona.sitemap.Invocation#installComponent(java.lang.String,
- * java.util.Map)
+ * @see org.apache.cocoon.corona.sitemap.Invocation#installComponent(java.lang.String, java.util.Map)
*/
public void installComponent(String type, Map<String, ? extends Object> componentParameters) {
if (this.pipeline == null) {
@@ -213,17 +205,16 @@
* @see org.apache.cocoon.corona.sitemap.Invocation#popSitemapParameters()
*/
public void popSitemapParameters() {
- this.sitemapParameters.popParameters();
+ this.objectModel.sitemapParameters.popParameters();
}
/**
* {@inheritDoc}
*
- * @see org.apache.cocoon.corona.sitemap.Invocation#pushSitemapParameters(java.lang.String,
- * java.util.Map)
+ * @see org.apache.cocoon.corona.sitemap.Invocation#pushSitemapParameters(java.lang.String, java.util.Map)
*/
public void pushSitemapParameters(String nodeName, Map<String, ? extends Object> sitemapParameters) {
- this.sitemapParameters.pushParameters(nodeName, sitemapParameters);
+ this.objectModel.sitemapParameters.pushParameters(nodeName, sitemapParameters);
}
/**
@@ -279,6 +270,10 @@
}
public String resolveParameter(final String parameter) {
+ if (parameter == null) {
+ return null;
+ }
+
final StringBuilder result = new StringBuilder(parameter);
final Matcher matcher = PARAMETER_PATTERN.matcher(result);
@@ -291,10 +286,7 @@
}
final String variable = matcher.group(2);
-
- // FIXME Passing 'this' (InvocationContext) introduces a cyclic
- // dependency. Could be solved by having an explicit object model.
- final String replacement = languageInterpreter.resolve(variable, this);
+ final String replacement = languageInterpreter.resolve(variable, this.objectModel);
result.replace(matcher.start(), matcher.end(), replacement);
matcher.reset();
@@ -325,4 +317,8 @@
public void setBaseURL(URL baseURL) {
this.baseURL = baseURL;
}
+
+ public void setObjectModel(ObjectModel objectModel) {
+ this.objectModel = objectModel;
+ }
}
Added: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java?rev=669176&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java Wed Jun 18 07:19:52 2008
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.org/licenses/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.apache.cocoon.corona.sitemap.expression;
+
+import org.apache.cocoon.corona.sitemap.objectmodel.ObjectModel;
+import org.apache.commons.jexl.Expression;
+import org.apache.commons.jexl.ExpressionFactory;
+import org.apache.commons.jexl.JexlContext;
+import org.apache.commons.jexl.JexlHelper;
+
+public class JexlLanguageInterpreter implements LanguageInterpreter {
+
+ public JexlLanguageInterpreter() {
+ }
+
+ public String resolve(String expression, ObjectModel objectModel) {
+ Object o = null;
+ try {
+ Expression e = ExpressionFactory.createExpression(expression);
+ JexlContext jc = JexlHelper.createContext();
+ for (String key : objectModel.get().keySet()) {
+ jc.getVars().put(key, objectModel.get().get(key));
+ }
+
+ o = e.evaluate(jc);
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+
+ return o != null ? o.toString() : "";
+ }
+}
Propchange: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/JexlLanguageInterpreter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreter.java?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreter.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreter.java Wed Jun 18 07:19:52 2008
@@ -1,9 +1,9 @@
package org.apache.cocoon.corona.sitemap.expression;
-import org.apache.cocoon.corona.sitemap.Invocation;
+import org.apache.cocoon.corona.sitemap.objectmodel.ObjectModel;
public interface LanguageInterpreter {
- String resolve(String variable, Invocation invocation);
+ String resolve(String variable, ObjectModel objectModel);
}
Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreterFactory.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreterFactory.java?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreterFactory.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/LanguageInterpreterFactory.java Wed Jun 18 07:19:52 2008
@@ -18,7 +18,6 @@
*/
package org.apache.cocoon.corona.sitemap.expression;
-
public interface LanguageInterpreterFactory {
LanguageInterpreter getLanguageInterpreter(String language);
Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/SitemapLanguageInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/SitemapLanguageInterpreter.java?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/SitemapLanguageInterpreter.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/expression/SitemapLanguageInterpreter.java Wed Jun 18 07:19:52 2008
@@ -18,14 +18,14 @@
*/
package org.apache.cocoon.corona.sitemap.expression;
-import org.apache.cocoon.corona.sitemap.Invocation;
+import org.apache.cocoon.corona.sitemap.objectmodel.ObjectModel;
public class SitemapLanguageInterpreter implements LanguageInterpreter {
public SitemapLanguageInterpreter() {
}
- public String resolve(String variable, Invocation invocation) {
- return invocation.getSitemapParameter(variable);
+ public String resolve(String variable, ObjectModel objectModel) {
+ return objectModel.sitemapParameters.getParameter(variable);
}
}
Added: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java?rev=669176&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java Wed Jun 18 07:19:52 2008
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.org/licenses/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.apache.cocoon.corona.sitemap.objectmodel;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.cocoon.corona.sitemap.SitemapParameters;
+
+public class ObjectModel {
+
+ public SitemapParameters sitemapParameters = new SitemapParameters();
+
+ private Map<String, Object> model = new HashMap<String, Object>();
+
+ public void put(String key, Object object) {
+ this.model.put(key, object);
+ }
+
+ public Map<String, Object> get() {
+ return this.model;
+ }
+}
Propchange: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/objectmodel/ObjectModel.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml?rev=669176&r1=669175&r2=669176&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml (original)
+++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml Wed Jun 18 07:19:52 2008
@@ -25,5 +25,7 @@
class="org.apache.cocoon.corona.sitemap.expression.PrototypeLanguageInterpreterFactory" />
<bean name="expression-language:map" class="org.apache.cocoon.corona.sitemap.expression.SitemapLanguageInterpreter" />
+
+ <bean name="expression-language:jexl" class="org.apache.cocoon.corona.sitemap.expression.JexlLanguageInterpreter" />
</beans>