Implementing (some of) transfer service review rework.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19000 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mark Rogers
2010-03-03 15:10:31 +00:00
parent ec876e46dc
commit 46f2fe2812
12 changed files with 401 additions and 351 deletions

View File

@@ -23,3 +23,5 @@ transfer_service.receiver.no_snapshot_received=
transfer_service.receiver.error_committing_transfer= transfer_service.receiver.error_committing_transfer=
transfer_service.receiver.transfer_not_found=Failed to find any record of requested 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.receiver.transfer_cancelled=Transfer has been cancelled: {0}
transfer_service.no_encoding=Unable to deserialize value, no transfermation for encoding {0}
transfer_service.unable_to_deserialise=Unable to deserialize value

View File

@@ -492,64 +492,6 @@ public class HttpClientTransmitterImpl implements TransferTransmitter
} }
} // end of sendContent } // end of sendContent
/**
*
*/
public Set<TransferMessage> getMessages(Transfer transfer)
{
// TODO How to signal last message ? return null rather than empty
Set<TransferMessage> messages = new HashSet<TransferMessage>();
TransferTarget target = transfer.getTransferTarget();
HttpMethod messagesRequest = new GetMethod();
try
{
HostConfiguration hostConfig = getHostConfig(target);
HttpState httpState = getHttpState(target);
messagesRequest.setPath(target.getEndpointPath() + "/messages");
//Put the transferId on the query string
messagesRequest.setQueryString(
new NameValuePair[] {new NameValuePair("transferId", transfer.getTransferId())});
try
{
int responseStatus = httpClient.executeMethod(hostConfig, messagesRequest, httpState);
checkResponseStatus("getMessages", responseStatus, messagesRequest);
//If we get here then we've received a 200 response
//We're expecting the transfer id encoded in a JSON object...
JSONObject lookupResult = new JSONObject(messagesRequest.getResponseBodyAsString());
JSONArray data = lookupResult.getJSONArray("data");
for(int i = 0; i < data.length(); i++)
{
JSONObject obj = data.getJSONObject(i);
String message = obj.getString("message");
//TODO Need some sort of TransferMessage impl
// messages.add(new TransferMessageImpl());
}
return messages;
}
catch (RuntimeException e)
{
throw e;
}
catch (Exception e)
{
String error = "Failed to execute HTTP request to target";
log.debug(error, e);
throw new TransferException(MSG_HTTP_REQUEST_FAILED, new Object[]{"getMessages", target.toString(), e.toString()}, e);
}
}
finally
{
messagesRequest.releaseConnection();
}
}
/** /**
* *
*/ */

View File

@@ -24,7 +24,7 @@ import org.alfresco.service.cmr.transfer.TransferEvent;
/** /**
* An abstract implementation of TransferEvent. * An abstract implementation of TransferEvent.
* Also implements RangedTransferEvent. * Also implements the operations required by RangedTransferEvent.
* @see TransferEvent * @see TransferEvent
* @see RangedTransferEvent * @see RangedTransferEvent
*/ */
@@ -105,14 +105,20 @@ public abstract class TransferEventImpl implements TransferEvent
return range; return range;
} }
/**
* A simple human readable summary of this event, the format of this string is
* not guaranteed and is liable to change.
*/
public String toString() public String toString()
{ {
return "TransferEventImpl : " + this.getTime() + ", " + this.getTransferState(); return this.getClass().getSimpleName() + ", " + this.getTime() + ", " + this.getTransferState();
} }
public boolean equals(Object obj) public boolean equals(Object obj)
{ {
if(obj instanceof TransferEventImpl) if(obj != null)
{
if(this.getClass().equals(obj.getClass()))
{ {
TransferEventImpl other = (TransferEventImpl)obj; TransferEventImpl other = (TransferEventImpl)obj;
if(other.getTransferState().equals(this.getTransferState()) && if(other.getTransferState().equals(this.getTransferState()) &&
@@ -122,6 +128,8 @@ public abstract class TransferEventImpl implements TransferEvent
return true; return true;
} }
} }
}
// not a match
return false; return false;
} }

View File

@@ -1,25 +0,0 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package org.alfresco.repo.transfer;
public interface TransferMessage
{
String getMessage();
}

View File

