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 2006/02/07 14:41:33 UTC

svn commit: r375599 - in /lenya/trunk/src: java/org/apache/lenya/cms/url/ java/org/apache/lenya/cms/url/impl/ modules/jcr/java/src/org/apache/lenya/cms/jcr/ modules/jcr/java/src/org/apache/lenya/cms/jcr/mapping/ modules/jcr/java/test/org/apache/lenya/c...

Author: andreas
Date: Tue Feb  7 05:41:29 2006
New Revision: 375599

URL: http://svn.apache.org/viewcvs?rev=375599&view=rev
Log:
Added method URLUtil.getWebappURL(), various bugfixes in JCR-based repo implementation

Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/url/URLUtil.java
    lenya/trunk/src/java/org/apache/lenya/cms/url/impl/LanguageSuffixMapper.java
    lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteNodeProxy.java
    lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteProxy.java
    lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/mapping/RepositoryFacade.java
    lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/url/URLUtil.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/url/URLUtil.java?rev=375599&r1=375598&r2=375599&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/url/URLUtil.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/url/URLUtil.java Tue Feb  7 05:41:29 2006
@@ -94,6 +94,11 @@
         final String pubUrl = webappUrl.substring(prefix.length());
         
         String areaId = pubUrl.split("/")[0];
+        
+        if (!pub.existsArea(areaId)) {
+            throw new RepositoryException("The area [" + areaId + "] does not exist!");
+        }
+        
         Area area = pub.getArea(areaId);
         
         String translationUrl = pubUrl.substring(areaId.length());
@@ -103,6 +108,26 @@
     }
 
     /**
+     * Returns the URL of a translation.
+     * @param pub The publication.
+     * @param trans The translation.
+     * @param logger The logger.
+     * @return A string.
+     * @throws RepositoryException if an error occurs.
+     */
+    public static String getWebappURL(Publication pub, Translation trans, Logger logger)
+            throws RepositoryException {
+        URLMapper mapper = getURLMapper(pub);
+        Area area = trans.getAsset().getContent().getArea();
+        String transUrl = mapper.getURL(trans);
+        if (transUrl == null) {
+            throw new RepositoryException("The translation URL must not be null!");
+        }
+        return "/" + pub.getPublicationId() + "/" + area.getAreaID() + transUrl;
+        
+    }
+
+    /**
      * @param pub The publication.
      * @return An URL mapper.
      * @throws RepositoryException if an error occurs.
@@ -133,5 +158,5 @@
         }
         return mapper;
     }
-
+    
 }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/url/impl/LanguageSuffixMapper.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/url/impl/LanguageSuffixMapper.java?rev=375599&r1=375598&r2=375599&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/url/impl/LanguageSuffixMapper.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/url/impl/LanguageSuffixMapper.java Tue Feb  7 05:41:29 2006
@@ -16,10 +16,6 @@
  */
 package org.apache.lenya.cms.url.impl;
 
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.lenya.cms.repo.Area;
 import org.apache.lenya.cms.repo.RepositoryException;
 import org.apache.lenya.cms.repo.Site;
@@ -30,12 +26,21 @@
 /**
  * URL mapper which uses a language suffix.
  */
