You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/06/14 13:34:25 UTC

svn commit: r414203 - in /cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal: layout/renderer/aspect/impl/XSLTAspect.java transformation/ProxyTransformer.java util/InputModuleHelper.java

Author: cziegeler
Date: Wed Jun 14 04:34:25 2006
New Revision: 414203

URL: http://svn.apache.org/viewvc?rev=414203&view=rev
Log:
Add support for input modules in start uri for application coplet.

Added:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/util/InputModuleHelper.java   (with props)
Modified:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/XSLTAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/ProxyTransformer.java

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/XSLTAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/XSLTAspect.java?rev=414203&r1=414202&r2=414203&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/XSLTAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/XSLTAspect.java Wed Jun 14 04:34:25 2006
@@ -166,6 +166,7 @@
     throws SAXException {
         // FIXME Get the stylesheet either from a layout attribute or another aspect
         try {
+            // FIXME - object model is not passed
             String stylesheet = config.stylesheet.resolve(null);
             return stylesheet;
         } catch (PatternException pe) {

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/ProxyTransformer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/ProxyTransformer.java?rev=414203&r1=414202&r2=414203&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/ProxyTransformer.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/transformation/ProxyTransformer.java Wed Jun 14 04:34:25 2006
@@ -41,6 +41,7 @@
 import org.apache.cocoon.portal.coplet.CopletData;
 import org.apache.cocoon.portal.coplet.CopletInstanceData;
 import org.apache.cocoon.portal.util.HtmlDomParser;
+import org.apache.cocoon.portal.util.InputModuleHelper;
 import org.apache.cocoon.transformation.AbstractTransformer;
 import org.apache.cocoon.util.NetUtils;
 import org.apache.cocoon.xml.XMLUtils;
@@ -114,12 +115,16 @@
     /** The portal service. */
     protected PortalService portalService;
 
+    /** Helper for resolving input modules. */
+    protected InputModuleHelper imHelper;
+
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
     public void service(ServiceManager manager) throws ServiceException {
         this.manager = manager;
         this.portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
+        this.imHelper = new InputModuleHelper(manager);
     }
 
     /**
@@ -131,6 +136,10 @@
             this.portalService = null;
             this.manager = null;
         }
+        if ( this.imHelper != null ) {
+            this.imHelper.dispose();
+            this.imHelper = null;
+        }
     }
 
     /**
@@ -156,14 +165,13 @@
 
         final CopletData copletData = this.copletInstanceData.getCopletData();
 
-        final String startURI = (String)copletData.getAttribute(START_URI);
-
         this.link = (String) this.copletInstanceData.getTemporaryAttribute(LINK);
 
         this.documentBase = (String) this.copletInstanceData.getAttribute(DOCUMENT_BASE);
 
         if (this.link == null) {
-            this.link = startURI;
+            final String startURI = (String)copletData.getAttribute(START_URI);
+            this.link = this.imHelper.resolve(startURI);
         }
 
         if (documentBase == null) {

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/util/InputModuleHelper.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/util/InputModuleHelper.java?rev=414203&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/util/InputModuleHelper.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/util/InputModuleHelper.java Wed Jun 14 04:34:25 2006
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.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.portal.util;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.treeprocessor.variables.VariableResolver;
+import org.apache.cocoon.components.treeprocessor.variables.VariableResolverFactory;
+import org.apache.cocoon.sitemap.PatternException;
+
+/**
+ * @version $Id$ 
+ */
+public class InputModuleHelper {
+
+    /** Service manager. */
+    protected final ServiceManager manager;
+
+    protected final Map processedPatterns = new HashMap();
+
+    public InputModuleHelper(ServiceManager serviceManager) {
+        this.manager = serviceManager;
+    }
+
+    public void dispose() {
+        final Iterator i = this.processedPatterns.values().iterator();
+        while ( i.hasNext() ) {
+            final VariableResolver resolver = (VariableResolver)i.next();
+            ContainerUtil.dispose(resolver);
+        }
+        this.processedPatterns.clear();
+    }
+
+    public String resolve(String value) throws ProcessingException {
+        VariableResolver resolver = null;
+        try {
+            resolver = VariableResolverFactory.getResolver( value, this.manager );
+            // FIXME - object model is not passed
+            return resolver.resolve(null);
+        } catch (PatternException e) {
+            throw new ProcessingException("Error parsing pattern: " + value, e);
+        } finally {
+            ContainerUtil.dispose(resolver);
+        }
+    }
+
+    public VariableResolver getVariableResolver(String value) throws ProcessingException {
+        VariableResolver resolver = (VariableResolver)this.processedPatterns.get(value);
+        if ( resolver == null ) {
+            try {
+                resolver = VariableResolverFactory.getResolver( value, this.manager );
+                this.processedPatterns.put(value, resolver);
+            } catch (PatternException e) {
+                throw new ProcessingException("Error parsing pattern: " + value, e);
+            }
+        }
+        return resolver;
+    }
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/util/InputModuleHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/util/InputModuleHelper.java
------------------------------------------------------------------------------
    svn:keywords = Id