/* * 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.chemistry.opencmis.client.api; import java.io.InputStream; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.chemistry.opencmis.commons.data.Ace; import org.apache.chemistry.opencmis.commons.data.Acl; import org.apache.chemistry.opencmis.commons.data.ContentStream; import org.apache.chemistry.opencmis.commons.data.ObjectData; import org.apache.chemistry.opencmis.commons.data.ObjectList; import org.apache.chemistry.opencmis.commons.data.Properties; import org.apache.chemistry.opencmis.commons.data.PropertyData; import org.apache.chemistry.opencmis.commons.data.RenditionData; import org.apache.chemistry.opencmis.commons.data.RepositoryInfo; import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition; import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition; import org.apache.chemistry.opencmis.commons.enums.Updatability; /** * A factory to create and convert CMIS objects. * * Custom {@link ObjectFactory} implementations may use the convert methods to * inject specific implementations of the interfaces when the data is transfered * from the low level API to the high level API. * * @see org.apache.chemistry.opencmis.client.api.Session#getObjectFactory() */ public interface ObjectFactory { void initialize(Session session, Map<String, String> parameters); // repository info RepositoryInfo convertRepositoryInfo(RepositoryInfo repositoryInfo); // ACL and ACE Acl convertAces(List<Ace> aces); Acl createAcl(List<Ace> aces); Ace createAce(String principal, List<String> permissions); // policies List<String> convertPolicies(List<Policy> policies); // renditions Rendition convertRendition(String objectId, RenditionData rendition); // content stream /** * Creates an object that implements the {@link ContentStream} interface. * * @param filename * the filename, should be set * @param length * the length of the stream or -1 if the length is unknown * @param mimetype * the MIME type, if unknown "application/octet-stream" should be * used * @param stream * the stream, should not be <code>null</code> * * @return the {@link ContentStream} object */ ContentStream createContentStream(String filename, long length, String mimetype, InputStream stream); /** * Creates an object that implements the {@link ContentStream} interface. * * @param filename * the filename, should be set * @param length * the length of the stream or -1 if the length is unknown * @param mimetype * the MIME type, if unknown "application/octet-stream" should be * used * @param stream * the stream, should not be <code>null</code> * @param partial * if <code>false</code> the stream represents the full content, * if <code>true</code> the stream is only a part of the content * * @return the {@link ContentStream} object */ ContentStream createContentStream(String filename, long length, String mimetype, InputStream stream, boolean partial); /** * Converts a high level {@link ContentStream} object into a low level * {@link ContentStream} object. * * @param contentStream * the original {@link ContentStream} object * @return the {@link ContentStream} object */ ContentStream convertContentStream(ContentStream contentStream); // types ObjectType convertTypeDefinition(TypeDefinition typeDefinition); ObjectType getTypeFromObjectData(ObjectData objectData); // properties <T> Property<T> createProperty(PropertyDefinition<T> type, List<T> values); Map<String, Property<?>> convertProperties(ObjectType objectType, Collection<SecondaryType> secondaryTypes, Properties properties); Properties convertProperties(Map<String, ?> properties, ObjectType type, Collection<SecondaryType> secondaryTypes, Set<Updatability> updatabilityFilter); List<PropertyData<?>> convertQueryProperties(Properties properties); // objects CmisObject convertObject(ObjectData objectData, OperationContext context); QueryResult convertQueryResult(ObjectData objectData); ChangeEvent convertChangeEvent(ObjectData objectData); ChangeEvents convertChangeEvents(String changeLogToken, ObjectList objectList); }