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 2005/05/19 17:46:46 UTC
svn commit: r170949 -
/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java
Author: andreas
Date: Thu May 19 08:46:46 2005
New Revision: 170949
URL: http://svn.apache.org/viewcvs?rev=170949&view=rev
Log:
fixed locking in paste usecase
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java?rev=170949&r1=170948&r2=170949&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java Thu May 19 08:46:46 2005
@@ -25,6 +25,8 @@
import org.apache.lenya.cms.publication.DocumentBuildException;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
import org.apache.lenya.cms.publication.DocumentManager;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.util.DocumentSet;
import org.apache.lenya.cms.repository.Node;
import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteUtil;
@@ -87,14 +89,28 @@
nodes.add(siteNode);
Clipboard clipboard = new ClipboardHelper().getClipboard(getContext());
- if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
- DocumentIdentityMap identityMap = getDocumentIdentityMap();
- Document clippedDocument = clipboard.getDocument(identityMap);
- nodes.addAll(Arrays.asList(clippedDocument.getRepositoryNodes()));
- }
-
+ DocumentIdentityMap map = getDocumentIdentityMap();
+ Publication pub = getSourceDocument().getPublication();
+ String area = getSourceDocument().getArea();
+ Document clippedDocument = clipboard.getDocument(map);
Document targetDocument = getTargetDocument();
- nodes.addAll(Arrays.asList(targetDocument.getRepositoryNodes()));
+
+ String clippedName = clippedDocument.getName();
+ String clippedId = clippedDocument.getId();
+ String clippedBase = clippedId.substring(0, clippedId.length() - clippedName.length());
+
+ String targetBase = getSourceDocument().getId() + "/";
+
+ DocumentSet subsite = SiteUtil.getSubSite(this.manager, clippedDocument);
+ Document[] subsiteDocs = subsite.getDocuments();
+ for (int i = 0; i < subsiteDocs.length; i++) {
+ if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
+ nodes.addAll(Arrays.asList(subsiteDocs[i].getRepositoryNodes()));
+ }
+ String id = subsiteDocs[i].getId().substring(clippedBase.length());
+ Document targetSubsiteDoc = map.get(pub, area, targetBase + id, subsiteDocs[i].getLanguage());
+ nodes.addAll(Arrays.asList(targetSubsiteDoc.getRepositoryNodes()));
+ }
} catch (Exception e) {
throw new UsecaseException(e);
@@ -147,16 +163,6 @@
targetArea,
potentialDocumentId,
language);
- DocumentManager documentManager = null;
- Document availableDocument = null;
- try {
- documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
- availableDocument = SiteUtil.getAvailableDocument(this.manager, potentialDocument);
- } finally {
- if (documentManager != null) {
- this.manager.release(documentManager);
- }
- }
- return availableDocument;
+ return SiteUtil.getAvailableDocument(this.manager, potentialDocument);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org