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();
     }

Reply via email to