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/11/28 16:32:59 UTC

svn commit: r480091 - in /lenya/trunk/src/modules/export/java: src/org/apache/lenya/cms/export/Import.java src/org/apache/lenya/cms/export/Importer.java test/org/apache/lenya/cms/export/ImportTest.java

Author: andreas
Date: Tue Nov 28 07:32:58 2006
New Revision: 480091

URL: http://svn.apache.org/viewvc?view=rev&rev=480091
Log:
Rewrite links correctly when importing content from a different publication

Modified:
    lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java
    lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java
    lenya/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java

Modified: lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java?view=diff&rev=480091&r1=480090&r2=480091
==============================================================================
--- lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java (original)
+++ lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java Tue Nov 28 07:32:58 2006
@@ -34,15 +34,20 @@
     protected void initParameters() {
         super.initParameters();
         
+        Publication defaultPub = getDefaultPub();
+        String pubPath = defaultPub.getDirectory().getAbsolutePath();
+        String path = pubPath.replace(File.separatorChar, '/') + "/example-content";
+        setParameter("path", path);
+    }
+
+    protected Publication getDefaultPub() {
         Publication defaultPub;
         try {
             defaultPub = getDocumentFactory().getPublication("default");
         } catch (PublicationException e) {
             throw new RuntimeException(e);
         }
-        String pubPath = defaultPub.getDirectory().getAbsolutePath();
-        String path = pubPath.replace(File.separatorChar, '/') + "/example-content";
-        setParameter("path", path);
+        return defaultPub;
     }
 
     protected void doCheckPreconditions() throws Exception {
@@ -81,7 +86,7 @@
         super.doExecute();
         String path = getParameterAsString("path");
         Importer importer = new Importer(this.manager, getLogger());
-        importer.importContent(getArea(), path);
+        importer.importContent(getDefaultPub(), getArea(), path);
     }
 
 }

Modified: lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java?view=diff&rev=480091&r1=480090&r2=480091
==============================================================================
--- lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java (original)
+++ lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java Tue Nov 28 07:32:58 2006
@@ -42,11 +42,11 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
- /**
-  * Import content.
-  */
+/**
+ * Import content.
+ */
 public class Importer extends AbstractLogEnabled {
-    
+
     private ServiceManager manager;
 
     /**
@@ -66,6 +66,17 @@
      * @throws Exception if an error occurs.
      */
     public void importContent(Area area, String path) throws Exception {
+        importContent(area.getPublication(), area, path);
+    }
+
+    /**
+     * Imports content from a different publication into an area.
+     * @param srcPub The source publication.
+     * @param area The area.
+     * @param path The path containing the content.
+     * @throws Exception if an error occurs.
+     */
+    public void importContent(Publication srcPub, Area area, String path) throws Exception {
 
         getLogger().info("Importing documents into area [" + area + "]");
 
@@ -77,8 +88,8 @@
 
         Element siteElement = xml.getDocumentElement();
         importChildren(area, helper, siteElement, baseUri, "");
-        
-        convertLinks(area);
+
+        convertLinks(srcPub, area);
     }
 
     protected void importElement(Area area, NamespaceHelper helper, Element element,
@@ -127,8 +138,8 @@
             Document newDoc;
             SiteStructure site = area.getSite();
             if (!site.contains(path) || site.getNode(path).getLanguages().length == 0) {
-                newDoc = docManager.add(area.getPublication().getFactory(), resourceType, contentUri, area
-                        .getPublication(), area.getName(), path, language, ".html",
+                newDoc = docManager.add(area.getPublication().getFactory(), resourceType,
+                        contentUri, area.getPublication(), area.getName(), path, language, ".html",
                         navigationTitle, visibleInNav);
             } else {
                 SiteNode node = site.getNode(path);
@@ -174,14 +185,14 @@
         }
     }
 
-    protected void convertLinks(Area area) {
+    protected void convertLinks(Publication srcPub, Area area) {
         Document[] docs = area.getDocuments();
         for (int i = 0; i < docs.length; i++) {
-            convertLinks(docs[i]);
+            convertLinks(srcPub, docs[i]);
         }
     }
 
-    protected void convertLinks(Document examinedDocument) {
+    protected void convertLinks(Publication srcPub, Document examinedDocument) {
         boolean linksRewritten = false;
 
         LinkResolver linkResolver = null;
@@ -196,7 +207,6 @@
                 }
             } else {
                 linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-                Publication pub = examinedDocument.getPublication();
                 DocumentFactory factory = examinedDocument.getFactory();
 
                 org.w3c.dom.Document xmlDocument = SourceUtil.readDOM(examinedDocument
@@ -220,8 +230,11 @@
                             getLogger().debug("Convert links: Check URL [" + url + "]");
                         }
 
-                        if (url.startsWith("/" + pub.getId() + "/" + examinedDocument.getArea() + "/")) {
-                            final String webappUrl = url;
+                        if (url.startsWith("/" + srcPub.getId() + "/" + examinedDocument.getArea()
+                                + "/")) {
+                            String targetPubId = examinedDocument.getPublication().getId();
+                            final String webappUrl = "/" + targetPubId
+                                    + url.substring(("/" + srcPub.getId()).length());
                             if (factory.isDocument(webappUrl)) {
                                 Document targetDocument = factory.getFromURL(webappUrl);
 

Modified: lenya/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java?view=diff&rev=480091&r1=480090&r2=480091
==============================================================================
--- lenya/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java (original)
+++ lenya/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java Tue Nov 28 07:32:58 2006
@@ -44,7 +44,7 @@
             String pubPath = defaultArea.getPublication().getDirectory().getAbsolutePath();
             String path = pubPath.replace(File.separatorChar, '/') + "/example-content";
             Importer importer = new Importer(getManager(), getLogger());
-            importer.importContent(area, path);
+            importer.importContent(defaultPub, area, path);
             getFactory().getSession().commit();
         }
     }



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