This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 21b0010 CAMEL-15417 Add optional fileName parameter on copyDocument function (#4097) 21b0010 is described below commit 21b00103f638eb97d15c6498de86fc8d58245b9c Author: Vladimir Cherepnalkovski <cherepnalkov...@hotmail.com> AuthorDate: Fri Aug 21 14:26:58 2020 +0200 CAMEL-15417 Add optional fileName parameter on copyDocument function (#4097) * Add optional fileName parameter on copyDocument function * Replace StringUtils utils with ObjectHelper and replace deprecated (getOut) with getMessage method. * Replace updateProperties with another document copy function that accepts new document properties. --- .../apache/camel/component/cmis/CMISProducer.java | 10 +++++++-- .../camel/component/cmis/CMISQueryProducer.java | 4 ++-- .../camel/component/cmis/CMISProducerTest.java | 24 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java index 4a5b14d..9187dcc 100644 --- a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java +++ b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java @@ -19,6 +19,7 @@ package org.apache.camel.component.cmis; import java.io.InputStream; import java.lang.reflect.Method; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -79,8 +80,8 @@ public class CMISProducer extends DefaultProducer { Method method = ReflectionHelper.findMethod(this.getClass(), action.getMethodName(), paramMethod); Object object = ObjectHelper.invokeMethod(method, this, exchange); - exchange.getOut().copyFrom(exchange.getIn()); - exchange.getOut().setBody(object); + exchange.getMessage().copyFrom(exchange.getIn()); + exchange.getMessage().setBody(object); } /** @@ -336,6 +337,11 @@ public class CMISProducer extends DefaultProducer { Document document = (Document) getSessionFacade().getObjectById(objectId); + String newDocumentName = message.getHeader(PropertyIds.NAME, String.class); + if(org.apache.camel.util.ObjectHelper.isNotEmpty(newDocumentName)) { + return document.copy(destinationFolder, Collections.singletonMap(PropertyIds.NAME, newDocumentName), VersioningState.NONE, null, null, null, getSessionFacade().createOperationContext()); + } + return document.copy(destinationFolder); } diff --git a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISQueryProducer.java b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISQueryProducer.java index e338c07..19ce051 100644 --- a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISQueryProducer.java +++ b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISQueryProducer.java @@ -46,8 +46,8 @@ public class CMISQueryProducer extends DefaultProducer { @Override public void process(Exchange exchange) throws Exception { List<Map<String, Object>> nodes = executeQuery(exchange); - exchange.getOut().setBody(nodes); - exchange.getOut().setHeader(CamelCMISConstants.CAMEL_CMIS_RESULT_COUNT, nodes.size()); + exchange.getMessage().setBody(nodes); + exchange.getMessage().setHeader(CamelCMISConstants.CAMEL_CMIS_RESULT_COUNT, nodes.size()); } private List<Map<String, Object>> executeQuery(Exchange exchange) throws Exception { diff --git a/components/camel-cmis/src/test/java/org/apache/camel/component/cmis/CMISProducerTest.java b/components/camel-cmis/src/test/java/org/apache/camel/component/cmis/CMISProducerTest.java index fd200f8..c2bc4a0 100644 --- a/components/camel-cmis/src/test/java/org/apache/camel/component/cmis/CMISProducerTest.java +++ b/components/camel-cmis/src/test/java/org/apache/camel/component/cmis/CMISProducerTest.java @@ -342,6 +342,30 @@ public class CMISProducerTest extends CMISTestSupport { } @Test + void copyDocumentWithNewName() throws UnsupportedEncodingException { + Folder destination = createFolderWithName("Destination"); + Document document = createTextDocument(createSession().getRootFolder(), "This is new test document", "document.txt"); + + Exchange exchange = createExchangeWithInBody(null); + exchange.getIn().getHeaders().put(PropertyIds.OBJECT_TYPE_ID, CamelCMISConstants.CMIS_DOCUMENT); + exchange.getIn().getHeaders().put(CamelCMISConstants.CMIS_ACTION, CamelCMISActions.COPY_DOCUMENT); + exchange.getIn().getHeaders().put(PropertyIds.NAME, "renamedDocument.txt"); + exchange.getIn().getHeaders().put(CamelCMISConstants.CMIS_OBJECT_ID, document.getId()); + exchange.getIn().getHeaders().put(CamelCMISConstants.CMIS_DESTIONATION_FOLDER_ID, destination.getId()); + + template.send(exchange); + + Document copy = exchange.getMessage().getBody(Document.class); + + assertNotNull(copy); + assertNotEquals(document.getName(), copy.getName()); + assertEquals(document.getName(), "document.txt"); + assertEquals(copy.getName(), "renamedDocument.txt"); + assertEquals(document.getContentStreamLength(), copy.getContentStreamLength()); + assertEquals(destination.getId(), copy.getParents().get(0).getId()); + } + + @Test void copyFolder() { Folder folder = createFolderWithName("Folder"); Folder destination = createFolderWithName("Destination Folder");