You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by dp...@apache.org on 2009/04/15 12:49:35 UTC
svn commit: r765129 [2/5] - in /jackrabbit/sandbox/chemistry: ./
chemistry-api/ chemistry-api/src/ chemistry-api/src/main/
chemistry-api/src/main/java/ chemistry-api/src/main/java/org/
chemistry-api/src/main/java/org/apache/ chemistry-api/src/main/java...
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,717 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.type.BaseType;
+
+/**
+ * A SPI connection to a CMIS Repository.
+ * <p>
+ * This API contains low-level methods that mirror the CMIS specification.
+ *
+ * @author Florent Guillaume
+ */
+public interface SPI {
+
+ /**
+ * Gets the high-level connection for this SPI connection.
+ *
+ * @return the connection
+ */
+ Connection getConnection();
+
+ /*
+ * ----- Navigation Services -----
+ */
+
+ /**
+ * Gets the descendants of a folder.
+ * <p>
+ * Returns the descendant objects contained at one or more levels in the
+ * tree rooted at the specified folder. The ordering and tree walk algorithm
+ * is repository-specific, but should be consistent. A depth of 1 means
+ * returning only the direct children (same as {@link #getChildren}
+ * <p>
+ * Only the filter-selected properties associated with each object are
+ * returned. The content stream is not returned.
+ * <p>
+ * For a repository that supports version-specific filing, this will return
+ * the version of the documents in the folder specified by the user filing
+ * the documents. Otherwise, the latest version of the documents will be
+ * returned.
+ * <p>
+ * If type is {@code null}, then at each level folders should be returned
+ * before other types of objects.
+ * <p>
+ * As relationships are not fileable, type cannot be
+ * {@link BaseType#RELATIONSHIP}. However, if includeRelationships is set
+ * then relationships are also returned for each returned object, according
+ * to the value of the parameter.
+ * <p>
+ * If includeAllowableActions is {@code true}, the repository will return
+ * the allowable actions for the current user for each descendant object as
+ * part of the results.
+ * <p>
+ * When returning more than one level, the objects are nested.
+ *
+ * @param folderId the folder ID
+ * @param type the base type, or {@code null} for all types
+ * @param depth the depth, or {@code -1} for all levels
+ * @param filter the properties filter, or {@code null} for all properties
+ * @param includeAllowableActions {@code true} to include allowable actions
+ * @param includeRelationships {@code true} if relationships should be
+ * included as well
+ * @param orderBy an {@code ORDER BY} clause, or {@code null}
+ */
+ // TODO return type for a tree
+ List<ObjectEntry> getDescendants(String folderId, BaseType type, int depth,
+ String filter, boolean includeAllowableActions,
+ boolean includeRelationships, String orderBy);
+
+ /**
+ * Gets the direct children of a folder.
+ * <p>
+ * Only the filter-selected properties associated with each object are
+ * returned. The content stream is not returned.
+ * <p>
+ * For a repository that supports version-specific filing, this will return
+ * the version of the documents in the folder specified by the user filing
+ * the documents. Otherwise, the latest version of the documents will be
+ * returned.
+ * <p>
+ * Ordering is repository-specific, except that if the repository state has
+ * not changed then the ordering remains consistent across invocations.
+ * <p>
+ * If type is {@code null}, then at each level folders should be returned
+ * before other types of objects.
+ * <p>
+ * As relationships are not fileable, type cannot be
+ * {@link BaseType#RELATIONSHIP}. However, if includeRelationships is set
+ * then relationships are also returned for each returned object, according
+ * to the value of the parameter.
+ * <p>
+ * If includeAllowableActions is {@code true}, the repository will return
+ * the allowable actions for the current user for each descendant object as
+ * part of the results.
+ * <p>
+ * When returning more than one level, the objects are nested.
+ * <p>
+ * The return value hasMoreItems is filled if {@code maxItems > 0}.
+ *
+ * @param folderId the folder ID
+ * @param type the base type, or {@code null} for all types
+ * @param filter the properties filter, or {@code null} for all properties
+ * @param includeAllowableActions {@code true} to include allowable actions
+ * @param includeRelationships {@code true} if relationships should be
+ * included as well
+ * @param maxItems the maximum number of objects to returned, or {@code 0}
+ * for a repository-specific default
+ * @param skipCount the skip count
+ * @param orderBy an {@code ORDER BY} clause, or {@code null}
+ * @param hasMoreItems a 1-value boolean array to return a flag stating if
+ * there are more items
+ */
+ List<ObjectEntry> getChildren(String folderId, BaseType type,
+ String filter, boolean includeAllowableActions,
+ boolean includeRelationships, int maxItems, int skipCount,
+ String orderBy, boolean[] hasMoreItems);
+
+ /**
+ * Gets the parent of a folder.
+ * <p>
+ * Returns {@code null} if the specified folder is the root folder.
+ * <p>
+ * To find the parent of a non-folder, use {@link #getObjectParents}.
+ * <p>
+ * If returnToRoot is {@code false}, returns only the immediate parent of
+ * the folder. If {@code true}, return an ordered list of all ancestor
+ * folders from the specified folder to the root folder. The resulting list
+ * is ordered by ancestry, closest to specified folder first. However, as
+ * XML clients may not always respect ordering, repositories should always
+ * include the parent and the ObjectID property in the filter to allow
+ * re-ordering if necessary.
+ *
+ * @param folderId the folder ID
+ * @param filter the properties filter, or {@code null} for all properties
+ * @param includeAllowableActions {@code true} to include allowable actions
+ * @param includeRelationships {@code true} if relationships should be
+ * included as well
+ * @param returnToRoot {@code true} if all ancestors must be returned
+ * @return the parents and optionally relationships
+ */
+ List<ObjectEntry> getFolderParent(String folderId, String filter,
+ boolean includeAllowableActions, boolean includeRelationships,
+ boolean returnToRoot);
+
+ /**
+ * Gets the direct parents of an object.
+ * <p>
+ * The object must be a non-folder, fileable object.
+ * <p>
+ * To find the parent of a folder, use {@link #getFolderParent}.
+ *
+ * @param objectId the object ID
+ * @param filter the properties filter, or {@code null} for all properties
+ * @param includeAllowableActions {@code true} to include allowable actions
+ * @param includeRelationships {@code true} if relationships should be
+ * included as well
+ * @param maxItems the maximum number of objects to returned, or {@code 0}
+ * for a repository-specific default
+ * @param skipCount the skip count
+ * @return the collection of parent folders
+ */
+ Collection<ObjectEntry> getObjectParents(String objectId, String filter,
+ boolean includeAllowableActions, boolean includeRelationships);
+
+ /**
+ * Gets the list of documents that are checked out that the user has access
+ * to.
+ * <p>
+ * Most likely this will be the set of documents checked out by the user, bu
+ * the repository may also include checked-out objects that the calling user
+ * has access to, but did not check out.
+ * <p>
+ * If folderId is not {@code null}, then the results include only direct
+ * children of that folder.
+ * <p>
+ * The return value hasMoreItems is filled if {@code maxItems > 0}.
+ *
+ * @param folderId the folder ID, or {@code null}
+ * @param filter
+ * @param includeAllowableActions
+ * @param includeRelationships {@code true} if relationships should be
+ * included as well
+ * @param maxItems
+ * @param hasMoreItems a 1-value boolean array to return a flag stating if
+ * there are more items
+ * @param skipCount
+ */
+ Collection<ObjectEntry> getCheckedoutDocuments(String folderId,
+ String filter, boolean includeAllowableActions,
+ boolean includeRelationships, int maxItems, int skipCount,
+ boolean[] hasMoreItems);
+
+ /*
+ * ----- Object Services -----
+ */
+
+ /**
+ * Creates a document.
+ * <p>
+ * Creates a document of the specified type, and optionally adds the
+ * document to a folder.
+ * <p>
+ * The versioningState input is used to create a document in a
+ * {@link VersioningState#CHECKED_OUT CHECKED_OUT} state, or as a checked-in
+ * {@link VersioningState#MINOR MINOR} version, or as a checked-in
+ * {@link VersioningState#MAJOR MAJOR} version. If created in a
+ * {@link VersioningState#CHECKED_OUT CHECKED_OUT} state, the object is a
+ * private working copy and there is no corresponding
+ * "checked out document".
+ *
+ * @param typeId the document type ID
+ * @param properties the properties
+ * @param folderId the containing folder ID, or {@code null}
+ * @param contentStream the content stream, or {@code null}
+ * @param versioningState the versioning state
+ * @return the ID of the created document
+ */
+ String createDocument(String typeId, Map<String, Serializable> properties,
+ String folderId, ContentStream contentStream,
+ VersioningState versioningState);
+
+ /**
+ * Creates a folder.
+ * <p>
+ * Creates a folder object of the specified type.
+ *
+ * @param typeId the folder type ID
+ * @param properties the properties
+ * @param folderId the containing folder ID
+ * @return the ID of the created folder
+ */
+ String createFolder(String typeId, Map<String, Serializable> properties,
+ String folderId);
+
+ /**
+ * Creates a relationship.
+ * <p>
+ * Creates a relationship of the specified type.
+ *
+ * @param typeId the relationship type ID
+ * @param properties the properties
+ * @param sourceId the source ID
+ * @param targetId the target ID
+ * @return the ID of the created relationship
+ */
+ String createRelationship(String typeId,
+ Map<String, Serializable> properties, String sourceId,
+ String targetId);
+
+ /**
+ * Creates a policy.
+ * <p>
+ * Creates a policy of the specified type, and optionally adds the policy to
+ * a folder.
+ *
+ * @param typeId the relationship type ID
+ * @param properties the properties
+ * @param folderId the containing folder ID, or {@code null}
+ * @return the ID of the created policy
+ */
+ String createPolicy(String typeId, Map<String, Serializable> properties,
+ String folderId);
+
+ /**
+ * Gets the allowable actions.
+ * <p>
+ * Returns the list of allowable actions for an object based on the current
+ * user's context, subject to any access constraints that are currently
+ * imposed by the repository.
+ *
+ * @param objectId the object ID
+ * @param asUser the user for which the check should be made, or {@code
+ * null} for the current user
+ * @return the allowable actions
+ */
+ Collection<String> getAllowableActions(String objectId, String asUser);
+
+ /**
+ * Gets the properties of an object.
+ * <p>
+ * Returns the properties of an object, and optionally the operations that
+ * the user is allowed to perform on the object.
+ * <p>
+ * If a returnVersion is specified, it's actually the properties of that
+ * version of the given object that is returned.
+ * <p>
+ * The content stream of the object is not returned, use
+ * {@link #getContentStream} for that.
+ *
+ * @param objectId the object ID
+ * @param returnVersion the version to be returned
+ * @param filter the properties filter, or {@code null} for all properties
+ * @param includeAllowableActions {@code true} to include allowable actions
+ * @param includeRelationships {@code true} if relationships should be
+ * included as well
+ * @return the properties of the object
+ */
+ ObjectEntry getProperties(String objectId, ReturnVersion returnVersion,
+ String filter, boolean includeAllowableActions,
+ boolean includeRelationships);
+
+ /**
+ * Gets the content stream for a document.
+ *
+ * @param documentId the document ID
+ * @param offset the offset into the content stream
+ * @param length the length of stream to return, or {@code -1} for all
+ * @return the specified part of the content stream
+ * @throws IOException
+ */
+ InputStream getContentStream(String documentId, int offset, int length)
+ throws IOException;
+
+ /**
+ * Sets the content stream for a document.
+ * <p>
+ * Sets (creates or replaces) the content stream for the specified document.
+ * This is considered an update of the document object.
+ * <p>
+ * If the document is a private working copy, some repositories may not
+ * support updates.
+ * <p>
+ * Because repositories may automatically create new document versions on a
+ * user's behalf, the document ID returned may not match the one provided as
+ * a parameted to this method.
+ *
+ * @param documentId the document ID
+ * @param overwrite {@code true} if an already-existing content stream must
+ * be overwritten
+ * @param contentStream the content stream to set
+ * @return the document ID, which may differ from the passed one
+ */
+ void setContentStream(String documentId, boolean overwrite,
+ ContentStream contentStream);
+
+ /**
+ * Deletes the content stream for a document.
+ * <p>
+ * This does not delete properties. If there are other versions this does
+ * not affect them, their properties or their content streams. This does not
+ * change the ID of the document.
+ * <p>
+ * This is considered an update of the document object.
+ * <p>
+ * If the document is a private working copy, some repositories may not
+ * support updates.
+ *
+ * @param documentId the document ID
+ */
+ void deleteContentStream(String documentId);
+
+ /**
+ * Updates the properties of an object.
+ * <p>
+ * To remove a property, specify property with a {@code null} value. For
+ * multi-value properties, the whole list of values must be provided on
+ * every update. Properties not specified are not changed.
+ * <p>
+ * If the object is a private working copy, some repositories may not
+ * support updates.
+ * <p>
+ * If a changeToken was provided when the object was retrieved, the change
+ * token must be included as-is when calling this method.
+ * <p>
+ * Because repositories may automatically create new document versions on a
+ * user's behalf, the object ID returned may not match the one provided as a
+ * parameter to this method.
+ *
+ * @param objectId the object ID
+ * @param changeToken the change token, or {@code null}
+ * @param properties the properties to change
+ * @return the object ID, which may differ from the passed one
+ */
+ String updateProperties(String objectId, String changeToken,
+ Map<String, Serializable> properties);
+
+ /**
+ * Moves the specified filed object from one folder to another.
+ * <p>
+ * The targetFolderId is the ID of the target folder into which the object
+ * has to be moved. When the object is multi-filed, a source folder ID to be
+ * moved out of must be specified.
+ *
+ * @param objectId the object ID
+ * @param targetFolderId the target folder ID
+ * @param sourceFolderId the source folder ID, or {@code null}
+ */
+ void moveObject(String objectId, String targetFolderId,
+ String sourceFolderId);
+
+ /**
+ * Deletes the specified object.
+ * <p>
+ * When a filed object is deleted, it is removed from all folders it is
+ * filed in.
+ * <p>
+ * This service deletes a specific version of a document object. To delete
+ * all versions, use {@link #deleteAllVersions}.
+ * <p>
+ * Deletion of a private working copy (checked out version) is the same as
+ * to cancel checkout.
+ *
+ * @param objectId the object ID
+ */
+ void deleteObject(String objectId);
+
+ /**
+ * Deletes a tree of objects.
+ * <p>
+ * Deletes the tree rooted at the specified folder (including that folder).
+ * <p>
+ * If a non-folder object is removed from the last folder it is filed in, it
+ * can continue to survive outside of the folder structure if the repository
+ * supports unfiling; this is controlled based on the unfiling parameter.
+ * <p>
+ * For repositories that support version-specific filing, this may delete
+ * some versions of a document but not necessarily all versions. For
+ * repositories that do not support version-specific filing, if a document
+ * is to be deleted, all versions are deleted.
+ * <p>
+ * This method is not transactional. However, if
+ * {@link Unfiling#DELETE_SINGLE_FILED DELETE_SINGLE_FILED} and some objects
+ * fail to delete, then single-filed objects are either deleted or kept,
+ * never just unfiled. This is so that user can call this method again to
+ * recover from the error by using the same tree.
+ * <p>
+ * The order in which deletion will happen is unspecified; however, any
+ * objects that are not deleted (e.g., because a previous object failed to
+ * delete) remain valid objects (including any applicable filing
+ * constraint).
+ * <p>
+ * Returns the collection of IDs of objects that could not be deleted. If
+ * all objects could be deleted, an empty collection is returned. If at
+ * least one object could not be deleted, then if continueOnFailure is
+ * {@code false} that single object ID is returned, otherwise all IDs of
+ * objects that could not be deleted are returned.
+ *
+ * @param folderId the folder ID
+ * @param unfiling how to unfile non-folder objects, if {@code null} then
+ * same as {@link Unfiling#DELETE}
+ * @param continueOnFailure {@code true} if failure to delete one object
+ * should not stop deletion of other objects
+ * @return the collection of IDs of objects that could not be deleted
+ */
+ Collection<String> deleteTree(String folderId, Unfiling unfiling,
+ boolean continueOnFailure);
+
+ /**
+ * Adds an existing non-folder, fileable object to a folder.
+ *
+ * @param objectId the object ID
+ * @param folderId the folder ID
+ */
+ void addObjectToFolder(String objectId, String folderId);
+
+ /**
+ * Removes a non-folder object from a folder or from all folders.
+ * <p>
+ * If folderId is {@code null}, then the the object is removed from all
+ * folders.
+ * <p>
+ * This never deletes the object, which means that if unfiling is not
+ * supported, and an object is to be removed from the last folder it exists
+ * in, or is to be removed from all folders, an exception will be thrown.
+ *
+ * @param objectId the object ID
+ * @param folderId the folder ID, or {@code null} for all folders
+ */
+ void removeObjectFromFolder(String objectId, String folderId);
+
+ /*
+ * ----- Discovery Services -----
+ */
+
+ /**
+ * Queries the repository for queryable objects.
+ * <p>
+ * The query is based on properties or an optional full-text string.
+ * <p>
+ * Content-streams are not returned as part of the query.
+ * <p>
+ * If searchAllVersions is {@code true}, and {@code CONTAINS()} is used in
+ * the query, an exception will be thrown if full-text search is not
+ * supported or if the repository does not have previous versions in the
+ * full-text index.
+ * <p>
+ * Returns a result table produced by the query statement. Typically each
+ * row of this table corresponds to an object, and each column corresponds
+ * to a property or a computed value as specified by the {@code SELECT}
+ * clause of the query statement.
+ * <p>
+ * If includeAllowableActions is {@code true}, the repository will return
+ * the allowable actions for the current user for each result object in the
+ * output table as an additional multi-valued column containing computed
+ * values of type String, provided that each row in the output table indeed
+ * corresponds to one object (which is true for a query without {@code JOIN}
+ * ). If each row in the output table does not correspond to a specific
+ * object and includeAllowableActions is {@code true}, then an exception
+ * will be thrown.
+ * <p>
+ * The return value hasMoreItems is filled if {@code maxItems > 0}.
+ *
+ * @param statement the SQL statement
+ * @param searchAllVersions {@code true} if all versions (not only that
+ * latest) must be searched
+ * @param includeAllowableActions {@code true} to include allowable actions
+ * @param includeRelationships {@code true} if relationships should be
+ * included as well
+ * @param maxItems the maximum number of objects to returned, or {@code 0}
+ * for a repository-specific default
+ * @param skipCount the skip count
+ * @param hasMoreItems
+ * @return the matching objects
+ */
+ // TODO returns a result set actually, there may be computed values
+ Collection<ObjectEntry> query(String statement, boolean searchAllVersions,
+ boolean includeAllowableActions, boolean includeRelationships,
+ int maxItems, int skipCount, boolean[] hasMoreItems);
+
+ /*
+ * ----- Versioning Services -----
+ */
+
+ /**
+ * Checks out a document.
+ * <p>
+ * Creates a private working copy of the document, copies the metadata and
+ * optionally content.
+ * <p>
+ * It is up to the repository to determine if updates to the current version
+ * (not private working copy) and prior versions are allowed if checked out.
+ * <p>
+ * Some repositories may not support updating of private working copies and
+ * the updates must then be supplied via {@link #checkIn}.
+ * <p>
+ * This method may remove update permission on prior versions.
+ * <p>
+ * The ID of the private working copy is returned.
+ * <p>
+ * The return value contentCopied[0] is set to {@code true} if the content
+ * is copied, {@code false} if not. Whether the content is copied on
+ * check-out or not is repository-specific.
+ *
+ * @param documentId the document ID
+ * @param contentCopied a return array of size 1
+ * @return ID of the private working copy
+ */
+ String checkOut(String documentId, boolean[] contentCopied);
+
+ /**
+ * Cancels a check-out.
+ * <p>
+ * Reverses the effect of a check-out. Removes the private working copy of
+ * the checked-out document, allowing other documents in the version series
+ * to be checked out again.
+ *
+ * @param documentId the private working copy ID
+ */
+ void cancelCheckOut(String documentId);
+
+ /**
+ * Checks in a private working copy.
+ * <p>
+ * Makes the private working copy the current version of the document.
+ *
+ * @param documentId the private working copy ID
+ * @param major {@code true} if the version is a major version
+ * @param properties the properties to set on the document, or {@code null}
+ * @param contentStream the content stream to set on the document, or
+ * {@code null}
+ * @param comment a check-in comment, or {@code null}
+ * @return the ID for the new version of the document
+ */
+ String checkIn(String documentId, boolean major,
+ Map<String, Serializable> properties, ContentStream contentStream,
+ String comment);
+
+ /**
+ * Gets the properties of the latest version.
+ * <p>
+ * Returns the properties of the latest version, or the latest major
+ * version, of the specified version series.
+ * <p>
+ * If the latest major version is requested and the series has no major
+ * version, an exception is thrown.
+ *
+ * @param versionSeriesId the version series ID
+ * @param majorVersion {@code true} if the last major version is requested
+ * @param filter the properties filter, or {@code null} for all properties
+ * @return a collection of properties
+ */
+ Map<String, Serializable> getPropertiesOfLatestVersion(
+ String versionSeriesId, boolean majorVersion, String filter);
+
+ /**
+ * Gets all the versions of a document.
+ * <p>
+ * Returns the list of all document versions for the specified version
+ * series, sorted by CREATION_DATE descending. All versions that the user
+ * can access, including checked-out version and private working copy, are
+ * returned.
+ *
+ * @param versionSeriesId the version series ID
+ * @param filter the properties filter, or {@code null} for all properties
+ */
+ Collection<ObjectEntry> getAllVersions(String versionSeriesId, String filter);
+
+ /**
+ * Deletes all the versions of a document.
+ * <p>
+ * Deletes all document versions in the specified version series.
+ *
+ * @param versionSeriesId the version series ID
+ */
+ void deleteAllVersions(String versionSeriesId);
+
+ /*
+ * ----- Relationship Services -----
+ */
+
+ /**
+ * Gets the relationships having as source or target a given document.
+ * <p>
+ * Returns a list of relationships associated with the given object,
+ * optionally of a specified relationship type, and optionally in a
+ * specified direction.
+ * <p>
+ * If typeId is {@code null}, returns relationships of any type.
+ * <p>
+ * Ordering is repository specific but consistent across requests.
+ *
+ * @param objectId the object ID
+ * @param direction the direction of relationships to include
+ * @param typeId the type ID, or {@code null}
+ * @param includeSubRelationshipTypes {@code true} if relationships of any
+ * sub-type of typeId are to be returned as well
+ * @param filter the properties filter, or {@code null} for all properties
+ * @param includeAllowableActions {@code true} to include allowable actions
+ * @param maxItems the maximum number of objects to returned, or {@code 0}
+ * for a repository-specific default
+ * @param skipCount the skip count
+ * @param hasMoreItems a 1-value boolean array to return a flag stating if
+ * there are more items
+ * @return the list of relationships
+ */
+ List<ObjectEntry> getRelationships(String objectId,
+ RelationshipDirection direction, String typeId,
+ boolean includeSubRelationshipTypes, String filter,
+ String includeAllowableActions, int maxItems, int skipCount,
+ boolean[] hasMoreItems);
+
+ /*
+ * ----- Policy Services -----
+ */
+
+ /**
+ * Applies a policy to an object.
+ * <p>
+ * The target object must be controllable.
+ *
+ * @param policyId the policy ID
+ * @param objectId the target object ID
+ */
+ void applyPolicy(String policyId, String objectId);
+
+ /**
+ * Removes a policy from an object.
+ * <p>
+ * Removes a previously applied policy from a target object. The policy is
+ * not deleted, and may still be applied to other objects.
+ * <p>
+ * The target object must be controllable.
+ *
+ * @param policyId the policy ID
+ * @param objectId the target object ID
+ */
+ void removePolicy(String policyId, String objectId);
+
+ /**
+ * Gets the policies applied to an object.
+ * <p>
+ * Returns the list of policy objects currently applied to a target object.
+ * Only policies that are directly (explicitly) applied to the target object
+ * are returned.
+ * <p>
+ * The target object must be controllable.
+ *
+ * @param objectId the target object ID
+ * @param filter the properties filter, or {@code null} for all properties
+ */
+ Collection<ObjectEntry> getAppliedPolicies(String objectId, String filter);
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/SPI.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Unfiling.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Unfiling.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Unfiling.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Unfiling.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry;
+
+/**
+ * Flag specifying how to unfile non-folder objects when a tree of objects is
+ * deleted through {@link Connection#deleteTree}.
+ *
+ * @author Florent Guillaume
+ */
+public enum Unfiling {
+
+ /**
+ * Unfile all non-folder objects from folders in this tree. They may remain
+ * filed in other folders, or may become unfiled if no other folder contains
+ * them.
+ */
+ UNFILE("unfile"),
+
+ /**
+ * Deletes non-folder objects filed only in this tree, and unfiles the
+ * others so they remain filed in other folders.
+ */
+ DELETE_SINGLE_FILED("deletesinglefiled"),
+
+ /**
+ * Deletes all non-folder objects in this tree.
+ */
+ DELETE("delete");
+
+ private final String value;
+
+ private Unfiling(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Unfiling.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/Unfiling.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/VersioningState.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/VersioningState.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/VersioningState.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/VersioningState.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry;
+
+/**
+ * State of a document when it is created.
+ *
+ * @author Florent Guillaume
+ */
+public enum VersioningState {
+
+ /**
+ * Create the document as a private working copy.
+ */
+ CHECKED_OUT("checkedout"),
+
+ /**
+ * Create the document as a checked in minor version.
+ */
+ MINOR("minor"),
+
+ /**
+ * Create the document as a checked in major version.
+ */
+ MAJOR("major");
+
+ private final String value;
+
+ private VersioningState(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/VersioningState.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/VersioningState.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Choice.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Choice.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Choice.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Choice.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.property;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * A CMIS Property Definition Choice.
+ *
+ * @author Florent Guillaume
+ */
+public interface Choice {
+
+ /**
+ * The choice name.
+ * <p>
+ * The name is used for presentation purpose.
+ *
+ * @return the name
+ */
+ String getName();
+
+ /**
+ * The choice value.
+ * <p>
+ * The value will be stored in the property when selected.
+ * <p>
+ * If {@code null}, then the name is displayed but not selectable.
+ *
+ * @return the value, or {@code null}
+ */
+ Serializable getValue();
+
+ /**
+ * The choice index.
+ * <p>
+ * The index provides guidance for the ordering of names when presented.
+ *
+ * @return the index
+ */
+ int getIndex();
+
+ /**
+ * The sub-choices, if hierarchical.
+ * <p>
+ * The sub-choices are returnd ordered by index.
+ *
+ * @return the collection of sub-choices, or {@code null} if none are
+ * provided
+ */
+ List<Choice> getSubChoices();
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Choice.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Choice.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Property.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Property.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Property.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Property.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.property;
+
+import java.io.Serializable;
+
+/**
+ * CMIS Object Property.
+ *
+ * @author Florent Guillaume
+ */
+public interface Property {
+
+ /*
+ * ----- Object -----
+ */
+
+ String ID = "ObjectId";
+
+ String URI = "Uri";
+
+ String TYPE_ID = "ObjectTypeId";
+
+ String CREATED_BY = "CreatedBy";
+
+ String CREATION_DATE = "CreationDate";
+
+ String LAST_MODIFIED_BY = "LastModifiedBy";
+
+ String LAST_MODIFICATION_DATE = "LastModificationDate";
+
+ String CHANGE_TOKEN = "ChangeToken";
+
+ /*
+ * ----- Document -----
+ */
+
+ String NAME = "Name";
+
+ String IS_IMMUTABLE = "IsImmutable";
+
+ String IS_LATEST_VERSION = "IsLatestVersion";
+
+ String IS_MAJOR_VERSION = "IsMajorVersion";
+
+ String IS_LATEST_MAJOR_VERSION = "IsLatestMajorVersion";
+
+ String VERSION_LABEL = "VersionLabel";
+
+ String VERSION_SERIES_ID = "VersionSeriesId";
+
+ String IS_VERSION_SERIES_CHECKED_OUT = "IsVersionSeriesCheckedOut";
+
+ String VERSION_SERIES_CHECKED_OUT_BY = "VersionSeriesCheckedOutBy";
+
+ String VERSION_SERIES_CHECKED_OUT_ID = "VersionSeriesCheckedOutId";
+
+ String CHECKIN_COMMENT = "CheckinComment";
+
+ String CONTENT_STREAM_ALLOWED = "ContentStreamAllowed";
+
+ String CONTENT_STREAM_LENGTH = "ContentStreamLength";
+
+ String CONTENT_STREAM_MIME_TYPE = "ContentStreamMimeType";
+
+ String CONTENT_STREAM_FILENAME = "ContentStreamFilename";
+
+ String CONTENT_STREAM_URI = "ContentStreamUri";
+
+ /*
+ * ----- Folder -----
+ */
+
+ // NAME as well
+ String PARENT_ID = "ParentId";
+
+ String ALLOWED_CHILD_OBJECT_TYPE_IDS = "AllowedChildObjectTypeIds";
+
+ /*
+ * ----- Relationship -----
+ */
+
+ String SOURCE_ID = "SourceId";
+
+ String TARGET_ID = "TargetId";
+
+ /*
+ * ----- Policy -----
+ */
+
+ String POLICY_NAME = "PolicyName";
+
+ String POLICY_TEXT = "PolicyText";
+
+ /**
+ * The property definition.
+ */
+ PropertyDefinition getDefinition();
+
+ /**
+ * Gets the property value.
+ */
+ Serializable getValue();
+
+ /**
+ * Sets the property value.
+ */
+ // for connection-tied live objects
+ void setValue(Serializable value);
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Property.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Property.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyDefinition.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyDefinition.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyDefinition.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,265 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.property;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.List;
+
+/**
+ * A CMIS Property Definition.
+ *
+ * @author Florent Guillaume
+ */
+public interface PropertyDefinition {
+
+ /**
+ * The property's name.
+ * <p>
+ * This identifies this property among all properties of this type,
+ * including inherited properties. This is also used as a column name in a
+ * SQL query. It may be in mixed case, but must uniquely identify this
+ * property case-insensitively, and must conform to the syntax rules for SQL
+ * identifiers.
+ *
+ * @return the property's name
+ */
+ String getName();
+
+ /**
+ * The property ID.
+ * <p>
+ * This contains a system-assigned ID which uniquely identifies this
+ * property.
+ * <p>
+ * Two properties of different names from different types may have the same
+ * ID if they are considered to represent "identical" information by the
+ * repository.
+ *
+ * @return the property ID
+ */
+ String getId();
+
+ /**
+ * The property's display name.
+ * <p>
+ * This is used for presentation by the application.
+ *
+ * @return the property's display name
+ */
+ String getDisplayName();
+
+ /**
+ * The property's description.
+ * <p>
+ * This is a description of the property, or {@code null} if none is
+ * provided.
+ *
+ * @return the property's description, or {@code null}
+ */
+ String getDescription();
+
+ /**
+ * Is the property inherited.
+ * <p>
+ * This indicates whether the property is inherited from the parent type or
+ * it is explicitly defined for the type from which this property definition
+ * was retrieved.
+ *
+ * @return {@code true} if the property is inherited
+ */
+ boolean isInherited();
+
+ /**
+ * The property's type.
+ * <p>
+ * This indicates the type of this property.
+ *
+ * @return the property's type
+ */
+ PropertyType getType();
+
+ /**
+ * Is the property multi-valued.
+ * <p>
+ * Repositories should preserve the ordering of values in a multi-valued
+ * property. That is, the order in which the values of a multi-valued
+ * property are returned in "read" operations should be the same as the
+ * order in which they were supplied during previous 'write" operation.
+ *
+ * @return true if the property is multi-valued
+ */
+ boolean isMultiValued();
+
+ /**
+ * The choices for this property.
+ * <p>
+ * This is optional and is only applicable to application-maintained
+ * properties. It specifies what property values are allowed. If choices are
+ * not specified, there is no constraint on the data value.
+ * <p>
+ * The choices are returned ordered by index.
+ *
+ * @return a list of choices, or {@code null} if no choices are provided
+ */
+ List<Choice> getChoices();
+
+ /**
+ * Are the choices open.
+ * <p>
+ * This is only applicable to properties that provide a value for
+ * {@link #getChoices}.
+ * <p>
+ * If {@code false}, then the value for the property must be one of the
+ * values specified by {@link #getChoices}. If {@code true}, then values
+ * other than those included from {@link #getChoices} may be used for the
+ * property.
+ *
+ * @return {@code true} if the choices are open
+ */
+ boolean isOpenChoice();
+
+ /**
+ * Is the property required.
+ * <p>
+ * A property that is required can never be {@code null}.
+ * <p>
+ * For non-read-only properties: the value of a required property is never
+ * {@code null}. If a value is not provided by the application, then the
+ * default value is used. If no default value is defined, then this
+ * constraint is violated.
+ * <p>
+ * For read-only properties: the value of a required system property must
+ * always be set by the repository or computed by the repository when it is
+ * requested by an application. A not required system property may be left
+ * {@code null}.
+ *
+ * @return {@code true} if the property is required
+ */
+ boolean isRequired();
+
+ /**
+ * The property's default value.
+ * <p>
+ * This is optional and only applicable to application-maintained
+ * properties. The property will have this value if a value is not provided
+ * by the application. Without a default value, the property value will be
+ * left {@code null} until a value is provided by the application.
+ *
+ * @return the default value, or {@code null} if none is provided
+ */
+ Serializable getDefaultValue();
+
+ /**
+ * The property's updatability status.
+ * <p>
+ * This can be {@link Updatability#READ_ONLY read-only},
+ * {@link Updatability#READ_WRITE read-write} or
+ * {@link Updatability#WHEN_CHECKED_OUT read-write when checked out}.
+ */
+ Updatability getUpdatability();
+
+ /**
+ * Is the property queryable.
+ * <p>
+ * This defines whether or not the property can appear in the {@code WHERE}
+ * clause of a SQL {@code SELECT} statement. Only the properties of a
+ * queryable type, both inherited and specifically defined properties, may
+ * be queryable.
+ * <p>
+ * Note that "Queryable" has a different meaning for type and for property.
+ * The former pertains to the {@code FROM} clause and the latter pertains to
+ * the {@code WHERE} clause.
+ *
+ * @return {@code true} if the property is queryable
+ */
+ boolean isQueryable();
+
+ /**
+ * Is the property orderable.
+ * <p>
+ * This defines whether or not the property can appear in the {@code ORDER
+ * BY} clause of a SQL {@code SELECT} statement.
+ * <p>
+ * Only single-valued properties of a queryable type may be orderable.
+ *
+ * @return {@code true} if the property is orderable
+ */
+ boolean isOrderable();
+
+ /**
+ * The precision for this decimal property.
+ * <p>
+ * This is the precision in bits supported for this property (32 or 64
+ * currently).
+ *
+ * @return the precisions
+ */
+ int getPrecision();
+
+ /**
+ * The minimum value for this integer property.
+ *
+ * @return the minimum value, or {@code null} if none is provided
+ */
+ Integer getMinValue();
+
+ /**
+ * The maximum value for this integer property.
+ *
+ * @return the maximum value, or {@code null} if none is provided
+ */
+ Integer getMaxValue();
+
+ /**
+ * The maximum length of this string property.
+ *
+ * @return the maximum length, or -1 if none is provided
+ */
+ int getMaxLength();
+
+ /**
+ * The URI of the XML schema for this XML property.
+ * <p>
+ * This provides the URI location of an XML schema to which the property
+ * value must conform.
+ *
+ * @return the URI of the XML schema for this property
+ */
+ URI getSchemaURI();
+
+ /**
+ * The encoding for this XML property.
+ * <p>
+ * This specifies the encoding used for the property value (e.g. UTF-8,
+ * etc.).
+ *
+ * @return the encoding for this property
+ */
+ String getEncoding();
+
+ /**
+ * Checks if a value can be set in this property.
+ *
+ * @param value the candidate value
+ * @return {@code true} if the value can be set, {@code false} if not
+ */
+ boolean validates(Serializable value);
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyDefinition.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyDefinition.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyType.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyType.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyType.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyType.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.property;
+
+/**
+ * The type of a CMIS property.
+ *
+ * @author Florent Guillaume
+ */
+public enum PropertyType {
+
+ /**
+ * A string property, represented as a {@link String}.
+ */
+ STRING("string"),
+
+ /**
+ * A decimal property, represented as a {@link java.math.BigDecimal
+ * BigDecimal}.
+ */
+ DECIMAL("decimal"),
+
+ /**
+ * An integer property, represented as a {@link Integer}.
+ */
+ INTEGER("integer"),
+
+ /**
+ * A boolean property, represented as a {@link Boolean}.
+ */
+ BOOLEAN("boolean"),
+
+ /**
+ * A date-time property, represented as a {@link java.util.Calendar
+ * Calendar}.
+ */
+ DATETIME("datetime"),
+
+ /**
+ * A URI property, represented as a {@link java.net.URI URI}.
+ */
+ URI("uri"),
+
+ /**
+ * An ID property, represented as a {@link String}.
+ */
+ ID("id"),
+
+ /**
+ * An XML property, represented as a String.
+ */
+ XML("xml"),
+
+ /**
+ * An HTML property, represented as a String.
+ */
+ HTML("html");
+
+ private final String value;
+
+ private PropertyType(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyType.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/PropertyType.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Updatability.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Updatability.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Updatability.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Updatability.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.property;
+
+/**
+ * The Updatability of a property.
+ *
+ * @author Florent Guillaume
+ */
+public enum Updatability {
+
+ /**
+ * Property is read-only.
+ * <p>
+ * A read-only property is a system property that is either maintained or
+ * computed by the repository. An application can not alter the property
+ * value directly using the updateProperties() service, and often can not
+ * explicitly set the property value when the object is created. In some
+ * cases, an application may indirectly cause a change in the property value
+ * as a result of calling a special-purpose service. For example, the
+ * ParentID property of a folder object is maintained by repository. An
+ * application can not alter its value using the updateProperties() service,
+ * but may use the moveObject() service to cause a change in the value of
+ * the ParentID property.
+ */
+ READ_ONLY("readonly"),
+
+ /**
+ * Property is read-write.
+ * <p>
+ * A "read + write" property is one that is updatable using the
+ * updateProperties() service.
+ */
+ READ_WRITE("readwrite"),
+
+ /**
+ * Property is read-write when checked out.
+ * <p>
+ * A read-write when checked out property is updatable when the update is
+ * made using a Private Working Copy object ID. That is, the update is
+ * either made on a Private Working Copy object or made using a "check in"
+ * service
+ */
+ WHEN_CHECKED_OUT("whencheckedout");
+
+ private final String value;
+
+ private Updatability(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Updatability.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/property/Updatability.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/JoinCapability.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/JoinCapability.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/JoinCapability.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/JoinCapability.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.repository;
+
+/**
+ * Support for inner and outer join in query.
+ *
+ * @author Florent Guillaume
+ */
+public enum JoinCapability {
+
+ /**
+ * No join support.
+ */
+ NO_JOIN("nojoin"),
+
+ /**
+ * Support inner join only.
+ */
+ INNER_ONLY("inneronly"),
+
+ /**
+ * Support inner and outer join.
+ */
+ INNER_AND_OUTER("innerandouter");
+
+ private final String value;
+
+ private JoinCapability(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/JoinCapability.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/JoinCapability.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/QueryCapability.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/QueryCapability.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/QueryCapability.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/QueryCapability.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.repository;
+
+/**
+ * Support for query on full-text or metadata.
+ *
+ * @author Florent Guillaume
+ */
+public enum QueryCapability {
+
+ /**
+ * No query support.
+ */
+ NONE("none"),
+
+ /**
+ * Support only metadata queries.
+ */
+ METADATA_ONLY("metadataonly"),
+
+ /**
+ * Support only full-text queries.
+ */
+ FULL_TEXT_ONLY("fulltextonly"),
+
+ /**
+ * Support both full-text and metadata queries, but not in the same query.
+ */
+ BOTH_SEPARATE("bothseparate"),
+
+ /**
+ * Support both full-text and metadata queries, in the same query.
+ */
+ BOTH_COMBINED("bothcombined");
+
+ private final String value;
+
+ private QueryCapability(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/QueryCapability.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/QueryCapability.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/Repository.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/Repository.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/Repository.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/Repository.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.repository;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.Connection;
+import org.apache.chemistry.property.PropertyDefinition;
+import org.apache.chemistry.type.Type;
+
+/**
+ * A CMIS Repository.
+ *
+ * @author Florent Guillaume
+ * @author Bogdan Stefanescu
+ */
+public interface Repository extends RepositoryEntry {
+
+ /**
+ * Gets a connection to the repository.
+ * <p>
+ * This connection can be used to use the other services offered by the
+ * repository.
+ * <p>
+ * The connection parameters are repository-dependent; they can be used for
+ * instance to authenticate a user.
+ *
+ * @param parameters connection parameters, or {@code null}
+ */
+ Connection getConnection(Map<String, Serializable> parameters);
+
+ /*
+ * ----- Repository Services -----
+ */
+
+ /**
+ * Returns information about the repository and the capabilities it
+ * supports.
+ *
+ * @return information about the repository
+ */
+ RepositoryInfo getInfo();
+
+ /**
+ * Gets the type definitions of the repository.
+ * <p>
+ * If typeId is provided, only the specific type and its descendants are
+ * returned, otherwise all types are returned.
+ * <p>
+ * If returnPropertyDefinitions is {@code false}, then the
+ * {@link PropertyDefinition}s will not be returned in each {@link Type}.
+ *
+ * @param typeId the base type ID, or {@code null}
+ * @return the repository's types
+ */
+ Collection<Type> getTypes(String typeId, boolean returnPropertyDefinitions);
+
+ /**
+ * Gets the type definitions of the repository.
+ * <p>
+ * If typeId is provided, only the specific type and its descendants are
+ * returned, otherwise all types are returned.
+ * <p>
+ * If returnPropertyDefinitions is {@code false}, then the
+ * {@link PropertyDefinition}s will not be returned in each {@link Type}.
+ * <p>
+ * If maxItems is {@code 0} then a repository-specific maximum will be used.
+ *
+ * @param typeId the base type ID, or {@code null}
+ * @param returnPropertyDefinitions {@code false} to skip property
+ * definitions
+ * @param maxItems the maximum number of items, or {@code 0}
+ * @param skipCount the number of results to skip in the list
+ * @param hasMoreItems a 1-value boolean array to return a flag stating if
+ * there are more items
+ * @return the repository's types, or a subset of them
+ */
+ // this API is present to mirror the wire protocol
+ List<Type> getTypes(String typeId, boolean returnPropertyDefinitions,
+ int maxItems, int skipCount, boolean[] hasMoreItems);
+
+ /**
+ * Gets the definition for the specified type.
+ *
+ * @param typeId the type ID
+ * @return the type definition
+ */
+ Type getType(String typeId);
+
+
+ /**
+ * Get an extension service on this repository.
+ * This is an optional operation and may always return null if not supported.
+ * @param <T>
+ * @param klass the interface for the requested extension
+ * @return the extension instance if any implementation was found
+ */
+ <T> T getExtension(Class<T> klass);
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/Repository.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/Repository.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryCapabilities.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryCapabilities.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryCapabilities.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryCapabilities.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.repository;
+
+/**
+ * The capabilities of a CMIS Repository.
+ *
+ * @author Florent Guillaume
+ */
+public interface RepositoryCapabilities {
+
+ /**
+ * Ability to file a document (or other fileable object) in more than a
+ * folder.
+ */
+ boolean hasMultifiling();
+
+ /**
+ * Ability to leave a document (or other fileable object) not filed in a any
+ * folder.
+ */
+ boolean hasUnfiling();
+
+ /**
+ * Ability to file a particular version of a document in a folder.
+ */
+ boolean hasVersionSpecificFiling();
+
+ /**
+ * Ability to update the private working copy of a checked-out document.
+ */
+ boolean isPWCUpdatable();
+
+ /**
+ * Ability to include the private working copy of checked-out documents in
+ * query search scope; otherwise private working copies are not searchable.
+ */
+ boolean isPWCSearchable();
+
+ /**
+ * Ability to include non-latest versions of document in query search scope;
+ * otherwise only the latest version of each document is searchable.
+ */
+ // prefixed by "is" to follow the JavaBean spec
+ boolean isAllVersionsSearchable();
+
+ /**
+ * Support for query on full-text or metadata.
+ */
+ QueryCapability getQueryCapability();
+
+ /**
+ * Support for inner and outer join in query.
+ */
+ JoinCapability getJoinCapability();
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryCapabilities.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryCapabilities.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryEntry.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryEntry.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryEntry.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryEntry.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.repository;
+
+import java.net.URI;
+
+/**
+ * Basic information about a CMIS Repository.
+ *
+ * @author Florent Guillaume
+ */
+public interface RepositoryEntry {
+
+ /**
+ * The repository ID.
+ * <p>
+ * The ID is an opaque string.
+ */
+ String getId();
+
+ /**
+ * The repository name.
+ */
+ String getName();
+
+ /**
+ * The repository URI.
+ */
+ URI getURI();
+
+ /**
+ * The relationship name to another repository.
+ * <p>
+ * This returns a value only when this basic info was returned by
+ * {@link RepositoryInfo#getRelatedRepositories}.
+ *
+ * @return a relationship name, or {@code null}
+ */
+ String getRelationshipName();
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryEntry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryEntry.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryInfo.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryInfo.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryInfo.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.repository;
+
+import java.util.Collection;
+
+/**
+ * Information about a CMIS Repository.
+ *
+ * @author Florent Guillaume
+ */
+public interface RepositoryInfo extends RepositoryEntry {
+
+ /**
+ * The repository description.
+ */
+ String getDescription();
+
+ /**
+ * The ID of the root Folder of the repository.
+ */
+ String getRootFolderId();
+
+ /**
+ * The repository vendor name.
+ */
+ String getVendorName();
+
+ /**
+ * The repository product name.
+ */
+ String getProductName();
+
+ /**
+ * The repository product version.
+ */
+ String getProductVersion();
+
+ /**
+ * The CMIS version supported by the repository.
+ */
+ String getVersionSupported();
+
+ /**
+ * Some repository-specific information.
+ *
+ * @return an XML Document, or {@code null} if no information is provided
+ */
+ org.w3c.dom.Document getRepositorySpecificInformation();
+
+ /**
+ * The capabilities of the repository.
+ */
+ RepositoryCapabilities getCapabilities();
+
+ /**
+ * The related repositories.
+ *
+ * @return the related repositories, or {@code null} if no information is
+ * provided
+ */
+ Collection<RepositoryEntry> getRelatedRepositories();
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryInfo.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryService.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryService.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryService.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.repository;
+
+import java.util.Collection;
+
+/**
+ * CMIS Repository Service.
+ *
+ * @author Florent Guillaume
+ */
+public interface RepositoryService {
+
+ /**
+ * Gets a list of available repositories.
+ *
+ * @return a collection of repository entries
+ */
+ Collection<RepositoryEntry> getRepositories();
+
+ /**
+ * Gets the default repository, if any.
+ * <p>
+ * If not default repository is available, {@code null} is returned.
+ *
+ * @return the default repository, or {@code null}
+ */
+ Repository getDefaultRepository();
+
+ /**
+ * Gets a repository identified by its ID.
+ *
+ * @param repositoryId the repository ID
+ */
+ Repository getRepository(String repositoryId);
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/repository/RepositoryService.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/BaseType.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/BaseType.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/BaseType.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/BaseType.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.type;
+
+/**
+ * The CMIS base types.
+ *
+ * @author Florent Guillaume
+ */
+public enum BaseType {
+
+ /**
+ * A document represents a standalone information asset.
+ */
+ DOCUMENT("document"),
+
+ /**
+ * A folder represents a logical container for a collection of fileable
+ * objects, which include folders and documents. Folders are used to
+ * organize fileable objects.
+ */
+ FOLDER("folder"),
+
+ /**
+ * A relationship represents a directional relationship between two
+ * independent objects.
+ */
+ RELATIONSHIP("relationship"),
+
+ /**
+ * A policy represents an administrative policy, which may be applied to one
+ * or more controllable objects
+ */
+ POLICY("policy");
+
+ private final String value;
+
+ private BaseType(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/BaseType.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/BaseType.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/ContentStreamPresence.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/ContentStreamPresence.java?rev=765129&view=auto
==============================================================================
--- jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/ContentStreamPresence.java (added)
+++ jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/ContentStreamPresence.java Wed Apr 15 10:49:31 2009
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2009 Nuxeo SA <http://nuxeo.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Florent Guillaume
+ */
+package org.apache.chemistry.type;
+
+/**
+ * The presence status for a content stream.
+ *
+ * @author Florent Guillaume
+ */
+public enum ContentStreamPresence {
+
+ /**
+ * A content stream is not allowed.
+ */
+ NOT_ALLOWED("notallowed"),
+
+ /**
+ * A content stream is allowed but optional.
+ */
+ ALLOWED("allowed"),
+
+ /**
+ * A content stream is required.
+ */
+ REQUIRED("required");
+
+ private final String value;
+
+ private ContentStreamPresence(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/ContentStreamPresence.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/chemistry/chemistry-api/src/main/java/org/apache/chemistry/type/ContentStreamPresence.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url