Repository: camel Updated Branches: refs/heads/master b017a3089 -> 424abd63c
creating objects with custom properties Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6fd9adf5 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6fd9adf5 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6fd9adf5 Branch: refs/heads/master Commit: 6fd9adf573eb632da3992e6a89f22fa8cbb767b4 Parents: d275e67 Author: bava...@gmail.com <bava...@gmail.com> Authored: Sat Jan 24 01:21:13 2015 +0300 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Jan 29 07:36:12 2015 +0100 ---------------------------------------------------------------------- .../camel/component/cmis/CMISProducer.java | 20 +++++++++++++++++++- .../camel/component/cmis/CMISSessionFacade.java | 9 +++++---- 2 files changed, 24 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6fd9adf5/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISProducer.java ---------------------------------------------------------------------- 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 cf71b43..5169ed6 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 @@ -16,7 +16,9 @@ */ package org.apache.camel.component.cmis; +import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.apache.camel.Exchange; import org.apache.camel.Message; @@ -28,6 +30,7 @@ import org.apache.camel.util.MessageHelper; import org.apache.chemistry.opencmis.client.api.CmisObject; import org.apache.chemistry.opencmis.client.api.Document; import org.apache.chemistry.opencmis.client.api.Folder; +import org.apache.chemistry.opencmis.client.api.ObjectType; import org.apache.chemistry.opencmis.commons.PropertyIds; import org.apache.chemistry.opencmis.commons.data.ContentStream; import org.apache.chemistry.opencmis.commons.enums.VersioningState; @@ -53,13 +56,28 @@ public class CMISProducer extends DefaultProducer { exchange.getOut().setBody(cmisObject.getId()); } + private Map<String, Object> filterTypeProperties(Map<String, Object> properties) { + Map<String, Object> result = new HashMap<String, Object>(properties.size()); + String objectTypeName = CamelCMISConstants.CMIS_DOCUMENT; + if (properties.containsKey(PropertyIds.OBJECT_TYPE_ID)) + objectTypeName = (String)properties.get(PropertyIds.OBJECT_TYPE_ID); + + Set<String> types = cmisSessionFacade.getPropertiesFor(objectTypeName); + for (Map.Entry<String, Object> entry : properties.entrySet()) { + if (types.contains(entry.getKey())) { + result.put(entry.getKey(), entry.getValue()); + } + } + return result; + } + private CmisObject createNode(Exchange exchange) throws Exception { validateRequiredHeader(exchange, PropertyIds.NAME); Message message = exchange.getIn(); String parentFolderPath = parentFolderPathFor(message); Folder parentFolder = getFolderOnPath(exchange, parentFolderPath); - Map<String, Object> cmisProperties = CMISHelper.filterCMISProperties(message.getHeaders()); + Map<String, Object> cmisProperties = filterTypeProperties(message.getHeaders()); if (isDocument(exchange)) { String fileName = message.getHeader(PropertyIds.NAME, String.class); http://git-wip-us.apache.org/repos/asf/camel/blob/6fd9adf5/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java ---------------------------------------------------------------------- diff --git a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java index 8ea367e..230479e 100644 --- a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java +++ b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java @@ -18,10 +18,7 @@ package org.apache.camel.component.cmis; import java.io.ByteArrayInputStream; import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; @@ -207,6 +204,10 @@ public class CMISSessionFacade { return objectBaseType == null ? customOrCMISType : objectBaseType.getId(); } + public Set<String> getPropertiesFor(String objectType) { + return session.getTypeDefinition(objectType).getPropertyDefinitions().keySet(); + } + public OperationContext createOperationContext() { return session.createOperationContext(); }