You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by dc...@apache.org on 2010/02/16 17:04:07 UTC
svn commit: r910572 [3/36] - in /incubator/chemistry/trunk/opencmis: ./
_dev/ opencmis-client/ opencmis-client/opencmis-client-api/
opencmis-client/opencmis-client-api/src/
opencmis-client/opencmis-client-api/src/main/
opencmis-client/opencmis-client-a...
Added: 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=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,173 @@
+/*
+ * 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.api;
+
+import java.util.Locale;
+
+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.PagingList;
+
+public interface Session {
+
+ /**
+ * Clear all cached data. This implies that all data will be reloaded from the repository
+ * (depending on the implementation, reloading might be done immediately or be deferred).
+ */
+ void clear();
+
+ // session context
+
+ /**
+ * Get the current session parameters for filtering and paging.
+ */
+ SessionContext getContext();
+
+ /**
+ * Set the current session parameters for filtering and paging.
+ *
+ * @param context
+ * the <code>SessionContext</code> to be used for the session; if <code>null</code>, a
+ * default context is used
+ * @return the old <code>SessionContext</code> used before <code>setContext</code> was called
+ */
+ SessionContext setContext(SessionContext context);
+
+ // localization
+
+ /**
+ * Get the current locale to be used for this sesion.
+ */
+ Locale getLocale();
+
+ // extensions
+
+ // TODO : clarify extension handling
+
+ /*
+ * basic idea is: Application does something like startup: session.setExtensionHandler('action',
+ * handler); performing an action: session.set('action'); ... do some operations on the session
+ * ... --> handler.handleExtension('action') is called by runtime
+ */
+
+ /**
+ * Get an ID representing an 'extension context' (an action or something)?
+ */
+ String getExtensionContext();
+
+ /**
+ * Set an ID representing an 'extension context' (an action or something)? (null = default/no
+ * context)
+ *
+ * @param context
+ * @return
+ */
+ String setExtensionContext(String context);
+
+ /**
+ * Get the <code>ExtensionHandler</code> for a given 'extension context'. (null = default)
+ *
+ * @param context
+ * @return
+ */
+ ExtensionHandler getExtensionHandler(String context);
+
+ /**
+ * Set the <code>ExtensionHandler</code> for a given 'extension context'. (null = default)
+ *
+ * @param context
+ * @param extensionHandler
+ * @return
+ */
+ ExtensionHandler setExtensionHandler(String context, ExtensionHandler extensionHandler);
+
+ // services
+
+ /**
+ * Repository service <code>getRepositoryInfo()</code>.
+ */
+ RepositoryInfo getRepositoryInfo();
+
+ /**
+ * Access to the object services <code>create</code><i>...</i>, plus factory methods to create
+ * <code>Acl</code>s, <code>Ace</code>s, and <code>ContentStream</code>.
+ */
+ ObjectFactory getObjectFactory();
+
+ /**
+ * Get the factory for <code>Property</code> objects.
+ */
+ PropertyFactory getPropertyFactory();
+
+ ObjectType getTypeDefinition(String typeId);
+
+ PagingList<ObjectType> getTypeChildren(ObjectType t, boolean includePropertyDefinitions, int itemsPerPage);
+
+ PagingList<ObjectType> getTypeDescendants(ObjectType t, int depth, boolean includePropertyDefinitions, int itemsPerPage);
+
+ // navigation
+
+ /**
+ * Get the root folder for the repository.
+ */
+ Folder getRootFolder();
+
+ /**
+ * Navigation service <code>getCheckedOutDocs</code>.
+ *
+ * @param folder
+ * @param orderby
+ * @return @
+ */
+ PagingList<Document> getCheckedOutDocs(Folder folder, String orderby, int itemsPerPage);
+
+ /**
+ * Object service <code>getObject</code>.
+ *
+ * @param objectid
+ * @return @
+ */
+ CmisObject getObject(String objectid);
+
+ /**
+ * Object service <code>getObjectByPath</code>.
+ *
+ * @param path
+ * @return @
+ */
+ CmisObject getObjectByPath(String path);
+
+ // discovery
+
+ /**
+ * Discovery service <code>query</code>.
+ */
+ PagingList<CmisObject> query(String statement, boolean searchAllVersions, int itemsPerPage);
+
+ /**
+ * Discovery service <code>getContentChanges</code>.
+ *
+ * @return
+ */
+ PagingList<ChangeEvent> getContentChanges(String changeLogToken, int itemsPerPage);
+
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/Session.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionContext.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionContext.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionContext.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionContext.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,62 @@
+/*
+ * 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.api;
+
+import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.exceptions.CmisFilterNotValidException;
+
+/**
+ * A container for some session parameters, like paging cursors, etc.
+ *
+ * @see Session.getContext
+ * @see Session.setContext
+ */
+public interface SessionContext {
+
+ // filtering and additional data ((pre-)populating objects)
+
+ void setIncludeProperties(String filter) throws CmisFilterNotValidException;
+
+ void setIncludeRelationships(IncludeRelationships filter) throws CmisFilterNotValidException;
+
+ void setIncludePolicies(boolean include);
+
+ void setIncludeRenditions(String filter) throws CmisFilterNotValidException;
+
+ void setIncludeAcls(boolean include);
+
+ void setIncludeAllowableActions(boolean include);
+
+ void setIncludePathSegments(boolean include);
+
+ String getIncludeProperties();
+
+ IncludeRelationships getIncludeRelationships();
+
+ boolean getIncludePolicies();
+
+ String getIncludeRenditions();
+
+ boolean getIncludeAcls();
+
+ boolean getIncludeAllowableActions();
+
+ boolean getIncludePathSegments();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionFactory.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionFactory.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionFactory.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,70 @@
+/*
+ * 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.api;
+
+import java.util.Map;
+
+/**
+ * Entry point into the OpenCMIS Client API. The <code>SessionFactory</code>
+ * class implementation needs to be retrieved by any runtime lookup call. This
+ * can for instance be a J2EE JNDI lookup or an OSGi service lookup.
+ * <p>
+ * The entries of parameter map are defined by <code>SessionParameter</code>
+ * class which is part of the commons package. Parameters specify connection
+ * settings (user name, authentication, connection url, binding type (soap or
+ * atom pub) ...).
+ * <p>
+ * The <code>Session</code> class which is constructed is either the
+ * <code>session</code> base class which is the default implementation or it can
+ * be derived from that implementing special behavior for the session. Which
+ * session finally is returned can be controlled by the
+ * <code>SessionParameter.SESSION_TYPE</code> parameter.
+ * <p>
+ * Example Coding:
+ * <p>
+ * <code>
+ * SessionFactory factory = ... // use a runtime lookup service
+ * <br>Map<String, String> parameters = ...
+ * <br>
+ * <br>parameters.put(SessionParameter.USER, "username");
+ * <br>parameters.put(SessionParameter.URL, "http://...");
+ * <br>parameters.put(SessionParameter.SESSION_TYPE, SessionType.TRANSIENT.value());
+ * <br> ...
+ * <br>
+ * <br>TrasnientSession s = factory.createSession(parameters);
+ * </code>
+ *<p>
+ * If the <code>SessionType</code> parameter is not specified then the default
+ * session is returned.
+ *
+ */
+public interface SessionFactory {
+
+ /**
+ * Obtain a new session.
+ *
+ * @param parameters
+ * a {@code Map} of name/value pairs with parameters for the
+ * session.
+ * @return a {@code session} to the CMIS repository specified by the {@code
+ * parameters}.
+ */
+ <T extends Session> T createSession(Map<String, String> parameters);
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/SessionFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/TransientSession.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/TransientSession.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/TransientSession.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/TransientSession.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,36 @@
+/*
+ * 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.api;
+
+public interface TransientSession extends Session {
+ /**
+ * Save all pending actions for this session. Corresponds to a <code>commit</code> if the CMIS
+ * provider supports transactions. If transactions are not supported by the CMIS provider, changes
+ * might be applied only partially.
+ */
+ void save();
+
+ /**
+ * Cancel all pending actions for this session. Corresponds to a <code>rollback</code> if the CMIS
+ * provider supports transactions. If transactions are not supported by the CMIS provider, some
+ * changes might already be applied and therefore not rolled back.
+ */
+ void cancel();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/TransientSession.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,46 @@
+/*
+ * 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.api.objecttype;
+
+import org.apache.opencmis.commons.enums.ContentStreamAllowed;
+
+/**
+ * Document Object Type.
+ *
+ * See CMIS Domain Model - section 2.1.4.3.
+ */
+public interface DocumentType extends ObjectType {
+
+ /**
+ * Get the {@code isVersionable} flag.
+ *
+ * @return {@code true} if this document type is versionable, {@code false} if documents of this
+ * type cannot be versioned.
+ */
+ boolean isVersionable();
+
+ /**
+ * Get the enum that describes, how content streams have to be handled with this document type.
+ *
+ * @return the mode of content stream support ({@code notallowed}, {@code allowed}, or {@code
+ * required}).
+ */
+ ContentStreamAllowed getContentStreamAllowed();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/DocumentType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/FolderType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/FolderType.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/FolderType.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/FolderType.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,28 @@
+/*
+ * 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.api.objecttype;
+
+/**
+ * Folder Object Type.
+ *
+ * See CMIS Domain Model - section 2.1.5.4.
+ */
+public interface FolderType extends ObjectType {
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/FolderType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,188 @@
+/*
+ * 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.api.objecttype;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.opencmis.commons.api.PropertyDefinition;
+import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
+import org.apache.opencmis.commons.exceptions.CmisRuntimeException;
+
+/**
+ * Object Type.
+ *
+ * See CMIS Domain Model - section 2.1.3.
+ */
+public interface ObjectType {
+
+ String DOCUMENT_BASETYPE_ID = BaseObjectTypeIds.CMIS_DOCUMENT.value();
+ String FOLDER_BASETYPE_ID = BaseObjectTypeIds.CMIS_FOLDER.value();
+ String RELATIONSHIP_BASETYPE_ID = BaseObjectTypeIds.CMIS_RELATIONSHIP.value();
+ String POLICY_BASETYPE_ID = BaseObjectTypeIds.CMIS_POLICY.value();
+
+ /**
+ * Get this type's id.
+ *
+ * @return the id of this type.
+ */
+ String getId();
+
+ /**
+ * Get the type's local name as used in the repository.
+ *
+ * @return the local name of the type.
+ */
+ String getLocalName();
+
+ /**
+ * Get the type's namespace as used in the repository.
+ *
+ * @return the namespace for this type.
+ */
+ String getLocalNamespace();
+
+ /**
+ * Get the type's query name, used for query and filter operations.
+ *
+ * @return the type's query name.
+ */
+ String getQueryName();
+
+ /**
+ * Get the type's display name, used to be presented to the user.
+ *
+ * @return the type's display name.
+ */
+ String getDisplayName();
+
+ /**
+ * Indicates if this is base object type (i.e. if {@code getId()} returns ...{@code _BASETYPE_ID}.
+ *
+ * @return {@code true} if this type is a base type, {@code false} if this type is a derived type.
+ */
+ boolean isBase();
+
+ /**
+ * Get the type's base type, if the type is a derived (non-base) type.
+ *
+ * @return the base type this type is derived from, or {@code null} if it is a base type ({@code
+ * isBase()==true}).
+ * @throws CmisRuntimeException
+ */
+ ObjectType getBaseType(); // null if isBase == true
+
+ /**
+ * Get the type's base type id.
+ *
+ * @return
+ */
+ BaseObjectTypeIds getBaseTypeId();
+
+ /**
+ * Get the type's parent type, if the type is a derived (non-base) type.
+ *
+ * @return the parent type from which this type is derived, or {@code null} if it is a base type (
+ * {@code isBase()==true}).
+ * @throws CmisRuntimeException
+ */
+ ObjectType getParent();
+
+ /**
+ * Additional description for this type.
+ *
+ * @return the description, intended for the user. Might be {@code null}.
+ */
+ String getDescription();
+
+ /**
+ * Indicates that objects of this type can be created.
+ *
+ * @return {@code true} if objects for this type can be created.
+ */
+ boolean isCreatable();
+
+ /**
+ * Indicates that objects of this type can be filed/unfiled.
+ *
+ * @return {@code true} if objects for this type can be used for filing operations.
+ */
+ boolean isFileable();
+
+ /**
+ * Indicates that objects of this type can be queried.
+ *
+ * @return {@code true} if objects for this type can be used for query operations.
+ */
+ boolean isQueryable();
+
+ /**
+ * Indicates that objects of this type can be controlled by policies.
+ *
+ * @return {@code true} if objects for this type can be used for policy operations.
+ */
+ boolean isControllablePolicy();
+
+ /**
+ * Indicates that objects of this type can be controlled by ACLs.
+ *
+ * @return {@code true} if objects for this type can be used for ACL operations.
+ */
+ boolean isControllableAcl();
+
+ /**
+ * Indicates that objects of this type are indexed in the full text index.
+ *
+ * @return {@code true} if objects for this type can be searched via full text searches.
+ */
+ boolean isFulltextIndexed();
+
+ /**
+ * Indicates that objects of this type can be queried via its super type.
+ *
+ * @return {@code true} if objects for this type are included in queries for their super type.
+ */
+ boolean isIncludedInSupertypeQuery();
+
+ /**
+ * Get the {@code Map} of {@code PropertyDefinition}s, indexed by the property definition's ids.
+ *
+ * @return the {@code Map} of property definitions. @
+ */
+ Map<String, PropertyDefinition<?>> getPropertyDefintions();
+
+ /**
+ * Get the list of types directly derived from this type (which will return this type on {@code
+ * getParent()}).
+ *
+ * @return a {@code List} of types which are directly derived from this type. @
+ */
+ List<ObjectType> getChildren();
+
+ /**
+ * Get the list of all types somehow derived from this type.
+ *
+ * @param depth
+ * the depth to which the derived types should be resolved.
+ * @return a {@code List} of types which are derived from this type (direct and via their
+ * parents). @
+ */
+ List<ObjectType> getDescendants(int depth);
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/ObjectType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/PolicyType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/PolicyType.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/PolicyType.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/PolicyType.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,28 @@
+/*
+ * 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.api.objecttype;
+
+/**
+ * Policy Object Type.
+ *
+ * See CMIS Domain Model - section 2.1.7.1.
+ */
+public interface PolicyType extends ObjectType {
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/PolicyType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/RelationshipType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/RelationshipType.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/RelationshipType.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/RelationshipType.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,43 @@
+/*
+ * 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.api.objecttype;
+
+import java.util.List;
+
+/**
+ * Relationship Object Type.
+ *
+ * See CMIS Domain Model - section 2.1.6.1.
+ */
+public interface RelationshipType extends ObjectType {
+
+ /**
+ * Get the list of object types, allowed as source for relationships of this type.
+ *
+ * @return the allowed source types for this relationship type.
+ */
+ List<ObjectType> getAllowedSourceTypes();
+
+ /**
+ * Get the list of object types, allowed as target for relationships of this type.
+ *
+ * @return the allowed target types for this relationship type.
+ */
+ List<ObjectType> getAllowedTargetTypes();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/RelationshipType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/package.html
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/package.html?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/package.html (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/package.html Tue Feb 16 16:03:38 2010
@@ -0,0 +1,34 @@
+<!--
+
+ Copyright 2009 Alfresco Software Ltd / Open Text Corporation / SAP AG
+
+ Licensed 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.
+
+ -->
+<html>
+<head>
+<!--
+ JavaDoc package.html
+-->
+</head>
+<body>
+The OpenCMIS Client API object type definitions.
+<p>
+This package provides interfaces defining the CMIS object types.
+<br/>
+</p>
+<p>
+@see org.opencmis.client.api.repository.ObjectTypes
+</p>
+</body>
+</html>
\ No newline at end of file
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/objecttype/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/package.html
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/package.html?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/package.html (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/package.html Tue Feb 16 16:03:38 2010
@@ -0,0 +1,79 @@
+<!--
+
+ Copyright 2009 Alfresco Software Ltd / Open Text Corporation / SAP AG
+
+ Licensed 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.
+
+ -->
+<html>
+<head>
+<!--
+ JavaDoc package.html
+-->
+</head>
+<body>
+The OpenCMIS Client API.
+<p>
+This package provides interfaces and classes for accessing CMIS repositories
+via an object oriented API.
+<br/>
+Interfaces in this package are implemented by the OpenCMIS runtime and must not be
+implemented by applications.
+The OpenCMIS client API depends on the OpenCMIS commons API.
+</p>
+<p>
+To use the OpenCMIS client API, a client needs to get a reference to the entry interface
+{@link org.opencmis.client.api.SessionFactory} and then connect to the CMIS repository
+by obtaining a session to the repository from the {@code SessionFactory}.
+The way to get an instance of a {@code SessionFactory} depends on the clients runtime:
+Usually this will be done via JNDI lookup in a J2E runtime or a service lookup in a OSGi Runtime.
+</p>
+<p>
+Note: A session is not thread-safe, thus either multiple sessions should be used or some
+kind of synchronization has to be used. <br/>
+All operations that require a round-trip to the back-end will do that synchronously,
+causing the client to be blocked during that call.</p>
+
+<h2>Usage of the API</h2>
+<p>
+The following example code illustrates how the session is obtained, used and finally released.
+<pre>
+ SessionFactory factory;
+ Session session;
+ try {
+ // acquire the session factory
+ factory = (SessionFactory) new InitialContext().lookup(JNDI_LOOKUP_KEY);
+ // provide some basic configuration
+ HashMap parameters = new HashMap();
+ parameters.put(SessionParameter.USER, "user");
+ parameters.put(SessionParamter.PASSWORD, encode("password"));
+ parameters.put(SessionParameter.URL, "http://server:port/path");
+ // get the session
+ session = factory.getSession(parameters);
+ // sample: get the root folder and create a new top-level folder
+ Folder rootFolder = session.getRootFolder();
+ Document document = session.getObjectFactory().createDocument(rootFolder, "test");
+ document.setProperty("myProperty", "stringpropertyvalue");
+ document.save(); // create document with property
+ } // end try
+ finally {
+ //cleanup
+ }
+</pre>
+</p>
+<p>
+@see org.opencmis.client.api.SessionFactory
+@see org.opencmis.client.api.Session
+</p>
+</body>
+</html>
\ No newline at end of file
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AclPermissionMapping.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/AclPermissionMapping.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AclPermissionMapping.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AclPermissionMapping.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,89 @@
+/*
+ * 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.api.repository;
+
+import java.util.List;
+
+import org.apache.opencmis.client.api.AclPermission;
+
+/**
+ * Information about a repositories permission mappings, as provided by RepositoryInfo.
+ *
+ * @see RepositoryAclCapabilities#getPermissionMapping()
+ *
+ * See CMIS Domain Model - section 2.1.8.3.
+ */
+public interface AclPermissionMapping {
+
+ // the keys for the permission mappings (AllowableAction + "." + Operand)
+
+ String CAN_GET_DESCENDENTS_FOLDER = "canGetDescendents.Folder";
+ String CAN_GET_CHILDREN_FOLDER = "canGetChildren.Folder";
+ String CAN_GET_PARENTS_FOLDER = "canGetParents.Folder";
+ String CAN_GET_FOLDER_PARENT_OBJECT = "canGetFolderParent.Object";
+ String CAN_CREATE_DOCUMENT_TYPE = "canCreateDocument.Type";
+ String CAN_CREATE_DOCUMENT_FOLDER = "canCreateDocument.Folder";
+ String CAN_CREATE_FOLDER_TYPE = "canCreateFolder.Type";
+ String CAN_CREATE_FOLDER_FOLDER = "canCreateFolder.Folder";
+ String CAN_CREATE_RELATIONSHIP_TYPE = "canCreateRelationship.Type";
+ String CAN_CREATE_RELATIONSHIP_SOURCE = "canCreateRelationship.Source";
+ String CAN_CREATE_RELATIONSHIP_TARGET = "canCreateRelationship.Target";
+ String CAN_CREATE_POLICY_TYPE = "canCreatePolicy.Type";
+ String CAN_GET_PROPERTIES_OBJECT = "canGetProperties.Object";
+ String CAN_VIEW_CONTENT_OBJECT = "canViewContent.Object";
+ String CAN_UPDATE_PROPERTIES_OBJECT = "canUpdateProperties.Object";
+ String CAN_MOVE_OBJECT = "canMove.Object";
+ String CAN_MOVE_TARGET = "canMove.Target";
+ String CAN_MOVE_SOURCE = "canMove.Source";
+ String CAN_DELETE_OBJECT = "canDelete.Object";
+ String CAN_DELETE_TREE_FOLDER = "canDeleteTree.Folder";
+ String CAN_SET_CONTENT_DOCUMENT = "canSetContent.Document";
+ String CAN_DELETE_CONTENT_DOCUMENT = "canDeleteContent.Document";
+ String CAN_ADD_TO_FOLDER_OBJECT = "canAddToFolder.Object";
+ String CAN_ADD_TO_FOLDER_FOLDER = "canAddToFolder.Folder";
+ String CAN_REMOVE_FROM_FOLDER_OBJECT = "canRemoveFromFolder.Object";
+ String CAN_REMOVE_FROM_FOLDER_FOLDER = "canRemoveFromFolder.Folder";
+ String CAN_CHECKOUT_DOCUMENT = "canCheckout.Document";
+ String CAN_CANCEL_CHECKOUT_DOCUMENT = "canCancelCheckout.Document";
+ String CAN_CHECKIN_DOCUMENT = "canCheckin.Document";
+ String CAN_GET_ALL_VERSIONS_VERSION_SERIES = "canGetAllVersions.VersionSeries";
+ String CAN_GET_OBJECT_RELATIONSHIPS_OBJECT = "canGetObjectRelationships.Object";
+ String CAN_ADD_POLICY_OBJECT = "canAddPolicy.Object";
+ String CAN_ADD_POLICY_POLICY = "canAddPolicy.Policy";
+ String CAN_REMOVE_POLICY_OBJECT = "canRemovePolicy.Object";
+ String CAN_REMOVE_POLICY_POLICY = "canRemovePolicy.Policy";
+ String CAN_GET_APPLIED_POLICIES_OBJECT = "canGetAppliedPolicies.Object";
+ String CAN_GET_ACL_OBJECT = "canGetACL.Object";
+ String CAN_APPLY_ACL_OBJECT = "canApplyACL.Object";
+
+ /**
+ * Get the key (AllowableAction + "." + OperandType) for this permission mapping.
+ *
+ * @return the key for the permission mapping (CAN_...).
+ */
+ String getKey();
+
+ /**
+ * Get the mapped permissions for the permission mapping (identified by it's key).
+ *
+ * @return the list of permissions that are required for the AllowableAction and Operand.
+ */
+ List<AclPermission> getPermissions();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AclPermissionMapping.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AllowableActions.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/AllowableActions.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AllowableActions.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AllowableActions.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,88 @@
+/*
+ * 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.api.repository;
+
+/**
+ * Information about the actions for a CMIS object.
+ *
+ * @see org.apache.opencmis.client.api.CmisObject#getAllowableActions()
+ *
+ * See CMIS Domain Model - section 2.2.4.6.
+ */
+public interface AllowableActions {
+
+ boolean canDeleteObject();
+
+ boolean canUpdateProperties();
+
+ boolean canGetProperties();
+
+ boolean canGetObjectRelationships();
+
+ boolean canGetObjectParents();
+
+ boolean canGetFolderParent();
+
+ boolean canGetDescendants();
+
+ boolean canMoveObject();
+
+ boolean canDeleteContentStream();
+
+ boolean canCheckOut();
+
+ boolean canCancelCheckOut();
+
+ boolean canCheckIn();
+
+ boolean canSetContentStream();
+
+ boolean canGetAllVersions();
+
+ boolean canAddObjectToFolder();
+
+ boolean canRemoveObjectFromFolder();
+
+ boolean canGetContentStream();
+
+ boolean canApplyPolicy();
+
+ boolean canGetAppliedPolicies();
+
+ boolean canRemovePolicy();
+
+ boolean canGetChildren();
+
+ boolean canCreateDocument();
+
+ boolean canCreateFolder();
+
+ boolean canCreateRelationship();
+
+ boolean canCreatePolicy();
+
+ boolean canDeleteTree();
+
+ boolean canGetRenditions();
+
+ boolean canGetAcl();
+
+ boolean canApplyAcl();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/AllowableActions.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,69 @@
+/*
+ * 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.api.repository;
+
+import java.io.InputStream;
+import java.util.List;
+
+import org.apache.opencmis.client.api.Ace;
+import org.apache.opencmis.client.api.Acl;
+import org.apache.opencmis.client.api.AclPermission;
+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.Policy;
+import org.apache.opencmis.client.api.Property;
+import org.apache.opencmis.client.api.Relationship;
+import org.apache.opencmis.commons.enums.VersioningState;
+
+/**
+ * A factory to create CMIS objects.
+ *
+ * @see org.apache.opencmis.client.api.Session#getObjectFactory()
+ */
+public interface ObjectFactory {
+
+ // object factory
+
+ Ace createAce(String principal, List<AclPermission> permissions);
+
+ Acl createAcl(List<Ace> aces);
+
+ ContentStream createContentStream(int length, String mimetype, String filename, InputStream stream);
+
+ // object service
+
+ // shortcut
+ Document createDocument(Folder parentfolder, String name);
+
+ Document createDocument(List<Property<?>> properties, Folder parentfolder,
+ ContentStream contentstream, VersioningState versioningState, List<Policy> policies,
+ List<Ace> addACEs, List<Ace> removeACEs);
+
+ Document createDocumentFromSource(Document source, List<Property<?>> properties,
+ Folder parentfolder, VersioningState versioningState, List<Policy> policies,
+ List<Ace> addACEs, List<Ace> removeACEs);
+
+ Relationship createRelationship(List<Property<?>> properties, List<Policy> policies,
+ List<Ace> addACEs, List<Ace> removeACEs);
+
+ Policy createPolicy(List<Property<?>> properties, Folder parentfolder, List<Policy> policies,
+ List<Ace> addACEs, List<Ace> removeACEs);
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/ObjectFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.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/PropertyFactory.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,42 @@
+/*
+ * 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.api.repository;
+
+import java.util.List;
+
+import org.apache.opencmis.client.api.Property;
+import org.apache.opencmis.commons.enums.CmisProperties;
+import org.apache.opencmis.commons.enums.PropertyType;
+
+/**
+ * A factory to create properties.
+ *
+ * @see org.apache.opencmis.client.api.Session#getPropertyFactory()
+ */
+public interface PropertyFactory {
+
+ // property factory
+
+ <T> Property<T> createProperty(String id, PropertyType type, T value);
+
+ <T> Property<T> createPropertyMultivalue(String id, PropertyType type, List<T> value);
+
+ <T> Property<T> createCmisProperty(CmisProperties p, T value);
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/PropertyFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryAclCapabilities.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/RepositoryAclCapabilities.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryAclCapabilities.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryAclCapabilities.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,126 @@
+/*
+ * 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.api.repository;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.opencmis.client.api.AclPermission;
+import org.apache.opencmis.commons.enums.AclPropagation;
+
+/**
+ * Information about a repositories ACL capabilities, as provided by RepositoryInfo.
+ *
+ * @see RepositoryInfo#getAclCapabilities()
+ *
+ * See CMIS Domain Model - section 2.2.2.2.
+ */
+public interface RepositoryAclCapabilities {
+
+ AclPropagation getAclPropagation();
+
+ List<AclPermission> getPermissions();
+
+ // generic mapping
+
+ /**
+ * The methods {@code get}<<i>AllowableAction</i>><<i>Operand</i>>{@code Permissions}
+ * should be used instead...
+ */
+ Map<String, AclPermissionMapping> getPermissionMapping();
+
+ // specific mappings
+
+ AclPermissionMapping getGetDescendentsFolderPermissions();
+
+ AclPermissionMapping getGetChildrenFolderPermissions();
+
+ AclPermissionMapping getGetParentsFolderPermissions();
+
+ AclPermissionMapping getGetFolderParentObjectPermissions();
+
+ AclPermissionMapping getCreateDocumentTypePermissions();
+
+ AclPermissionMapping getCreateDocumentFolderPermissions();
+
+ AclPermissionMapping getCreateFolderTypePermissions();
+
+ AclPermissionMapping getCreateFolderFolderPermissions();
+
+ AclPermissionMapping getCreateRelationshipTypePermissions();
+
+ AclPermissionMapping getCreateRelationshipSourcePermissions();
+
+ AclPermissionMapping getCreateRelationshipTargetPermissions();
+
+ AclPermissionMapping getCreatePolicyTypePermissions();
+
+ AclPermissionMapping getGetPropertiesObjectPermissions();
+
+ AclPermissionMapping getViewContentObjectPermissions();
+
+ AclPermissionMapping getUpdatePropertiesObjectPermissions();
+
+ AclPermissionMapping getMoveObjectPermissions();
+
+ AclPermissionMapping getMoveTargetPermissions();
+
+ AclPermissionMapping getMoveSourcePermissions();
+
+ AclPermissionMapping getDeleteObjectPermissions();
+
+ AclPermissionMapping getDeleteTreeFolderPermissions();
+
+ AclPermissionMapping getSetContentDocumentPermissions();
+
+ AclPermissionMapping getDeleteContentDocumentPermissions();
+
+ AclPermissionMapping getAddToFolderObjectPermissions();
+
+ AclPermissionMapping getAddToFolderFolderPermissions();
+
+ AclPermissionMapping getRemoveFromFolderObjectPermissions();
+
+ AclPermissionMapping getRemoveFromFolderFolderPermissions();
+
+ AclPermissionMapping getCheckoutDocumentPermissions();
+
+ AclPermissionMapping getCancelCheckoutDocumentPermissions();
+
+ AclPermissionMapping getCheckinDocumentPermissions();
+
+ AclPermissionMapping getGetAllVersionsVersionSeriesPermissions();
+
+ AclPermissionMapping getGetObjectRelationshipsObjectPermissions();
+
+ AclPermissionMapping getAddPolicyObjectPermissions();
+
+ AclPermissionMapping getAddPolicyPolicyPermissions();
+
+ AclPermissionMapping getRemovePolicyObjectPermissions();
+
+ AclPermissionMapping getRemovePolicyPolicyPermissions();
+
+ AclPermissionMapping getGetAppliedPoliciesObjectPermissions();
+
+ AclPermissionMapping getGetAclObjectPermissions();
+
+ AclPermissionMapping getApplyAclObjectPermissions();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryAclCapabilities.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryCapabilities.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/RepositoryCapabilities.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryCapabilities.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryCapabilities.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,77 @@
+/*
+ * 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.api.repository;
+
+import org.apache.opencmis.commons.enums.CapabilityAcl;
+import org.apache.opencmis.commons.enums.CapabilityChanges;
+import org.apache.opencmis.commons.enums.CapabilityContentStreamUpdates;
+import org.apache.opencmis.commons.enums.CapabilityJoin;
+import org.apache.opencmis.commons.enums.CapabilityQuery;
+import org.apache.opencmis.commons.enums.CapabilityRendition;
+
+/**
+ * Information about a repositories capabilities, as provided by RepositoryInfo.
+ *
+ * @see RepositoryInfo#getCapabilities()
+ *
+ * See CMIS Domain Model - section 2.2.2.2.
+ */
+public interface RepositoryCapabilities {
+
+ // Object
+
+ CapabilityContentStreamUpdates getContentStreamUpdatabilitySupport();
+
+ CapabilityChanges getChangesSupport();
+
+ CapabilityRendition getRenditionsSupport();
+
+ // Navigation
+
+ boolean isGetDescendantsSupported();
+
+ boolean isGetFolderTreeSupported();
+
+ // Filing
+
+ boolean isMultifilingSupported();
+
+ boolean isUnfilingSupported();
+
+ boolean isVersionSpecificFilingSupported();
+
+ // Versioning
+
+ boolean isPwcUpdatableSupported();
+
+ boolean isPwcSearchableSupported();
+
+ boolean isAllVersionsSearchableSupported();
+
+ // Query
+
+ CapabilityQuery getQuerySupport();
+
+ CapabilityJoin getJoinSupport();
+
+ // ACLs
+
+ CapabilityAcl getAclSupport();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryCapabilities.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryInfo.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/RepositoryInfo.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryInfo.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryInfo.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,66 @@
+/*
+ * 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.api.repository;
+
+import java.util.List;
+
+import org.apache.opencmis.commons.enums.BaseObjectTypeIds;
+
+/**
+ * Information provided by the getRepositoryInfo service.
+ *
+ * @see org.apache.opencmis.client.api.Session#getRepositoryInfo()
+ *
+ * See CMIS Domain Model - section 2.2.2.2.
+ */
+public interface RepositoryInfo {
+
+ String getId();
+
+ String getName();
+
+ String getDescription();
+
+ String getVendorName();
+
+ String getProductName();
+
+ String getProductVersion();
+
+ String getCmisVersionSupported();
+
+ String getThinClientUri();
+
+ boolean changesIncomplete();
+
+ List<BaseObjectTypeIds> getChangesOnType();
+
+ String getPrincipalIdAnonymous();
+
+ String getPrincipalIdAnyone();
+
+ RepositoryCapabilities getCapabilities();
+
+ RepositoryAclCapabilities getAclCapabilities();
+
+ String getRootFolderId();
+
+ String getLatestChangeLogToken();
+
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/RepositoryInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/package.html
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/package.html?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/package.html (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/package.html Tue Feb 16 16:03:38 2010
@@ -0,0 +1,34 @@
+<!--
+
+ Copyright 2009 Alfresco Software Ltd / Open Text Corporation / SAP AG
+
+ Licensed 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.
+
+ -->
+<html>
+<head>
+<!--
+ JavaDoc package.html
+-->
+</head>
+<body>
+The OpenCMIS Client API repository related package.
+<p>
+This package provides interfaces to the CMIS repository.
+<br/>
+</p>
+<p>
+@see org.opencmis.client.api.Session
+</p>
+</body>
+</html>
\ No newline at end of file
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/repository/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/AceList.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/AceList.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/AceList.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/AceList.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,27 @@
+/*
+* 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.api.util;
+
+import java.util.List;
+
+import org.apache.opencmis.client.api.Ace;
+
+public interface AceList extends List<Ace> {
+ boolean isExact();
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/AceList.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,71 @@
+/*
+ * 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.api.util;
+
+import java.util.List;
+
+/**
+ * Basically this is a nested list of lists where the outer list represent pages and the inner list
+ * is the result set with items of type T. <code>PagingList</code> implementations can support lazy
+ * load of result sets.
+ *
+ * @param <T>
+ */
+public interface PagingList<T> extends Iterable<List<T>> {
+
+ /**
+ * If the repository knows the total number of items in a result set, the repository SHOULD
+ * include the number here. If the repository does not know the number of items in a result set,
+ * this parameter SHOULD not be set. The value in the parameter MAY NOT be accurate the next time
+ * the client retrieves the result set or the next page in the result set.
+ *
+ * @return total number of items or (-1)
+ */
+ int totalItems();
+
+ /**
+ * This is the maximum number of items to return in one page. The repository MUST NOT exceed
+ * this maximum. Default is repository-specific.
+ */
+ void setMaxItems();
+
+ /**
+ * This is the maximum number of pages calculated from number of <code>totalItems</code> and
+ * <code>maxItems</code>. If the number of <code>totalItems</code> is not known then -1 is
+ * returned.
+ *
+ * @return Number of pages or (-1)
+ */
+ int size();
+
+ /**
+ * Return one page as list of items of type T.
+ *
+ * @param pageNumber
+ * The number of the page to return.
+ * @return a page of items
+ */
+ List<T> get(int pageNumber);
+
+ /**
+ * Returns true if the server does not return any items.
+ * @return true for empty list
+ */
+ boolean isEmpty();
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/util/PagingList.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Feb 16 16:03:38 2010
@@ -0,0 +1,7 @@
+bin
+target
+*.iws
+*.ipr
+*.iml
+.*
+log4j.log*
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/pom.xml
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/pom.xml?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/pom.xml (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/pom.xml Tue Feb 16 16:03:38 2010
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.opencmis</groupId>
+ <artifactId>opencmis</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>opencmis-client-impl</artifactId>
+ <name>OpenCMIS Client Implementation</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.opencmis</groupId>
+ <artifactId>opencmis-client-api</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opencmis</groupId>
+ <artifactId>opencmis-commons-api</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opencmis</groupId>
+ <artifactId>opencmis-provider-impl</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>2.5.2</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+</project>
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/AbstractSessionTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/AbstractSessionTest.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/AbstractSessionTest.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/AbstractSessionTest.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,52 @@
+/*
+ * 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.test;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.apache.opencmis.client.api.Session;
+import org.apache.opencmis.client.api.SessionFactory;
+
+/**
+ * Create a OpenCMIS test session based on fixture parameter.
+ */
+public abstract class AbstractSessionTest {
+
+ protected Log log = LogFactory.getLog(this.getClass());
+
+ /**
+ * test session
+ */
+ protected Session session = null;
+
+ @Before
+ public void setUp() throws Exception {
+ SessionFactory factory = Fixture.getSessionFactory();
+ this.session = factory.createSession(Fixture.getParamter());
+
+ Fixture.setUpTestData(this.session);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Fixture.teardownTestData(this.session);
+ }
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/AbstractSessionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/Fixture.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/Fixture.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/Fixture.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/Fixture.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,145 @@
+/*
+ * 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.test;
+
+import java.net.URI;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.opencmis.client.api.Session;
+import org.apache.opencmis.client.api.SessionFactory;
+import org.apache.opencmis.commons.SessionParameter;
+import org.apache.opencmis.test.mock.MockSessionFactory;
+
+/**
+ * Definition of unit environment for running test cases. Default implementation supports InMemory
+ * binding of OpenCMIS which can be used for stand alone test cases. Within test unit suite it is
+ * possible to overwrite the fixture.
+ *
+ */
+public class Fixture {
+
+ public static String PROPERTY_FILTER = "*";
+ /*
+ * general
+ */
+ public static String TEST_ROOT_FOLDER_NAME = null;
+ public static String FOLDER_TYPE_ID = "test.folder";
+ public static String DOCUMENT_TYPE_ID = "test.file";
+ public static String QUERY = "SELECT * FROM cmis:document";
+ /*
+ * cmis objects
+ */
+ public static String FOLDER1_NAME = "folder.1";
+ public static String FOLDER2_NAME = "folder.2";
+ public static String DOCUMENT1_NAME = "document.1.txt";
+ public static String DOCUMENT2_NAME = "document.2.txt";
+
+ /*
+ * properties
+ */
+ public static String PROPERTY_NAME_STRING = "StringProperty";
+ public static String PROPERTY_VALUE_STRING = "abc";
+ public static String PROPERTY_NAME_INTEGER = "IntegerProperty";
+ public static Integer PROPERTY_VALUE_INTEGER = new Integer(4711);
+ public static String PROPERTY_NAME_BOOLEAN = "BooleanProperty";
+ public static Boolean PROPERTY_VALUE_BOOLEAN = new Boolean(true);
+ public static String PROPERTY_NAME_DOUBLE = "DoubleProperty";
+ public static Double PROPERTY_VALUE_DOUBLE = new Double(1.0);
+ public static String PROPERTY_NAME_FLOAT = "FloatProperty";
+ public static Float PROPERTY_VALUE_FLOAT = new Float(1.0);
+ public static String PROPERTY_NAME_ID = "DoubleProperty";
+ public static String PROPERTY_VALUE_ID = "xyz";
+ public static String PROPERTY_NAME_HTML = "HtmlProperty";
+ public static String PROPERTY_VALUE_HTML = "<body>";
+ public static String PROPERTY_NAME_DATETIME = "DateTimeProperty";
+ public static Calendar PROPERTY_VALUE_DATETIME = GregorianCalendar.getInstance();
+ public static String PROPERTY_NAME_URI = "UriProperty";
+ public static URI PROPERTY_VALUE_URI = URI.create("http://foo.com");
+ public static final String PROPERTY_NAME_STRING_MULTI_VALUED = "MultiValuedStringProperty";
+
+ static {
+ Fixture.TEST_ROOT_FOLDER_NAME = "test_" + UUID.randomUUID().toString();
+ }
+
+ /**
+ * @return session parameter
+ */
+ public static Map<String, String> getParamter() {
+ return paramter;
+ }
+
+ /**
+ * Overwriting default session parameter.
+ *
+ * @param paramter
+ */
+ public static void setParamter(Map<String, String> paramter) {
+ Fixture.paramter = paramter;
+ }
+
+ /**
+ * session parameter.
+ */
+ private static Map<String, String> paramter = null;
+
+ /**
+ * Overwriting default session factory.
+ *
+ * @param factory
+ */
+ public static void setSessionFactory(SessionFactory factory) {
+ Fixture.factory = factory;
+ }
+
+ /**
+ * @return factory
+ */
+ public static SessionFactory getSessionFactory() {
+ return Fixture.factory;
+ }
+
+ /**
+ * factory
+ */
+ private static SessionFactory factory = null;
+
+ static {
+ // Mock as default
+ Map<String, String> parameter = new HashMap<String, String>();
+
+ parameter.put(SessionParameter.USER, "Mr. Mock");
+ parameter.put(SessionParameter.PASSWORD, "*mock#");
+ parameter.put(SessionParameter.LOCALE_ISO639_LANGUAGE, "EN");
+
+ Fixture.paramter = parameter;
+ Fixture.factory = new MockSessionFactory();
+ }
+
+ public static void setUpTestData(Session session) {
+
+ }
+
+ public static void teardownTestData(Session session) {
+
+ }
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/Fixture.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/LogReportTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/LogReportTest.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/LogReportTest.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/LogReportTest.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,38 @@
+/*
+ * 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.test;
+
+import org.junit.Test;
+
+/**
+ * Write log entry
+ */
+public class LogReportTest extends AbstractSessionTest {
+
+ @Test
+ public void report() {
+ this.log.info("---------------------------------------------------------------");
+ this.log.info("--- CMIS Test Setup -------------------------------------------");
+ this.log.info("---------------------------------------------------------------");
+ this.log.info("test suite: " + "default");
+ this.log.info("session factory: " + Fixture.getSessionFactory().getClass());
+ this.log.info("session parameter: " + Fixture.getParamter());
+ this.log.info("---------------------------------------------------------------");
+ }
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/LogReportTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/ReadOnlyAclCapabilityTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/ReadOnlyAclCapabilityTest.java?rev=910572&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/ReadOnlyAclCapabilityTest.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/ReadOnlyAclCapabilityTest.java Tue Feb 16 16:03:38 2010
@@ -0,0 +1,77 @@
+/*
+ * 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.test;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Test;
+import org.apache.opencmis.client.api.AclPermission;
+import org.apache.opencmis.client.api.repository.AclPermissionMapping;
+import org.apache.opencmis.client.api.repository.RepositoryAclCapabilities;
+import org.apache.opencmis.client.api.repository.RepositoryCapabilities;
+import org.apache.opencmis.client.api.repository.RepositoryInfo;
+import org.apache.opencmis.commons.enums.AclPropagation;
+import org.apache.opencmis.commons.enums.CapabilityAcl;
+
+public class ReadOnlyAclCapabilityTest extends AbstractSessionTest {
+
+ private RepositoryAclCapabilities aclCapabilities = null;
+
+ @Before
+ public void setup() throws Exception {
+ super.setUp();
+
+ RepositoryInfo r = this.session.getRepositoryInfo();
+ // capabilities
+ RepositoryCapabilities repcap = r.getCapabilities();
+ CapabilityAcl capacl = repcap.getAclSupport();
+
+ if (capacl != CapabilityAcl.NONE) {
+ // acl capabilities
+ this.aclCapabilities = r.getAclCapabilities();
+ }
+
+ Assume.assumeNotNull(this.aclCapabilities);
+ }
+
+ @Test
+ public void repositoryCapabilitiesAclPropagation() {
+ AclPropagation aclprop = this.aclCapabilities.getAclPropagation();
+ switch (aclprop) {
+ case OBJECTONLY:
+ break;
+ case PROPAGATE:
+ break;
+ case REPOSITORYDETERMINED:
+ break;
+ default:
+ Assert.fail("enumeration not supported");
+ }
+ }
+
+ @Test
+ public void repositoryCapabilitiesAclPermissionMapping() {
+ AclPermissionMapping apm = this.aclCapabilities.getAddPolicyObjectPermissions();
+ List<AclPermission> aclps = apm.getPermissions();
+ Assert.assertNotNull(aclps);
+ }
+}
Propchange: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/test/java/org/apache/opencmis/test/ReadOnlyAclCapabilityTest.java
------------------------------------------------------------------------------
svn:eol-style = native