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