You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2010/03/10 10:28:00 UTC
svn commit: r921267 - in /incubator/chemistry/trunk/opencmis/opencmis-client:
opencmis-client-api/src/main/java/org/apache/opencmis/client/api/
opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/
opencmis-client-api/src/main/ja...
Author: fmui
Date: Wed Mar 10 09:28:00 2010
New Revision: 921267
URL: http://svn.apache.org/viewvc?rev=921267&view=rev
Log:
client API clean up and refactoring
Removed:
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/Testable.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentPropertyFactoryImpl.java
Modified:
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/QueryResultImpl.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/Fixture.java
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java Wed Mar 10 09:28:00 2010
@@ -24,7 +24,6 @@ import java.util.Set;
import org.apache.opencmis.client.api.objecttype.ObjectType;
import org.apache.opencmis.client.api.repository.ObjectFactory;
-import org.apache.opencmis.client.api.repository.PropertyFactory;
import org.apache.opencmis.client.api.repository.RepositoryInfo;
import org.apache.opencmis.client.api.util.Container;
import org.apache.opencmis.client.api.util.PagingList;
@@ -98,11 +97,6 @@ public interface Session {
*/
ObjectFactory getObjectFactory();
- /**
- * Gets the factory for <code>Property</code> objects.
- */
- PropertyFactory getPropertyFactory();
-
// types
/**
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java Wed Mar 10 09:28:00 2010
@@ -19,6 +19,7 @@
package org.apache.opencmis.client.api.repository;
import java.io.InputStream;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -27,15 +28,21 @@ import org.apache.opencmis.client.api.Ac
import org.apache.opencmis.client.api.AllowableActions;
import org.apache.opencmis.client.api.CmisObject;
import org.apache.opencmis.client.api.ContentStream;
-import org.apache.opencmis.client.api.Document;
-import org.apache.opencmis.client.api.Folder;
import org.apache.opencmis.client.api.OperationContext;
import org.apache.opencmis.client.api.Policy;
import org.apache.opencmis.client.api.Property;
+import org.apache.opencmis.client.api.QueryProperty;
import org.apache.opencmis.client.api.QueryResult;
-import org.apache.opencmis.client.api.Relationship;
-import org.apache.opencmis.commons.enums.VersioningState;
+import org.apache.opencmis.client.api.Rendition;
+import org.apache.opencmis.client.api.objecttype.ObjectType;
+import org.apache.opencmis.commons.api.PropertyDefinition;
+import org.apache.opencmis.commons.api.TypeDefinition;
+import org.apache.opencmis.commons.provider.AccessControlList;
+import org.apache.opencmis.commons.provider.AllowableActionsData;
+import org.apache.opencmis.commons.provider.ContentStreamData;
import org.apache.opencmis.commons.provider.ObjectData;
+import org.apache.opencmis.commons.provider.PropertiesData;
+import org.apache.opencmis.commons.provider.RenditionData;
/**
* A factory to create CMIS objects.
@@ -44,18 +51,56 @@ import org.apache.opencmis.commons.provi
*/
public interface ObjectFactory {
- // object factory
+ // allowable actions
AllowableActions createAllowableAction(Map<String, Boolean> actions);
+ AllowableActions convertAllowableActions(AllowableActionsData allowableActions);
+
+ // ACL and ACE
+
Ace createAce(String principal, List<String> permissions, boolean isDirect);
Acl createAcl(List<Ace> aces, Boolean isExact);
+ AccessControlList convertAces(List<Ace> aces);
+
+ Acl convertAcl(AccessControlList acl);
+
+ // policies
+
+ List<String> convertPolicies(List<Policy> policies);
+
+ // renditions
+
+ Rendition convertRendition(String objectId, RenditionData rendition);
+
+ // content stream
+
ContentStream createContentStream(String filename, long length, String mimetype,
InputStream stream);
- // object service
+ ContentStreamData convertContentStream(ContentStream contentStream);
+
+ // types
+
+ ObjectType convertTypeDefinition(TypeDefinition typeDefinition);
+
+ ObjectType getTypeFromObjectData(ObjectData objectData);
+
+ // properties
+
+ <T> Property<T> createProperty(PropertyDefinition<T> type, T value);
+
+ <T> Property<T> createPropertyMultivalue(PropertyDefinition<T> type, List<T> values);
+
+ Map<String, Property<?>> convertProperties(ObjectType objectType, PropertiesData properties);
+
+ PropertiesData convertProperties(Collection<Property<?>> properties);
+
+ List<QueryProperty<?>> convertQueryProperties(PropertiesData properties);
+
+ // objects
CmisObject convertObject(ObjectData objectData, OperationContext context);
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java Wed Mar 10 09:28:00 2010
@@ -91,30 +91,30 @@ public abstract class AbstractPersistent
this.objectType = objectType;
this.creationContext = new OperationContextImpl(context);
+ ObjectFactory of = getObjectFactory();
+
if (objectData != null) {
// handle properties
if (objectData.getProperties() != null) {
- this.properties = SessionUtil.convertProperties(session, objectType, objectData
- .getProperties());
+ this.properties = of.convertProperties(objectType, objectData.getProperties());
}
// handle allowable actions
if (objectData.getAllowableActions() != null) {
- this.allowableActions = SessionUtil.convertAllowableActions(session, objectData
- .getAllowableActions());
+ this.allowableActions = of.convertAllowableActions(objectData.getAllowableActions());
}
// handle renditions
if (objectData.getRenditions() != null) {
this.renditions = new ArrayList<Rendition>();
for (RenditionData rd : objectData.getRenditions()) {
- this.renditions.add(SessionUtil.convertRendition(session, getId(), rd));
+ this.renditions.add(of.convertRendition(getId(), rd));
}
}
// handle ACL
if (objectData.getAcl() != null) {
- acl = SessionUtil.convertAcl(session, objectData.getAcl());
+ acl = of.convertAcl(objectData.getAcl());
}
// handle policies
@@ -131,7 +131,6 @@ public abstract class AbstractPersistent
// handle relationships
if (objectData.getRelationships() != null) {
relationships = new ArrayList<Relationship>();
- ObjectFactory of = session.getObjectFactory();
for (ObjectData rod : objectData.getRelationships()) {
CmisObject relationship = of.convertObject(rod, this.creationContext);
if (relationship instanceof Relationship) {
@@ -173,6 +172,13 @@ public abstract class AbstractPersistent
}
/**
+ * Returns the object factory.
+ */
+ protected ObjectFactory getObjectFactory() {
+ return getSession().getObjectFactory();
+ }
+
+ /**
* Returns the id of this object or throws an exception if the id is unknown.
*/
protected String getObjectId() {
@@ -209,7 +215,7 @@ public abstract class AbstractPersistent
Holder<String> changeTokenHolder = new Holder<String>(changeToken);
getProvider().getObjectService().updateProperties(getRepositoryId(), objectIdHolder,
- changeTokenHolder, SessionUtil.convertProperties(getSession(), properties.values()), null);
+ changeTokenHolder, getObjectFactory().convertProperties(properties.values()), null);
}
// --- properties ---
@@ -234,7 +240,12 @@ public abstract class AbstractPersistent
* @see org.apache.opencmis.client.api.CmisObject#getBaseTypeId()
*/
public BaseObjectTypeIds getBaseTypeId() {
- return BaseObjectTypeIds.fromValue((String) getPropertyValue(PropertyIds.CMIS_BASE_TYPE_ID));
+ String baseType = getPropertyValue(PropertyIds.CMIS_BASE_TYPE_ID);
+ if (baseType == null) {
+ return null;
+ }
+
+ return BaseObjectTypeIds.fromValue(baseType);
}
/*
@@ -429,7 +440,7 @@ public abstract class AbstractPersistent
throw new IllegalArgumentException("Value does not match property type!");
}
- Property<T> newProperty = (Property<T>) getSession().getPropertyFactory()
+ Property<T> newProperty = (Property<T>) getSession().getObjectFactory()
.createPropertyMultivalue((PropertyDefinition<T>) propertyDefinition, value);
setChanged();
@@ -476,8 +487,11 @@ public abstract class AbstractPersistent
*/
public Acl getAcl(boolean onlyBasicPermissions) {
String objectId = getObjectId();
- return SessionUtil.convertAcl(getSession(), getProvider().getAclService().getAcl(
- getRepositoryId(), objectId, onlyBasicPermissions, null));
+
+ ObjectFactory of = getObjectFactory();
+
+ return of.convertAcl(getProvider().getAclService().getAcl(getRepositoryId(), objectId,
+ onlyBasicPermissions, null));
}
/*
@@ -488,9 +502,11 @@ public abstract class AbstractPersistent
*/
public Acl applyAcl(List<Ace> addAces, List<Ace> removeAces, AclPropagation aclPropagation) {
String objectId = getObjectId();
- return SessionUtil.convertAcl(getSession(), getProvider().getAclService().applyAcl(
- getRepositoryId(), objectId, SessionUtil.convertAces(getSession(), addAces),
- SessionUtil.convertAces(getSession(), removeAces), aclPropagation, null));
+
+ ObjectFactory of = getObjectFactory();
+
+ return of.convertAcl(getProvider().getAclService().applyAcl(getRepositoryId(), objectId,
+ of.convertAces(addAces), of.convertAces(removeAces), aclPropagation, null));
}
/*
@@ -531,11 +547,8 @@ public abstract class AbstractPersistent
* org.apache.opencmis.client.api.CmisObject#applyPolicy(org.apache.opencmis.client.api.ObjectId)
*/
public void applyPolicy(ObjectId policyId) {
- if (policyId == null) {
- throw new IllegalArgumentException("Policy is not set!");
- }
- if (policyId.getId() == null) {
- throw new IllegalArgumentException("Policy id is not set!");
+ if ((policyId == null) || (policyId.getId() == null)) {
+ throw new IllegalArgumentException("Policy Id is not set!");
}
String objectId = getObjectId();
@@ -550,11 +563,8 @@ public abstract class AbstractPersistent
* org.apache.opencmis.client.api.CmisObject#removePolicy(org.apache.opencmis.client.api.ObjectId)
*/
public void removePolicy(ObjectId policyId) {
- if (policyId == null) {
- throw new IllegalArgumentException("Policy is not set!");
- }
- if (policyId.getId() == null) {
- throw new IllegalArgumentException("Policy id is not set!");
+ if ((policyId == null) || (policyId.getId() == null)) {
+ throw new IllegalArgumentException("Policy Id is not set!");
}
String objectId = getObjectId();
@@ -619,8 +629,8 @@ public abstract class AbstractPersistent
List<Relationship> page = new ArrayList<Relationship>();
if (relList.getObjects() != null) {
for (ObjectData rod : relList.getObjects()) {
- Relationship relationship = new PersistentRelationshipImpl(getSession(), SessionUtil
- .getTypeFromObjectData(getSession(), rod), rod, ctxt);
+ Relationship relationship = new PersistentRelationshipImpl(getSession(),
+ getObjectFactory().getTypeFromObjectData(rod), rod, ctxt);
page.add(relationship);
}
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentFilableCmisObject.java Wed Mar 10 09:28:00 2010
@@ -46,8 +46,9 @@ public abstract class AbstractPersistent
* @see org.apache.opencmis.client.api.FileableCmisObject#getParents()
*/
public List<Folder> getParents() {
- // get object ids of the parent folders
String objectId = getObjectId();
+
+ // get object ids of the parent folders
List<ObjectParentData> providerParents = getProvider().getNavigationService().getObjectParents(
getRepositoryId(), objectId, PropertyIds.CMIS_OBJECT_ID, false, IncludeRelationships.NONE,
null, false, null);
@@ -88,8 +89,9 @@ public abstract class AbstractPersistent
* @see org.apache.opencmis.client.api.FileableCmisObject#getPaths()
*/
public List<String> getPaths() {
- // get object paths of the parent folders
String objectId = getObjectId();
+
+ // get object paths of the parent folders
List<ObjectParentData> providerParents = getProvider().getNavigationService().getObjectParents(
getRepositoryId(), objectId, PropertyIds.CMIS_PATH, false, IncludeRelationships.NONE, null,
true, null);
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java Wed Mar 10 09:28:00 2010
@@ -167,11 +167,11 @@ public class PersistentDocumentImpl exte
String objectId = getObjectId();
Holder<String> objectIdHolder = new Holder<String>(objectId);
+ ObjectFactory of = getObjectFactory();
+
getProvider().getVersioningService().checkIn(getRepositoryId(), objectIdHolder, major,
- SessionUtil.convertProperties(getSession(), properties),
- SessionUtil.convertContentStream(getSession(), contentStream), checkinComment,
- SessionUtil.convertPolicies(policies), SessionUtil.convertAces(getSession(), addAces),
- SessionUtil.convertAces(getSession(), removeAces), null);
+ of.convertProperties(properties), of.convertContentStream(contentStream), checkinComment,
+ of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
if (objectIdHolder.getValue() == null) {
return null;
@@ -293,7 +293,7 @@ public class PersistentDocumentImpl exte
Holder<String> changeTokenHolder = new Holder<String>(changeToken);
getProvider().getObjectService().setContentStream(getRepositoryId(), objectIdHolder, overwrite,
- changeTokenHolder, SessionUtil.convertContentStream(getSession(), contentStream), null);
+ changeTokenHolder, getObjectFactory().convertContentStream(contentStream), null);
if (objectIdHolder.getValue() == null) {
return null;
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java Wed Mar 10 09:28:00 2010
@@ -77,11 +77,12 @@ public class PersistentFolderImpl extend
List<Ace> removeAces, OperationContext context) {
String objectId = getObjectId();
+ ObjectFactory of = getObjectFactory();
+
String newId = getProvider().getObjectService().createDocument(getRepositoryId(),
- SessionUtil.convertProperties(getSession(), properties), objectId,
- SessionUtil.convertContentStream(getSession(), contentStream), versioningState,
- SessionUtil.convertPolicies(policies), SessionUtil.convertAces(getSession(), addAces),
- SessionUtil.convertAces(getSession(), removeAces), null);
+ of.convertProperties(properties), objectId, of.convertContentStream(contentStream),
+ versioningState, of.convertPolicies(policies), of.convertAces(addAces),
+ of.convertAces(removeAces), null);
// if no context is provided the object will not be fetched
if ((context == null) || (newId == null)) {
@@ -114,11 +115,11 @@ public class PersistentFolderImpl extend
throw new IllegalArgumentException("Source must be set!");
}
+ ObjectFactory of = getObjectFactory();
+
String newId = getProvider().getObjectService().createDocumentFromSource(getRepositoryId(),
- source.getId(), SessionUtil.convertProperties(getSession(), properties), objectId,
- versioningState, SessionUtil.convertPolicies(policies),
- SessionUtil.convertAces(getSession(), addAces),
- SessionUtil.convertAces(getSession(), removeAces), null);
+ source.getId(), of.convertProperties(properties), objectId, versioningState,
+ of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
// if no context is provided the object will not be fetched
if ((context == null) || (newId == null)) {
@@ -144,10 +145,11 @@ public class PersistentFolderImpl extend
List<Ace> addAces, List<Ace> removeAces, OperationContext context) {
String objectId = getObjectId();
+ ObjectFactory of = getObjectFactory();
+
String newId = getProvider().getObjectService().createFolder(getRepositoryId(),
- SessionUtil.convertProperties(getSession(), properties), objectId,
- SessionUtil.convertPolicies(policies), SessionUtil.convertAces(getSession(), addAces),
- SessionUtil.convertAces(getSession(), removeAces), null);
+ of.convertProperties(properties), objectId, of.convertPolicies(policies),
+ of.convertAces(addAces), of.convertAces(removeAces), null);
// if no context is provided the object will not be fetched
if ((context == null) || (newId == null)) {
@@ -173,10 +175,11 @@ public class PersistentFolderImpl extend
List<Ace> addAces, List<Ace> removeAces, OperationContext context) {
String objectId = getObjectId();
+ ObjectFactory of = getObjectFactory();
+
String newId = getProvider().getObjectService().createPolicy(getRepositoryId(),
- SessionUtil.convertProperties(getSession(), properties), objectId,
- SessionUtil.convertPolicies(policies), SessionUtil.convertAces(getSession(), addAces),
- SessionUtil.convertAces(getSession(), removeAces), null);
+ of.convertProperties(properties), objectId, of.convertPolicies(policies),
+ of.convertAces(addAces), of.convertAces(removeAces), null);
// if no context is provided the object will not be fetched
if ((context == null) || (newId == null)) {
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentSessionImpl.java Wed Mar 10 09:28:00 2010
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.UUID;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -42,19 +41,15 @@ import org.apache.opencmis.client.api.Pe
import org.apache.opencmis.client.api.Policy;
import org.apache.opencmis.client.api.Property;
import org.apache.opencmis.client.api.QueryResult;
-import org.apache.opencmis.client.api.Session;
import org.apache.opencmis.client.api.objecttype.ObjectType;
import org.apache.opencmis.client.api.repository.ObjectFactory;
-import org.apache.opencmis.client.api.repository.PropertyFactory;
import org.apache.opencmis.client.api.repository.RepositoryInfo;
import org.apache.opencmis.client.api.util.Container;
import org.apache.opencmis.client.api.util.PagingList;
-import org.apache.opencmis.client.api.util.Testable;
import org.apache.opencmis.client.provider.factory.CmisProviderFactory;
import org.apache.opencmis.client.runtime.cache.Cache;
import org.apache.opencmis.client.runtime.cache.CacheImpl;
import org.apache.opencmis.client.runtime.repository.PersistentObjectFactoryImpl;
-import org.apache.opencmis.client.runtime.repository.PersistentPropertyFactoryImpl;
import org.apache.opencmis.client.runtime.util.AbstractPagingList;
import org.apache.opencmis.client.runtime.util.ContainerImpl;
import org.apache.opencmis.commons.SessionParameter;
@@ -62,23 +57,20 @@ import org.apache.opencmis.commons.api.T
import org.apache.opencmis.commons.api.TypeDefinitionContainer;
import org.apache.opencmis.commons.api.TypeDefinitionList;
import org.apache.opencmis.commons.enums.BindingType;
-import org.apache.opencmis.commons.enums.Cardinality;
-import org.apache.opencmis.commons.enums.CmisProperties;
import org.apache.opencmis.commons.enums.IncludeRelationships;
-import org.apache.opencmis.commons.enums.UnfileObjects;
import org.apache.opencmis.commons.enums.VersioningState;
import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
-import org.apache.opencmis.commons.impl.dataobjects.PropertyIdDefinitionImpl;
-import org.apache.opencmis.commons.impl.dataobjects.PropertyStringDefinitionImpl;
import org.apache.opencmis.commons.provider.CmisProvider;
import org.apache.opencmis.commons.provider.DiscoveryService;
import org.apache.opencmis.commons.provider.NavigationService;
import org.apache.opencmis.commons.provider.ObjectData;
import org.apache.opencmis.commons.provider.ObjectList;
import org.apache.opencmis.commons.provider.RepositoryService;
-import org.apache.opencmis.util.repository.ObjectGenerator;
-public class PersistentSessionImpl implements PersistentSession, Testable, Serializable {
+/**
+ * Persistent model session.
+ */
+public class PersistentSessionImpl implements PersistentSession, Serializable {
private static final OperationContext DEFAULT_CONTEXT = new OperationContextImpl(null, false,
true, false, IncludeRelationships.NONE, null, true, null, true);
@@ -91,11 +83,6 @@ public class PersistentSessionImpl imple
private OperationContext context = DEFAULT_CONTEXT;
/*
- * root folder containing generated test data (not serializable)
- */
- private transient Folder testRootFolder = null;
-
- /*
* session parameter (serializable)
*/
private Map<String, String> parameters = null;
@@ -111,12 +98,6 @@ public class PersistentSessionImpl imple
private Locale locale = null;
/*
- * helper factory (non serializable)
- */
- private transient PropertyFactory propertyFactory = PersistentPropertyFactoryImpl
- .newInstance(this);
-
- /*
* Object cache (serializable)
*/
private Cache cache = null;
@@ -137,6 +118,9 @@ public class PersistentSessionImpl imple
*/
private static final long serialVersionUID = -4287481628831198383L;
+ /**
+ * Constructor.
+ */
public PersistentSessionImpl(Map<String, String> parameters) {
this.parameters = parameters;
PersistentSessionImpl.log.info("Session Parameters: " + parameters);
@@ -224,6 +208,15 @@ public class PersistentSessionImpl imple
/*
* (non-Javadoc)
*
+ * @see org.apache.opencmis.client.api.Session#getObjectFactory()
+ */
+ public ObjectFactory getObjectFactory() {
+ return this.objectFactory;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.opencmis.client.api.Session#getCheckedOutDocs(int)
*/
public PagingList<Document> getCheckedOutDocs(int itemsPerPage) {
@@ -435,14 +428,6 @@ public class PersistentSessionImpl imple
return result;
}
- public ObjectFactory getObjectFactory() {
- return this.objectFactory;
- }
-
- public PropertyFactory getPropertyFactory() {
- return this.propertyFactory;
- }
-
/*
* (non-Javadoc)
*
@@ -495,7 +480,6 @@ public class PersistentSessionImpl imple
throw new IllegalArgumentException("itemsPerPage must be > 0!");
}
- final Session thisSession = this;
final String repositoryId = getRepositoryId();
final RepositoryService repositoryService = getProvider().getRepositoryService();
@@ -514,7 +498,7 @@ public class PersistentSessionImpl imple
// convert type definitions
List<ObjectType> page = new ArrayList<ObjectType>(tdl.getList().size());
for (TypeDefinition typeDefinition : tdl.getList()) {
- page.add(SessionUtil.convertTypeDefinition(thisSession, typeDefinition));
+ page.add(objectFactory.convertTypeDefinition(typeDefinition));
}
return new FetchResult(page, tdl.getNumItems(), tdl.hasMoreItems());
@@ -535,7 +519,7 @@ public class PersistentSessionImpl imple
public ObjectType getTypeDefinition(String typeId) {
TypeDefinition typeDefinition = getProvider().getRepositoryService().getTypeDefinition(
getRepositoryId(), typeId, null);
- return SessionUtil.convertTypeDefinition(this, typeDefinition);
+ return objectFactory.convertTypeDefinition(typeDefinition);
}
/*
@@ -560,8 +544,7 @@ public class PersistentSessionImpl imple
List<Container<ObjectType>> result = new ArrayList<Container<ObjectType>>();
for (TypeDefinitionContainer container : descendantsList) {
- ObjectType objectType = SessionUtil
- .convertTypeDefinition(this, container.getTypeDefinition());
+ ObjectType objectType = objectFactory.convertTypeDefinition(container.getTypeDefinition());
List<Container<ObjectType>> children = convertTypeDescendants(container.getChildren());
result.add(new ContainerImpl<ObjectType>(objectType, children));
@@ -636,78 +619,6 @@ public class PersistentSessionImpl imple
throw new CmisRuntimeException("not implemented");
}
- public void generateTestData(Map<String, String> parameter) {
- String repositoryId = this.getRepositoryId();
- ObjectGenerator og = new ObjectGenerator(this.provider.getObjectFactory(), this.provider
- .getNavigationService(), this.provider.getObjectService(), repositoryId);
- Folder rootFolder = null;
- String documentTypeId = null;
- String folderTypeId = null;
-
- // check preconditions (mandatory parameter)
- if (!parameter.containsKey(Testable.DOCUMENT_TYPE_ID_PARAMETER)) {
- throw new CmisRuntimeException("Can't genereate test data! Paramter missing: "
- + Testable.DOCUMENT_TYPE_ID_PARAMETER);
- }
- else {
- documentTypeId = parameter.get(Testable.DOCUMENT_TYPE_ID_PARAMETER);
- }
- if (!parameter.containsKey(Testable.FOLDER_TYPE_ID_PARAMETER)) {
- throw new CmisRuntimeException("Can't genereate test data! Paramter missing: "
- + Testable.FOLDER_TYPE_ID_PARAMETER);
- }
- else {
- folderTypeId = parameter.get(Testable.FOLDER_TYPE_ID_PARAMETER);
- }
-
- // optional test root folder:
- if (parameter.containsKey(Testable.ROOT_FOLDER_ID_PARAMETER)) {
- // test root folder
- String testRootId = parameter.get(Testable.ROOT_FOLDER_ID_PARAMETER);
- rootFolder = (Folder) this.getObject(createObjectId(testRootId));
- }
- else {
- // repository root
- rootFolder = this.getRootFolder();
- }
-
- PropertyIdDefinitionImpl objectTypeIdPropertyType = new PropertyIdDefinitionImpl();
- objectTypeIdPropertyType.setId(CmisProperties.OBJECT_TYPE_ID.value());
- objectTypeIdPropertyType.setCardinality(Cardinality.SINGLE);
-
- PropertyStringDefinitionImpl namePropertyType = new PropertyStringDefinitionImpl();
- namePropertyType.setId(CmisProperties.NAME.value());
- namePropertyType.setCardinality(Cardinality.SINGLE);
-
- // create test root folder
- List<Property<?>> properties = new ArrayList<Property<?>>();
- Property<String> nameProperty = this.getPropertyFactory().createProperty(namePropertyType,
- UUID.randomUUID().toString());
- properties.add(nameProperty);
- Property<String> typeProperty = this.getPropertyFactory().createProperty(
- objectTypeIdPropertyType, folderTypeId);
- properties.add(typeProperty);
-
- this.testRootFolder = rootFolder
- .createFolder(properties, null, null, null, getDefaultContext());
-
- og.setContentSizeInKB(10);
- og.setDocumentTypeId(documentTypeId);
- og.setFolderTypeId(folderTypeId);
- og.setNumberOfDocumentsToCreatePerFolder(2);
- og.setDocumentPropertiesToGenerate(new ArrayList<String>());
- og.setFolderPropertiesToGenerate(new ArrayList<String>());
-
- og.createFolderHierachy(2, 2, this.testRootFolder.getId());
- }
-
- public void cleanUpTestData() {
- if (this.testRootFolder != null) {
- this.testRootFolder.deleteTree(true, UnfileObjects.DELETE, true);
- this.testRootFolder = null;
- }
- }
-
/**
* Connect session object to the provider. This is the very first call after a session is created.
* <p>
@@ -775,7 +686,7 @@ public class PersistentSessionImpl imple
}
public Cache getCache() {
- return null; // this.cache;
+ return this.cache;
}
/**
@@ -803,11 +714,10 @@ public class PersistentSessionImpl imple
}
String newId = getProvider().getObjectService().createDocument(getRepositoryId(),
- SessionUtil.convertProperties(this, properties),
- (folderId == null ? null : folderId.getId()),
- SessionUtil.convertContentStream(this, contentStream), versioningState,
- SessionUtil.convertPolicies(policies), SessionUtil.convertAces(this, addAces),
- SessionUtil.convertAces(this, removeAces), null);
+ objectFactory.convertProperties(properties), (folderId == null ? null : folderId.getId()),
+ objectFactory.convertContentStream(contentStream), versioningState,
+ objectFactory.convertPolicies(policies), objectFactory.convertAces(addAces),
+ objectFactory.convertAces(removeAces), null);
if (newId == null) {
return null;
@@ -833,10 +743,10 @@ public class PersistentSessionImpl imple
}
String newId = getProvider().getObjectService().createDocumentFromSource(getRepositoryId(),
- source.getId(), SessionUtil.convertProperties(this, properties),
+ source.getId(), objectFactory.convertProperties(properties),
(folderId == null ? null : folderId.getId()), versioningState,
- SessionUtil.convertPolicies(policies), SessionUtil.convertAces(this, addAces),
- SessionUtil.convertAces(this, removeAces), null);
+ objectFactory.convertPolicies(policies), objectFactory.convertAces(addAces),
+ objectFactory.convertAces(removeAces), null);
if (newId == null) {
return null;
@@ -858,9 +768,9 @@ public class PersistentSessionImpl imple
}
String newId = getProvider().getObjectService().createFolder(getRepositoryId(),
- SessionUtil.convertProperties(this, properties),
- (folderId == null ? null : folderId.getId()), SessionUtil.convertPolicies(policies),
- SessionUtil.convertAces(this, addAces), SessionUtil.convertAces(this, removeAces), null);
+ objectFactory.convertProperties(properties), (folderId == null ? null : folderId.getId()),
+ objectFactory.convertPolicies(policies), objectFactory.convertAces(addAces),
+ objectFactory.convertAces(removeAces), null);
if (newId == null) {
return null;
@@ -882,9 +792,9 @@ public class PersistentSessionImpl imple
}
String newId = getProvider().getObjectService().createPolicy(getRepositoryId(),
- SessionUtil.convertProperties(this, properties),
- (folderId == null ? null : folderId.getId()), SessionUtil.convertPolicies(policies),
- SessionUtil.convertAces(this, addAces), SessionUtil.convertAces(this, removeAces), null);
+ objectFactory.convertProperties(properties), (folderId == null ? null : folderId.getId()),
+ objectFactory.convertPolicies(policies), objectFactory.convertAces(addAces),
+ objectFactory.convertAces(removeAces), null);
if (newId == null) {
return null;
@@ -902,8 +812,8 @@ public class PersistentSessionImpl imple
public ObjectId createRelationship(List<Property<?>> properties, List<Policy> policies,
List<Ace> addAces, List<Ace> removeAces) {
String newId = getProvider().getObjectService().createRelationship(getRepositoryId(),
- SessionUtil.convertProperties(this, properties), SessionUtil.convertPolicies(policies),
- SessionUtil.convertAces(this, addAces), SessionUtil.convertAces(this, removeAces), null);
+ objectFactory.convertProperties(properties), objectFactory.convertPolicies(policies),
+ objectFactory.convertAces(addAces), objectFactory.convertAces(removeAces), null);
if (newId == null) {
return null;
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/QueryResultImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/QueryResultImpl.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/QueryResultImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/QueryResultImpl.java Wed Mar 10 09:28:00 2010
@@ -54,13 +54,15 @@ public class QueryResultImpl implements
public QueryResultImpl(Session session, ObjectData objectData) {
if (objectData != null) {
+ ObjectFactory of = session.getObjectFactory();
+
// handle properties
if (objectData.getProperties() != null) {
propertiesById = new LinkedHashMap<String, QueryProperty<?>>();
propertiesByQueryName = new LinkedHashMap<String, QueryProperty<?>>();
- List<QueryProperty<?>> queryProperties = SessionUtil.convertQueryProperties(session,
- objectData.getProperties());
+ List<QueryProperty<?>> queryProperties = of.convertQueryProperties(objectData
+ .getProperties());
for (QueryProperty<?> property : queryProperties) {
propertiesById.put(property.getId(), property);
@@ -70,14 +72,12 @@ public class QueryResultImpl implements
// handle allowable actions
if (objectData.getAllowableActions() != null) {
- this.allowableActions = SessionUtil.convertAllowableActions(session, objectData
- .getAllowableActions());
+ this.allowableActions = of.convertAllowableActions(objectData.getAllowableActions());
}
// handle relationships
if (objectData.getRelationships() != null) {
relationships = new ArrayList<Relationship>();
- ObjectFactory of = session.getObjectFactory();
for (ObjectData rod : objectData.getRelationships()) {
CmisObject relationship = of.convertObject(rod, session.getDefaultContext());
if (relationship instanceof Relationship) {
@@ -90,7 +90,7 @@ public class QueryResultImpl implements
if (objectData.getRenditions() != null) {
this.renditions = new ArrayList<Rendition>();
for (RenditionData rd : objectData.getRenditions()) {
- this.renditions.add(SessionUtil.convertRendition(session, null, rd));
+ this.renditions.add(of.convertRendition(null, rd));
}
}
}
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/repository/PersistentObjectFactoryImpl.java Wed Mar 10 09:28:00 2010
@@ -19,6 +19,12 @@
package org.apache.opencmis.client.runtime.repository;
import java.io.InputStream;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.GregorianCalendar;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -28,7 +34,11 @@ import org.apache.opencmis.client.api.Al
import org.apache.opencmis.client.api.CmisObject;
import org.apache.opencmis.client.api.ContentStream;
import org.apache.opencmis.client.api.OperationContext;
+import org.apache.opencmis.client.api.Policy;
+import org.apache.opencmis.client.api.Property;
+import org.apache.opencmis.client.api.QueryProperty;
import org.apache.opencmis.client.api.QueryResult;
+import org.apache.opencmis.client.api.Rendition;
import org.apache.opencmis.client.api.objecttype.ObjectType;
import org.apache.opencmis.client.api.repository.ObjectFactory;
import org.apache.opencmis.client.runtime.AceImpl;
@@ -38,52 +48,491 @@ import org.apache.opencmis.client.runtim
import org.apache.opencmis.client.runtime.PersistentDocumentImpl;
import org.apache.opencmis.client.runtime.PersistentFolderImpl;
import org.apache.opencmis.client.runtime.PersistentPolicyImpl;
+import org.apache.opencmis.client.runtime.PersistentPropertyImpl;
import org.apache.opencmis.client.runtime.PersistentRelationshipImpl;
import org.apache.opencmis.client.runtime.PersistentSessionImpl;
+import org.apache.opencmis.client.runtime.QueryPropertyImpl;
import org.apache.opencmis.client.runtime.QueryResultImpl;
-import org.apache.opencmis.client.runtime.SessionUtil;
+import org.apache.opencmis.client.runtime.RenditionImpl;
+import org.apache.opencmis.client.runtime.objecttype.DocumentTypeImpl;
+import org.apache.opencmis.client.runtime.objecttype.FolderTypeImpl;
+import org.apache.opencmis.client.runtime.objecttype.PolicyTypeImpl;
+import org.apache.opencmis.client.runtime.objecttype.RelationshipTypeImpl;
+import org.apache.opencmis.commons.PropertyIds;
+import org.apache.opencmis.commons.api.DocumentTypeDefinition;
+import org.apache.opencmis.commons.api.FolderTypeDefinition;
+import org.apache.opencmis.commons.api.PolicyTypeDefinition;
+import org.apache.opencmis.commons.api.PropertyBooleanDefinition;
+import org.apache.opencmis.commons.api.PropertyDateTimeDefinition;
+import org.apache.opencmis.commons.api.PropertyDecimalDefinition;
+import org.apache.opencmis.commons.api.PropertyDefinition;
+import org.apache.opencmis.commons.api.PropertyHtmlDefinition;
+import org.apache.opencmis.commons.api.PropertyIdDefinition;
+import org.apache.opencmis.commons.api.PropertyIntegerDefinition;
+import org.apache.opencmis.commons.api.PropertyStringDefinition;
+import org.apache.opencmis.commons.api.PropertyUriDefinition;
+import org.apache.opencmis.commons.api.RelationshipTypeDefinition;
+import org.apache.opencmis.commons.api.TypeDefinition;
import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
+import org.apache.opencmis.commons.provider.AccessControlEntry;
+import org.apache.opencmis.commons.provider.AccessControlList;
+import org.apache.opencmis.commons.provider.AllowableActionsData;
+import org.apache.opencmis.commons.provider.ContentStreamData;
import org.apache.opencmis.commons.provider.ObjectData;
-
+import org.apache.opencmis.commons.provider.PropertiesData;
+import org.apache.opencmis.commons.provider.PropertyData;
+import org.apache.opencmis.commons.provider.PropertyIdData;
+import org.apache.opencmis.commons.provider.ProviderObjectFactory;
+import org.apache.opencmis.commons.provider.RenditionData;
+
+/**
+ * Persistent model object factory.
+ */
public class PersistentObjectFactoryImpl implements ObjectFactory {
private PersistentSessionImpl session = null;
+ /**
+ * Constructor.
+ */
protected PersistentObjectFactoryImpl(PersistentSessionImpl session) {
+ if (session == null) {
+ throw new IllegalArgumentException("Session must be set!");
+ }
+
this.session = session;
}
+ /**
+ * Creates a new factory instance.
+ */
public static ObjectFactory newInstance(PersistentSessionImpl session) {
- ObjectFactory f = new PersistentObjectFactoryImpl(session);
- return f;
+ return new PersistentObjectFactoryImpl(session);
}
+ /**
+ * Returns the provider object factory.
+ */
+ protected ProviderObjectFactory getProviderObjectFactory() {
+ return session.getProvider().getObjectFactory();
+ }
+
+ // allowable actions
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#createAllowableAction(java.util.Map)
+ */
public AllowableActions createAllowableAction(Map<String, Boolean> actions) {
return new AllowableActionsImpl(actions);
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertAllowableActions(org.apache.
+ * opencmis.commons.provider.AllowableActionsData)
+ */
+ public AllowableActions convertAllowableActions(AllowableActionsData allowableActions) {
+ if ((allowableActions == null) || (allowableActions.getAllowableActions() == null)) {
+ throw new IllegalArgumentException("Allowable actions must be set!");
+ }
+
+ return createAllowableAction(allowableActions.getAllowableActions());
+ }
+
+ // ACL and ACE
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.api.repository.ObjectFactory#createAce(java.lang.String,
+ * java.util.List, boolean)
+ */
public Ace createAce(String principalId, List<String> permissions, boolean isDirect) {
return new AceImpl(principalId, permissions, isDirect);
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.api.repository.ObjectFactory#createAcl(java.util.List,
+ * java.lang.Boolean)
+ */
public Acl createAcl(List<Ace> aces, Boolean isExact) {
return new AclImpl(aces, isExact);
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.api.repository.ObjectFactory#convertAces(java.util.List)
+ */
+ public AccessControlList convertAces(List<Ace> aces) {
+ if (aces == null) {
+ throw new IllegalArgumentException("ACEs must be set!");
+ }
+
+ ProviderObjectFactory pof = getProviderObjectFactory();
+
+ List<AccessControlEntry> providerAces = new ArrayList<AccessControlEntry>();
+ for (Ace ace : aces) {
+ providerAces.add(pof.createAccessControlEntry(ace.getPrincipalId(), ace.getPermissions()));
+ }
+
+ return pof.createAccessControlList(providerAces);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertAcl(org.apache.opencmis.commons
+ * .provider.AccessControlList)
+ */
+ public Acl convertAcl(AccessControlList acl) {
+ if (acl == null) {
+ throw new IllegalArgumentException("ACL must be set!");
+ }
+
+ List<Ace> aces = new ArrayList<Ace>();
+ if (acl.getAces() != null) {
+ for (AccessControlEntry ace : acl.getAces()) {
+ if (ace.getPrincipal() == null) {
+ continue;
+ }
+ aces.add(createAce(ace.getPrincipal().getPrincipalId(), ace.getPermissions(), ace
+ .isDirect()));
+ }
+ }
+
+ return createAcl(aces, acl.isExact());
+ }
+
+ // policies
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.api.repository.ObjectFactory#convertPolicies(java.util.List)
+ */
+ public List<String> convertPolicies(List<Policy> policies) {
+ if (policies == null) {
+ return null;
+ }
+
+ List<String> result = new ArrayList<String>();
+
+ for (Policy policy : policies) {
+ if ((policy != null) && (policy.getId() != null)) {
+ result.add(policy.getId());
+ }
+ }
+
+ return result;
+ }
+
+ // renditions
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.api.repository.ObjectFactory#convertRendition(java.lang.String,
+ * org.apache.opencmis.commons.provider.RenditionData)
+ */
+ public Rendition convertRendition(String objectId, RenditionData rendition) {
+ if (rendition == null) {
+ throw new IllegalArgumentException("Rendition must be set!");
+ }
+
+ // TODO: what should happen if the length is not set?
+ long length = (rendition.getLength() == null ? -1 : rendition.getLength().longValue());
+ int height = (rendition.getHeight() == null ? -1 : rendition.getHeight().intValue());
+ int width = (rendition.getWidth() == null ? -1 : rendition.getWidth().intValue());
+
+ return new RenditionImpl(this.session, objectId, rendition.getStreamId(), rendition
+ .getRenditionDocumentId(), rendition.getKind(), length, rendition.getMimeType(), rendition
+ .getTitle(), height, width);
+ }
+
+ // content stream
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#createContentStream(java.lang.String,
+ * long, java.lang.String, java.io.InputStream)
+ */
public ContentStream createContentStream(String filename, long length, String mimetype,
InputStream stream) {
return new ContentStreamImpl(filename, length, mimetype, stream);
}
-
- /**
- * Converts object data into an API object.
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertContentStream(org.apache.opencmis
+ * .client.api.ContentStream)
+ */
+ public ContentStreamData convertContentStream(ContentStream contentStream) {
+ if (contentStream == null) {
+ return null;
+ }
+
+ BigInteger length = (contentStream.getLength() < 0 ? null : BigInteger.valueOf(contentStream
+ .getLength()));
+
+ return getProviderObjectFactory().createContentStream(length, contentStream.getMimeType(),
+ contentStream.getFileName(), contentStream.getStream());
+ }
+
+ // types
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertTypeDefinition(org.apache.opencmis
+ * .commons.api.TypeDefinition)
+ */
+ public ObjectType convertTypeDefinition(TypeDefinition typeDefinition) {
+ if (typeDefinition instanceof DocumentTypeDefinition) {
+ return new DocumentTypeImpl(this.session, typeDefinition);
+ }
+ else if (typeDefinition instanceof FolderTypeDefinition) {
+ return new FolderTypeImpl(this.session, typeDefinition);
+ }
+ else if (typeDefinition instanceof RelationshipTypeDefinition) {
+ return new RelationshipTypeImpl(this.session, typeDefinition);
+ }
+ else if (typeDefinition instanceof PolicyTypeDefinition) {
+ return new PolicyTypeImpl(this.session, typeDefinition);
+ }
+ else {
+ throw new CmisRuntimeException("Unknown base type!");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#getTypeFromObjectData(org.apache.opencmis
+ * .commons.provider.ObjectData)
+ */
+ public ObjectType getTypeFromObjectData(ObjectData objectData) {
+ if ((objectData == null) || (objectData.getProperties() == null)
+ || (objectData.getProperties().getProperties() == null)) {
+ return null;
+ }
+
+ PropertyData<?> typeProperty = objectData.getProperties().getProperties().get(
+ PropertyIds.CMIS_OBJECT_TYPE_ID);
+ if (!(typeProperty instanceof PropertyIdData)) {
+ return null;
+ }
+
+ return this.session.getTypeDefinition((String) typeProperty.getFirstValue());
+ }
+
+ // properties
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#createProperty(org.apache.opencmis.
+ * commons.api.PropertyDefinition, java.lang.Object)
+ */
+ public <T> Property<T> createProperty(PropertyDefinition<T> type, T value) {
+ return new PersistentPropertyImpl<T>(type, value);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#createPropertyMultivalue(org.apache
+ * .opencmis.commons.api.PropertyDefinition, java.util.List)
+ */
+ public <T> Property<T> createPropertyMultivalue(PropertyDefinition<T> type, List<T> values) {
+ return new PersistentPropertyImpl<T>(type, values);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertProperties(org.apache.opencmis
+ * .client.api.objecttype.ObjectType, org.apache.opencmis.commons.provider.PropertiesData)
+ */
+ @SuppressWarnings("unchecked")
+ public Map<String, Property<?>> convertProperties(ObjectType objectType, PropertiesData properties) {
+ // check input
+ if (objectType == null) {
+ throw new IllegalArgumentException("Object type must set!");
+ }
+
+ if (objectType.getPropertyDefintions() == null) {
+ throw new IllegalArgumentException("Object type has no property defintions!");
+ }
+
+ if ((properties == null) || (properties.getProperties() == null)) {
+ throw new IllegalArgumentException("Properties must be set!");
+ }
+
+ // iterate through properties and convert them
+ Map<String, Property<?>> result = new LinkedHashMap<String, Property<?>>();
+ for (Map.Entry<String, PropertyData<?>> property : properties.getProperties().entrySet()) {
+ // find property definition
+ PropertyDefinition<?> definition = objectType.getPropertyDefintions().get(property.getKey());
+ if (definition == null) {
+ // property without definition
+ throw new CmisRuntimeException("Property '" + property.getKey() + "' doesn't exist!");
+ }
+
+ Property<?> apiProperty = null;
+
+ if (definition instanceof PropertyStringDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyStringDefinition) definition,
+ (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyIdDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyIdDefinition) definition,
+ (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyHtmlDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyHtmlDefinition) definition,
+ (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyUriDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyUriDefinition) definition,
+ (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyIntegerDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyIntegerDefinition) definition,
+ (List<BigInteger>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyBooleanDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyBooleanDefinition) definition,
+ (List<Boolean>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyDecimalDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyDecimalDefinition) definition,
+ (List<BigDecimal>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyDateTimeDefinition) {
+ apiProperty = createPropertyMultivalue((PropertyDateTimeDefinition) definition,
+ (List<GregorianCalendar>) property.getValue().getValues());
+ }
+
+ result.put(property.getKey(), apiProperty);
+ }
+
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertProperties(java.util.Collection)
+ */
+ @SuppressWarnings("unchecked")
+ public PropertiesData convertProperties(Collection<Property<?>> properties) {
+ // check input
+ if (properties == null) {
+ throw new IllegalArgumentException("Properties must be set!");
+ }
+
+ ProviderObjectFactory pof = getProviderObjectFactory();
+
+ // iterate through properties and convert them
+ List<PropertyData<?>> propertyList = new ArrayList<PropertyData<?>>();
+ for (Property<?> property : properties) {
+
+ PropertyDefinition<?> definition = property.getDefinition();
+ if (definition instanceof PropertyStringDefinition) {
+ propertyList.add(pof.createPropertyStringData(property.getId(), (List<String>) property
+ .getValues()));
+ }
+ else if (definition instanceof PropertyIdDefinition) {
+ propertyList.add(pof.createPropertyIdData(property.getId(), (List<String>) property
+ .getValues()));
+ }
+ else if (definition instanceof PropertyHtmlDefinition) {
+ propertyList.add(pof.createPropertyHtmlData(property.getId(), (List<String>) property
+ .getValues()));
+ }
+ else if (definition instanceof PropertyUriDefinition) {
+ propertyList.add(pof.createPropertyUriData(property.getId(), (List<String>) property
+ .getValues()));
+ }
+ else if (definition instanceof PropertyIntegerDefinition) {
+ propertyList.add(pof.createPropertyIntegerData(property.getId(),
+ (List<BigInteger>) property.getValues()));
+ }
+ else if (definition instanceof PropertyBooleanDefinition) {
+ propertyList.add(pof.createPropertyBooleanData(property.getId(), (List<Boolean>) property
+ .getValues()));
+ }
+ else if (definition instanceof PropertyDecimalDefinition) {
+ propertyList.add(pof.createPropertyDecimalData(property.getId(),
+ (List<BigDecimal>) property.getValues()));
+ }
+ else if (definition instanceof PropertyDateTimeDefinition) {
+ propertyList.add(pof.createPropertyDateTimeData(property.getId(),
+ (List<GregorianCalendar>) property.getValues()));
+ }
+ }
+
+ return pof.createPropertiesData(propertyList);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertQueryProperties(org.apache.opencmis
+ * .commons.provider.PropertiesData)
+ */
+ @SuppressWarnings("unchecked")
+ public List<QueryProperty<?>> convertQueryProperties(PropertiesData properties) {
+ // check input
+ if ((properties == null) || (properties.getProperties() == null)) {
+ throw new IllegalArgumentException("Properties must be set!");
+ }
+
+ // iterate through properties and convert them
+ List<QueryProperty<?>> result = new ArrayList<QueryProperty<?>>();
+ for (PropertyData<?> property : properties.getProperties().values()) {
+ result.add(new QueryPropertyImpl(property.getId(), property.getQueryName(), property
+ .getValues()));
+ }
+
+ return result;
+ }
+
+ // objects
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertObject(org.apache.opencmis.commons
+ * .provider.ObjectData, org.apache.opencmis.client.api.OperationContext)
*/
public CmisObject convertObject(ObjectData objectData, OperationContext context) {
if (objectData == null) {
throw new IllegalArgumentException("Object data is null!");
}
- ObjectType type = SessionUtil.getTypeFromObjectData(this.session, objectData);
+ ObjectType type = getTypeFromObjectData(objectData);
/* determine type */
switch (objectData.getBaseTypeId()) {
@@ -100,6 +549,13 @@ public class PersistentObjectFactoryImpl
}
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.opencmis.client.api.repository.ObjectFactory#convertQueryResult(org.apache.opencmis
+ * .commons.provider.ObjectData)
+ */
public QueryResult convertQueryResult(ObjectData objectData) {
if (objectData == null) {
throw new IllegalArgumentException("Object data is null!");
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/Fixture.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/Fixture.java?rev=921267&r1=921266&r2=921267&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/Fixture.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/client/runtime/Fixture.java Wed Mar 10 09:28:00 2010
@@ -35,7 +35,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.opencmis.client.api.Session;
import org.apache.opencmis.client.api.SessionFactory;
-import org.apache.opencmis.client.api.util.Testable;
import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
/**
@@ -217,20 +216,20 @@ public class Fixture {
}
public static void setUpTestData(Session session) {
- if (session instanceof Testable) {
- Map<String, String> p = new Hashtable<String, String>();
- p.put(Testable.FOLDER_TYPE_ID_PARAMETER, Fixture.FOLDER_TYPE_ID);
- p
- .put(Testable.DOCUMENT_TYPE_ID_PARAMETER,
- Fixture.DOCUMENT_TYPE_ID);
- ((Testable) session).generateTestData(p);
- }
+// if (session instanceof Testable) {
+// Map<String, String> p = new Hashtable<String, String>();
+// p.put(Testable.FOLDER_TYPE_ID_PARAMETER, Fixture.FOLDER_TYPE_ID);
+// p
+// .put(Testable.DOCUMENT_TYPE_ID_PARAMETER,
+// Fixture.DOCUMENT_TYPE_ID);
+// ((Testable) session).generateTestData(p);
+// }
}
public static void teardownTestData(Session session) {
- if (session instanceof Testable) {
- ((Testable) session).cleanUpTestData();
- }
+// if (session instanceof Testable) {
+// ((Testable) session).cleanUpTestData();
+// }
}
private static boolean isLogged = false;