diff --git a/source/generated/org/alfresco/repo/webservice/content/ContentServiceSoapPort.java b/source/generated/org/alfresco/repo/webservice/content/ContentServiceSoapPort.java
index d2f660793a..b170c37f44 100644
--- a/source/generated/org/alfresco/repo/webservice/content/ContentServiceSoapPort.java
+++ b/source/generated/org/alfresco/repo/webservice/content/ContentServiceSoapPort.java
@@ -19,6 +19,11 @@ public interface ContentServiceSoapPort extends java.rmi.Remote {
*/
public org.alfresco.repo.webservice.content.Content write(org.alfresco.repo.webservice.types.Reference node, java.lang.String property, byte[] content, org.alfresco.repo.webservice.types.ContentFormat format) throws java.rmi.RemoteException, org.alfresco.repo.webservice.content.ContentFault;
+ /**
+ * Writes the attached content into the repository.
+ */
+ public org.alfresco.repo.webservice.content.Content writeWithAttachment(org.alfresco.repo.webservice.types.Reference node, java.lang.String property, org.alfresco.repo.webservice.types.ContentFormat format) throws java.rmi.RemoteException, org.alfresco.repo.webservice.content.ContentFault;
+
/**
* Clears content from the repository.
*/
diff --git a/source/generated/org/alfresco/repo/webservice/content/deploy.wsdd b/source/generated/org/alfresco/repo/webservice/content/deploy.wsdd
index 4dc373ee9b..81cfc8107c 100644
--- a/source/generated/org/alfresco/repo/webservice/content/deploy.wsdd
+++ b/source/generated/org/alfresco/repo/webservice/content/deploy.wsdd
@@ -32,6 +32,12 @@
+
+
+
+
+
+
@@ -45,7 +51,7 @@
-
+
-
+
callback = new RetryingTransactionCallback()
+ {
+ public Content execute() throws Throwable
+ {
+ AttachmentPart[] attachments = getMessageAttachments();
+ if (attachments.length != 1)
+ {
+ throw new AlfrescoRuntimeException("Expecting only one attachment");
+ }
+
+ // create a NodeRef from the parent reference
+ NodeRef nodeRef = Utils.convertToNodeRef(node, nodeService, searchService, namespaceService);
+
+ // Get the content writer
+ ContentWriter writer = contentService.getWriter(nodeRef, QName.createQName(property), true);
+
+ // Set the content format details (if they have been specified)
+ if (format != null)
+ {
+ writer.setEncoding(format.getEncoding());
+ writer.setMimetype(format.getMimetype());
+ }
+
+ // Write the content (just need to get the first in the array since we are only expecting one attachment)
+ DataHandler dh = attachments[0].getDataHandler();
+ InputStream is = dh.getInputStream();
+ writer.putContent(is);
+
+ // Debug
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Updated content for node with id: " + nodeRef.getId());
+ }
+
+ // Return the content object
+ return createContent(nodeRef, property);
+ }
+ };
+ return Utils.getRetryingTransactionHelper(MessageContext.getCurrentContext()).doInTransaction(callback);
+ }
+ catch (Throwable e)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", e);
+ }
+ throw new ContentFault(0, e.getMessage());
+ }
+
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private AttachmentPart[] getMessageAttachments()
+ throws AxisFault
+ {
+ MessageContext msgContext = MessageContext.getCurrentContext();
+ Message reqMsg = msgContext.getRequestMessage();
+ Attachments messageAttachments = reqMsg.getAttachmentsImpl();
+ if (null == messageAttachments)
+ {
+ return new AttachmentPart[0];
+ }
+ int attachmentCount = messageAttachments.getAttachmentCount();
+ AttachmentPart attachments[] = new AttachmentPart[attachmentCount];
+ Iterator it = messageAttachments.getAttachments().iterator();
+ int count = 0;
+ while (it.hasNext())
+ {
+ AttachmentPart part = (AttachmentPart)it.next();
+ attachments[count++] = part;
+ }
+
+ return attachments;
+ }
/**
* @see org.alfresco.repo.webservice.content.ContentServiceSoapPort#clear(org.alfresco.repo.webservice.types.Predicate,
diff --git a/source/web/WEB-INF/server-config.wsdd b/source/web/WEB-INF/server-config.wsdd
index a4ffdc0a1f..672c6cc2b1 100644
--- a/source/web/WEB-INF/server-config.wsdd
+++ b/source/web/WEB-INF/server-config.wsdd
@@ -898,6 +898,12 @@
+
+
+
+
+
+
@@ -911,7 +917,7 @@
-
+
-
+
-
+
Provides support for collaborative editing of content.
diff --git a/source/wsdl/content-service.wsdl b/source/wsdl/content-service.wsdl
index 119376c8c2..71ae4aca83 100644
--- a/source/wsdl/content-service.wsdl
+++ b/source/wsdl/content-service.wsdl
@@ -52,6 +52,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -134,6 +153,14 @@
+
+
+
+
+
+
+
+
@@ -167,6 +194,12 @@
+
+ Writes the attached content into the repository.
+
+
+
+
Clears content from the repository.
@@ -207,6 +240,19 @@
+
+
+ Writes attached content to the repository.
+
+
+
+
+
+
+
+
+
+
Clears content from the repository.