-public class LanguageSuffixMapper extends AbstractLogEnabled implements URLMapper, Configurable {
+public class LanguageSuffixMapper implements URLMapper {
 
     /**
      * Ctor.
+     * @param separator The string to be used to separate the suffix from the rest of the URL.
+     */
+    public LanguageSuffixMapper(String separator) {
+        this.separator = separator;
+    }
+
+    /**
+     * Ctor. The default separator is used.
      */
     public LanguageSuffixMapper() {
+        this(DEFAULT_SEPARATOR);
     }
 
     public Translation getTranslation(Area area, final String url) throws RepositoryException {
@@ -100,7 +105,10 @@
     public String getURL(Translation translation) throws RepositoryException {
         Site site = translation.getAsset().getContent().getArea().getSite();
         SiteNode node = site.getFirstReference(translation.getAsset());
-        String url = node.getPath() + getSeparator() + translation.getLanguage() + ".html";
+        String url = null;
+        if (node != null) {
+            url = node.getPath() + getSeparator() + translation.getLanguage() + ".html";
+        }
         return url;
     }
 
@@ -110,13 +118,6 @@
 
     protected String getSeparator() {
         return this.separator;
-    }
-
-    public void configure(Configuration config) throws ConfigurationException {
-        Configuration separatorConfig = config.getChild("separator", false);
-        if (separatorConfig != null) {
-            this.separator = separatorConfig.getValue();
-        }
     }
 
 }

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteNodeProxy.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteNodeProxy.java?rev=375599&r1=375598&r2=375599&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteNodeProxy.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteNodeProxy.java Tue Feb  7 05:41:29 2006
@@ -74,8 +74,8 @@
     }
 
     public Path getAbsolutePath() throws RepositoryException {
-        SiteProxy site = (SiteProxy) getSite();
-        return site.getAbsolutePath().append(getPathElement(getName()));
+        NodeProxy parent = getParentProxy();
+        return parent.getAbsolutePath().append(getPathElement(getName()));
     }
 
     public Asset getAsset() throws RepositoryException {
@@ -115,18 +115,13 @@
     }
 
     public SiteNode[] preOrder() throws RepositoryException {
-        try {
-            List proxies = new ArrayList();
-            proxies.add(this);
-            for (NodeIterator i = getNode().getNodes(); i.hasNext();) {
-                Node node = i.nextNode();
-                SiteNode child = getChild(node.getName());
-                proxies.addAll(Arrays.asList(child.preOrder()));
-            }
-            return (SiteNode[]) proxies.toArray(new SiteNode[proxies.size()]);
-        } catch (javax.jcr.RepositoryException e) {
-            throw new RepositoryException(e);
+        List proxies = new ArrayList();
+        proxies.add(this);
+        SiteNode[] children = getChildren();
+        for (int i = 0; i < children.length; i++) {
+            proxies.addAll(Arrays.asList(children[i].preOrder()));
         }
+        return (SiteNode[]) proxies.toArray(new SiteNode[proxies.size()]);
     }
 
 }

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteProxy.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteProxy.java?rev=375599&r1=375598&r2=375599&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteProxy.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/SiteProxy.java Tue Feb  7 05:41:29 2006
@@ -21,8 +21,7 @@
 import java.util.List;
 
 import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.PropertyIterator;
+import javax.jcr.NodeIterator;
 import javax.jcr.Session;
 
 import org.apache.lenya.cms.jcr.mapping.AbstractNodeProxy;
@@ -44,8 +43,17 @@
     protected static final String NODE_TYPE = "lnt:site";
 
     public SiteNode[] getChildren() throws RepositoryException {
-        Path path = getAbsolutePath().append(getPathElement(SiteNodeProxy.NODE_NAME));
-        return (SiteNode[]) getRepository().getProxies(path);
+        List nodes = new ArrayList();
+        try {
+            for (NodeIterator i = getNode().getNodes(); i.hasNext(); ) {
+                Node node = i.nextNode();
+                SiteNodeProxy proxy = (SiteNodeProxy) getRepository().getProxy(node);
+                nodes.add(proxy);
+            }
+        } catch (javax.jcr.RepositoryException e) {
+            throw new RepositoryException(e);
+        }
+        return (SiteNode[]) nodes.toArray(new SiteNode[nodes.size()]);
     }
 
     public SiteNode[] preOrder() throws RepositoryException {
@@ -72,7 +80,6 @@
     }
 
     public SiteNode getNode(String path) throws RepositoryException {
-
         if (!path.startsWith("/")) {
             throw new RepositoryException("The path [" + path + "] doesn't start with a slash!");
         }
@@ -116,20 +123,12 @@
     public SiteNode[] getReferences(Asset asset) throws RepositoryException {
         List siteNodes = new ArrayList();
         AssetProxy proxy = (AssetProxy) asset;
-
-        try {
-            for (PropertyIterator references = proxy.getNode().getReferences(); references.hasNext();) {
-                Property property = references.nextProperty();
-                Node node = property.getParent();
-                if (node.isNodeType(SiteNodeProxy.NODE_TYPE)) {
-                    SiteNode siteNode = (SiteNode) getRepository().getProxy(node);
-                    siteNodes.add(siteNode);
-                }
+        SiteNode[] nodes = preOrder();
+        for (int i = 0; i < nodes.length; i++) {
+            if (nodes[i].getAsset().getAssetId() == proxy.getAssetId()) {
+                siteNodes.add(nodes[i]);
             }
-        } catch (javax.jcr.RepositoryException e) {
-            throw new RepositoryException(e);
         }
-
         return (SiteNode[]) siteNodes.toArray(new SiteNode[siteNodes.size()]);
     }
 

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/mapping/RepositoryFacade.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/mapping/RepositoryFacade.java?rev=375599&r1=375598&r2=375599&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/mapping/RepositoryFacade.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/mapping/RepositoryFacade.java Tue Feb  7 05:41:29 2006
@@ -70,9 +70,6 @@
             NodeProxy[] proxies = new NodeProxy[nodes.length];
             for (int i = 0; i < nodes.length; i++) {
                 proxies[i] = getProxy(nodes[i]);
-                if (proxies[i] == null) {
-                    proxies[i] = createProxy(nodes[i]);
-                }
             }
             return proxies;
         } catch (RepositoryException e) {

Modified: lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java?rev=375599&r1=375598&r2=375599&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java (original)
+++ lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java Tue Feb  7 05:41:29 2006
@@ -261,5 +261,12 @@
 
         assertSame(trans.getAsset().getAssetId(), childTrans.getAsset().getAssetId());
         assertSame(trans.getLanguage(), childTrans.getLanguage());
+
+        String derivedUrl = URLUtil.getWebappURL(pub, trans, new ConsoleLogger());
+        Translation derivedTrans = URLUtil.getTranslation(pub, derivedUrl, new ConsoleLogger());
+
+        assertSame(trans.getAsset().getAssetId(), derivedTrans.getAsset().getAssetId());
+        assertSame(trans.getLanguage(), derivedTrans.getLanguage());
+
     }
 }



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