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 2005/06/11 19:48:37 UTC

svn commit: r190156 - in /cocoon/trunk/src/java/org/apache/cocoon: components/source/CocoonSourceResolver.java core/Core.java sitemap/Sitemap.java

Author: cziegeler
Date: Sat Jun 11 10:48:36 2005
New Revision: 190156

URL: http://svn.apache.org/viewcvs?rev=190156&view=rev
Log:
Add accessor for per sitemap information (not much for now, but we can improve it)

Added:
    cocoon/trunk/src/java/org/apache/cocoon/sitemap/Sitemap.java   (with props)
Modified:
    cocoon/trunk/src/java/org/apache/cocoon/components/source/CocoonSourceResolver.java
    cocoon/trunk/src/java/org/apache/cocoon/core/Core.java

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/source/CocoonSourceResolver.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/source/CocoonSourceResolver.java?rev=190156&r1=190155&r2=190156&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/source/CocoonSourceResolver.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/source/CocoonSourceResolver.java Sat Jun 11 10:48:36 2005
@@ -39,6 +39,7 @@
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.environment.internal.EnvironmentHelper;
 import org.apache.cocoon.sitemap.ComponentLocator;
+import org.apache.cocoon.sitemap.Sitemap;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceException;
 import org.apache.excalibur.source.SourceFactory;
@@ -220,7 +221,11 @@
      * Get the component locator.
      */
     protected ComponentLocator getComponentLocator() {
-        ComponentLocator l = this.core.getSitemapComponentLocator();
+        ComponentLocator l = null;
+        final Sitemap sitemap = this.core.getCurrentSitemap();
+        if ( sitemap != null ) {
+            l = sitemap.getComponentLocator();
+        }
         if ( l == null ) {
             l = new ComponentLocatorWrapper(this.manager);
         }

Modified: cocoon/trunk/src/java/org/apache/cocoon/core/Core.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/core/Core.java?rev=190156&r1=190155&r2=190156&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/core/Core.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/core/Core.java Sat Jun 11 10:48:36 2005
@@ -27,10 +27,12 @@
 import org.apache.avalon.framework.context.ContextException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.Constants;
+import org.apache.cocoon.Processor;
 import org.apache.cocoon.components.ContextHelper;
 import org.apache.cocoon.core.container.ComponentLocatorWrapper;
 import org.apache.cocoon.environment.internal.EnvironmentHelper;
 import org.apache.cocoon.sitemap.ComponentLocator;
+import org.apache.cocoon.sitemap.Sitemap;
 import org.apache.commons.lang.NotImplementedException;
 
 /**
@@ -183,19 +185,42 @@
     }
     
     /**
-     * Return the locator of the current sitemap.
-     * @return The current locator or null if no request is currently processed
+     * Return the current sitemap.
+     * @return The current sitemap or null if no request is currently processed
      */
-    public ComponentLocator getSitemapComponentLocator() {
-        final ServiceManager m = EnvironmentHelper.getSitemapServiceManager();
-        ComponentLocator l = null;
-        if ( m != null ) {
-            if ( !(m instanceof ComponentLocator) ) {
-                l = new ComponentLocatorWrapper(m);
-            } else {
-                l = (ComponentLocator)m;
+    public Sitemap getCurrentSitemap() {
+        Processor p = EnvironmentHelper.getCurrentProcessor();
+        if ( p != null ) {
+            return SITEMAP;            
+        }
+        return null;
+    }
+
+    private final static Sitemap SITEMAP = new SitemapImpl();
+
+    public final static class SitemapImpl implements Sitemap {
+
+        /**
+         * @see org.apache.cocoon.sitemap.Sitemap#getComponentLocator()
+         */
+        public ComponentLocator getComponentLocator() {
+            final ServiceManager m = EnvironmentHelper.getSitemapServiceManager();
+            ComponentLocator l = null;
+            if ( m != null ) {
+                if ( !(m instanceof ComponentLocator) ) {
+                    l = new ComponentLocatorWrapper(m);
+                } else {
+                    l = (ComponentLocator)m;
+                }
             }
+            return l;
+        }
+
+        /**
+         * @see org.apache.cocoon.sitemap.Sitemap#getCurrentProcessor()
+         */
+        public Processor getCurrentProcessor() {
+            return EnvironmentHelper.getCurrentProcessor();
         }
-        return l;
     }
 }

Added: cocoon/trunk/src/java/org/apache/cocoon/sitemap/Sitemap.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/sitemap/Sitemap.java?rev=190156&view=auto
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/sitemap/Sitemap.java (added)
+++ cocoon/trunk/src/java/org/apache/cocoon/sitemap/Sitemap.java Sat Jun 11 10:48:36 2005
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005 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.sitemap;
+
+import org.apache.cocoon.Processor;
+
+/**
+ * TODO WORK IN PROGRESS!!
+ * TODO Add Interpreter(s)
+ *
+ * This interface describes the current sitemap. The current sitemap is available using
+ * {@link org.apache.cocoon.core.Core#getCurrentSitemap()}.
+ *
+ * @since 2.2
+ * @version $Id$
+ */
+public interface Sitemap {
+
+    /**
+     * Return the locator of the current sitemap.
+     * @return The current locator.
+     */
+    ComponentLocator getComponentLocator();
+
+    /**
+     * Return the current processor
+     */
+    Processor getCurrentProcessor();
+
+}

Propchange: cocoon/trunk/src/java/org/apache/cocoon/sitemap/Sitemap.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/src/java/org/apache/cocoon/sitemap/Sitemap.java
------------------------------------------------------------------------------
    svn:keywords = Id