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.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.unable_to_deserialise=Unable to deserialize value

View File

@@ -492,64 +492,6 @@ public class HttpClientTransmitterImpl implements TransferTransmitter
}
} // 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.
* Also implements RangedTransferEvent.
* Also implements the operations required by RangedTransferEvent.
* @see TransferEvent
* @see RangedTransferEvent
*/
@@ -105,14 +105,20 @@ public abstract class TransferEventImpl implements TransferEvent
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()
{
return "TransferEventImpl : " + this.getTime() + ", " + this.getTransferState();
return this.getClass().getSimpleName() + ", " + this.getTime() + ", " + this.getTransferState();
}
public boolean equals(Object obj)
{
if(obj instanceof TransferEventImpl)
if(obj != null)
{
if(this.getClass().equals(obj.getClass()))
{
TransferEventImpl other = (TransferEventImpl)obj;
if(other.getTransferState().equals(this.getTransferState()) &&
@@ -122,6 +128,8 @@ public abstract class TransferEventImpl implements TransferEvent
return true;
}
}
}
// not a match
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.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -35,29 +34,18 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
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.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.jlan.smb.dcerpc.UUID;
import org.alfresco.model.ContentModel;
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.TransferManifestHeader;
import org.alfresco.repo.transfer.manifest.TransferManifestNode;
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.TransferManifestNormalNode;
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.repository.ChildAssociationRef;
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.NodeService;
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.transfer.TransferCallback;
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.TransferProgress;
import org.alfresco.service.cmr.transfer.TransferService;
import org.alfresco.service.cmr.transfer.TransferTarget;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
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.LogFactory;
import org.springframework.extensions.surf.util.PropertyCheck;
import org.xml.sax.SAXException;
public class TransferServiceImpl implements TransferService
@@ -376,6 +362,13 @@ public class TransferServiceImpl implements TransferService
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>();
params.put("targetName", targetName);
params.put("definition", definition);

View File

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

View File

@@ -93,10 +93,4 @@ public interface TransferTransmitter
*/
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);
}
public Set<TransferMessage> getMessages(Transfer transfer)
{
String transferId = transfer.getTransferId();
return null;
}
public void prepare(Transfer transfer) throws TransferException
{

View File

@@ -33,15 +33,19 @@ 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;
import org.alfresco.service.cmr.repository.MLText;
import org.alfresco.service.cmr.repository.NodeRef;
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.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;
@@ -53,7 +57,7 @@ import org.xml.sax.helpers.DefaultHandler;
/**
* 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
*/
@@ -61,15 +65,17 @@ 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";
/**
* These are the namespaces used within the document - there may be a different mapping to
* 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 XMLNS_URI = "http://www.w3.org/XML/1998/namespace";
LinkedList<HashMap<String, String>> namespaces = new LinkedList<HashMap<String, String>>();
public XMLTransferManifestReader(TransferManifestProcessor snapshotProcessor)
{
@@ -275,6 +281,7 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
}
else if(elementName.equals(ManifestModel.LOCALNAME_ELEMENT_VALUE_SERIALIZED))
{
props.put("encoding", atts.getValue("", "encoding"));
buffer = new StringBuffer();
}
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))
{
Collection<Serializable> values = (Collection<Serializable>)props.get("values");
String encoding = (String)props.get("encoding");
String strValue = buffer.toString();
Object value = null;
// TODO assumes "base64/ObjectOutputStream" - should check
if(encoding.equalsIgnoreCase("base64/ObjectOutputStream"))
{
try
{
byte[] data = Base64.decode(strValue.getBytes("UTF-8"));
@@ -495,21 +504,26 @@ public class XMLTransferManifestReader extends DefaultHandler implements Content
}
catch (IOException error)
{
//TODO Error handler - should this fail the transfer ?
error.printStackTrace();
throw new TransferException(MSG_UNABLE_DESERIALIZE, error);
}
catch (ClassNotFoundException error)
{
//TODO Error handler - should this fail the transfer ?
error.printStackTrace();
throw new TransferException(MSG_UNABLE_DESERIALIZE, error);
}
}
else
{
throw new TransferException(MSG_NO_ENCODING, new Object[]{encoding});
}
if(values != null)
{
// This is a values array
values.add((Serializable)value);
}
else
{
// This is a single 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.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
*/
@@ -87,7 +89,9 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
this.writer.startPrefixMapping("cm", NamespaceService.CONTENT_MODEL_1_0_URI);
// 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
{
// 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.endDocument();
@@ -107,24 +113,38 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
*/
public void writeTransferManifestHeader(TransferManifestHeader header) throws SAXException
{
if(header.getCreatedDate() != null)
if (header.getCreatedDate() != null)
{
// 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
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());
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
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();
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
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
{
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());
}
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
{
if(node instanceof TransferManifestDeletedNode)
if (node instanceof TransferManifestDeletedNode)
{
TransferManifestDeletedNode node2 = (TransferManifestDeletedNode)node;
TransferManifestDeletedNode node2 = (TransferManifestDeletedNode) node;
writeTransferManifestNode(node2);
}
else if(node instanceof TransferManifestNormalNode)
else if (node instanceof TransferManifestNormalNode)
{
TransferManifestNormalNode node2 = (TransferManifestNormalNode)node;
TransferManifestNormalNode node2 = (TransferManifestNormalNode) node;
writeTransferManifestNode(node2);
}
else
@@ -171,18 +197,24 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
/**
* Write a normal transfer manifest node
*
* @param nodeRef
* @throws SAXException
*/
public void writeTransferManifestNode(TransferManifestNormalNode node) throws SAXException
{
AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute("uri", "nodeRef", "nodeRef", "String", node.getNodeRef().toString());
attributes.addAttribute("uri", "nodeType", "nodeType", "String", formatQName(node.getType()));
attributes
.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());
}
@@ -199,62 +231,85 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
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
{
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PROPERTIES, EMPTY_ATTRIBUTES);
if(properties != null )
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
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());
}
}
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
{
{
AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "name", "name", "String", formatQName(name));
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PROPERTY, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PROPERTY, attributes);
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "name", "name", "String",
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();
}
else if(value instanceof ContentData)
else if (value instanceof ContentData)
{
ContentData data = (ContentData)value;
ContentData data = (ContentData) value;
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, "mimetype", "mimetype", "String", data.getMimetype());
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "size", "size", "String", Long.toString(data.getSize()));
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);
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "contentURL",
"contentURL", "String", data.getContentUrl());
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "mimetype",
"mimetype", "String", data.getMimetype());
dataAttributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "size", "size",
"String", Long.toString(data.getSize()));
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;
for (Object valueInCollection : (Collection)value)
for (Object valueInCollection : (Collection) value)
{
writeValue((Serializable)valueInCollection);
writeValue((Serializable) valueInCollection);
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;
for(Entry<Locale, String> entry : mltext.entrySet())
MLText mltext = (MLText) value;
for (Entry<Locale, String> entry : mltext.entrySet())
{
writeMLValue(entry.getKey(), entry.getValue());
}
@@ -263,26 +318,32 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
{
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
{
try
{
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);
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.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)
{
/**
* Can't convert this to a string for transmission
*
* Need to serialize the Java Object
* Can't convert this to a string for transmission Need to serialize
* the Java Object
*/
try
@@ -298,15 +359,22 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
String s = new String(Base64.encodeBytes(ba));
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, "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);
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "className",
"className", "String", value.getClass().getName());
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.characters(s.toCharArray(), 0, s.length());
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)
@@ -319,41 +387,58 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
private void writeNullValue() throws SAXException
{
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.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_VALUE_NULL);
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
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
{
AttributesImpl attributes = new AttributesImpl();
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "locale", "locale", "String", locale.toString());
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);
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "locale", "locale", "String",
locale.toString());
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.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
{
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);
}
}
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
{
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASPECT, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASPECT, EMPTY_ATTRIBUTES);
String name=formatQName(aspect);
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_ASPECT, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_ASPECT, EMPTY_ATTRIBUTES);
String name = formatQName(aspect);
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
@@ -368,117 +453,170 @@ public class XMLTransferManifestWriter implements TransferManifestWriter
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);
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, EMPTY_ATTRIBUTES);
if(parentPath != null)
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, PREFIX + ":"
+ ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH, EMPTY_ATTRIBUTES);
if (parentPath != null)
{
String path = parentPath.toString();
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
{
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);
}
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
{
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);
}
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
{
if(assoc != null)
if (assoc != null)
{
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, "type", "type", "String", formatQName(assoc.getTypeQName()));
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());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "from", "from", "String",
assoc.getParentRef().toString());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String",
formatQName(assoc.getTypeQName()));
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());
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
{
if(assoc != null)
if (assoc != null)
{
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, "type", "type", "String", formatQName(assoc.getTypeQName()));
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());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "to", "to", "String",
assoc.getChildRef().toString());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String",
formatQName(assoc.getTypeQName()));
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.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
{
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);
}
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
{
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);
}
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
{
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, "target", "target", "String", ref.getTargetRef().toString());
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "type", "type", "String", formatQName(ref.getTypeQName()));
attributes.addAttribute(TransferModel.TRANSFER_MODEL_1_0_URI, "source", "source", "String",
ref.getSourceRef().toString());
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.endElement(TransferModel.TRANSFER_MODEL_1_0_URI, ManifestModel.LOCALNAME_ELEMENT_ASSOC, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_ASSOC);
writer.startElement(TransferModel.TRANSFER_MODEL_1_0_URI,
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;
import java.io.Serializable;
/**
* 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
@@ -27,7 +25,7 @@ import java.io.Serializable;
*
* @author Mark Rogers
*/
public interface TransferCallback extends Serializable
public interface TransferCallback
{
/**
* processEvent

View File

@@ -39,14 +39,6 @@ public interface TransferTarget
*/
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
* @return