mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud)
95987: Merged 5.0.N (5.0.1) to HEAD-BUG-FIX (5.1/Cloud) 94457: Merged DEV (5.0.1) to 5.0.N (5.0.1) 94445: MNT-12995: Items are not accessible using the urls received via IMAP Added a patch which replaces the IMAP template's content. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@96016 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1119,4 +1119,22 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean id="patch.imapSpacesTemplates3" class="org.alfresco.repo.admin.patch.impl.GenericBootstrapPatch" parent="basePatch" >
|
||||||
|
<property name="id"><value>patch.imapSpacesTemplates3</value></property>
|
||||||
|
<property name="description"><value>patch.imapSpacesLocaleTemplates2.description</value></property>
|
||||||
|
<property name="fixesFromSchema"><value>0</value></property>
|
||||||
|
<property name="fixesToSchema"><value>9001</value></property>
|
||||||
|
<property name="targetSchema"><value>9002</value></property>
|
||||||
|
<property name="importerBootstrap">
|
||||||
|
<ref bean="spacesBootstrap" />
|
||||||
|
</property>
|
||||||
|
<property name="bootstrapView">
|
||||||
|
<props>
|
||||||
|
<prop key="path">/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.imapConfig.childname}/${spaces.imap_templates.childname}</prop>
|
||||||
|
<prop key="location">alfresco/bootstrap/imapSpacesTemplates.xml</prop>
|
||||||
|
<prop key="messages">alfresco/messages/bootstrap-spaces</prop>
|
||||||
|
<prop key="uuidBinding">UPDATE_EXISTING</prop>
|
||||||
|
</props>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
</beans>
|
</beans>
|
||||||
|
@@ -23,4 +23,4 @@ version.build=r@scm-revision@-b@build-number@
|
|||||||
|
|
||||||
# Schema number
|
# Schema number
|
||||||
|
|
||||||
version.schema=9001
|
version.schema=9002
|
||||||
|
@@ -21,6 +21,7 @@ package org.alfresco.repo.importer;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.view.Location;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,6 +42,11 @@ public interface Importer
|
|||||||
*/
|
*/
|
||||||
public QName getRootAssocType();
|
public QName getRootAssocType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the location to import under
|
||||||
|
*/
|
||||||
|
public Location getLocation();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signal start of import
|
* Signal start of import
|
||||||
*/
|
*/
|
||||||
|
@@ -258,7 +258,7 @@ public class ImporterComponent implements ImporterService
|
|||||||
public void importView(Reader viewReader, Location location, ImporterBinding binding, ImporterProgress progress)
|
public void importView(Reader viewReader, Location location, ImporterBinding binding, ImporterProgress progress)
|
||||||
{
|
{
|
||||||
NodeRef nodeRef = getNodeRef(location, binding);
|
NodeRef nodeRef = getNodeRef(location, binding);
|
||||||
parserImport(nodeRef, location.getChildAssocType(), viewReader, new DefaultStreamHandler(), binding, progress);
|
parserImport(nodeRef, location, viewReader, new DefaultStreamHandler(), binding, progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -269,7 +269,7 @@ public class ImporterComponent implements ImporterService
|
|||||||
importHandler.startImport();
|
importHandler.startImport();
|
||||||
Reader dataFileReader = importHandler.getDataStream();
|
Reader dataFileReader = importHandler.getDataStream();
|
||||||
NodeRef nodeRef = getNodeRef(location, binding);
|
NodeRef nodeRef = getNodeRef(location, binding);
|
||||||
parserImport(nodeRef, location.getChildAssocType(), dataFileReader, importHandler, binding, progress);
|
parserImport(nodeRef, location, dataFileReader, importHandler, binding, progress);
|
||||||
importHandler.endImport();
|
importHandler.endImport();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -404,19 +404,19 @@ public class ImporterComponent implements ImporterService
|
|||||||
* Perform Import via Parser
|
* Perform Import via Parser
|
||||||
*
|
*
|
||||||
* @param nodeRef node reference to import under
|
* @param nodeRef node reference to import under
|
||||||
* @param childAssocType the child association type to import under
|
* @param location the location to import under
|
||||||
* @param inputStream the input stream to import from
|
* @param inputStream the input stream to import from
|
||||||
* @param streamHandler the content property import stream handler
|
* @param streamHandler the content property import stream handler
|
||||||
* @param binding import configuration
|
* @param binding import configuration
|
||||||
* @param progress import progress
|
* @param progress import progress
|
||||||
*/
|
*/
|
||||||
public void parserImport(NodeRef nodeRef, QName childAssocType, Reader viewReader, ImportPackageHandler streamHandler, ImporterBinding binding, ImporterProgress progress)
|
public void parserImport(NodeRef nodeRef, Location location, Reader viewReader, ImportPackageHandler streamHandler, ImporterBinding binding, ImporterProgress progress)
|
||||||
{
|
{
|
||||||
ParameterCheck.mandatory("Node Reference", nodeRef);
|
ParameterCheck.mandatory("Node Reference", nodeRef);
|
||||||
ParameterCheck.mandatory("View Reader", viewReader);
|
ParameterCheck.mandatory("View Reader", viewReader);
|
||||||
ParameterCheck.mandatory("Stream Handler", streamHandler);
|
ParameterCheck.mandatory("Stream Handler", streamHandler);
|
||||||
|
|
||||||
Importer nodeImporter = new NodeImporter(nodeRef, childAssocType, binding, streamHandler, progress);
|
Importer nodeImporter = new NodeImporter(nodeRef, location, binding, streamHandler, progress);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
nodeImporter.start();
|
nodeImporter.start();
|
||||||
@@ -434,19 +434,19 @@ public class ImporterComponent implements ImporterService
|
|||||||
* Perform import via Content Handler
|
* Perform import via Content Handler
|
||||||
*
|
*
|
||||||
* @param nodeRef node reference to import under
|
* @param nodeRef node reference to import under
|
||||||
* @param childAssocType the child association type to import under
|
* @param location the location to import under
|
||||||
* @param handler the import content handler
|
* @param handler the import content handler
|
||||||
* @param binding import configuration
|
* @param binding import configuration
|
||||||
* @param progress import progress
|
* @param progress import progress
|
||||||
* @return content handler to interact with
|
* @return content handler to interact with
|
||||||
*/
|
*/
|
||||||
public ContentHandler handlerImport(NodeRef nodeRef, QName childAssocType, ImportContentHandler handler, ImporterBinding binding, ImporterProgress progress)
|
public ContentHandler handlerImport(NodeRef nodeRef, Location location, ImportContentHandler handler, ImporterBinding binding, ImporterProgress progress)
|
||||||
{
|
{
|
||||||
ParameterCheck.mandatory("Node Reference", nodeRef);
|
ParameterCheck.mandatory("Node Reference", nodeRef);
|
||||||
|
|
||||||
DefaultContentHandler defaultHandler = new DefaultContentHandler(handler);
|
DefaultContentHandler defaultHandler = new DefaultContentHandler(handler);
|
||||||
ImportPackageHandler streamHandler = new ContentHandlerStreamHandler(defaultHandler);
|
ImportPackageHandler streamHandler = new ContentHandlerStreamHandler(defaultHandler);
|
||||||
Importer nodeImporter = new NodeImporter(nodeRef, childAssocType, binding, streamHandler, progress);
|
Importer nodeImporter = new NodeImporter(nodeRef, location, binding, streamHandler, progress);
|
||||||
defaultHandler.setImporter(nodeImporter);
|
defaultHandler.setImporter(nodeImporter);
|
||||||
return defaultHandler;
|
return defaultHandler;
|
||||||
}
|
}
|
||||||
@@ -474,6 +474,7 @@ public class ImporterComponent implements ImporterService
|
|||||||
{
|
{
|
||||||
private NodeRef rootRef;
|
private NodeRef rootRef;
|
||||||
private QName rootAssocType;
|
private QName rootAssocType;
|
||||||
|
private Location location;
|
||||||
private ImporterBinding binding;
|
private ImporterBinding binding;
|
||||||
private ImporterProgress progress;
|
private ImporterProgress progress;
|
||||||
private ImportPackageHandler streamHandler;
|
private ImportPackageHandler streamHandler;
|
||||||
@@ -488,14 +489,15 @@ public class ImporterComponent implements ImporterService
|
|||||||
* Construct
|
* Construct
|
||||||
*
|
*
|
||||||
* @param rootRef
|
* @param rootRef
|
||||||
* @param rootAssocType
|
* @param location
|
||||||
* @param binding
|
* @param binding
|
||||||
* @param progress
|
* @param progress
|
||||||
*/
|
*/
|
||||||
private NodeImporter(NodeRef rootRef, QName rootAssocType, ImporterBinding binding, ImportPackageHandler streamHandler, ImporterProgress progress)
|
private NodeImporter(NodeRef rootRef, Location location, ImporterBinding binding, ImportPackageHandler streamHandler, ImporterProgress progress)
|
||||||
{
|
{
|
||||||
this.rootRef = rootRef;
|
this.rootRef = rootRef;
|
||||||
this.rootAssocType = rootAssocType;
|
this.rootAssocType = location.getChildAssocType();
|
||||||
|
this.location = location;
|
||||||
this.binding = binding;
|
this.binding = binding;
|
||||||
this.progress = progress;
|
this.progress = progress;
|
||||||
this.streamHandler = streamHandler;
|
this.streamHandler = streamHandler;
|
||||||
@@ -571,6 +573,12 @@ public class ImporterComponent implements ImporterService
|
|||||||
return rootAssocType;
|
return rootAssocType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Location getLocation()
|
||||||
|
{
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.repo.importer.Importer#start()
|
* @see org.alfresco.repo.importer.Importer#start()
|
||||||
*/
|
*/
|
||||||
@@ -1597,9 +1605,26 @@ public class ImporterComponent implements ImporterService
|
|||||||
// replace existing node, if node to import has a UUID and an existing node of the same
|
// replace existing node, if node to import has a UUID and an existing node of the same
|
||||||
// uuid already exists
|
// uuid already exists
|
||||||
String uuid = node.getUUID();
|
String uuid = node.getUUID();
|
||||||
if (uuid != null && uuid.length() > 0)
|
NodeRef existingNodeRef = null;
|
||||||
|
if (uuid == null)
|
||||||
{
|
{
|
||||||
NodeRef existingNodeRef = new NodeRef(rootRef.getStoreRef(), uuid);
|
NodeRef parentNodeRef = node.getParentContext().getParentRef();
|
||||||
|
|
||||||
|
// Resolve to path within node, if one specified
|
||||||
|
String path = location.getPath() + "/" + QName.createQName(node.getTypeDefinition().getName().getNamespaceURI(), node.getChildName()).toPrefixString();
|
||||||
|
// Search the node by name
|
||||||
|
List<NodeRef> nodeRefs = searchService.selectNodes(parentNodeRef, path, null, namespaceService, false);
|
||||||
|
if (!nodeRefs.isEmpty())
|
||||||
|
{
|
||||||
|
existingNodeRef = nodeRefs.get(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (uuid != null && uuid.length() > 0 || existingNodeRef != null)
|
||||||
|
{
|
||||||
|
if (existingNodeRef == null)
|
||||||
|
{
|
||||||
|
existingNodeRef = new NodeRef(rootRef.getStoreRef(), uuid);
|
||||||
|
}
|
||||||
if (nodeService.exists(existingNodeRef))
|
if (nodeService.exists(existingNodeRef))
|
||||||
{
|
{
|
||||||
// do the update
|
// do the update
|
||||||
|
Reference in New Issue
Block a user