@@ -24,7 +24,6 @@ import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@@ -35,29 +34,18 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ThreadPoolExecutor;
import org.alfresco.service.cmr.transfer.TransferEvent;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction; import javax.transaction.UserTransaction;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParserFactory;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.jlan.smb.dcerpc.UUID;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transfer.manifest.TestTransferManifestProcessor;
import org.alfresco.repo.transfer.manifest.TransferManifestDeletedNode; import org.alfresco.repo.transfer.manifest.TransferManifestDeletedNode;
import org.alfresco.repo.transfer.manifest.TransferManifestHeader; import org.alfresco.repo.transfer.manifest.TransferManifestHeader;
import org.alfresco.repo.transfer.manifest.TransferManifestNode; import org.alfresco.repo.transfer.manifest.TransferManifestNode;
import org.alfresco.repo.transfer.manifest.TransferManifestNodeFactory; import org.alfresco.repo.transfer.manifest.TransferManifestNodeFactory;
import org.alfresco.repo.transfer.manifest.TransferManifestNodeFactoryImpl;
import org.alfresco.repo.transfer.manifest.TransferManifestNodeHelper; import org.alfresco.repo.transfer.manifest.TransferManifestNodeHelper;
import org.alfresco.repo.transfer.manifest.TransferManifestNormalNode; import org.alfresco.repo.transfer.manifest.TransferManifestNormalNode;
import org.alfresco.repo.transfer.manifest.TransferManifestProcessor; import org.alfresco.repo.transfer.manifest.TransferManifestProcessor;
@@ -69,7 +57,6 @@ import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.StoreRef;
@@ -77,11 +64,11 @@ import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.transfer.TransferCallback; import org.alfresco.service.cmr.transfer.TransferCallback;
import org.alfresco.service.cmr.transfer.TransferDefinition; import org.alfresco.service.cmr.transfer.TransferDefinition;
import org.alfresco.service.cmr.transfer.TransferEvent;
import org.alfresco.service.cmr.transfer.TransferException; import org.alfresco.service.cmr.transfer.TransferException;
import org.alfresco.service.cmr.transfer.TransferProgress; import org.alfresco.service.cmr.transfer.TransferProgress;
import org.alfresco.service.cmr.transfer.TransferService; import org.alfresco.service.cmr.transfer.TransferService;
import org.alfresco.service.cmr.transfer.TransferTarget; import org.alfresco.service.cmr.transfer.TransferTarget;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern; import org.alfresco.service.namespace.RegexQNamePattern;
import org.alfresco.service.transaction.TransactionService; import org.alfresco.service.transaction.TransactionService;
@@ -89,7 +76,6 @@ import org.alfresco.util.TempFileProvider;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.surf.util.PropertyCheck; import org.springframework.extensions.surf.util.PropertyCheck;
import org.xml.sax.SAXException;
public class TransferServiceImpl implements TransferService public class TransferServiceImpl implements TransferService
@@ -376,6 +362,13 @@ public class TransferServiceImpl implements TransferService
eventProcessor.observers.addAll(callbacks); eventProcessor.observers.addAll(callbacks);
} }
/*
* Note:
* callback should be Serializable to be passed through the action API
* However Serializable is not used so it does not matter. Perhaps the action API should be
* changed? Or we could add a Serializable proxy here.
*/
Map<String, Serializable> params = new HashMap<String, Serializable>(); Map<String, Serializable> params = new HashMap<String, Serializable>();
params.put("targetName", targetName); params.put("targetName", targetName);
params.put("definition", definition); params.put("definition", definition);

View File

@@ -354,7 +354,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
target.setEndpointPath(endpointPath2); target.setEndpointPath(endpointPath2);
target.setEndpointPort(endpointPort2); target.setEndpointPort(endpointPort2);
target.setEndpointProtocol(endpointProtocol2); target.setEndpointProtocol(endpointProtocol2);
target.setName(updateMe);
target.setPassword(password2); target.setPassword(password2);
target.setUsername(username2); target.setUsername(username2);

View File

@@ -93,10 +93,4 @@ public interface TransferTransmitter
*/ */
TransferProgress getStatus(Transfer transfer) throws TransferException; TransferProgress getStatus(Transfer transfer) throws TransferException;
/**
* Get Async Messages for a transfer.
* Server Side Messages.
* @return messages
*/
Set<TransferMessage> getMessages(Transfer transfer);
} }

