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/01 10:06:07 UTC
svn commit: r917425 [2/3] - 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/objecttype/
opencmis-client-api/src/m...
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=917425&r1=917424&r2=917425&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 Mon Mar 1 09:06:06 2010
@@ -23,32 +23,23 @@
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.List;
-import java.util.TreeMap;
import org.apache.opencmis.client.api.Ace;
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.FileableCmisObject;
import org.apache.opencmis.client.api.Folder;
import org.apache.opencmis.client.api.Policy;
import org.apache.opencmis.client.api.Property;
-import org.apache.opencmis.client.api.Relationship;
import org.apache.opencmis.client.api.objecttype.ObjectType;
-import org.apache.opencmis.client.api.repository.AllowableActions;
-import org.apache.opencmis.client.api.util.AceList;
+import org.apache.opencmis.client.api.util.Container;
import org.apache.opencmis.client.api.util.PagingList;
import org.apache.opencmis.commons.PropertyIds;
-import org.apache.opencmis.commons.enums.AclPropagation;
-import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
import org.apache.opencmis.commons.enums.IncludeRelationships;
-import org.apache.opencmis.commons.enums.RelationshipDirection;
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.AccessControlEntryImpl;
-import org.apache.opencmis.commons.impl.dataobjects.AccessControlListImpl;
-import org.apache.opencmis.commons.impl.dataobjects.AccessControlPrincipalDataImpl;
-import org.apache.opencmis.commons.provider.AccessControlEntry;
import org.apache.opencmis.commons.provider.AccessControlList;
import org.apache.opencmis.commons.provider.FailedToDeleteData;
import org.apache.opencmis.commons.provider.ObjectData;
@@ -56,399 +47,190 @@
import org.apache.opencmis.commons.provider.PropertyData;
import org.apache.opencmis.commons.provider.ProviderObjectFactory;
-public class PersistentFolderImpl implements Folder {
+public class PersistentFolderImpl extends AbstractPersistentFilableCmisObject implements Folder {
- private PersistentSessionImpl session;
- private ObjectData objectData;
+ /**
+ * Constructor.
+ */
+ public PersistentFolderImpl(PersistentSessionImpl session, ObjectType objectType,
+ ObjectData objectData) {
+ initialize(session, objectType, objectData);
+ }
+
+ public PersistentFolderImpl(PersistentSessionImpl session) {
+ initialize(session, null, null);
+ }
+
+ public Document createDocument(String name) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public Document createDocument(String name, String typeId) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public Document createDocument(List<Property<?>> properties, ContentStream contentstream,
+ VersioningState versioningState, List<Policy> policies, List<Ace> addACEs,
+ List<Ace> removeACEs) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public Document createDocumentFromSource(Document source, List<Property<?>> properties,
+ VersioningState versioningState, List<Policy> policies, List<Ace> addACEs,
+ List<Ace> removeACEs) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public Folder createFolder(List<Property<?>> properties, List<Policy> policies,
+ List<Ace> addACEs, List<Ace> removeACEs) {
+
+ Folder f = getSession().getObjectFactory().createFolder(this, properties, policies, addACEs,
+ removeACEs);
+ return f;
+ }
+
+ public Policy createPolicy(List<Property<?>> properties, List<Policy> policies,
+ List<Ace> addACEs, List<Ace> removeACEs) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public List<String> deleteTree(boolean allVersions, UnfileObjects unfile,
+ boolean continueOnFailure) {
+ String repositoryId = getRepositoryId();
+ String objectId = getObjectId();
+
+ FailedToDeleteData failed = getProvider().getObjectService().deleteTree(repositoryId, objectId,
+ allVersions, unfile, continueOnFailure, null);
+
+ return failed.getIds();
+ }
+
+ public List<ObjectType> getAllowedChildObjectTypes() {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public PagingList<Document> getCheckedOutDocs(String orderby, int itemsPerPage) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public PagingList<CmisObject> getChildren(String orderby, int itemsPerPage) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public List<Container<FileableCmisObject>> getFolderTree(int depth) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public List<Container<FileableCmisObject>> getDescendants(int depth) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public Folder getFolderParent() {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public String getPath() {
+ List<String> paths = getPaths();
+ if ((paths == null) || (paths.isEmpty())) {
+ return null;
+ }
+
+ return paths.get(0);
+ }
+
+ /**
+ * Create folder in backend
+ *
+ * @param parent
+ * @param properties
+ * @param policies
+ * @param addACEs
+ * @param removeACEs
+ */
+ public void create(Folder parent, List<Property<?>> properties, List<Policy> policies,
+ List<Ace> addAce, List<Ace> removeAce) {
+
+ String repositoryId = getRepositoryId();
+ String parentFolderId = parent.getId();
+ PropertiesData pd = this.convertToPropertiesData(properties);
+ List<String> pol = this.convertToPoliciesData(policies);
+ AccessControlList addAcl = SessionUtil.convertAces(getSession(), addAce);
+ AccessControlList removeAcl = SessionUtil.convertAces(getSession(), removeAce);
+
+ String objectId = getProvider().getObjectService().createFolder(repositoryId, pd,
+ parentFolderId, pol, addAcl, removeAcl, null);
+ ObjectData newObjectData = getProvider().getObjectService().getObject(repositoryId, objectId,
+ null, false, IncludeRelationships.NONE, null, true, true, null);
+
+ getSession().getCache().put(this);
+ }
+
+ private List<String> convertToPoliciesData(List<Policy> policies) {
+ List<String> pList = null;
+
+ if (policies != null) {
+ pList = new ArrayList<String>();
+ for (Policy pol : policies) {
+ pList.add(pol.getId());
+ }
+ }
+ return pList;
+ }
+
+ @SuppressWarnings("unchecked")
+ private PropertiesData convertToPropertiesData(List<Property<?>> origProperties) {
+ ProviderObjectFactory of = getProvider().getObjectFactory();
+
+ List<PropertyData<?>> convProperties = new ArrayList<PropertyData<?>>();
+ PropertyData<?> convProperty = null;
+
+ convProperties.add(of.createPropertyStringData(PropertyIds.CMIS_NAME, "testfolder"));
+ convProperties.add(of.createPropertyIdData(PropertyIds.CMIS_OBJECT_TYPE_ID, "cmis_Folder"));
+
+ for (Property<?> origProperty : origProperties) {
+
+ switch (origProperty.getType()) {
+ case BOOLEAN:
+ Property<Boolean> pb = (Property<Boolean>) origProperty;
+ convProperty = of.createPropertyBooleanData(pb.getId(), pb.getValue());
+ break;
+ case DATETIME:
+ Property<GregorianCalendar> pg = (Property<GregorianCalendar>) origProperty;
+ convProperty = of.createPropertyDateTimeData(pg.getId(), pg.getValue());
+ break;
+ case DECIMAL:
+ Property<BigDecimal> pd = (Property<BigDecimal>) origProperty;
+ convProperty = of.createPropertyDecimalData(pd.getId(), pd.getValue());
+ break;
+ case HTML:
+ Property<String> ph = (Property<String>) origProperty;
+ convProperty = of.createPropertyHtmlData(ph.getId(), ph.getValue());
+ break;
+ case ID:
+ Property<String> pi = (Property<String>) origProperty;
+ convProperty = of.createPropertyIdData(pi.getId(), pi.getValue());
+ break;
+ case INTEGER:
+ Property<BigInteger> pn = (Property<BigInteger>) origProperty;
+ convProperty = of.createPropertyIntegerData(pn.getId(), pn.getValue());
+ break;
+ case STRING:
+ Property<String> ps = (Property<String>) origProperty;
+ convProperty = of.createPropertyStringData(ps.getId(), ps.getValue());
+ break;
+ case URI:
+ Property<String> pu = (Property<String>) origProperty;
+ convProperty = of.createPropertyUriData(pu.getId(), pu.getValue());
+ break;
+ default:
+ throw new CmisRuntimeException("unsupported property type" + origProperty.getType());
+ }
+ convProperties.add(convProperty);
+ }
- public PersistentFolderImpl(PersistentSessionImpl session, ObjectData od) {
+ PropertiesData pd = of.createPropertiesData(convProperties);
- this.session = session;
- this.objectData = od;
- }
-
- public PersistentFolderImpl(PersistentSessionImpl session) {
- this.session = session;
- }
-
- public Document createDocument(String name) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public Document createDocument(String name, String typeId) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public Document createDocument(List<Property<?>> properties,
- ContentStream contentstream, VersioningState versioningState,
- List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public Document createDocumentFromSource(Document source,
- List<Property<?>> properties, VersioningState versioningState,
- List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public Folder createFolder(List<Property<?>> properties,
- List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
-
- Folder f = this.session.getObjectFactory().createFolder(this,
- properties, policies, addACEs, removeACEs);
- return f;
- }
-
- public Policy createPolicy(List<Property<?>> properties,
- List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<String> deleteTree(boolean allVersions, UnfileObjects unfile,
- boolean continueOnFailure) {
- String repositoryId = this.session.getRepositoryInfo().getId();
-
- FailedToDeleteData failed = this.session.getProvider()
- .getObjectService().deleteTree(repositoryId,
- this.objectData.getId(), allVersions, unfile,
- continueOnFailure, null);
-
- return failed.getIds();
- }
-
- public List<ObjectType> getAllowedChildObjectTypes() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PagingList<Document> getCheckedOutDocs(String orderby,
- int itemsPerPage) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PagingList<CmisObject> getChildren(String orderby, int itemsPerPage) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public TreeMap<String, CmisObject> getDescendants(int depth) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public Folder getFolderParent() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public TreeMap<String, CmisObject> getFolderTree(int depth) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void addAcl(List<Ace> addAces, AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void addToFolder(Folder folder, boolean allVersions) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public AceList applyAcl(List<Ace> addAces, List<Ace> removeAces,
- AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void applyPolicy(Policy policy) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void applyPolicy(String policyId) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void delete(boolean allVersions) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<Ace> getAcl() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public AceList getAcl(boolean onlyBasicPermissions) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public AllowableActions getAllowableActions() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public ObjectType getBaseType() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public BaseObjectTypeIds getBaseTypeId() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getChangeToken() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getCreatedBy() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public GregorianCalendar getCreationDate() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getId() {
- return this.objectData.getId();
- }
-
- public GregorianCalendar getLastModificationDate() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getLastModifiedBy() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getName() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<Folder> getParents() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getPath() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getPathSegment() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<Policy> getPolicies() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<Property<?>> getProperties() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<Property<?>> getProperties(String filter) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public <T> Property<T> getProperty(String id) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public <T> List<T> getPropertyMultivalue(String id) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public <T> T getPropertyValue(String id) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<Relationship> getRelationships() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<Relationship> getRelationships(
- boolean includeSubRelationshipTypes,
- RelationshipDirection relationshipDirection, ObjectType type) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public ObjectType getType() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public boolean isChanged() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public boolean isExactAcl() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public CmisObject move(Folder targetfolder) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void removeAcl(List<Ace> addAces, AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void removeFromFolder(Folder folder) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void removePolicy(Policy policy) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void removePolicy(String policyId) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void setName(String name) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public <T> void setProperty(String id, T value) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public <T> void setPropertyMultivalue(String id, List<T> value) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void setType(ObjectType type) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void setTypeId(String typeId) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void updateProperties(List<Property<?>> properties) {
- throw new CmisRuntimeException("not implemented");
- }
-
- /**
- * Create folder in backend
- *
- * @param parent
- * @param properties
- * @param policies
- * @param addACEs
- * @param removeACEs
- */
- public void create(Folder parent, List<Property<?>> properties,
- List<Policy> policies, List<Ace> addAce, List<Ace> removeAce) {
-
- String repositoryId = this.session.getRepositoryInfo().getId();
- String parentFolderId = parent.getId();
- PropertiesData pd = this.convertToPropertiesData(properties);
- List<String> pol = this.convertToPoliciesData(policies);
- AccessControlList addAcl = this.convertToAcl(addAce);
- AccessControlList removeAcl = this.convertToAcl(removeAce);
-
- String objectId = this.session.getProvider().getObjectService()
- .createFolder(repositoryId, pd, parentFolderId, pol, addAcl,
- removeAcl, null);
- this.objectData = this.session.getProvider().getObjectService()
- .getObject(repositoryId, objectId, null, false,
- IncludeRelationships.NONE, null, true, true, null);
-
- this.session.getCache().put(this);
- }
-
- private AccessControlList convertToAcl(List<Ace> aceList) {
- AccessControlListImpl acli = null;
- AccessControlEntryImpl acei;
- List<AccessControlEntry> aceiList = null;
- AccessControlPrincipalDataImpl acpdi = null;
-
- if (aceList != null) {
- acli = new AccessControlListImpl();
- aceiList = new ArrayList<AccessControlEntry>();
-
- for (Ace aceEntry : aceList) {
- acei = new AccessControlEntryImpl();
- acei.setPermissions(aceEntry.getPermissionsNames());
- acpdi = new AccessControlPrincipalDataImpl(aceEntry
- .getPrincipalId());
- acei.setPrincipal(acpdi);
-
- aceiList.add(acei);
- }
-
- acli.setAces(aceiList);
- }
- return acli;
- }
-
- private List<String> convertToPoliciesData(List<Policy> policies) {
- List<String> pList = null;
-
- if (policies != null) {
- pList = new ArrayList<String>();
- for (Policy pol : policies) {
- pList.add(pol.getPolicyText());
- }
- }
- return pList;
- }
-
- @SuppressWarnings("unchecked")
- private PropertiesData convertToPropertiesData(
- List<Property<?>> origProperties) {
- ProviderObjectFactory of = this.session.getProvider()
- .getObjectFactory();
-
- List<PropertyData<?>> convProperties = new ArrayList<PropertyData<?>>();
- PropertyData<?> convProperty = null;
-
- convProperties.add(of.createPropertyStringData(PropertyIds.CMIS_NAME,
- "testfolder"));
- convProperties.add(of.createPropertyIdData(
- PropertyIds.CMIS_OBJECT_TYPE_ID, "cmis_Folder"));
-
- for (Property<?> origProperty : origProperties) {
-
- switch (origProperty.getType()) {
- case BOOLEAN:
- Property<Boolean> pb = (Property<Boolean>) origProperty;
- convProperty = of.createPropertyBooleanData(pb.getId(), pb
- .getValue());
- break;
- case DATETIME:
- Property<GregorianCalendar> pg = (Property<GregorianCalendar>) origProperty;
- convProperty = of.createPropertyDateTimeData(pg.getId(), pg
- .getValue());
- break;
- case DECIMAL:
- Property<BigDecimal> pd = (Property<BigDecimal>) origProperty;
- convProperty = of.createPropertyDecimalData(pd.getId(), pd
- .getValue());
- break;
- case HTML:
- Property<String> ph = (Property<String>) origProperty;
- convProperty = of.createPropertyHtmlData(ph.getId(), ph
- .getValue());
- break;
- case ID:
- Property<String> pi = (Property<String>) origProperty;
- convProperty = of.createPropertyIdData(pi.getId(), pi
- .getValue());
- break;
- case INTEGER:
- Property<BigInteger> pn = (Property<BigInteger>) origProperty;
- convProperty = of.createPropertyIntegerData(pn.getId(), pn
- .getValue());
- break;
- case STRING:
- Property<String> ps = (Property<String>) origProperty;
- convProperty = of.createPropertyStringData(ps.getId(), ps
- .getValue());
- break;
- case URI:
- Property<String> pu = (Property<String>) origProperty;
- convProperty = of.createPropertyUriData(pu.getId(), pu
- .getValue());
- break;
- default:
- throw new CmisRuntimeException("unsupported property type"
- + origProperty.getType());
- }
- convProperties.add(convProperty);
- }
-
- PropertiesData pd = of.createPropertiesData(convProperties);
-
- return pd;
- }
+ return pd;
+ }
}
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPolicyImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPolicyImpl.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPolicyImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPolicyImpl.java Mon Mar 1 09:06:06 2010
@@ -18,245 +18,23 @@
*/
package org.apache.opencmis.client.runtime;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import org.apache.opencmis.client.api.Ace;
-import org.apache.opencmis.client.api.CmisObject;
-import org.apache.opencmis.client.api.Folder;
import org.apache.opencmis.client.api.Policy;
-import org.apache.opencmis.client.api.Property;
-import org.apache.opencmis.client.api.Relationship;
import org.apache.opencmis.client.api.objecttype.ObjectType;
-import org.apache.opencmis.client.api.repository.AllowableActions;
-import org.apache.opencmis.client.api.util.AceList;
-import org.apache.opencmis.commons.enums.AclPropagation;
-import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
-import org.apache.opencmis.commons.enums.RelationshipDirection;
import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
import org.apache.opencmis.commons.provider.ObjectData;
-public class PersistentPolicyImpl implements Policy {
-
- public PersistentPolicyImpl(PersistentSessionImpl persistentSessionImpl,
- ObjectData od) {
- // TODO Auto-generated constructor stub
- }
-
- public List<String> getPaths() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getPolicyText() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void addAcl(List<Ace> addAces, AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void addToFolder(Folder folder, boolean allVersions) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public AceList applyAcl(List<Ace> addAces, List<Ace> removeAces,
- AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void applyPolicy(Policy policy) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void applyPolicy(String policyId) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void delete(boolean allVersions) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Ace> getAcl() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public AceList getAcl(boolean onlyBasicPermissions) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public AllowableActions getAllowableActions() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public ObjectType getBaseType() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public BaseObjectTypeIds getBaseTypeId() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getChangeToken() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getCreatedBy() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public GregorianCalendar getCreationDate() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getId() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public GregorianCalendar getLastModificationDate() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getLastModifiedBy() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getName() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Folder> getParents() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Policy> getPolicies() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Property<?>> getProperties() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Property<?>> getProperties(String filter) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> Property<T> getProperty(String id) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> List<T> getPropertyMultivalue(String id) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> T getPropertyValue(String id) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Relationship> getRelationships() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Relationship> getRelationships(
- boolean includeSubRelationshipTypes,
- RelationshipDirection relationshipDirection, ObjectType type) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public ObjectType getType() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public boolean isChanged() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public boolean isExactAcl() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public CmisObject move(Folder targetfolder) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removeAcl(List<Ace> addAces, AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removeFromFolder(Folder folder) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removePolicy(Policy policy) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removePolicy(String policyId) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void setName(String name) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> void setProperty(String id, T value) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> void setPropertyMultivalue(String id, List<T> value) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void setType(ObjectType type) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void setTypeId(String typeId) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void updateProperties(List<Property<?>> properties) {
- throw new CmisRuntimeException("not implemented");
+public class PersistentPolicyImpl extends AbstractPersistentFilableCmisObject implements Policy {
- }
+ /**
+ * Constructor.
+ */
+ public PersistentPolicyImpl(PersistentSessionImpl session, ObjectType objectType,
+ ObjectData objectData) {
+ initialize(session, objectType, objectData);
+ }
+
+ public String getPolicyText() {
+ throw new CmisRuntimeException("not implemented");
+ }
}
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPropertyImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPropertyImpl.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPropertyImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentPropertyImpl.java Mon Mar 1 09:06:06 2010
@@ -19,79 +19,102 @@
package org.apache.opencmis.client.runtime;
import java.io.Serializable;
+import java.util.Collections;
import java.util.List;
import org.apache.opencmis.client.api.Property;
import org.apache.opencmis.commons.api.PropertyDefinition;
-import org.apache.opencmis.commons.enums.CmisProperties;
+import org.apache.opencmis.commons.enums.Cardinality;
import org.apache.opencmis.commons.enums.PropertyType;
-import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
+/**
+ * Property Implementation.
+ */
public class PersistentPropertyImpl<T> implements Property<T>, Serializable {
- /**
- * serialization
- */
- private static final long serialVersionUID = -6586532350183649719L;
- private PersistentSessionImpl session;
- private CmisProperties cmisProperties;
- private T value;
-
- public PersistentPropertyImpl(PersistentSessionImpl session,
- CmisProperties cmisProperties, T value) {
- this.session = session;
- this.cmisProperties = cmisProperties;
- this.value = value;
- }
-
- public PersistentPropertyImpl(PersistentSessionImpl session,
- PropertyType type, T value) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PersistentPropertyImpl(PersistentSessionImpl session,
- PropertyType type, List<T> value) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PropertyDefinition<T> getDefinition() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getDisplayName() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getId() {
- return this.cmisProperties.value();
- }
-
- public String getLocalName() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public String getQueryName() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PropertyType getType() {
- return PropertyType.STRING;
- }
-
- public T getValue() {
- return this.value;
- }
-
- public String getValueAsString() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public List<T> getValues() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public boolean isMultiValued() {
- throw new CmisRuntimeException("not implemented");
- }
-
+ /**
+ * serialization
+ */
+ private static final long serialVersionUID = -6586532350183649719L;
+ private PropertyDefinition<T> type;
+ private List<T> values;
+
+ /**
+ * Constructs a single-value property.
+ */
+ public PersistentPropertyImpl(PropertyDefinition<T> type, T value) {
+ if (type == null) {
+ throw new IllegalArgumentException("Type must be set!");
+ }
+
+ if (value == null) {
+ throw new IllegalArgumentException("Value must be set!");
+ }
+
+ this.type = type;
+ this.values = Collections.singletonList(value);
+ }
+
+ /**
+ * Constructs a multi-value property.
+ */
+ public PersistentPropertyImpl(PropertyDefinition<T> type, List<T> values) {
+ if (type == null) {
+ throw new IllegalArgumentException("Type must be set!");
+ }
+
+ if (values == null) {
+ throw new IllegalArgumentException("Values must be set!");
+ }
+
+ if (values.isEmpty()) {
+ throw new IllegalArgumentException("Values must not be empyt!");
+ }
+
+ this.type = type;
+ this.values = values;
+ }
+
+ public PropertyDefinition<T> getDefinition() {
+ return this.type;
+ }
+
+ public String getDisplayName() {
+ return this.type.getDisplayName();
+ }
+
+ public String getId() {
+ return this.type.getId();
+ }
+
+ public String getLocalName() {
+ return this.type.getLocalName();
+ }
+
+ public String getQueryName() {
+ return this.type.getQueryName();
+ }
+
+ public PropertyType getType() {
+ return this.type.getPropertyType();
+ }
+
+ public T getValue() {
+ return this.values.get(0);
+ }
+
+ public String getValueAsString() {
+ switch (this.type.getPropertyType()) {
+ default:
+ return this.values.get(0).toString();
+ }
+ }
+
+ public List<T> getValues() {
+ return this.values;
+ }
+
+ public boolean isMultiValued() {
+ return this.type.getCardinality() == Cardinality.MULTI;
+ }
}
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentRelationshipImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentRelationshipImpl.java?rev=917425&r1=917424&r2=917425&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentRelationshipImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentRelationshipImpl.java Mon Mar 1 09:06:06 2010
@@ -18,245 +18,30 @@
*/
package org.apache.opencmis.client.runtime;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import org.apache.opencmis.client.api.Ace;
import org.apache.opencmis.client.api.CmisObject;
-import org.apache.opencmis.client.api.Folder;
-import org.apache.opencmis.client.api.Policy;
-import org.apache.opencmis.client.api.Property;
import org.apache.opencmis.client.api.Relationship;
import org.apache.opencmis.client.api.objecttype.ObjectType;
-import org.apache.opencmis.client.api.repository.AllowableActions;
-import org.apache.opencmis.client.api.util.AceList;
-import org.apache.opencmis.commons.enums.AclPropagation;
-import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
-import org.apache.opencmis.commons.enums.RelationshipDirection;
import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
import org.apache.opencmis.commons.provider.ObjectData;
-public class PersistentRelationshipImpl implements Relationship {
-
- public PersistentRelationshipImpl(
- PersistentSessionImpl persistentSessionImpl, ObjectData od) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public CmisObject getSource() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public CmisObject getTarget() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void addAcl(List<Ace> addAces, AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void addToFolder(Folder folder, boolean allVersions) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public AceList applyAcl(List<Ace> addAces, List<Ace> removeAces,
- AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void applyPolicy(Policy policy) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void applyPolicy(String policyId) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void delete(boolean allVersions) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Ace> getAcl() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public AceList getAcl(boolean onlyBasicPermissions) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public AllowableActions getAllowableActions() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public ObjectType getBaseType() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public BaseObjectTypeIds getBaseTypeId() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getChangeToken() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getCreatedBy() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public GregorianCalendar getCreationDate() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getId() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public GregorianCalendar getLastModificationDate() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getLastModifiedBy() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public String getName() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Folder> getParents() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Policy> getPolicies() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Property<?>> getProperties() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Property<?>> getProperties(String filter) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> Property<T> getProperty(String id) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> List<T> getPropertyMultivalue(String id) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> T getPropertyValue(String id) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Relationship> getRelationships() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public List<Relationship> getRelationships(
- boolean includeSubRelationshipTypes,
- RelationshipDirection relationshipDirection, ObjectType type) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public ObjectType getType() {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public boolean isChanged() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public boolean isExactAcl() {
- throw new CmisRuntimeException("not implemented");
- }
-
- public CmisObject move(Folder targetfolder) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removeAcl(List<Ace> addAces, AclPropagation aclPropagation) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removeFromFolder(Folder folder) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removePolicy(Policy policy) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void removePolicy(String policyId) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void setName(String name) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> void setProperty(String id, T value) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public <T> void setPropertyMultivalue(String id, List<T> value) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void setType(ObjectType type) {
- throw new CmisRuntimeException("not implemented");
-
- }
-
- public void setTypeId(String typeId) {
- throw new CmisRuntimeException("not implemented");
+public class PersistentRelationshipImpl extends AbstractPersistentCmisObject implements
+ Relationship {
- }
+ /**
+ * Constructor.
+ */
+ public PersistentRelationshipImpl(PersistentSessionImpl session, ObjectType objectType,
+ ObjectData objectData) {
+ initialize(session, objectType, objectData);
+ }
+
+ public CmisObject getSource() {
+ throw new CmisRuntimeException("not implemented");
- public void updateProperties(List<Property<?>> properties) {
- throw new CmisRuntimeException("not implemented");
+ }
- }
+ public CmisObject getTarget() {
+ throw new CmisRuntimeException("not implemented");
+ }
}
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=917425&r1=917424&r2=917425&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 Mon Mar 1 09:06:06 2010
@@ -39,427 +39,459 @@
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.PropertyFactoryImpl;
+import org.apache.opencmis.client.runtime.repository.PersistentPropertyFactoryImpl;
+import org.apache.opencmis.commons.PropertyIds;
import org.apache.opencmis.commons.SessionParameter;
import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.api.TypeDefinition;
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.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.ObjectData;
+import org.apache.opencmis.commons.provider.PropertyData;
+import org.apache.opencmis.commons.provider.PropertyIdData;
import org.apache.opencmis.util.repository.ObjectGenerator;
-public class PersistentSessionImpl implements PersistentSession, Testable,
- Serializable {
+public class PersistentSessionImpl implements PersistentSession, Testable, Serializable {
- private static Log log = LogFactory.getLog(PersistentSessionImpl.class);
+ private static Log log = LogFactory.getLog(PersistentSessionImpl.class);
- /*
- * default session context (serializable)
- */
- private SessionContextImpl context = new SessionContextImpl();
-
- /*
- * root folder containing generated test data (not serializable)
- */
- private transient Folder testRootFolder = null;
-
- /*
- * session parameter (serializable)
- */
- private Map<String, String> parameters = null;
-
- /*
- * CMIS provider (serializable)
- */
- private CmisProvider provider = null;
-
- /*
- * Session Locale, determined from session parameter (serializable)
- */
- private Locale locale = null;
-
- /*
- * helper factory (non serializable)
- */
- private transient PropertyFactory propertyFactory = PropertyFactoryImpl
- .newInstance(this);
-
- /*
- * Object cache (serializable)
- */
- private Cache cache = null;
-
- /*
- * Lazy loaded repository info. Will be invalid after clear(). Access by
- * getter always. (serializable)
- */
- private RepositoryInfoImpl repositoryInfo;
-
- /*
- * helper factory (non serializable)
- */
- private transient ObjectFactory objectFactory = PersistentObjectFactoryImpl
- .newInstance(this);
-
- /**
- * required for serialization
- */
- private static final long serialVersionUID = -4287481628831198383L;
-
- public PersistentSessionImpl(Map<String, String> parameters) {
- this.parameters = parameters;
- PersistentSessionImpl.log.info("Session Parameters: " + parameters);
-
- this.locale = this.determineLocale(parameters);
- PersistentSessionImpl.log.info("Session Locale: "
- + this.locale.toString());
-
- int cacheSize = this.determineCacheSize(parameters);
-
- if (cacheSize == -1) {
- this.cache = CacheImpl.newInstance();
- } else {
- this.cache = CacheImpl.newInstance(cacheSize);
- }
- PersistentSessionImpl.log.info("Session Cache Size: "
- + this.cache.size());
- }
-
- private int determineCacheSize(Map<String, String> parameters) {
- int size = -1;
-
- return size;
- }
-
- private String determineRepositoryId(Map<String, String> parameters) {
- String repositoryId = parameters.get(SessionParameter.REPOSITORY_ID);
- // if null then the provider will return a repository id (lazy)
- return repositoryId;
- }
-
- private Locale determineLocale(Map<String, String> parameters) {
- Locale locale = null;
-
- String language = parameters
- .get(SessionParameter.LOCALE_ISO639_LANGUAGE);
- String country = parameters
- .get(SessionParameter.LOCALE_ISO3166_COUNTRY);
- String variant = parameters.get(SessionParameter.LOCALE_VARIANT);
-
- if (variant != null) {
- // all 3 parameter must not be null and valid
- locale = new Locale(language, country, variant);
- } else {
- if (country != null) {
- // 2 parameter must not be null and valid
- locale = new Locale(language, country);
- } else {
- if (language != null) {
- // 1 parameter must not be null and valid
- locale = new Locale(language);
- } else {
- locale = Locale.getDefault();
- }
- }
- }
-
- return locale;
- }
-
- public void clear() {
- /*
- * clear cache
- */
-
- int cacheSize = this.determineCacheSize(this.parameters);
- if (cacheSize == -1) {
- this.cache = CacheImpl.newInstance();
- } else {
- this.cache = CacheImpl.newInstance(cacheSize);
- }
- PersistentSessionImpl.log.info("Session Cache Size: "
- + this.cache.size());
-
- /*
- * clear repository info
- */
-
- this.repositoryInfo.clear();
- }
-
- public PagingList<Document> getCheckedOutDocs(Folder folder,
- String orderby, int itemsPerPage) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PagingList<ChangeEvent> getContentChanges(String changeLogToken,
- int itemsPerPage) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public SessionContext getContext() {
- return this.context;
- }
-
- public Locale getLocale() {
- return this.locale;
- }
-
- public CmisObject getObject(String objectId) {
- CmisObject obj = null;
- if (this.cache.containsId(objectId)) {
- obj = this.cache.get(objectId);
- } else {
- /* query context */
- String filter = this.context.getIncludeProperties();
- boolean includeAllowableActions = this.context
- .getIncludeAllowableActions();
- IncludeRelationships includeRelationships = this.context
- .getIncludeRelationships();
- String renditionFilter = this.context.getIncludeRenditions();
- boolean includePolicyIds = this.context.getIncludePolicies();
- boolean includeAcl = this.context.getIncludeAcls();
- ExtensionsData extension = null;
-
- /* ask backend */
- String repositoryId = this.getRepositoryId();
- ObjectData od = this.provider.getObjectService().getObject(
- repositoryId, objectId, filter, includeAllowableActions,
- includeRelationships, renditionFilter, includePolicyIds,
- includeAcl, extension);
-
- /* determine type */
- switch (od.getBaseTypeId()) {
- case CMIS_DOCUMENT:
- obj = new PersistentDocumentImpl(this, od);
- break;
- case CMIS_FOLDER:
- obj = new PersistentFolderImpl(this, od);
- break;
- case CMIS_POLICY:
- obj = new PersistentPolicyImpl(this, od);
- case CMIS_RELATIONSHIP:
- obj = new PersistentRelationshipImpl(this, od);
- default:
- throw new CmisRuntimeException("unsupported type: "
- + od.getBaseTypeId());
- }
-
- this.cache.put(obj);
- }
- return obj;
- }
-
- public CmisObject getObjectByPath(String path) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public ObjectFactory getObjectFactory() {
- return this.objectFactory;
- }
-
- public PropertyFactory getPropertyFactory() {
- return this.propertyFactory;
- }
-
- public RepositoryInfo getRepositoryInfo() {
- if (this.repositoryInfo == null) {
- /* get initial repository id from session parameter */
- String repositoryId = this.determineRepositoryId(this.parameters);
- RepositoryInfoImpl rii = new RepositoryInfoImpl(this, repositoryId);
- this.repositoryInfo = rii;
- }
- return this.repositoryInfo;
- }
-
- public Folder getRootFolder() {
- Folder rootFolder = null;
-
- if (this.cache.containsPath("/")) {
- rootFolder = (Folder) this.cache.getByPath("/");
- } else {
- String rootFolderId = this.getRepositoryInfo().getRootFolderId();
- String repositoryId = this.getRepositoryId();
- ObjectData od = this.provider.getObjectService().getObject(
- repositoryId, rootFolderId, null, false,
- IncludeRelationships.NONE, null, false, false, null);
- rootFolder = new PersistentFolderImpl(this, od);
- this.cache.put(rootFolder);
- }
-
- return rootFolder;
- }
-
- public PagingList<ObjectType> getTypeChildren(ObjectType t,
- boolean includePropertyDefinitions, int itemsPerPage) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public ObjectType getTypeDefinition(String typeId) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PagingList<ObjectType> getTypeDescendants(ObjectType t, int depth,
- boolean includePropertyDefinitions, int itemsPerPage) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public PagingList<CmisObject> query(String statement,
- boolean searchAllVersions, int itemsPerPage) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public void setContext(SessionContext context) {
- this.context = (SessionContextImpl) context;
- }
-
- public String setExtensionContext(String context) {
- throw new CmisRuntimeException("not implemented");
- }
-
- public ExtensionHandler setExtensionHandler(String context,
- ExtensionHandler extensionHandler) {
- 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(testRootId);
- } else {
- // repository root
- rootFolder = this.getRootFolder();
- }
-
- // create test root folder
- List<Property<?>> properties = new ArrayList<Property<?>>();
- Property<String> nameProperty = this.getPropertyFactory()
- .createCmisProperty(CmisProperties.NAME,
- UUID.randomUUID().toString());
- properties.add(nameProperty);
- Property<String> typeProperty = this
- .getPropertyFactory()
- .createCmisProperty(CmisProperties.OBJECT_TYPE_ID, folderTypeId);
- properties.add(typeProperty);
-
- this.testRootFolder = rootFolder.createFolder(properties, null, null,
- null);
-
- 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>
- * In dependency of the parameter set an {@code AtomPub}, a {@code
- * WebService} or an {@code InMemory} provider is selected.
- */
- public void connect() {
- if (this.parameters == null || this.parameters.isEmpty()) {
- throw new CmisRuntimeException("Session parameter not set!");
- }
-
- BindingType bt = BindingType.fromValue(this.parameters
- .get(SessionParameter.BINDING_TYPE));
-
- switch (bt) {
- case ATOMPUB:
- this.provider = this.createAtomPubProvider(this.parameters);
- break;
- case WEBSERVICES:
- this.provider = this.createWebServiceProvider(this.parameters);
- break;
- case UNSPECIFIC:
- this.provider = this.createUnspecificProvider(this.parameters);
- break;
- default:
- throw new CmisRuntimeException("Ambiguous session parameter: "
- + this.parameters);
- }
- }
-
- private CmisProvider createUnspecificProvider(Map<String, String> parameters) {
- CmisProviderFactory factory = CmisProviderFactory.newInstance();
- CmisProvider provider = factory.createCmisProvider(parameters);
- return provider;
- }
-
- private CmisProvider createWebServiceProvider(Map<String, String> parameters) {
- CmisProviderFactory factory = CmisProviderFactory.newInstance();
- CmisProvider provider = factory
- .createCmisWebServicesProvider(parameters);
-
- return provider;
- }
-
- private CmisProvider createAtomPubProvider(Map<String, String> parameters) {
- CmisProviderFactory factory = CmisProviderFactory.newInstance();
- CmisProvider provider = factory.createCmisAtomPubProvider(parameters);
-
- return provider;
- }
-
- public CmisProvider getProvider() {
- return this.provider;
- }
-
- public Cache getCache() {
- return this.cache;
- }
-
- public String getRepositoryId() {
- return this.getRepositoryInfo().getId();
- }
+ /*
+ * default session context (serializable)
+ */
+ private SessionContextImpl context = new SessionContextImpl();
+
+ /*
+ * root folder containing generated test data (not serializable)
+ */
+ private transient Folder testRootFolder = null;
+
+ /*
+ * session parameter (serializable)
+ */
+ private Map<String, String> parameters = null;
+
+ /*
+ * CMIS provider (serializable)
+ */
+ private CmisProvider provider = null;
+
+ /*
+ * Session Locale, determined from session parameter (serializable)
+ */
+ private Locale locale = null;
+
+ /*
+ * helper factory (non serializable)
+ */
+ private transient PropertyFactory propertyFactory = PersistentPropertyFactoryImpl
+ .newInstance(this);
+
+ /*
+ * Object cache (serializable)
+ */
+ private Cache cache = null;
+
+ /*
+ * Lazy loaded repository info. Will be invalid after clear(). Access by getter always.
+ * (serializable)
+ */
+ private RepositoryInfoImpl repositoryInfo;
+
+ /*
+ * helper factory (non serializable)
+ */
+ private transient ObjectFactory objectFactory = PersistentObjectFactoryImpl.newInstance(this);
+
+ /**
+ * required for serialization
+ */
+ private static final long serialVersionUID = -4287481628831198383L;
+
+ public PersistentSessionImpl(Map<String, String> parameters) {
+ this.parameters = parameters;
+ PersistentSessionImpl.log.info("Session Parameters: " + parameters);
+
+ this.locale = this.determineLocale(parameters);
+ PersistentSessionImpl.log.info("Session Locale: " + this.locale.toString());
+
+ int cacheSize = this.determineCacheSize(parameters);
+
+ if (cacheSize == -1) {
+ this.cache = CacheImpl.newInstance();
+ }
+ else {
+ this.cache = CacheImpl.newInstance(cacheSize);
+ }
+ PersistentSessionImpl.log.info("Session Cache Size: " + this.cache.size());
+ }
+
+ private int determineCacheSize(Map<String, String> parameters) {
+ int size = -1;
+
+ return size;
+ }
+
+ private String determineRepositoryId(Map<String, String> parameters) {
+ String repositoryId = parameters.get(SessionParameter.REPOSITORY_ID);
+ // if null then the provider will return a repository id (lazy)
+ return repositoryId;
+ }
+
+ private Locale determineLocale(Map<String, String> parameters) {
+ Locale locale = null;
+
+ String language = parameters.get(SessionParameter.LOCALE_ISO639_LANGUAGE);
+ String country = parameters.get(SessionParameter.LOCALE_ISO3166_COUNTRY);
+ String variant = parameters.get(SessionParameter.LOCALE_VARIANT);
+
+ if (variant != null) {
+ // all 3 parameter must not be null and valid
+ locale = new Locale(language, country, variant);
+ }
+ else {
+ if (country != null) {
+ // 2 parameter must not be null and valid
+ locale = new Locale(language, country);
+ }
+ else {
+ if (language != null) {
+ // 1 parameter must not be null and valid
+ locale = new Locale(language);
+ }
+ else {
+ locale = Locale.getDefault();
+ }
+ }
+ }
+
+ return locale;
+ }
+
+ public void clear() {
+ /*
+ * clear cache
+ */
+
+ int cacheSize = this.determineCacheSize(this.parameters);
+ if (cacheSize == -1) {
+ this.cache = CacheImpl.newInstance();
+ }
+ else {
+ this.cache = CacheImpl.newInstance(cacheSize);
+ }
+ PersistentSessionImpl.log.info("Session Cache Size: " + this.cache.size());
+
+ /*
+ * clear repository info
+ */
+
+ this.repositoryInfo.clear();
+ }
+
+ public PagingList<Document> getCheckedOutDocs(Folder folder, String orderby, int itemsPerPage) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public PagingList<ChangeEvent> getContentChanges(String changeLogToken, int itemsPerPage) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public SessionContext getContext() {
+ return this.context;
+ }
+
+ public Locale getLocale() {
+ return this.locale;
+ }
+
+ public CmisObject getObject(String objectId) {
+ CmisObject obj = null;
+ if (this.cache.containsId(objectId)) {
+ obj = this.cache.get(objectId);
+ }
+ else {
+ /* query context */
+ String filter = this.context.getIncludeProperties();
+ boolean includeAllowableActions = this.context.getIncludeAllowableActions();
+ IncludeRelationships includeRelationships = this.context.getIncludeRelationships();
+ String renditionFilter = this.context.getIncludeRenditions();
+ boolean includePolicyIds = this.context.getIncludePolicies();
+ boolean includeAcl = this.context.getIncludeAcls();
+ ExtensionsData extension = null;
+
+ // add object id, base type id and type id to filter
+ if ((filter != null) && (filter.indexOf('*') == -1)) {
+ if (filter.indexOf(PropertyIds.CMIS_OBJECT_ID) == -1) {
+ filter = PropertyIds.CMIS_OBJECT_ID + "," + filter;
+ }
+ if (filter.indexOf(PropertyIds.CMIS_BASE_TYPE_ID) == -1) {
+ filter = PropertyIds.CMIS_BASE_TYPE_ID + "," + filter;
+ }
+ if (filter.indexOf(PropertyIds.CMIS_OBJECT_TYPE_ID) == -1) {
+ filter = PropertyIds.CMIS_OBJECT_TYPE_ID + "," + filter;
+ }
+ }
+
+ /* ask backend */
+ String repositoryId = this.getRepositoryId();
+ ObjectData od = this.provider.getObjectService().getObject(repositoryId, objectId, filter,
+ includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds,
+ includeAcl, extension);
+
+ /* determine type */
+ switch (od.getBaseTypeId()) {
+ case CMIS_DOCUMENT:
+ obj = new PersistentDocumentImpl(this, getType(od), od);
+ break;
+ case CMIS_FOLDER:
+ obj = new PersistentFolderImpl(this, getType(od), od);
+ break;
+ case CMIS_POLICY:
+ obj = new PersistentPolicyImpl(this, getType(od), od);
+ case CMIS_RELATIONSHIP:
+ obj = new PersistentRelationshipImpl(this, getType(od), od);
+ default:
+ throw new CmisRuntimeException("unsupported type: " + od.getBaseTypeId());
+ }
+
+ this.cache.put(obj);
+ }
+ return obj;
+ }
+
+ public CmisObject getObjectByPath(String path) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public ObjectFactory getObjectFactory() {
+ return this.objectFactory;
+ }
+
+ public PropertyFactory getPropertyFactory() {
+ return this.propertyFactory;
+ }
+
+ public RepositoryInfo getRepositoryInfo() {
+ if (this.repositoryInfo == null) {
+ /* get initial repository id from session parameter */
+ String repositoryId = this.determineRepositoryId(this.parameters);
+ RepositoryInfoImpl rii = new RepositoryInfoImpl(this, repositoryId);
+ this.repositoryInfo = rii;
+ }
+ return this.repositoryInfo;
+ }
+
+ public Folder getRootFolder() {
+ Folder rootFolder = null;
+
+ if (this.cache.containsPath("/")) {
+ rootFolder = (Folder) this.cache.getByPath("/");
+ }
+ else {
+ String rootFolderId = this.getRepositoryInfo().getRootFolderId();
+ String repositoryId = this.getRepositoryId();
+ ObjectData od = this.provider.getObjectService().getObject(repositoryId, rootFolderId, null,
+ false, IncludeRelationships.NONE, null, false, false, null);
+
+ rootFolder = new PersistentFolderImpl(this, getType(od), od);
+ this.cache.put(rootFolder);
+ }
+
+ return rootFolder;
+ }
+
+ public PagingList<ObjectType> getTypeChildren(ObjectType t, boolean includePropertyDefinitions,
+ int itemsPerPage) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public ObjectType getTypeDefinition(String typeId) {
+ TypeDefinition typeDefinition = getProvider().getRepositoryService().getTypeDefinition(
+ getRepositoryId(), typeId, null);
+ return SessionUtil.convertTypeDefinition(this, typeDefinition);
+ }
+
+ public List<Container<ObjectType>> getTypeDescendants(ObjectType t, int depth,
+ boolean includePropertyDefinitions) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public PagingList<CmisObject> query(String statement, boolean searchAllVersions, int itemsPerPage) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public void setContext(SessionContext context) {
+ this.context = (SessionContextImpl) context;
+ }
+
+ public String setExtensionContext(String context) {
+ throw new CmisRuntimeException("not implemented");
+ }
+
+ public ExtensionHandler setExtensionHandler(String context, ExtensionHandler extensionHandler) {
+ 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(testRootId);
+ }
+ else {
+ // repository root
+ rootFolder = this.getRootFolder();
+ }
+
+ PropertyIdDefinitionImpl objectIdPropertyType = new PropertyIdDefinitionImpl();
+ objectIdPropertyType.setId(CmisProperties.OBJECT_ID.value());
+ objectIdPropertyType.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(objectIdPropertyType,
+ folderTypeId);
+ properties.add(typeProperty);
+
+ this.testRootFolder = rootFolder.createFolder(properties, null, null, null);
+
+ 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>
+ * In dependency of the parameter set an {@code AtomPub}, a {@code WebService} or an {@code
+ * InMemory} provider is selected.
+ */
+ public void connect() {
+ if (this.parameters == null || this.parameters.isEmpty()) {
+ throw new CmisRuntimeException("Session parameter not set!");
+ }
+
+ BindingType bt = BindingType.fromValue(this.parameters.get(SessionParameter.BINDING_TYPE));
+
+ switch (bt) {
+ case ATOMPUB:
+ this.provider = this.createAtomPubProvider(this.parameters);
+ break;
+ case WEBSERVICES:
+ this.provider = this.createWebServiceProvider(this.parameters);
+ break;
+ case UNSPECIFIC:
+ this.provider = this.createUnspecificProvider(this.parameters);
+ break;
+ default:
+ throw new CmisRuntimeException("Ambiguous session parameter: " + this.parameters);
+ }
+ }
+
+ private CmisProvider createUnspecificProvider(Map<String, String> parameters) {
+ CmisProviderFactory factory = CmisProviderFactory.newInstance();
+ CmisProvider provider = factory.createCmisProvider(parameters);
+
+ return provider;
+ }
+
+ private CmisProvider createWebServiceProvider(Map<String, String> parameters) {
+ CmisProviderFactory factory = CmisProviderFactory.newInstance();
+ CmisProvider provider = factory.createCmisWebServicesProvider(parameters);
+
+ return provider;
+ }
+
+ private CmisProvider createAtomPubProvider(Map<String, String> parameters) {
+ CmisProviderFactory factory = CmisProviderFactory.newInstance();
+ CmisProvider provider = factory.createCmisAtomPubProvider(parameters);
+
+ return provider;
+ }
+
+ public CmisProvider getProvider() {
+ return this.provider;
+ }
+
+ public Cache getCache() {
+ return this.cache;
+ }
+
+ public String getRepositoryId() {
+ return this.getRepositoryInfo().getId();
+ }
+
+ // --- internal ---
+
+ private ObjectType getType(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 getTypeDefinition((String) typeProperty.getFirstValue());
+ }
}
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java?rev=917425&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java Mon Mar 1 09:06:06 2010
@@ -0,0 +1,272 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.opencmis.client.runtime;
+
+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;
+
+import org.apache.opencmis.client.api.Ace;
+import org.apache.opencmis.client.api.Acl;
+import org.apache.opencmis.client.api.AllowableActions;
+import org.apache.opencmis.client.api.Property;
+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.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.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.PropertiesData;
+import org.apache.opencmis.commons.provider.PropertyData;
+import org.apache.opencmis.commons.provider.ProviderObjectFactory;
+
+/**
+ * Utility methods.
+ */
+public final class SessionUtil {
+
+ private SessionUtil() {
+ }
+
+ /**
+ * Converts a type definition.
+ */
+ public static ObjectType convertTypeDefinition(Session session, TypeDefinition typeDefinition) {
+ if (typeDefinition instanceof DocumentTypeDefinition) {
+ return new DocumentTypeImpl(session, typeDefinition);
+ }
+ else if (typeDefinition instanceof FolderTypeDefinition) {
+ return new FolderTypeImpl(session, typeDefinition);
+ }
+ else if (typeDefinition instanceof RelationshipTypeDefinition) {
+ return new RelationshipTypeImpl(session, typeDefinition);
+ }
+ else if (typeDefinition instanceof PolicyTypeDefinition) {
+ return new PolicyTypeImpl(session, typeDefinition);
+ }
+ else {
+ throw new CmisRuntimeException("Unknown base type!");
+ }
+ }
+
+ /**
+ * Converts properties.
+ */
+ @SuppressWarnings("unchecked")
+ public static Map<String, Property<?>> convertProperties(Session session, 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 = session.getPropertyFactory().createPropertyMultivalue(
+ (PropertyStringDefinition) definition, (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyIdDefinition) {
+ apiProperty = session.getPropertyFactory().createPropertyMultivalue(
+ (PropertyIdDefinition) definition, (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyHtmlDefinition) {
+ apiProperty = session.getPropertyFactory().createPropertyMultivalue(
+ (PropertyHtmlDefinition) definition, (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyUriDefinition) {
+ apiProperty = session.getPropertyFactory().createPropertyMultivalue(
+ (PropertyUriDefinition) definition, (List<String>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyIntegerDefinition) {
+ apiProperty = session.getPropertyFactory().createPropertyMultivalue(
+ (PropertyIntegerDefinition) definition,
+ (List<BigInteger>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyBooleanDefinition) {
+ apiProperty = session.getPropertyFactory()
+ .createPropertyMultivalue((PropertyBooleanDefinition) definition,
+ (List<Boolean>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyDecimalDefinition) {
+ apiProperty = session.getPropertyFactory().createPropertyMultivalue(
+ (PropertyDecimalDefinition) definition,
+ (List<BigDecimal>) property.getValue().getValues());
+ }
+ else if (definition instanceof PropertyDateTimeDefinition) {
+ apiProperty = session.getPropertyFactory().createPropertyMultivalue(
+ (PropertyDateTimeDefinition) definition,
+ (List<GregorianCalendar>) property.getValue().getValues());
+ }
+
+ result.put(property.getKey(), apiProperty);
+ }
+
+ return result;
+ }
+
+ /**
+ * Converts properties.
+ */
+ @SuppressWarnings("unchecked")
+ public static PropertiesData convertProperties(Session session, Collection<Property<?>> properties) {
+ // check input
+ if (properties == null) {
+ throw new IllegalArgumentException("Properties must be set!");
+ }
+
+ ProviderObjectFactory pof = session.getProvider().getObjectFactory();
+
+ // 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);
+ }
+
+ /**
+ * Converts allowable actions.
+ */
+ public static AllowableActions convertAllowableActions(Session session,
+ AllowableActionsData allowableActions) {
+ if ((allowableActions == null) || (allowableActions.getAllowableActions() == null)) {
+ throw new IllegalArgumentException("Allowable actions must be set!");
+ }
+
+ return session.getObjectFactory().createAllowableAction(allowableActions.getAllowableActions());
+ }
+
+ /**
+ * Converts ACL.
+ */
+ public static AccessControlList convertAces(Session session, List<Ace> aces) {
+ if (aces == null) {
+ throw new IllegalArgumentException("ACEs must be set!");
+ }
+
+ ProviderObjectFactory pof = session.getProvider().getObjectFactory();
+
+ List<AccessControlEntry> providerAces = new ArrayList<AccessControlEntry>();
+ for (Ace ace : aces) {
+ providerAces.add(pof.createAccessControlEntry(ace.getPrincipalId(), ace.getPermissions()));
+ }
+
+ return pof.createAccessControlList(providerAces);
+ }
+
+ /**
+ * Converts ACL.
+ */
+ public static Acl convertAcl(Session session, AccessControlList acl) {
+ if (acl == null) {
+ throw new IllegalArgumentException("ACL must be set!");
+ }
+
+ ObjectFactory of = session.getObjectFactory();
+ List<Ace> aces = new ArrayList<Ace>();
+ if (acl.getAces() != null) {
+ for (AccessControlEntry ace : acl.getAces()) {
+ if (ace.getPrincipal() == null) {
+ continue;
+ }
+ aces.add(of.createAce(ace.getPrincipal().getPrincipalId(), ace.getPermissions(), ace
+ .isDirect()));
+ }
+ }
+
+ return of.createAcl(aces, acl.isExact());
+ }
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/SessionUtil.java
------------------------------------------------------------------------------
svn:eol-style = native