From 84b6373ddbc0492f9cfbbe9a81195871d4a13abe Mon Sep 17 00:00:00 2001 From: Brian Remmington Date: Thu, 11 Mar 2010 10:36:19 +0000 Subject: [PATCH] DM-DM tidying: - Added NodeCrawlerFactory interface and standard implementation - Removed test actions from the context files - ensure that the temporary store node is deleted when the transfer ends - Added missing error messages from the transfer properties file - Inserted abstract NodeFinder and NodeFilter to clean those interfaces up a little git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19213 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../messages/transfer-service.properties | 12 +- config/alfresco/transfer-service-context.xml | 34 +-- .../repo/transfer/AbstractNodeFilter.java | 50 +++++ .../repo/transfer/AbstractNodeFinder.java | 50 +++++ .../transfer/ChildAssociatedNodeFinder.java | 40 +--- .../repo/transfer/ContentClassFilter.java | 29 +-- .../repo/transfer/ContentDataPart.java | 11 - .../transfer/HttpClientTransmitterImpl.java | 2 - .../repo/transfer/NodeCrawlerTest.java | 13 +- .../transfer/PeerAssociatedNodeFinder.java | 47 +--- .../RepoTransferProgressMonitorImpl.java | 1 - .../transfer/RepoTransferReceiverImpl.java | 32 ++- .../StandardNodeCrawlerFactoryImpl.java | 39 ++++ .../transfer/StandardNodeCrawlerImpl.java | 14 +- .../repo/transfer/TransferServiceImpl.java | 2 +- .../transfer/TransferServiceImplTest.java | 30 +-- .../repo/transfer/TransferTransmitter.java | 1 - .../TransferTreeWithCancelActionExecuter.java | 1 - .../UnitTestInProcessTransmitterImpl.java | 8 - .../org/alfresco/repo/transfer/XMLWriter.java | 205 ++++++++++++++++++ .../TestTransferManifestProcessor.java | 2 - .../manifest/TransferManifestTest.java | 15 +- .../manifest/TransferManifestWriter.java | 4 - .../manifest/XMLTransferManifestReader.java | 5 - .../manifest/XMLTransferManifestWriter.java | 1 + .../transfer/report/TransferReportModel.java | 1 - .../transfer/report/TransferReporterImpl.java | 5 - .../report/XMLTransferReportWriter.java | 2 - .../service/cmr/transfer/NodeCrawler.java | 1 + .../cmr/transfer/NodeCrawlerFactory.java | 25 +++ .../service/cmr/transfer/NodeFilter.java | 17 -- .../service/cmr/transfer/NodeFinder.java | 21 +- 32 files changed, 442 insertions(+), 278 deletions(-) create mode 100644 source/java/org/alfresco/repo/transfer/AbstractNodeFilter.java create mode 100644 source/java/org/alfresco/repo/transfer/AbstractNodeFinder.java create mode 100644 source/java/org/alfresco/repo/transfer/StandardNodeCrawlerFactoryImpl.java create mode 100644 source/java/org/alfresco/repo/transfer/XMLWriter.java create mode 100644 source/java/org/alfresco/service/cmr/transfer/NodeCrawlerFactory.java diff --git a/config/alfresco/messages/transfer-service.properties b/config/alfresco/messages/transfer-service.properties index 5a29c96512..2daac874e9 100644 --- a/config/alfresco/messages/transfer-service.properties +++ b/config/alfresco/messages/transfer-service.properties @@ -16,12 +16,12 @@ transfer_service.receiver.temp_folder_not_found=Unable to locate specified tempo transfer_service.receiver.lock_unavailable=Transfer lock has been claimed for another inbound transfer. Unable to start new transfer. transfer_service.receiver.record_folder_not_found=Failed to find folder specified to hold inbound transfer records: {0} transfer_service.receiver.not_lock_owner=Failed attempt to carry out transfer operation. Lock not held by specified transfer: {0} -transfer_service.receiver.error_ending_transfer= -transfer_service.receiver.error_staging_snapshot= -transfer_service.receiver.error_staging_content= -transfer_service.receiver.no_snapshot_received= -transfer_service.receiver.error_committing_transfer= +transfer_service.receiver.error_ending_transfer=Request to end a transfer ({0}) has resulted in an error. +transfer_service.receiver.error_staging_snapshot=An error has occurred while staging snapshot file for transfer {0} +transfer_service.receiver.error_staging_content=An error has occurred while staging a content file for transfer {0}. File id is {1} +transfer_service.receiver.no_snapshot_received=An request has been received to commit a transfer ({0}), but no matching snapshot file has been received. +transfer_service.receiver.error_committing_transfer=An error has occurred while trying to commit transfer {0} transfer_service.receiver.transfer_not_found=Failed to find any record of requested transfer: {0} transfer_service.receiver.transfer_cancelled=Transfer has been cancelled: {0} -transfer_service.no_encoding=Unable to deserialize value, no transfermation for encoding {0} +transfer_service.no_encoding=Unable to deserialize value, no transformation for encoding {0} transfer_service.unable_to_deserialise=Unable to deserialize value \ No newline at end of file diff --git a/config/alfresco/transfer-service-context.xml b/config/alfresco/transfer-service-context.xml index dc34a3996a..a5578abbf7 100644 --- a/config/alfresco/transfer-service-context.xml +++ b/config/alfresco/transfer-service-context.xml @@ -192,41 +192,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - transfer + + + + diff --git a/source/java/org/alfresco/repo/transfer/AbstractNodeFilter.java b/source/java/org/alfresco/repo/transfer/AbstractNodeFilter.java new file mode 100644 index 0000000000..de1ff44a8f --- /dev/null +++ b/source/java/org/alfresco/repo/transfer/AbstractNodeFilter.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2009-2010 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.repo.transfer; + +import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.transfer.NodeFilter; +import org.springframework.extensions.surf.util.ParameterCheck; + +/** + * A utility base class that simplifies the creation of new node filters. + * + * When used in conjunction with the standard node crawler ({@link StandardNodeCrawlerImpl}), + * node filters that extend this base class will automatically have the service registry + * injected into them and their init operations invoked at the appropriate time. + * + * @author Brian + * @since 3.3 + */ +public abstract class AbstractNodeFilter implements NodeFilter +{ + protected ServiceRegistry serviceRegistry; + + public void init() + { + ParameterCheck.mandatory("serviceRegistry", serviceRegistry); + } + + public void setServiceRegistry(ServiceRegistry serviceRegistry) + { + this.serviceRegistry = serviceRegistry; + } + +} diff --git a/source/java/org/alfresco/repo/transfer/AbstractNodeFinder.java b/source/java/org/alfresco/repo/transfer/AbstractNodeFinder.java new file mode 100644 index 0000000000..3427992f9e --- /dev/null +++ b/source/java/org/alfresco/repo/transfer/AbstractNodeFinder.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2009-2010 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.repo.transfer; + +import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.transfer.NodeFinder; +import org.springframework.extensions.surf.util.ParameterCheck; + +/** + * A utility base class that simplifies the creation of new node finders. + * + * When used in conjunction with the standard node crawler ({@link StandardNodeCrawlerImpl}), + * node filters that extend this base class will automatically have the service registry + * injected into them and their init operations invoked at the appropriate time. + * + * @author Brian + * @since 3.3 + */ +public abstract class AbstractNodeFinder implements NodeFinder +{ + protected ServiceRegistry serviceRegistry; + + public void init() + { + ParameterCheck.mandatory("serviceRegistry", serviceRegistry); + } + + public void setServiceRegistry(ServiceRegistry serviceRegistry) + { + this.serviceRegistry = serviceRegistry; + } + +} diff --git a/source/java/org/alfresco/repo/transfer/ChildAssociatedNodeFinder.java b/source/java/org/alfresco/repo/transfer/ChildAssociatedNodeFinder.java index fb1d97241c..8a0f20d708 100644 --- a/source/java/org/alfresco/repo/transfer/ChildAssociatedNodeFinder.java +++ b/source/java/org/alfresco/repo/transfer/ChildAssociatedNodeFinder.java @@ -26,28 +26,24 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.dictionary.AssociationDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.transfer.NodeFinder; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; -import org.springframework.extensions.surf.util.ParameterCheck; /** * @author brian * */ -public class ChildAssociatedNodeFinder implements NodeFinder +public class ChildAssociatedNodeFinder extends AbstractNodeFinder { private Set suppliedAssociationTypes = new HashSet(); private boolean exclude = false; private boolean initialised = false; private List childAssociationTypes = new ArrayList(); - private ServiceRegistry serviceRegistry; public ChildAssociatedNodeFinder() { @@ -69,29 +65,6 @@ public class ChildAssociatedNodeFinder implements NodeFinder this.exclude = exclude; } - public ChildAssociatedNodeFinder(ServiceRegistry serviceRegistry) - { - this.serviceRegistry = serviceRegistry; - } - - public ChildAssociatedNodeFinder(ServiceRegistry serviceRegistry, Set associationTypeNames) - { - this(serviceRegistry); - setAssociationTypes(associationTypeNames); - } - - public ChildAssociatedNodeFinder(ServiceRegistry serviceRegistry, QName... associationTypeNames) - { - this(serviceRegistry); - setAssociationTypes(associationTypeNames); - } - - public ChildAssociatedNodeFinder(ServiceRegistry serviceRegistry, Set associationTypeNames, boolean exclude) - { - setAssociationTypes(associationTypeNames); - this.exclude = exclude; - } - public void setAssociationTypes(QName... associationTypes) { setAssociationTypes(Arrays.asList(associationTypes)); @@ -173,18 +146,9 @@ public class ChildAssociatedNodeFinder implements NodeFinder return foundNodes; } - /** - * @param serviceRegistry - * the serviceRegistry to set - */ - public void setServiceRegistry(ServiceRegistry serviceRegistry) - { - this.serviceRegistry = serviceRegistry; - } - public void init() { - ParameterCheck.mandatory("serviceRegistry", serviceRegistry); + super.init(); // Quickly scan the supplied association types and remove any that either // do not exist or are not child association types. DictionaryService dictionaryService = serviceRegistry.getDictionaryService(); diff --git a/source/java/org/alfresco/repo/transfer/ContentClassFilter.java b/source/java/org/alfresco/repo/transfer/ContentClassFilter.java index ab2aa5b773..9be94cf3fb 100644 --- a/source/java/org/alfresco/repo/transfer/ContentClassFilter.java +++ b/source/java/org/alfresco/repo/transfer/ContentClassFilter.java @@ -24,20 +24,17 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; -import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.dictionary.ClassDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.transfer.NodeFilter; import org.alfresco.service.namespace.QName; -import org.springframework.extensions.surf.util.ParameterCheck; /** * @author brian * */ -public class ContentClassFilter implements NodeFilter +public class ContentClassFilter extends AbstractNodeFilter { private Set contentClasses = new HashSet(); private Set aspects = new HashSet(); @@ -45,7 +42,6 @@ public class ContentClassFilter implements NodeFilter private boolean initialised = false; private boolean exclude = false; private boolean directOnly = false; - private ServiceRegistry serviceRegistry; public ContentClassFilter() { @@ -56,18 +52,6 @@ public class ContentClassFilter implements NodeFilter setContentClasses(contentClasses); } - public ContentClassFilter(ServiceRegistry serviceRegistry) - { - this(); - this.serviceRegistry = serviceRegistry; - } - - public ContentClassFilter(ServiceRegistry serviceRegistry, QName... contentClasses) - { - this(serviceRegistry); - setContentClasses(contentClasses); - } - /* * (non-Javadoc) * @@ -98,21 +82,12 @@ public class ContentClassFilter implements NodeFilter return (!exclude && (typeIsInSet || aspectIsInSet)) || (exclude && (!typeIsInSet && !aspectIsInSet)); } - /** - * @param serviceRegistry - * the serviceRegistry to set - */ - public void setServiceRegistry(ServiceRegistry serviceRegistry) - { - this.serviceRegistry = serviceRegistry; - } - /** * @param serviceRegistry */ public void init() { - ParameterCheck.mandatory("serviceRegistry", serviceRegistry); + super.init(); DictionaryService dictionaryService = serviceRegistry.getDictionaryService(); aspects.clear(); types.clear(); diff --git a/source/java/org/alfresco/repo/transfer/ContentDataPart.java b/source/java/org/alfresco/repo/transfer/ContentDataPart.java index 1edbde465d..6d6b36228b 100644 --- a/source/java/org/alfresco/repo/transfer/ContentDataPart.java +++ b/source/java/org/alfresco/repo/transfer/ContentDataPart.java @@ -22,9 +22,6 @@ package org.alfresco.repo.transfer; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.channels.Channels; -import java.nio.channels.ReadableByteChannel; -import java.nio.channels.WritableByteChannel; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentService; @@ -95,16 +92,8 @@ public class ContentDataPart extends PartBase { // Get the content from the content URL and write it to out - - // Can't use the following code since it closes 'out', which needs to remain open. - // AbstractContentReader. - // contentService.getRawReader(data.getContentUrl()).getContent(out); - InputStream is = contentService.getRawReader(data.getContentUrl()).getContentInputStream(); -// ReadableByteChannel rbc = Channels.newChannel(is); -// WritableByteChannel wbc = Channels.newChannel(out); - try { byte[] tmp = new byte[4096]; diff --git a/source/java/org/alfresco/repo/transfer/HttpClientTransmitterImpl.java b/source/java/org/alfresco/repo/transfer/HttpClientTransmitterImpl.java index bdf85f19ff..48a438e01a 100644 --- a/source/java/org/alfresco/repo/transfer/HttpClientTransmitterImpl.java +++ b/source/java/org/alfresco/repo/transfer/HttpClientTransmitterImpl.java @@ -20,7 +20,6 @@ package org.alfresco.repo.transfer; import java.io.File; -import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.TreeMap; @@ -38,7 +37,6 @@ import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; -import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; diff --git a/source/java/org/alfresco/repo/transfer/NodeCrawlerTest.java b/source/java/org/alfresco/repo/transfer/NodeCrawlerTest.java index c457930e20..f3d3021f19 100644 --- a/source/java/org/alfresco/repo/transfer/NodeCrawlerTest.java +++ b/source/java/org/alfresco/repo/transfer/NodeCrawlerTest.java @@ -34,13 +34,14 @@ import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.transfer.NodeCrawler; +import org.alfresco.service.cmr.transfer.NodeCrawlerFactory; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.util.BaseAlfrescoSpringTest; import org.alfresco.util.GUID; /** - * Unit test for RepoTransferReceiverImpl + * Unit test for classes related to the {@link NodeCrawler} interface * * @author Brian Remmington */ @@ -48,6 +49,7 @@ public class NodeCrawlerTest extends BaseAlfrescoSpringTest { private ServiceRegistry serviceRegistry; private NodeRef companyHome; + private NodeCrawlerFactory nodeCrawlerFactory; /** * Called during the transaction setup @@ -60,6 +62,7 @@ public class NodeCrawlerTest extends BaseAlfrescoSpringTest // Get the required services this.nodeService = (NodeService) this.getApplicationContext().getBean("NodeService"); this.serviceRegistry = (ServiceRegistry) this.getApplicationContext().getBean("ServiceRegistry"); + this.nodeCrawlerFactory = (NodeCrawlerFactory) this.getApplicationContext().getBean("NodeCrawlerFactory"); ResultSet rs = serviceRegistry.getSearchService().query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, "/app:company_home"); if (rs.length() == 0) @@ -79,7 +82,8 @@ public class NodeCrawlerTest extends BaseAlfrescoSpringTest nodeService.addAspect(node4, ContentModel.ASPECT_REFERENCEABLE, null); - ContentClassFilter contentFilter = new ContentClassFilter(serviceRegistry); + ContentClassFilter contentFilter = new ContentClassFilter(); + contentFilter.setServiceRegistry(serviceRegistry); contentFilter.setContentClasses(ContentModel.TYPE_BASE); assertTrue(contentFilter.accept(node1)); @@ -132,7 +136,8 @@ public class NodeCrawlerTest extends BaseAlfrescoSpringTest nodeService.addChild(node8, node15, RenditionModel.ASSOC_RENDITION, QName.createQName( NamespaceService.APP_MODEL_1_0_URI, "temp")); - ChildAssociatedNodeFinder nodeFinder = new ChildAssociatedNodeFinder(serviceRegistry); + ChildAssociatedNodeFinder nodeFinder = new ChildAssociatedNodeFinder(); + nodeFinder.setServiceRegistry(serviceRegistry); nodeFinder.setAssociationTypes(ContentModel.ASSOC_CONTAINS); Set results = nodeFinder.findFrom(node8); @@ -167,7 +172,7 @@ public class NodeCrawlerTest extends BaseAlfrescoSpringTest nodeService.addChild(node8, node15, RenditionModel.ASSOC_RENDITION, QName.createQName( NamespaceService.APP_MODEL_1_0_URI, "temp")); - NodeCrawler crawler = new StandardNodeCrawlerImpl(serviceRegistry); + NodeCrawler crawler = nodeCrawlerFactory.getNodeCrawler(); crawler.setNodeFinders(new ChildAssociatedNodeFinder(ContentModel.ASSOC_CONTAINS)); Set crawledNodes = crawler.crawl(node8); diff --git a/source/java/org/alfresco/repo/transfer/PeerAssociatedNodeFinder.java b/source/java/org/alfresco/repo/transfer/PeerAssociatedNodeFinder.java index f1f9a56cd9..cb7d197ddd 100644 --- a/source/java/org/alfresco/repo/transfer/PeerAssociatedNodeFinder.java +++ b/source/java/org/alfresco/repo/transfer/PeerAssociatedNodeFinder.java @@ -26,28 +26,27 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.dictionary.AssociationDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.transfer.NodeFinder; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; -import org.springframework.extensions.surf.util.ParameterCheck; /** - * @author brian + * This class can be used to find nodes that are associated with peer associations + * (as opposed to child associations). * + * @author brian + * @since 3.3 */ -public class PeerAssociatedNodeFinder implements NodeFinder +public class PeerAssociatedNodeFinder extends AbstractNodeFinder { private Set suppliedAssociationTypes = new HashSet(); private boolean exclude = false; private boolean initialised = false; private List peerAssociationTypes = new ArrayList(); - private ServiceRegistry serviceRegistry; public PeerAssociatedNodeFinder() { @@ -69,30 +68,6 @@ public class PeerAssociatedNodeFinder implements NodeFinder this.exclude = exclude; } - public PeerAssociatedNodeFinder(ServiceRegistry serviceRegistry) - { - this.serviceRegistry = serviceRegistry; - } - - public PeerAssociatedNodeFinder(ServiceRegistry serviceRegistry, Collection associationTypeNames) - { - this(serviceRegistry); - setAssociationTypes(associationTypeNames); - } - - public PeerAssociatedNodeFinder(ServiceRegistry serviceRegistry, QName... associationTypeNames) - { - this(serviceRegistry); - setAssociationTypes(associationTypeNames); - } - - public PeerAssociatedNodeFinder(ServiceRegistry serviceRegistry, Collection associationTypeNames, boolean exclude) - { - this(serviceRegistry); - setAssociationTypes(associationTypeNames); - this.exclude = exclude; - } - /** * @param exclude * Set to true to exclude the specified association types, and false to include only the specified @@ -176,7 +151,7 @@ public class PeerAssociatedNodeFinder implements NodeFinder public void init() { - ParameterCheck.mandatory("serviceRegistry", serviceRegistry); + super.init(); DictionaryService dictionaryService = serviceRegistry.getDictionaryService(); peerAssociationTypes.clear(); for (QName associationType : suppliedAssociationTypes) @@ -189,14 +164,4 @@ public class PeerAssociatedNodeFinder implements NodeFinder } initialised = true; } - - /** - * @param serviceRegistry - * the serviceRegistry to set - */ - public void setServiceRegistry(ServiceRegistry serviceRegistry) - { - this.serviceRegistry = serviceRegistry; - } - } diff --git a/source/java/org/alfresco/repo/transfer/RepoTransferProgressMonitorImpl.java b/source/java/org/alfresco/repo/transfer/RepoTransferProgressMonitorImpl.java index 19f16963df..e721e73ce5 100644 --- a/source/java/org/alfresco/repo/transfer/RepoTransferProgressMonitorImpl.java +++ b/source/java/org/alfresco/repo/transfer/RepoTransferProgressMonitorImpl.java @@ -122,7 +122,6 @@ public class RepoTransferProgressMonitorImpl implements TransferProgressMonitor } try { - ByteBuffer.wrap(text.getBytes("UTF-8")); writer.write(ByteBuffer.wrap(text.getBytes("UTF-8"))); } catch (Exception ex) diff --git a/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImpl.java b/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImpl.java index 98adf21fe6..0ac9d5af73 100644 --- a/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImpl.java +++ b/source/java/org/alfresco/repo/transfer/RepoTransferReceiverImpl.java @@ -372,7 +372,7 @@ public class RepoTransferReceiverImpl implements TransferReceiver } if (transferId == null) { - throw new IllegalArgumentException("transferId = " + transferId); + throw new IllegalArgumentException("transferId = null"); } try @@ -392,13 +392,27 @@ public class RepoTransferReceiverImpl implements TransferReceiver throw new TransferException(MSG_NOT_LOCK_OWNER, new Object[] { transferId }); } // Delete the lock node. - log.debug("delete lock node :" + lockId); + log.debug("Deleting lock node :" + lockId); nodeService.deleteNode(lockId); - log.debug("lock deleted :" + lockId); + log.debug("Lock deleted :" + lockId); } return null; } }, false, true); + + NodeRef tempStoreNode = null; + try + { + log.debug("Deleting temporary store node..."); + tempStoreNode = getTempFolder(transferId); + nodeService.deleteNode(tempStoreNode); + log.debug("Deleted temporary store node."); + } + catch (Exception ex) + { + log.warn("Failed to delete temp store node for transfer id " + transferId + "\nTemp store noderef = " + tempStoreNode); + } + log.debug("delete staging folder " + transferId); // Delete the staging folder. File stagingFolder = getStagingFolder(transferId); @@ -411,7 +425,7 @@ public class RepoTransferReceiverImpl implements TransferReceiver } catch (Exception ex) { - throw new TransferException(MSG_ERROR_WHILE_ENDING_TRANSFER, ex); + throw new TransferException(MSG_ERROR_WHILE_ENDING_TRANSFER, new Object[] {transferId}, ex); } } @@ -529,7 +543,7 @@ public class RepoTransferReceiverImpl implements TransferReceiver } catch (Exception ex) { - throw new TransferException(MSG_ERROR_WHILE_STAGING_SNAPSHOT, ex); + throw new TransferException(MSG_ERROR_WHILE_STAGING_SNAPSHOT, new Object[]{transferId}, ex); } } @@ -553,7 +567,7 @@ public class RepoTransferReceiverImpl implements TransferReceiver } catch (Exception ex) { - throw new TransferException(MSG_ERROR_WHILE_STAGING_CONTENT, ex); + throw new TransferException(MSG_ERROR_WHILE_STAGING_CONTENT, new Object[]{transferId, contentFileId}, ex); } } @@ -622,7 +636,7 @@ public class RepoTransferReceiverImpl implements TransferReceiver else { progressMonitor.log(transferId, "Unable to start commit. No snapshot file received", - new TransferException(MSG_NO_SNAPSHOT_RECEIVED)); + new TransferException(MSG_NO_SNAPSHOT_RECEIVED, new Object[]{transferId})); } return null; } @@ -639,7 +653,7 @@ public class RepoTransferReceiverImpl implements TransferReceiver } else { - throw new TransferException(MSG_ERROR_WHILE_COMMITTING_TRANSFER, error); + throw new TransferException(MSG_ERROR_WHILE_COMMITTING_TRANSFER, new Object[]{transferId}, error); } } @@ -669,9 +683,7 @@ public class RepoTransferReceiverImpl implements TransferReceiver */ try { - log.debug("calling end"); end(transferId); - log.debug("called end"); } catch (Exception ex) { diff --git a/source/java/org/alfresco/repo/transfer/StandardNodeCrawlerFactoryImpl.java b/source/java/org/alfresco/repo/transfer/StandardNodeCrawlerFactoryImpl.java new file mode 100644 index 0000000000..e01a791302 --- /dev/null +++ b/source/java/org/alfresco/repo/transfer/StandardNodeCrawlerFactoryImpl.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2005-2010 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.repo.transfer; + +import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.transfer.NodeCrawler; +import org.alfresco.service.cmr.transfer.NodeCrawlerFactory; + +public class StandardNodeCrawlerFactoryImpl implements NodeCrawlerFactory +{ + private ServiceRegistry serviceRegistry; + + public StandardNodeCrawlerFactoryImpl(ServiceRegistry serviceRegistry) + { + this.serviceRegistry = serviceRegistry; + } + + public NodeCrawler getNodeCrawler() + { + return new StandardNodeCrawlerImpl(serviceRegistry); + } +} diff --git a/source/java/org/alfresco/repo/transfer/StandardNodeCrawlerImpl.java b/source/java/org/alfresco/repo/transfer/StandardNodeCrawlerImpl.java index 57ba5ba098..7e572cf27b 100644 --- a/source/java/org/alfresco/repo/transfer/StandardNodeCrawlerImpl.java +++ b/source/java/org/alfresco/repo/transfer/StandardNodeCrawlerImpl.java @@ -129,13 +129,19 @@ public class StandardNodeCrawlerImpl implements NodeCrawler { for (NodeFinder nodeFinder : this.nodeFinders) { - nodeFinder.setServiceRegistry(serviceRegistry); - nodeFinder.init(); + if (nodeFinder instanceof AbstractNodeFinder) + { + ((AbstractNodeFinder)nodeFinder).setServiceRegistry(serviceRegistry); + ((AbstractNodeFinder)nodeFinder).init(); + } } for (NodeFilter nodeFilter : this.nodeFilters) { - nodeFilter.setServiceRegistry(serviceRegistry); - nodeFilter.init(); + if (nodeFilter instanceof AbstractNodeFilter) + { + ((AbstractNodeFilter)nodeFilter).setServiceRegistry(serviceRegistry); + ((AbstractNodeFilter)nodeFilter).init(); + } } } diff --git a/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java b/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java index 4e2017d0a9..43b1879686 100644 --- a/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java +++ b/source/java/org/alfresco/repo/transfer/TransferServiceImpl.java @@ -605,7 +605,7 @@ public class TransferServiceImpl implements TransferService * send Manifest */ eventProcessor.sendManifest(1,1); - DeltaList deltas = transmitter.sendManifest(transfer, snapshotFile); + transmitter.sendManifest(transfer, snapshotFile); logger.debug("manifest sent"); diff --git a/source/java/org/alfresco/repo/transfer/TransferServiceImplTest.java b/source/java/org/alfresco/repo/transfer/TransferServiceImplTest.java index f1c41deb69..f8b252f626 100644 --- a/source/java/org/alfresco/repo/transfer/TransferServiceImplTest.java +++ b/source/java/org/alfresco/repo/transfer/TransferServiceImplTest.java @@ -61,8 +61,6 @@ import org.alfresco.service.namespace.QName; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.BaseAlfrescoSpringTest; import org.alfresco.util.GUID; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.springframework.extensions.surf.util.Pair; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.support.DefaultTransactionDefinition; @@ -308,7 +306,7 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest assertTrue("didn't find target B", targets.contains(targetB)); for(TransferTarget target : targets) { - System.out.println("found target"); + System.out.println("found target: " + target.getName()); } } finally @@ -586,7 +584,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest String CONTENT_TITLE = "ContentTitle"; String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; - String CONTENT_NAME = "Demo Node 1"; Locale CONTENT_LOCALE = Locale.GERMAN; String CONTENT_STRING = "Hello"; @@ -614,9 +611,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest startNewTransaction(); try { - ResultSet result = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, COMPANY_HOME_XPATH_QUERY); - NodeRef companyHome = result.getNodeRef(0); - /** * Get guest home */ @@ -783,10 +777,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest startNewTransaction(); try { - ResultSet result = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, COMPANY_HOME_XPATH_QUERY); - NodeRef companyHome = result.getNodeRef(0); - - /** * Get guest home */ @@ -1061,8 +1051,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest startNewTransaction(); try { - ResultSet result = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, COMPANY_HOME_XPATH_QUERY); - NodeRef companyHome = result.getNodeRef(0); /** * Get guest home */ @@ -1183,9 +1171,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest { int MAX_SLEEPS = 5; - ResultSet result = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, COMPANY_HOME_XPATH_QUERY); - NodeRef companyHome = result.getNodeRef(0); - /** * Get guest home */ @@ -1393,9 +1378,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest public void testAsyncCancel() throws Exception { int MAX_SLEEPS = 5; - - ResultSet result = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, COMPANY_HOME_XPATH_QUERY); - NodeRef companyHome = result.getNodeRef(0); /** * Get guest home @@ -1628,9 +1610,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest public void testTransferReport() throws Exception { setDefaultRollback(false); - - ResultSet result = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_XPATH, COMPANY_HOME_XPATH_QUERY); - NodeRef companyHome = result.getNodeRef(0); /** * Get guest home @@ -1665,7 +1644,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest NodeRef nodeRefA = null; NodeRef nodeRefB = null; - TransferTarget transferMe = null; String targetName = "testTransferReport"; startNewTransaction(); @@ -1707,12 +1685,8 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest */ if(!transferService.targetExists(targetName)) { - transferMe = createTransferTarget(targetName); + createTransferTarget(targetName); } - else - { - transferMe = transferService.getTransferTarget(targetName); - } } finally { diff --git a/source/java/org/alfresco/repo/transfer/TransferTransmitter.java b/source/java/org/alfresco/repo/transfer/TransferTransmitter.java index fbf82dff6e..cf0dff3500 100644 --- a/source/java/org/alfresco/repo/transfer/TransferTransmitter.java +++ b/source/java/org/alfresco/repo/transfer/TransferTransmitter.java @@ -20,7 +20,6 @@ package org.alfresco.repo.transfer; import java.io.File; -import java.io.InputStream; import java.util.Set; import org.alfresco.service.cmr.repository.ContentData; diff --git a/source/java/org/alfresco/repo/transfer/TransferTreeWithCancelActionExecuter.java b/source/java/org/alfresco/repo/transfer/TransferTreeWithCancelActionExecuter.java index 7a8ea7c097..4e29245c51 100644 --- a/source/java/org/alfresco/repo/transfer/TransferTreeWithCancelActionExecuter.java +++ b/source/java/org/alfresco/repo/transfer/TransferTreeWithCancelActionExecuter.java @@ -64,7 +64,6 @@ public class TransferTreeWithCancelActionExecuter extends ActionExecuterAbstract /* (non-Javadoc) * @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef) */ - @SuppressWarnings("serial") @Override protected void executeImpl(Action action, NodeRef actionedUponNodeRef) { diff --git a/source/java/org/alfresco/repo/transfer/UnitTestInProcessTransmitterImpl.java b/source/java/org/alfresco/repo/transfer/UnitTestInProcessTransmitterImpl.java index 564d27fec0..e0753b4ef8 100644 --- a/source/java/org/alfresco/repo/transfer/UnitTestInProcessTransmitterImpl.java +++ b/source/java/org/alfresco/repo/transfer/UnitTestInProcessTransmitterImpl.java @@ -21,10 +21,7 @@ package org.alfresco.repo.transfer; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.IOException; import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; import java.util.Set; import org.alfresco.repo.transaction.RetryingTransactionHelper; @@ -158,11 +155,6 @@ public class UnitTestInProcessTransmitterImpl implements TransferTransmitter return receiver; } - private void setContentService(ContentService contentService) - { - this.contentService = contentService; - } - private ContentService getContentService() { return contentService; diff --git a/source/java/org/alfresco/repo/transfer/XMLWriter.java b/source/java/org/alfresco/repo/transfer/XMLWriter.java new file mode 100644 index 0000000000..7757985a60 --- /dev/null +++ b/source/java/org/alfresco/repo/transfer/XMLWriter.java @@ -0,0 +1,205 @@ +package org.alfresco.repo.transfer; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.TreeSet; + +import org.alfresco.service.namespace.NamespaceException; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.QName; +import org.dom4j.io.OutputFormat; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.AttributesImpl; + +/** + * A simple class whose primary purpose is to wrap the fairly unfriendly interface presented by + * the dom4j XMLWriter with one that is simpler to use. + * + * @author Brian + * + */ +public class XMLWriter +{ + private static final Attributes EMPTY_ATTRIBUTES = new AttributesImpl(); + + private org.dom4j.io.XMLWriter dom4jWriter; + private NamespaceMap prefixResolver = new NamespaceMap(); + private OutputStream output; + + public XMLWriter(OutputStream outputStream, boolean prettyPrint, String encoding) + throws UnsupportedEncodingException + { + OutputFormat format = prettyPrint ? OutputFormat.createPrettyPrint() : OutputFormat.createCompactFormat(); + format.setNewLineAfterDeclaration(false); + format.setIndentSize(3); + format.setEncoding(encoding); + output = outputStream; + this.dom4jWriter = new org.dom4j.io.XMLWriter(outputStream, format); + } + + public void startDocument() + { + try + { + dom4jWriter.startDocument(); + } + catch (SAXException e) + { + //Can't happen + } + + } + + public void startElement(QName name) + { + startElement(name, null); + } + + public void startElement(QName name, Attributes attrs) + { + if (attrs == null) + { + attrs = EMPTY_ATTRIBUTES; + } + try + { + dom4jWriter.startElement(name.getNamespaceURI(), name.getLocalName(), name.toPrefixString(prefixResolver), + attrs); + } + catch (SAXException e) + { + //Can't happen + } + } + + public void endElement(QName name) + { + try + { + dom4jWriter.endElement(name.getNamespaceURI(), name.getLocalName(), name.toPrefixString(prefixResolver)); + } + catch (SAXException e) + { + //Can't happen + } + } + + public void startPrefixMapping(String prefix, String uri) + { + prefixResolver.map(prefix, uri); + try + { + dom4jWriter.startPrefixMapping(prefix, uri); + } + catch (SAXException e) + { + //Can't happen + } + } + + public void endPrefixMapping(String prefix) + { + prefixResolver.unmap(prefix); + try + { + dom4jWriter.endPrefixMapping(prefix); + } + catch (SAXException e) + { + //Can't happen + } + } + + public void endDocument() + { + try + { + for (String prefix : prefixResolver.getPrefixes()) + { + endPrefixMapping(prefix); + } + dom4jWriter.endDocument(); + } + catch (SAXException e) + { + //Can't actually happen + } + } + + public void close() throws IOException + { + output.flush(); + output.close(); + } + + public void addAttribute(AttributesImpl attrs, QName name, String value) + { + attrs.addAttribute(name.getNamespaceURI(), name.getLocalName(), name.toPrefixString(prefixResolver), "String", + value); + } + + public void addAttribute(AttributesImpl attrs, QName name, int value) + { + attrs.addAttribute(name.getNamespaceURI(), name.getLocalName(), name.toPrefixString(prefixResolver), "int", + Integer.toString(value)); + } + + + /** + * A local namespace prefix resolver class that allows the XMLWriter interface to be simplified to use proper QNames + * + */ + private static class NamespaceMap implements NamespacePrefixResolver + { + private Map> uriToPrefixesMap = new TreeMap>(); + private Map prefixToUriMap = new TreeMap(); + + public void map(String prefix, String uri) + { + Set prefixes = uriToPrefixesMap.get(uri); + if (prefixes == null) + { + prefixes = new TreeSet(); + uriToPrefixesMap.put(uri, prefixes); + } + prefixes.add(prefix); + prefixToUriMap.put(prefix, uri); + } + + public void unmap(String prefix) + { + String uri = prefixToUriMap.remove(prefix); + if (uri != null) + { + uriToPrefixesMap.get(uri).remove(prefix); + } + } + + public Collection getURIs() + { + return uriToPrefixesMap.keySet(); + } + + public Collection getPrefixes() + { + return prefixToUriMap.keySet(); + } + + public Collection getPrefixes(String namespaceURI) throws NamespaceException + { + return Collections.unmodifiableCollection(uriToPrefixesMap.get(namespaceURI)); + } + + public String getNamespaceURI(String prefix) throws NamespaceException + { + return prefixToUriMap.get(prefix); + } + } +} diff --git a/source/java/org/alfresco/repo/transfer/manifest/TestTransferManifestProcessor.java b/source/java/org/alfresco/repo/transfer/manifest/TestTransferManifestProcessor.java index 73146270ad..9ce067a932 100644 --- a/source/java/org/alfresco/repo/transfer/manifest/TestTransferManifestProcessor.java +++ b/source/java/org/alfresco/repo/transfer/manifest/TestTransferManifestProcessor.java @@ -19,9 +19,7 @@ package org.alfresco.repo.transfer.manifest; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import org.alfresco.service.cmr.repository.NodeRef; diff --git a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java index 8abd27d9ff..6c1893630f 100644 --- a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java +++ b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestTest.java @@ -22,7 +22,6 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; -import java.io.Reader; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; @@ -36,7 +35,8 @@ import java.util.Set; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; -import org.alfresco.service.cmr.dictionary.DictionaryService; +import junit.framework.TestCase; + import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; @@ -47,8 +47,6 @@ import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.namespace.QName; import org.alfresco.util.TempFileProvider; -import junit.framework.TestCase; - /** * Unit test for the transfer manifest */ @@ -123,7 +121,7 @@ public class TransferManifestTest extends TestCase /** * Put an ArrayList type */ - ArrayList a1 = new ArrayList(); + ArrayList a1 = new ArrayList(); a1.add("Rhubarb"); a1.add("Custard"); properties.put(QName.createQName("{gsxhjsx}", "trx:arrayList"), a1); @@ -131,7 +129,7 @@ public class TransferManifestTest extends TestCase /** * Put a HashMap type */ - HashMap m1 = new HashMap(); + HashMap m1 = new HashMap(); m1.put("Rhubarb", "Rhubarb"); m1.put("Custard", "Custard"); properties.put(QName.createQName("{gsxhjsx}", "trx:hashMap"), m1); @@ -274,7 +272,7 @@ public class TransferManifestTest extends TestCase Map rxNodeAProps = rxNodeA.getProperties(); System.out.println(rxNodeAProps.get(QName.createQName("{gsxhjsx}", "trx:password"))); - for(Map.Entry value : rxNodeAProps.entrySet()) + for(Map.Entry value : rxNodeAProps.entrySet()) { System.out.println("key = " + value.getKey() + " value =" + value.getValue()); if(value.getValue() != null) @@ -316,9 +314,6 @@ public class TransferManifestTest extends TestCase */ private static final long serialVersionUID = 1053132227110567282L; private String a; - private String b; - - } } diff --git a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestWriter.java b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestWriter.java index 9a3b8e8452..e91f80ed39 100644 --- a/source/java/org/alfresco/repo/transfer/manifest/TransferManifestWriter.java +++ b/source/java/org/alfresco/repo/transfer/manifest/TransferManifestWriter.java @@ -19,11 +19,7 @@ package org.alfresco.repo.transfer.manifest; import java.io.Writer; -import java.util.Set; -import org.alfresco.service.cmr.repository.NodeRef; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.XMLWriter; import org.xml.sax.SAXException; /** diff --git a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java index 5736823e8d..54a1c5b4f4 100644 --- a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java +++ b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestReader.java @@ -33,7 +33,6 @@ import java.util.Map; import java.util.Map.Entry; import org.alfresco.repo.transfer.PathHelper; -import org.alfresco.repo.transfer.TransferServiceImpl; import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; @@ -44,8 +43,6 @@ import org.alfresco.service.cmr.transfer.TransferException; import org.alfresco.service.namespace.NamespaceException; import org.alfresco.service.namespace.NamespacePrefixResolver; import org.alfresco.service.namespace.QName; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.springframework.extensions.surf.util.Base64; import org.springframework.extensions.surf.util.I18NUtil; import org.springframework.extensions.surf.util.ISO8601DateFormat; @@ -65,7 +62,6 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content { private TransferManifestProcessor processor; - private static Log logger = LogFactory.getLog(XMLTransferManifestReader.class); private static final String MSG_NO_ENCODING = "transfer_service.no_encoding"; private static final String MSG_UNABLE_DESERIALIZE = "transfer_service.unable_to_deserialise"; @@ -538,7 +534,6 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content } else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER)) { - TransferManifestNode node = (TransferManifestNode)props.get("node"); ContentData data = (ContentData)props.get("contentHeader"); props.put("value", data); } diff --git a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java index a1163b08d1..989005905a 100644 --- a/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java +++ b/source/java/org/alfresco/repo/transfer/manifest/XMLTransferManifestWriter.java @@ -254,6 +254,7 @@ public class XMLTransferManifestWriter implements TransferManifestWriter + ManifestModel.LOCALNAME_ELEMENT_PROPERTIES); } + @SuppressWarnings("unchecked") private void writeProperty(QName name, Serializable value) throws SAXException { { diff --git a/source/java/org/alfresco/repo/transfer/report/TransferReportModel.java b/source/java/org/alfresco/repo/transfer/report/TransferReportModel.java index 05b3d1bf73..27c54a05f1 100644 --- a/source/java/org/alfresco/repo/transfer/report/TransferReportModel.java +++ b/source/java/org/alfresco/repo/transfer/report/TransferReportModel.java @@ -19,7 +19,6 @@ package org.alfresco.repo.transfer.report; import org.alfresco.repo.transfer.TransferModel; -import org.alfresco.service.namespace.QName; /** * The transfer report model - extended for XML Manifest Model diff --git a/source/java/org/alfresco/repo/transfer/report/TransferReporterImpl.java b/source/java/org/alfresco/repo/transfer/report/TransferReporterImpl.java index 03dfcf5cc5..bb3988b5b4 100644 --- a/source/java/org/alfresco/repo/transfer/report/TransferReporterImpl.java +++ b/source/java/org/alfresco/repo/transfer/report/TransferReporterImpl.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Set; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; @@ -41,12 +40,10 @@ import org.alfresco.repo.transfer.Transfer; import org.alfresco.repo.transfer.TransferModel; import org.alfresco.repo.transfer.manifest.TransferManifestDeletedNode; import org.alfresco.repo.transfer.manifest.TransferManifestHeader; -import org.alfresco.repo.transfer.manifest.TransferManifestNodeHelper; import org.alfresco.repo.transfer.manifest.TransferManifestNormalNode; import org.alfresco.repo.transfer.manifest.TransferManifestProcessor; import org.alfresco.repo.transfer.manifest.XMLTransferManifestReader; import org.alfresco.service.cmr.repository.ChildAssociationRef; -import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.NodeRef; @@ -56,8 +53,6 @@ import org.alfresco.service.cmr.transfer.TransferEvent; import org.alfresco.service.cmr.transfer.TransferTarget; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; -import org.dom4j.io.XMLWriter; -import org.springframework.extensions.surf.util.ISO8601DateFormat; import org.springframework.extensions.surf.util.PropertyCheck; import org.xml.sax.SAXException; diff --git a/source/java/org/alfresco/repo/transfer/report/XMLTransferReportWriter.java b/source/java/org/alfresco/repo/transfer/report/XMLTransferReportWriter.java index c183a9b8b9..71aa55ac9d 100644 --- a/source/java/org/alfresco/repo/transfer/report/XMLTransferReportWriter.java +++ b/source/java/org/alfresco/repo/transfer/report/XMLTransferReportWriter.java @@ -19,12 +19,10 @@ package org.alfresco.repo.transfer.report; import java.io.Writer; -import java.util.Date; import java.util.List; import org.alfresco.repo.transfer.TransferModel; import org.alfresco.repo.transfer.manifest.ManifestModel; -import org.alfresco.repo.transfer.manifest.TransferManifestHeader; import org.alfresco.repo.transfer.manifest.TransferManifestNode; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.Path; diff --git a/source/java/org/alfresco/service/cmr/transfer/NodeCrawler.java b/source/java/org/alfresco/service/cmr/transfer/NodeCrawler.java index e4ba2424f8..2d7d7c3415 100644 --- a/source/java/org/alfresco/service/cmr/transfer/NodeCrawler.java +++ b/source/java/org/alfresco/service/cmr/transfer/NodeCrawler.java @@ -33,6 +33,7 @@ import org.alfresco.service.cmr.repository.NodeRef; * @see org.alfresco.repo.transfer.StandardNodeCrawlerImpl * * @author Brian + * @since 3.3 */ public interface NodeCrawler { diff --git a/source/java/org/alfresco/service/cmr/transfer/NodeCrawlerFactory.java b/source/java/org/alfresco/service/cmr/transfer/NodeCrawlerFactory.java new file mode 100644 index 0000000000..d38f336dd1 --- /dev/null +++ b/source/java/org/alfresco/service/cmr/transfer/NodeCrawlerFactory.java @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2005-2010 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.service.cmr.transfer; + +public interface NodeCrawlerFactory +{ + NodeCrawler getNodeCrawler(); +} diff --git a/source/java/org/alfresco/service/cmr/transfer/NodeFilter.java b/source/java/org/alfresco/service/cmr/transfer/NodeFilter.java index 594b5b1ccd..098f6786c3 100644 --- a/source/java/org/alfresco/service/cmr/transfer/NodeFilter.java +++ b/source/java/org/alfresco/service/cmr/transfer/NodeFilter.java @@ -19,17 +19,12 @@ package org.alfresco.service.cmr.transfer; -import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; /** * @author brian * * Examines the supplied node and indicates whether it has been accepted by the filter. - *

- * The NodeCrawler will first initialise this filter by calling the - * setServiceRegistry and init methods. Then the accept method will be called to either accept or - * reject the node. */ public interface NodeFilter { @@ -37,20 +32,8 @@ public interface NodeFilter /** * Examines the supplied node and indicates whether it has been accepted by the filter. * @param thisNode - * @param serviceRegistry * @return true if the supplied node matches the criteria specified on this filter, and false * otherwise. */ boolean accept(NodeRef thisNode); - - /** - * - */ - void init(); - - /** - * - * @param serviceRegistry - */ - void setServiceRegistry(ServiceRegistry serviceRegistry); } diff --git a/source/java/org/alfresco/service/cmr/transfer/NodeFinder.java b/source/java/org/alfresco/service/cmr/transfer/NodeFinder.java index 6b18706a2e..c1d15552e9 100644 --- a/source/java/org/alfresco/service/cmr/transfer/NodeFinder.java +++ b/source/java/org/alfresco/service/cmr/transfer/NodeFinder.java @@ -21,37 +21,20 @@ package org.alfresco.service.cmr.transfer; import java.util.Set; -import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; /** * @author brian * * NodeFinders find nodes related to the current node. - * The NodeCrawler will first initialise this filter by calling the - * setServiceRegistry and init methods. Then the findFrom method will be called to find - * other nodes. - * - * @see org.alfresco.repo.transfer.ChildAssociatedNodeFinder */ public interface NodeFinder { /** - * @param thisNode - * @param serviceRegistry - * @return + * @param thisNode The node to use as the base from which to find other nodes. + * @return The found nodes */ Set findFrom(NodeRef thisNode); - /** - * called by the node crawler to initialise this class. - */ - void init(); - - /** - * - * @param serviceRegistry - */ - void setServiceRegistry(ServiceRegistry serviceRegistry); }