View File

@@ -100,11 +100,6 @@ public class UnitTestInProcessTransmitterImpl implements TransferTransmitter
}, false, true); }, false, true);
} }
public Set<TransferMessage> getMessages(Transfer transfer)
{
String transferId = transfer.getTransferId();
return null;
}
public void prepare(Transfer transfer) throws TransferException public void prepare(Transfer transfer) throws TransferException
{ {

View File

@@ -33,15 +33,19 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import org.alfresco.repo.transfer.PathHelper; 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.AssociationRef;
import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.MLText; import org.alfresco.service.cmr.repository.MLText;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.Path; import org.alfresco.service.cmr.repository.Path;
import org.alfresco.service.cmr.transfer.TransferException;
import org.alfresco.service.namespace.NamespaceException; import org.alfresco.service.namespace.NamespaceException;
import org.alfresco.service.namespace.NamespacePrefixResolver; import org.alfresco.service.namespace.NamespacePrefixResolver;
import org.alfresco.service.namespace.QName; 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.Base64;
import org.springframework.extensions.surf.util.I18NUtil; import org.springframework.extensions.surf.util.I18NUtil;
import org.springframework.extensions.surf.util.ISO8601DateFormat; import org.springframework.extensions.surf.util.ISO8601DateFormat;
@@ -53,7 +57,7 @@ import org.xml.sax.helpers.DefaultHandler;
/** /**
* SAX XML Content Handler to read a transfer manifest XML Stream and * SAX XML Content Handler to read a transfer manifest XML Stream and
* delegate processing to the specified TransferManifestProcessor * delegate processing of the manifest to the specified TransferManifestProcessor
* *
* @author Mark Rogers * @author Mark Rogers
*/ */
@@ -61,15 +65,17 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
{ {
private TransferManifestProcessor processor; 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";
/** /**
* These are the namespaces used within the document - there may be a different mapping to * These are the namespaces used within the document - there may be a different mapping to
* the namespaces of the Data Dictionary. * the namespaces of the Data Dictionary.
*/ */
// Map<String, String> documentNamespaces = new HashMap<String, String>(); LinkedList<HashMap<String, String>> namespaces = new LinkedList<HashMap<String, String>>();
final String TRANSFER_URI = ManifestModel.TRANSFER_MODEL_1_0_URI; final String TRANSFER_URI = ManifestModel.TRANSFER_MODEL_1_0_URI;
final String XMLNS_URI = "http://www.w3.org/XML/1998/namespace"; final String XMLNS_URI = "http://www.w3.org/XML/1998/namespace";
LinkedList<HashMap<String, String>> namespaces = new LinkedList<HashMap<String, String>>();
public XMLTransferManifestReader(TransferManifestProcessor snapshotProcessor) public XMLTransferManifestReader(TransferManifestProcessor snapshotProcessor)
{ {
@@ -275,6 +281,7 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
} }
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED)) else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED))
{ {
props.put("encoding", atts.getValue("", "encoding"));
buffer = new StringBuffer(); buffer = new StringBuffer();
} }
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_MLVALUE)) else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_MLVALUE))
@@ -482,11 +489,13 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED)) else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED))
{ {
Collection<Serializable> values = (Collection<Serializable>)props.get("values"); Collection<Serializable> values = (Collection<Serializable>)props.get("values");
String encoding = (String)props.get("encoding");
String strValue = buffer.toString(); String strValue = buffer.toString();
Object value = null; Object value = null;
// TODO assumes "base64/ObjectOutputStream" - should check if(encoding.equalsIgnoreCase("base64/ObjectOutputStream"))
{
try try
{ {
byte[] data = Base64.decode(strValue.getBytes("UTF-8")); byte[] data = Base64.decode(strValue.getBytes("UTF-8"));
@@ -495,21 +504,26 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
} }
catch (IOException error) catch (IOException error)
{ {
//TODO Error handler - should this fail the transfer ? throw new TransferException(MSG_UNABLE_DESERIALIZE, error);
error.printStackTrace();
} }
catch (ClassNotFoundException error) catch (ClassNotFoundException error)
{ {
//TODO Error handler - should this fail the transfer ? throw new TransferException(MSG_UNABLE_DESERIALIZE, error);
error.printStackTrace(); }
}
else
{
throw new TransferException(MSG_NO_ENCODING, new Object[]{encoding});
} }
if(values != null) if(values != null)
{ {
// This is a values array
values.add((Serializable)value); values.add((Serializable)value);
} }
else else
{ {
// This is a single value
props.put("value", value); props.put("value", value);
} }
} }

