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();
+        }
+        
     }
 
 }