You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2007/06/15 14:43:48 UTC

svn commit: r547660 - in /lenya/trunk/src: impl/java/org/apache/lenya/cms/publication/ java/org/apache/lenya/cms/cocoon/components/modules/input/ java/org/apache/lenya/cms/publication/ modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transform...

Author: andreas
Date: Fri Jun 15 05:43:47 2007
New Revision: 547660

URL: http://svn.apache.org/viewvc?view=rev&rev=547660
Log:
Return default proxy if no proxy is defined. This makes the null checks obsolete.

Modified:
    lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java
    lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java
    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/BaseURLModule.java
    lenya/trunk/src/java/org/apache/lenya/cms/publication/Publication.java
    lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java?view=diff&rev=547660&r1=547659&r2=547660
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java Fri Jun 15 05:43:47 2007
@@ -82,7 +82,7 @@
     private static final String ELEMENT_CONTENT_DIR = "content-dir";
     private static final String ATTRIBUTE_SRC = "src";
     private static final String ELEMENT_PROXIES = "proxies";
-    private static final String ATTRIBUTE_ROOT = "root";
+    protected static final String ATTRIBUTE_ROOT = "root";
     private static final String ELEMENT_PROXY = "proxy";
     private static final String ATTRIBUTE_AREA = "area";
     private static final String ATTRIBUTE_URL = "url";
@@ -439,6 +439,16 @@
         Object key = getProxyKey(area, isSslProtected);
         Proxy proxy = (Proxy) this.areaSsl2proxy.get(key);
         return proxy;
+    }
+    
+    /**
+     * @param area The area.
+     * @param isSslProtected If the proxy is for SSL-protected URLs.
+     * @param proxy The proxy to set.
+     */
+    protected void setProxy(String area, boolean isSslProtected, Proxy proxy) {
+        Object key = getProxyKey(area, isSslProtected);
+        this.areaSsl2proxy.put(key, proxy);
     }
 
     private String siteManagerName;

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java?view=diff&rev=547660&r1=547659&r2=547660
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java Fri Jun 15 05:43:47 2007
@@ -26,8 +26,10 @@
 import java.util.Map;
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
 
 /**
  * A publication.
@@ -106,11 +108,51 @@
     }
 
     public Proxy getProxy(Document document, boolean isSslProtected) {
-        return delegate.getProxy(document, isSslProtected);
+        return getProxy(document.getArea(), isSslProtected);
     }
 
     public Proxy getProxy(String area, boolean isSslProtected) {
-        return delegate.getProxy(area, isSslProtected);
+        Proxy proxy = delegate.getProxy(area, isSslProtected);
+        if (proxy == null) {
+            String url = getDefaultProxyUrl(area);
+            proxy = new Proxy();
+            proxy.setUrl(url);
+            this.delegate.setProxy(area, isSslProtected, proxy);
+        }
+        return proxy;
+    }
+    
+    private String contextPath;
+    
+    protected String getContextPath() {
+        if (this.contextPath == null) {
+            ContextUtility context = null;
+            try {
+                context = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
+                this.contextPath = context.getRequest().getContextPath();
+            } catch (ServiceException e) {
+                throw new RuntimeException(e);
+            }
+            finally {
+                if (context != null) {
+                    this.manager.release(context);
+                }
+            }
+        }
+        return this.contextPath;
+    }
+
+    /**
+     * @param area The area.
+     * @return The proxy URL if no proxy is declared in {@link PublicationConfiguration#CONFIGURATION_FILE}.
+     */
+    protected String getDefaultProxyUrl(String area) {
+        if (area.equals(PublicationConfiguration.ATTRIBUTE_ROOT)) {
+            return getContextPath();
+        }
+        else {
+            return getContextPath() + "/" + getId() + "/" + area;
+        }
     }
 
     private List allResourceTypes;

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/BaseURLModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/BaseURLModule.java?view=diff&rev=547660&r1=547659&r2=547660
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/BaseURLModule.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/BaseURLModule.java Fri Jun 15 05:43:47 2007
@@ -94,12 +94,7 @@
             
             if (isPublication(factory, pubId)) {
                 Publication publication = factory.getPublication(pubId);
-                Proxy proxy = publication.getProxy(area, ssl);
-                if (proxy == null) {
-                    value = request.getContextPath() + "/" + pubId + "/" + area;
-                } else {
-                    value = proxy.getUrl();
-                }
+                value = publication.getProxy(area, ssl).getUrl();
             }
             else {
                 value = request.getContextPath();

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/Publication.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/Publication.java?view=diff&rev=547660&r1=547659&r2=547660
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/Publication.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/Publication.java Fri Jun 15 05:43:47 2007
@@ -183,18 +183,30 @@
     String getContentDir();
 
     /**
-     * Returns the proxy which is used for a particular document.
+     * Returns the proxy which is used for a particular document's area
+     * (see {@link #getProxy(String, boolean)}).
      * @param document The document.
      * @param isSslProtected A boolean value.
-     * @return A proxy or <code>null</code> if no proxy is defined for this version.
+     * @return A proxy.
      */
     Proxy getProxy(Document document, boolean isSslProtected);
 
     /**
+     * <p>
      * Returns the proxy which is used for the given area and the ssl parameter.
+     * </p>
+     * <p>
+     * If no proxy is defined in the publication configuration file, a default proxy
+     * with the URL <code>{contextPath}/{pubId}/{area}</code> is returned.
+     * </p>
+     * <p>
+     * If the area string is "root", the global proxy is returned. If no global proxy
+     * is defined, a default global proxy with the URL <code>{contextPath}</code>
+     * is returned. 
+     * </p>
      * @param area area
      * @param isSslProtected A boolean value.
-     * @return A proxy or <code>null</code> if no proxy is defined for these parameters.
+     * @return A proxy.
      */
     Proxy getProxy(String area, boolean isSslProtected);
 

Modified: lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java?view=diff&rev=547660&r1=547659&r2=547660
==============================================================================
--- lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java (original)
+++ lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java Fri Jun 15 05:43:47 2007
@@ -196,31 +196,13 @@
         // valid area
         if (areaName != null && Arrays.asList(pub.getAreaNames()).contains(areaName)) {
             Proxy proxy = pub.getProxy(areaName, ssl);
-            String proxiedUrl = info.getDocumentUrl();
-            rewrittenUrl = getProxyUrl(linkUrl, proxy, proxiedUrl);
+            rewrittenUrl = proxy.getUrl() + info.getDocumentUrl();
         }
 
         // invalid area
         else {
             Proxy proxy = pub.getProxy(ATTRIBUTE_ROOT, ssl);
-            rewrittenUrl = getProxyUrl(linkUrl, proxy, linkUrl);
-        }
-        return rewrittenUrl;
-    }
-
-    /**
-     * @param linkUrl The complete link URL.
-     * @param proxy The proxy (may be null).
-     * @param proxiedUrl The URL to append to the proxy URL.
-     * @return Either {proxy.url}{proxiedUrl} (if proxy != null) or
-     *         {contextPath}{linkUrl} (if proxy == null).
-     */
-    protected String getProxyUrl(String linkUrl, Proxy proxy, String proxiedUrl) {
-        String rewrittenUrl;
-        if (proxy == null) {
-            rewrittenUrl = this.request.getContextPath() + linkUrl;
-        } else {
-            rewrittenUrl = proxy.getUrl() + proxiedUrl;
+            rewrittenUrl = proxy.getUrl() + linkUrl;
         }
         return rewrittenUrl;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org