View File

@@ -49,12 +49,14 @@ import org.springframework.extensions.surf.util.ISO8601DateFormat;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl; import org.xml.sax.helpers.AttributesImpl;
//import com.sun.org.apache.xml.internal.security.utils.Base64;
/** /**
* XMLTransferManifestWriter * Writes the transfer manifest out in XML format to the specified writer.
* *
* Writes the transfer manifest out to XML format. * XMLTransferManifestWriter is a statefull object used for writing out a single transfer manifest
* file in XML format to the writer passed in via startTransferManifest.
*
* Call startTransferManifest, writeTransferManifestHeader, writeTransferManifestNode (0 to many),
* endTransferManifest.
* *
* @author Mark Rogers * @author Mark Rogers
*/ */
@@ -87,7 +89,9 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
this.writer.startPrefixMapping("cm", NamespaceService.CONTENT_MODEL_1_0_URI); this.writer.startPrefixMapping("cm", NamespaceService.CONTENT_MODEL_1_0_URI);
// Start Transfer Manifest // uri, name, prefix // Start Transfer Manifest // uri, name, prefix
this.writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_TRANSFER_MAINIFEST, PREFIX + ":" + ManifestModel.LOCALNAME_TRANSFER_MAINIFEST, EMPTY_ATTRIBUTES); this.writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_TRANSFER_MAINIFEST, PREFIX + ":"
+ ManifestModel.LOCALNAME_TRANSFER_MAINIFEST, EMPTY_ATTRIBUTES);
} }
/** /**
@@ -96,7 +100,9 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
public void endTransferManifest() throws SAXException public void endTransferManifest() throws SAXException
{ {
// End Transfer Manifest // End Transfer Manifest
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_TRANSFER_MAINIFEST, PREFIX + ":" + ManifestModel.LOCALNAME_TRANSFER_MAINIFEST); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_TRANSFER_MAINIFEST, PREFIX + ":"
+ ManifestModel.LOCALNAME_TRANSFER_MAINIFEST);
writer.endPrefixMapping(PREFIX); writer.endPrefixMapping(PREFIX);
writer.endDocument(); writer.endDocument();
@@ -107,24 +113,38 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
*/ */
public void writeTransferManifestHeader(TransferManifestHeader header) throws SAXException public void writeTransferManifestHeader(TransferManifestHeader header) throws SAXException
{ {
if(header.getCreatedDate() != null) if (header.getCreatedDate() != null)
{ {
// Start Header // Start Header
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_TRANSFER_HEADER, PREFIX + ":" + ManifestModel.LOCALNAME_TRANSFER_HEADER, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_TRANSFER_HEADER, PREFIX + ":"
+ ManifestModel.LOCALNAME_TRANSFER_HEADER, EMPTY_ATTRIBUTES);
// Created Date // Created Date
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_HEADER_CREATED_DATE, PREFIX + ":" + ManifestModel.LOCALNAME_HEADER_CREATED_DATE, EMPTY_ATTRIBUTES); writer
.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_HEADER_CREATED_DATE, PREFIX + ":"
+ ManifestModel.LOCALNAME_HEADER_CREATED_DATE,
EMPTY_ATTRIBUTES);
writeDate(header.getCreatedDate()); writeDate(header.getCreatedDate());
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_HEADER_CREATED_DATE, PREFIX + ":" + ManifestModel.LOCALNAME_HEADER_CREATED_DATE); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_HEADER_CREATED_DATE, PREFIX + ":"
+ ManifestModel.LOCALNAME_HEADER_CREATED_DATE);
// Node count // Node count
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_HEADER_NODE_COUNT, PREFIX + ":" + ManifestModel.LOCALNAME_HEADER_NODE_COUNT, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_HEADER_NODE_COUNT, PREFIX + ":"
+ ManifestModel.LOCALNAME_HEADER_NODE_COUNT, EMPTY_ATTRIBUTES);
char[] nodeCountChars = Integer.toString(header.getNodeCount()).toCharArray(); char[] nodeCountChars = Integer.toString(header.getNodeCount()).toCharArray();
writer.characters(nodeCountChars, 0, nodeCountChars.length); writer.characters(nodeCountChars, 0, nodeCountChars.length);
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_HEADER_NODE_COUNT, PREFIX + ":" + ManifestModel.LOCALNAME_HEADER_NODE_COUNT); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_HEADER_NODE_COUNT, PREFIX + ":"
+ ManifestModel.LOCALNAME_HEADER_NODE_COUNT);
// End Header // End Header
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_TRANSFER_HEADER, PREFIX + ":" + ManifestModel.LOCALNAME_TRANSFER_HEADER); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_TRANSFER_HEADER, PREFIX + ":"
+ ManifestModel.LOCALNAME_TRANSFER_HEADER);
} }
} }
@@ -137,29 +157,35 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
public void writeTransferManifestNode(TransferManifestDeletedNode node) throws SAXException public void writeTransferManifestNode(TransferManifestDeletedNode node) throws SAXException
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute("uri", "nodeRef", "nodeRef", "String", node.getNodeRef().toString()); attributes
.addAttribute("uri", "nodeRef", "nodeRef", "String", node.getNodeRef()
.toString());
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":" +ManifestModel.LOCALNAME_ELEMENT_DELETED_NODE, attributes); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_DELETED_NODE, attributes);
if(node.getPrimaryParentAssoc() != null) if (node.getPrimaryParentAssoc() != null)
{ {
writePrimaryParent(node.getPrimaryParentAssoc(), node.getParentPath()); writePrimaryParent(node.getPrimaryParentAssoc(), node.getParentPath());
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":" +ManifestModel.LOCALNAME_ELEMENT_DELETED_NODE); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_DELETED_NODE);
} }
public void writeTransferManifestNode(TransferManifestNode node) throws SAXException public void writeTransferManifestNode(TransferManifestNode node) throws SAXException
{ {
if(node instanceof TransferManifestDeletedNode) if (node instanceof TransferManifestDeletedNode)
{ {
TransferManifestDeletedNode node2 = (TransferManifestDeletedNode)node; TransferManifestDeletedNode node2 = (TransferManifestDeletedNode) node;
writeTransferManifestNode(node2); writeTransferManifestNode(node2);
} }
else if(node instanceof TransferManifestNormalNode) else if (node instanceof TransferManifestNormalNode)
{ {
TransferManifestNormalNode node2 = (TransferManifestNormalNode)node; TransferManifestNormalNode node2 = (TransferManifestNormalNode) node;
writeTransferManifestNode(node2); writeTransferManifestNode(node2);
} }
else else
@@ -171,18 +197,24 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
/** /**
* Write a normal transfer manifest node * Write a normal transfer manifest node
*
* @param nodeRef * @param nodeRef
* @throws SAXException * @throws SAXException
*/ */
public void writeTransferManifestNode(TransferManifestNormalNode node) throws SAXException public void writeTransferManifestNode(TransferManifestNormalNode node) throws SAXException
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute("uri", "nodeRef", "nodeRef", "String", node.getNodeRef().toString()); attributes
attributes.addAttribute("uri", "nodeType", "nodeType", "String", formatQName(node.getType())); .addAttribute("uri", "nodeRef", "nodeRef", "String", node.getNodeRef()
.toString());
attributes.addAttribute("uri", "nodeType", "nodeType", "String",
formatQName(node.getType()));
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":" +ManifestModel.LOCALNAME_ELEMENT_NODE, attributes); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_NODE, attributes);
if(node.getPrimaryParentAssoc() != null) if (node.getPrimaryParentAssoc() != null)
{ {
writePrimaryParent(node.getPrimaryParentAssoc(), node.getParentPath()); writePrimaryParent(node.getPrimaryParentAssoc(), node.getParentPath());
} }
@@ -199,62 +231,85 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
writeSourceAssocs(node.getSourceAssocs()); writeSourceAssocs(node.getSourceAssocs());
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":" +ManifestModel.LOCALNAME_ELEMENT_NODE); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_NODE, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_NODE);
} }
private void writeProperties(Map<QName, Serializable> properties) throws SAXException private void writeProperties(Map<QName, Serializable> properties) throws SAXException
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
if(properties != null ) ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, EMPTY_ATTRIBUTES);
if (properties != null)
{ {
for(Entry<QName, Serializable> entry : properties.entrySet()) for (Entry<QName, Serializable> entry : properties.entrySet())
{ {
writeProperty(entry.getKey(), entry.getValue()); writeProperty(entry.getKey(), entry.getValue());
} }
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PROPERTIES); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PROPERTIES);
} }
private void writeProperty(QName name, Serializable value) throws SAXException private void writeProperty(QName name, Serializable value) throws SAXException
{ {
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "name", "name", "String", formatQName(name)); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "name", "name", "String",
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PROPERTY, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PROPERTY, attributes); formatQName(name));
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PROPERTY, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PROPERTY, attributes);
} }
if(value == null) if (value == null)
{ {
writeNullValue(); writeNullValue();
} }
else if(value instanceof ContentData) else if (value instanceof ContentData)
{ {
ContentData data = (ContentData)value; ContentData data = (ContentData) value;
AttributesImpl dataAttributes = new AttributesImpl(); AttributesImpl dataAttributes = new AttributesImpl();
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "contentURL","contentURL", "String", data.getContentUrl()); dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "contentURL",
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "mimetype", "mimetype", "String", data.getMimetype()); "contentURL", "String", data.getContentUrl());
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "size", "size", "String", Long.toString(data.getSize())); dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "mimetype",
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "encoding", "encoding", "String", data.getEncoding()); "mimetype", "String", data.getMimetype());
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "locale", "locale", "String", data.getLocale().toString()); dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "size", "size",
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER, dataAttributes); "String", Long.toString(data.getSize()));
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER); dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "encoding",
"encoding", "String", data.getEncoding());
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "locale", "locale",
"String", data.getLocale().toString());
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER,
dataAttributes);
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_CONTENT_HEADER);
} }
else if(value instanceof Collection) else if (value instanceof Collection)
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUES, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUES, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_VALUES, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUES, EMPTY_ATTRIBUTES);
int index = 0; int index = 0;
for (Object valueInCollection : (Collection)value) for (Object valueInCollection : (Collection) value)
{ {
writeValue((Serializable)valueInCollection); writeValue((Serializable) valueInCollection);
index++; index++;
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUES, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUES); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_VALUES, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUES);
} }
else if(value instanceof MLText) else if (value instanceof MLText)
{ {
MLText mltext = (MLText)value; MLText mltext = (MLText) value;
for(Entry<Locale, String> entry : mltext.entrySet()) for (Entry<Locale, String> entry : mltext.entrySet())
{ {
writeMLValue(entry.getKey(), entry.getValue()); writeMLValue(entry.getKey(), entry.getValue());
} }
@@ -263,26 +318,32 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
{ {
writeValue(value); writeValue(value);
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PROPERTY, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PROPERTY); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PROPERTY, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PROPERTY);
} }
private void writeValue(Serializable value) throws SAXException private void writeValue(Serializable value) throws SAXException
{ {
try try
{ {
String strValue = (String)DefaultTypeConverter.INSTANCE.convert(String.class, value); String strValue = (String) DefaultTypeConverter.INSTANCE.convert(String.class, value);
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING,
EMPTY_ATTRIBUTES);
writer.characters(strValue.toCharArray(), 0, strValue.length()); writer.characters(strValue.toCharArray(), 0, strValue.length());
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUE_STRING);
} }
catch (TypeConversionException e) catch (TypeConversionException e)
{ {
/** /**
* Can't convert this to a string for transmission * Can't convert this to a string for transmission Need to serialize
* * the Java Object
* Need to serialize the Java Object
*/ */
try try
@@ -298,15 +359,22 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
String s = new String(Base64.encodeBytes(ba)); String s = new String(Base64.encodeBytes(ba));
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "className", "className", "String", value.getClass().getName()); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "className",
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "encoding", "encoding", "String", "base64/ObjectOutputStream"); "className", "String", value.getClass().getName());
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED, attributes); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "encoding",
"encoding", "String", "base64/ObjectOutputStream");
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED,
attributes);
writer.startCDATA(); writer.startCDATA();
writer.characters(s.toCharArray(), 0, s.length()); writer.characters(s.toCharArray(), 0, s.length());
writer.endCDATA(); writer.endCDATA();
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED);
} }
catch (IOException err) catch (IOException err)
@@ -319,41 +387,58 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
private void writeNullValue() throws SAXException private void writeNullValue() throws SAXException
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL, attributes); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL); ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL, attributes);
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL);
} }
private void writeMLValue(Locale locale, Serializable value) throws SAXException private void writeMLValue(Locale locale, Serializable value) throws SAXException
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "locale", "locale", "String", locale.toString()); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "locale", "locale", "String",
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_MLVALUE, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_MLVALUE, attributes); locale.toString());
String strValue = (String)DefaultTypeConverter.INSTANCE.convert(String.class, value); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_MLVALUE, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_MLVALUE, attributes);
String strValue = (String) DefaultTypeConverter.INSTANCE.convert(String.class, value);
writer.characters(strValue.toCharArray(), 0, strValue.length()); writer.characters(strValue.toCharArray(), 0, strValue.length());
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_MLVALUE, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_MLVALUE); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_MLVALUE, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_MLVALUE);
} }
private void writeAspects(Set<QName> aspects) throws SAXException private void writeAspects(Set<QName> aspects) throws SAXException
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASPECTS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASPECTS, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_ASPECTS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_ASPECTS, EMPTY_ATTRIBUTES);
if(aspects != null) if (aspects != null)
{ {
for(QName aspect : aspects) for (QName aspect : aspects)
{ {
writeAspect(aspect); writeAspect(aspect);
} }
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASPECTS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASPECTS); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_ASPECTS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_ASPECTS);
} }
private void writeAspect(QName aspect) throws SAXException private void writeAspect(QName aspect) throws SAXException
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASPECT, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASPECT, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
String name=formatQName(aspect); ManifestModel.LOCALNAME_ELEMENT_ASPECT, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_ASPECT, EMPTY_ATTRIBUTES);
String name = formatQName(aspect);
writer.characters(name.toCharArray(), 0, name.length()); writer.characters(name.toCharArray(), 0, name.length());
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASPECT, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASPECT); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_ASPECT, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_ASPECT);
} }
private void writeDate(Date date) throws SAXException private void writeDate(Date date) throws SAXException
@@ -368,117 +453,170 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
return qname.toString(); return qname.toString();
} }
private void writePrimaryParent(ChildAssociationRef parentAssoc, Path parentPath) throws SAXException private void writePrimaryParent(ChildAssociationRef parentAssoc, Path parentPath)
throws SAXException
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT, EMPTY_ATTRIBUTES);
writeParentAssoc(parentAssoc); writeParentAssoc(parentAssoc);
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
if(parentPath != null) ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, EMPTY_ATTRIBUTES);
if (parentPath != null)
{ {
String path = parentPath.toString(); String path = parentPath.toString();
writer.characters(path.toCharArray(), 0, path.length()); writer.characters(path.toCharArray(), 0, path.length());
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH);
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT);
} }
private void writeParentAssocs(List<ChildAssociationRef> refs) throws SAXException private void writeParentAssocs(List<ChildAssociationRef> refs) throws SAXException
{ {
if(refs != null) if (refs != null)
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS,
EMPTY_ATTRIBUTES);
for(ChildAssociationRef assoc : refs) for (ChildAssociationRef assoc : refs)
{ {
writeParentAssoc(assoc); writeParentAssoc(assoc);
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOCS);
} }
} }
private void writeChildAssocs(List<ChildAssociationRef> refs) throws SAXException private void writeChildAssocs(List<ChildAssociationRef> refs) throws SAXException
{ {
if(refs != null) if (refs != null)
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS,
EMPTY_ATTRIBUTES);
for(ChildAssociationRef assoc : refs) for (ChildAssociationRef assoc : refs)
{ {
writeChildAssoc(assoc); writeChildAssoc(assoc);
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOCS);
} }
} }
private void writeParentAssoc(ChildAssociationRef assoc) throws SAXException private void writeParentAssoc(ChildAssociationRef assoc) throws SAXException
{ {
if(assoc != null) if (assoc != null)
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "from", "from", "String", assoc.getParentRef().toString()); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "from", "from", "String",
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String", formatQName(assoc.getTypeQName())); assoc.getParentRef().toString());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "isPrimary", "Boolean", assoc.isPrimary()?"true":"false"); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String",
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC, attributes); formatQName(assoc.getTypeQName()));
String name= formatQName(assoc.getQName()); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "isPrimary",
"Boolean", assoc.isPrimary() ? "true" : "false");
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC, attributes);
String name = formatQName(assoc.getQName());
writer.characters(name.toCharArray(), 0, name.length()); writer.characters(name.toCharArray(), 0, name.length());
assoc.isPrimary(); assoc.isPrimary();
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PARENT_ASSOC);
} }
} }
private void writeChildAssoc(ChildAssociationRef assoc) throws SAXException private void writeChildAssoc(ChildAssociationRef assoc) throws SAXException
{ {
if(assoc != null) if (assoc != null)
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "to", "to", "String", assoc.getChildRef().toString()); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "to", "to", "String",
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String", formatQName(assoc.getTypeQName())); assoc.getChildRef().toString());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "isPrimary", "Boolean", assoc.isPrimary()?"true":"false"); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String",
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC, attributes); formatQName(assoc.getTypeQName()));
String name= formatQName(assoc.getQName()); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "isPrimary",
"Boolean", assoc.isPrimary() ? "true" : "false");
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC, attributes);
String name = formatQName(assoc.getQName());
writer.characters(name.toCharArray(), 0, name.length()); writer.characters(name.toCharArray(), 0, name.length());
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_CHILD_ASSOC);
} }
} }
private void writeTargetAssocs(List<AssociationRef> refs) throws SAXException private void writeTargetAssocs(List<AssociationRef> refs) throws SAXException
{ {
if(refs != null) if (refs != null)
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS,
EMPTY_ATTRIBUTES);
for(AssociationRef assoc : refs) for (AssociationRef assoc : refs)
{ {
writeAssoc(assoc); writeAssoc(assoc);
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_TARGET_ASSOCS);
} }
} }
private void writeSourceAssocs(List<AssociationRef> refs) throws SAXException private void writeSourceAssocs(List<AssociationRef> refs) throws SAXException
{ {
if(refs != null) if (refs != null)
{ {
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS, EMPTY_ATTRIBUTES); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS,
EMPTY_ATTRIBUTES);
for(AssociationRef assoc : refs) for (AssociationRef assoc : refs)
{ {
writeAssoc(assoc); writeAssoc(assoc);
} }
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS); writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_SOURCE_ASSOCS);
} }
} }
private void writeAssoc(AssociationRef ref) throws SAXException private void writeAssoc(AssociationRef ref) throws SAXException
{ {
AttributesImpl attributes = new AttributesImpl(); AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "source", "source", "String", ref.getSourceRef().toString()); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "source", "source", "String",
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "target", "target", "String", ref.getTargetRef().toString()); ref.getSourceRef().toString());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String", formatQName(ref.getTypeQName())); attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "target", "target", "String",
ref.getTargetRef().toString());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String",
formatQName(ref.getTypeQName()));
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASSOC, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASSOC, attributes); writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASSOC, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASSOC); ManifestModel.LOCALNAME_ELEMENT_ASSOC, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_ASSOC, attributes);
writer.endElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_ASSOC, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_ASSOC);
} }
} }

View File

@@ -18,8 +18,6 @@
*/ */
package org.alfresco.service.cmr.transfer; package org.alfresco.service.cmr.transfer;
import java.io.Serializable;
/** /**
* The transfer callback is called during a transfer, it allows the real-time feedback of * The transfer callback is called during a transfer, it allows the real-time feedback of
* an in progress transfer. It can be used to populate a deployment report or to display * an in progress transfer. It can be used to populate a deployment report or to display
@@ -27,7 +25,7 @@ import java.io.Serializable;
* *
* @author Mark Rogers * @author Mark Rogers
*/ */
public interface TransferCallback extends Serializable public interface TransferCallback
{ {
/** /**
* processEvent * processEvent

View File

@@ -39,14 +39,6 @@ public interface TransferTarget
*/ */
public String getName(); public String getName();
/**
* Set the name of this transfer target. Please note that you can't update the name of a
* transfer target.
*
* @param name
*/
public void setName(String name);
/** /**
* Get the description for this transfer target * Get the description for this transfer target
* @return * @return