You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gk...@apache.org on 2007/07/25 12:58:16 UTC
svn commit: r559394 - in /cocoon/trunk:
blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/
blocks/cocoon-template/cocoon-template-impl/src/test/resources/org/apache/cocoon/template/jxtg/
core/cocoon-core/src/main/java...
Author: gkossakowski
Date: Wed Jul 25 03:58:04 2007
New Revision: 559394
URL: http://svn.apache.org/viewvc?view=rev&rev=559394
Log:
COCOON-2095:
* moved ObjectModel initialization from TemplateObjectModelHelper.java to CocoonObjectModelProvider.java
* ObjectModel.java - added ROLE field
* ObjectModelImpl.java - fixed filling ObjectModel with data provided by ObjectModelProvider classes
* FlowObjectModelHelper.java - changed name of method to more accurate and more plumbing, sight...
* ObjectModel.xml and ObjectModelProviders.xml - simple fixes
* Adapted test cases to new method name in FlowObjectModelHelper
* ObjectModel is now a Spring bean, adapting JXTemplateGenerator
* Added stub implementation of HttpSession in MockProcessInfoProvider
Modified:
cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java
cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/test/resources/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.spring.xml
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/objectmodel/ObjectModel.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/environment/FlowObjectModelHelper.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModel.xml
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModelProviders.xml
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/environment/FOMTestCase.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/resources/org/apache/cocoon/environment/FOMTestCase.spring.xml
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/processing/impl/MockProcessInfoProvider.java
Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java Wed Jul 25 03:58:04 2007
@@ -87,6 +87,7 @@
public void service(ServiceManager manager) throws ServiceException {
super.service(manager);
this.scriptManager = (ScriptManager) this.manager.lookup(ScriptManager.ROLE);
+ this.newObjectModel = (ObjectModel) this.manager.lookup(ObjectModel.ROLE);
}
/**
@@ -123,7 +124,7 @@
this.startDocument = scriptManager.resolveTemplate(src);
}
- this.newObjectModel = FlowObjectModelHelper.getNewObjectModelWithFOM(objectModel, parameters);
+ FlowObjectModelHelper.fillNewObjectModelWithFOM(newObjectModel, objectModel, parameters);
this.namespaces = new NamespacesTable();
this.definitions = new HashMap();
}
Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/test/resources/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.spring.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/test/resources/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.spring.xml?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/test/resources/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.spring.xml (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/test/resources/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.spring.xml Wed Jul 25 03:58:04 2007
@@ -24,5 +24,15 @@
<import resource="classpath:META-INF/cocoon/spring/JavaScriptCompiler.xml"/>
<import resource="classpath:META-INF/cocoon/spring/JexlCompiler.xml"/>
<import resource="classpath:META-INF/cocoon/spring/JXPathCompiler.xml"/>
+ <import resource="classpath:META-INF/cocoon/spring/ObjectModelProviders.xml"/>
+
+ <!-- Redefining this bean instead of importing because originally it is in "call" scope -->
+ <bean name="org.apache.cocoon.objectmodel.ObjectModel" class="org.apache.cocoon.objectmodel.ObjectModelImpl">
+ <property name="initialEntries">
+ <map>
+ <entry key="cocoon" value-ref="org.apache.cocoon.objectmodel.provider.CocoonEntryObjectModelProvider"/>
+ </map>
+ </property>
+ </bean>
</beans>
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java Wed Jul 25 03:58:04 2007
@@ -103,21 +103,6 @@
// first create the "cocoon object":
final Map cocoon = new HashMap();
- // cocoon.request
- final Request request = ObjectModelHelper.getRequest( objectModel );
- cocoon.put("request", request);
-
- // cocoon.session
- final Session session = request.getSession(false);
- if (session != null) {
- cocoon.put("session", session);
- }
-
- // cocoon.context
- final org.apache.cocoon.environment.Context context =
- ObjectModelHelper.getContext( objectModel );
- cocoon.put("context", context);
-
// cocoon.continuation
final Object cont = FlowHelper.getWebContinuation(objectModel);
if (cont != null) {
@@ -128,8 +113,6 @@
if (parameters != null) {
cocoon.put("parameters", new ParametersMap(parameters));
}
-
- cocoon.put("settings", (Settings)WebAppContextUtils.getCurrentWebApplicationContext().getBean(Settings.ROLE));
final Map map = new HashMap();
map.put("cocoon", cocoon);
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/objectmodel/ObjectModel.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/objectmodel/ObjectModel.java?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/objectmodel/ObjectModel.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/objectmodel/ObjectModel.java Wed Jul 25 03:58:04 2007
@@ -23,6 +23,8 @@
*/
public interface ObjectModel extends Map {
+ static public String ROLE = ObjectModel.class.getName();
+
public static final String CONTEXTBEAN = "contextBean";
public static final String NAMESPACE = "namespace";
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/objectmodel/ObjectModelImpl.java Wed Jul 25 03:58:04 2007
@@ -21,6 +21,7 @@
import java.util.ListIterator;
import java.util.Map;
+import org.apache.cocoon.objectmodel.provider.ObjectModelProvider;
import org.apache.commons.collections.ArrayStack;
import org.apache.commons.collections.KeyValue;
import org.apache.commons.collections.MultiMap;
@@ -120,10 +121,13 @@
}
public void setInitialEntries(Map initialEntries) {
- if (initialEntries != null)
+ if (this.initialEntries != null)
throw new IllegalStateException("Object Model has initial entries set already.");
this.initialEntries = initialEntries;
- putAll(initialEntries);
+ for (Iterator keysIterator = initialEntries.keySet().iterator(); keysIterator.hasNext(); ) {
+ Object key = keysIterator.next();
+ put(key, ((ObjectModelProvider)initialEntries.get(key)).getMap());
+ }
}
}
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/environment/FlowObjectModelHelper.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/environment/FlowObjectModelHelper.java?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/environment/FlowObjectModelHelper.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/environment/FlowObjectModelHelper.java Wed Jul 25 03:58:04 2007
@@ -16,6 +16,7 @@
*/
package org.apache.cocoon.template.environment;
+import java.util.Iterator;
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
@@ -63,18 +64,22 @@
/**
* Create an expression context that contains the object model
+ * @param newObjectModel TODO
*/
- public static ObjectModel getNewObjectModelWithFOM(final Map objectModel,
- final Parameters parameters) {
+ public static void fillNewObjectModelWithFOM(ObjectModel newObjectModel,
+ final Map objectModel, final Parameters parameters) {
Map expressionContext = TemplateObjectModelHelper.getTemplateObjectModel(objectModel, parameters);
FlowObjectModelHelper.addJavaPackages(expressionContext);
//FIXME: It's a temporary code!
- org.apache.cocoon.objectmodel.ObjectModel newObjectModel = new org.apache.cocoon.objectmodel.ObjectModelImpl();
- newObjectModel.putAll(expressionContext);
+ ((Map)newObjectModel.get("cocoon")).putAll((Map)expressionContext.get("cocoon"));
+ for (Iterator keysIterator = expressionContext.keySet().iterator(); keysIterator.hasNext(); ) {
+ Object key = keysIterator.next();
+ if ("cocoon".equals(key))
+ continue;
+ newObjectModel.put(key, expressionContext.get(key));
+ }
newObjectModel.put(org.apache.cocoon.objectmodel.ObjectModel.CONTEXTBEAN, FlowHelper.getContextObject(objectModel));
-
- return newObjectModel;
}
/**
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModel.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModel.xml?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModel.xml (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModel.xml Wed Jul 25 03:58:04 2007
@@ -31,8 +31,7 @@
<map>
<entry key="cocoon" value-ref="org.apache.cocoon.objectmodel.provider.CocoonEntryObjectModelProvider"/>
</map>
- </property>
-
+ </property>
</bean>
</beans>
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModelProviders.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModelProviders.xml?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModelProviders.xml (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/resources/META-INF/cocoon/spring/ObjectModelProviders.xml Wed Jul 25 03:58:04 2007
@@ -23,8 +23,8 @@
<!-- ObjectModelEntry provider for cocoon -->
<bean name="org.apache.cocoon.objectmodel.provider.CocoonEntryObjectModelProvider"
class="org.apache.cocoon.objectmodel.provider.CocoonEntryObjectModelProvider">
- <property name="settings" value-ref="org.apache.cocoon.configuration.Settings"/>
- <property name="processInfoProvider" value-ref="org.apache.cocoon.processing.ProcessInfoProvider"/>
+ <property name="settings" ref="org.apache.cocoon.configuration.Settings"/>
+ <property name="processInfoProvider" ref="org.apache.cocoon.processing.ProcessInfoProvider"/>
</bean>
</beans>
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/environment/FOMTestCase.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/environment/FOMTestCase.java?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/environment/FOMTestCase.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/java/org/apache/cocoon/environment/FOMTestCase.java Wed Jul 25 03:58:04 2007
@@ -28,10 +28,10 @@
public void testFOMJexl() throws ExpressionException {
ExpressionFactory factory = (ExpressionFactory) this.getBeanFactory().getBean(ExpressionFactory.ROLE);
+ ObjectModel objectModel = (ObjectModel) this.getBeanFactory().getBean(ObjectModel.class.getName());
Parameters parameters = new Parameters();
parameters.setParameter("test", "foo");
- ObjectModel objectModel =
- FlowObjectModelHelper.getNewObjectModelWithFOM(getObjectModel(), parameters);
+ FlowObjectModelHelper.fillNewObjectModelWithFOM(objectModel, getObjectModel(), parameters);
Expression expression = factory.getExpression("jexl", "cocoon.parameters.test");
assertEquals("foo", expression.evaluate(objectModel));
@@ -42,10 +42,10 @@
public void testFOMJXPath() throws ExpressionException {
ExpressionFactory factory = (ExpressionFactory) this.getBeanFactory().getBean(ExpressionFactory.ROLE);
+ ObjectModel objectModel = (ObjectModel) this.getBeanFactory().getBean(ObjectModel.class.getName());
Parameters parameters = new Parameters();
parameters.setParameter("test", "foo");
- ObjectModel objectModel =
- FlowObjectModelHelper.getNewObjectModelWithFOM(getObjectModel(), parameters);
+ FlowObjectModelHelper.fillNewObjectModelWithFOM(objectModel, getObjectModel(), parameters);
Expression expression = factory.getExpression("jxpath", "$cocoon/parameters/test");
assertEquals("foo", expression.evaluate(objectModel));
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/resources/org/apache/cocoon/environment/FOMTestCase.spring.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/resources/org/apache/cocoon/environment/FOMTestCase.spring.xml?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/resources/org/apache/cocoon/environment/FOMTestCase.spring.xml (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/resources/org/apache/cocoon/environment/FOMTestCase.spring.xml Wed Jul 25 03:58:04 2007
@@ -23,5 +23,15 @@
<import resource="classpath:META-INF/cocoon/spring/DefaultExpressionFactory.xml"/>
<import resource="classpath:META-INF/cocoon/spring/JexlCompiler.xml"/>
<import resource="classpath:META-INF/cocoon/spring/JXPathCompiler.xml"/>
+ <import resource="classpath:META-INF/cocoon/spring/ObjectModelProviders.xml"/>
+
+ <!-- Redefining this bean instead of importing because originally it is in "call" scope -->
+ <bean name="org.apache.cocoon.objectmodel.ObjectModel" class="org.apache.cocoon.objectmodel.ObjectModelImpl">
+ <property name="initialEntries">
+ <map>
+ <entry key="cocoon" value-ref="org.apache.cocoon.objectmodel.provider.CocoonEntryObjectModelProvider"/>
+ </map>
+ </property>
+ </bean>
</beans>
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/processing/impl/MockProcessInfoProvider.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/processing/impl/MockProcessInfoProvider.java?view=diff&rev=559394&r1=559393&r2=559394
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/processing/impl/MockProcessInfoProvider.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/processing/impl/MockProcessInfoProvider.java Wed Jul 25 03:58:04 2007
@@ -32,10 +32,12 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionContext;
import org.apache.cocoon.environment.Cookie;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Response;
+import org.apache.cocoon.environment.Session;
import org.apache.cocoon.processing.ProcessInfoProvider;
/**
@@ -254,13 +256,11 @@
}
public HttpSession getSession() {
- //FIXME: Implement this method if needed
- throw new UnsupportedOperationException();
+ return getSession(true);
}
public HttpSession getSession(boolean create) {
- //FIXME: Implement this method if needed
- throw new UnsupportedOperationException();
+ return new StubSession(request.getSession(create));
}
public String getSitemapPath() {
@@ -549,6 +549,93 @@
throw new UnsupportedOperationException();
}
+ }
+
+ static public class StubSession implements HttpSession {
+ private Session session;
+
+ public StubSession(Session session) {
+ this.session = session;
+ }
+
+ public Object getAttribute(String name) {
+ return session.getAttribute(name);
+ }
+
+ public Enumeration getAttributeNames() {
+ return session.getAttributeNames();
+ }
+
+ public Map getAttributes() {
+ return session.getAttributes();
+ }
+
+ public long getCreationTime() {
+ return session.getCreationTime();
+ }
+
+ public String getId() {
+ return session.getId();
+ }
+
+ public long getLastAccessedTime() {
+ return session.getLastAccessedTime();
+ }
+
+ public int getMaxInactiveInterval() {
+ return session.getMaxInactiveInterval();
+ }
+
+ public void invalidate() {
+ session.invalidate();
+ }
+
+ public boolean isNew() {
+ return session.isNew();
+ }
+
+ public void removeAttribute(String name) {
+ session.removeAttribute(name);
+ }
+
+ public void setAttribute(String name, Object value) {
+ session.setAttribute(name, value);
+ }
+
+ public void setMaxInactiveInterval(int interval) {
+ session.setMaxInactiveInterval(interval);
+ }
+
+ public ServletContext getServletContext() {
+ //FIXME: Implement this method if needed
+ throw new UnsupportedOperationException();
+ }
+
+ public HttpSessionContext getSessionContext() {
+ //FIXME: Implement this method if needed
+ throw new UnsupportedOperationException();
+ }
+
+ public Object getValue(String name) {
+ //FIXME: Implement this method if needed
+ throw new UnsupportedOperationException();
+ }
+
+ public String[] getValueNames() {
+ //FIXME: Implement this method if needed
+ throw new UnsupportedOperationException();
+ }
+
+ public void putValue(String name, Object value) {
+ //FIXME: Implement this method if needed
+ throw new UnsupportedOperationException();
+ }
+
+ public void removeValue(String name) {
+ //FIXME: Implement this method if needed
+ throw new UnsupportedOperationException();
+ }
+
}
}