You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2010/04/16 16:00:25 UTC

svn commit: r934878 [5/13] - in /incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src: main/java/org/apache/chemistry/opencmis/inmemory/ main/java/org/apache/chemistry/opencmis/inmemory/clientprovider/ mai...

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java Fri Apr 16 14:00:23 2010
@@ -46,230 +46,220 @@ import org.apache.chemistry.opencmis.ser
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-public class InMemoryVersioningServiceImpl extends AbstractServiceImpl implements
-    CmisVersioningService {
+public class InMemoryVersioningServiceImpl extends AbstractServiceImpl implements CmisVersioningService {
 
-  private static final Log LOG = LogFactory.getLog(InMemoryVersioningServiceImpl.class.getName());
+	private static final Log LOG = LogFactory.getLog(InMemoryVersioningServiceImpl.class.getName());
 
-  InMemoryObjectServiceImpl fObjectService; // real implementation of the service
-  AtomLinkInfoProvider fAtomLinkProvider;
-
-  public InMemoryVersioningServiceImpl(StoreManager storeManager,
-      InMemoryObjectServiceImpl objectService) {
-    super(storeManager);
-    fObjectService = objectService;
-    fAtomLinkProvider = new AtomLinkInfoProvider(fStoreManager);
-  }
-
-  public void cancelCheckOut(CallContext context, String repositoryId, String objectId,
-      ExtensionsData extension) {
-
-    try {
-      // Attach the CallContext to a thread local context that can be accessed from everywhere
-      RuntimeContext.attachCfg(context);
-
-      StoredObject so = checkStandardParameters(repositoryId, objectId);
-      String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
-      VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
-
-      verDoc.cancelCheckOut(user);
-    }
-    finally {
-      RuntimeContext.remove();
-    }
-  }
-
-  public ObjectData checkIn(CallContext context, String repositoryId, Holder<String> objectId,
-      Boolean major, Properties properties, ContentStream contentStream,
-      String checkinComment, List<String> policies, Acl addAces,
-      Acl removeAces, ExtensionsData extension, ObjectInfoHolder objectInfos) {
-
-    try {
-      // Attach the CallContext to a thread local context that can be accessed from everywhere
-      RuntimeContext.attachCfg(context);
-
-      StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
-      String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
-      VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
-
-      DocumentVersion pwc = verDoc.getPwc();
-
-      if (null != contentStream)
-        pwc.setContent(contentStream, false);
-
-      if (null != properties && null != properties.getProperties())
-        pwc.setCustomProperties(properties.getProperties());
-
-      verDoc.checkIn(major, checkinComment, user);
-
-      // To be able to provide all Atom links in the response we need additional information:
-      fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
-
-      ObjectData od = PropertyCreationHelper.getObjectData(fStoreManager, so, null, false,
-          IncludeRelationships.NONE, null, false, false, extension);
-
-      return od;
-    }
-    finally {
-      RuntimeContext.remove();
-    }
-  }
-
-  public ObjectData checkOut(CallContext context, String repositoryId, Holder<String> objectId,
-      ExtensionsData extension, Holder<Boolean> contentCopied, ObjectInfoHolder objectInfos) {
-
-    try {
-      // Attach the CallContext to a thread local context that can be accessed from everywhere
-      RuntimeContext.attachCfg(context);
-
-      StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
-      TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
-      if (!typeDef.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT))
-        throw new CmisNotSupportedException("Only documents can be checked-out.");
-      else if (!((DocumentTypeDefinition) typeDef).isVersionable())
-        throw new CmisNotSupportedException("Object can't be checked-out, type is not versionable.");
-
-      checkIsVersionableObject(so);
-
-      VersionedDocument verDoc = getVersionedDocumentOfObjectId(so);
-
-      ContentStream content = null;
-
-      if (so instanceof DocumentVersion) {
-        // get document the version is contained in to c
-        content = ((DocumentVersion) so).getContent(0, -1);
-      }
-      else {
-        content = ((VersionedDocument) so).getLatestVersion(false).getContent(0, -1);
-      }
-
-      if (verDoc.isCheckedOut())
-        throw new CmisUpdateConflictException("Document " + objectId.getValue()
-            + " is already checked out.");
-
-      String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
-      checkHasUser(user);
-
-      DocumentVersion pwc = verDoc.checkOut(content, user);
-      objectId.setValue(pwc.getId()); // return the id of the created pwc
-
-      // To be able to provide all Atom links in the response we need additional information:
-      fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
-
-      ObjectData od = PropertyCreationHelper.getObjectData(fStoreManager, so, null, false,
-          IncludeRelationships.NONE, null, false, false, extension);
-
-      return od;
-    }
-    finally {
-      RuntimeContext.remove();
-    }
-  }
-
-  public List<ObjectData> getAllVersions(CallContext context, String repositoryId,
-      String versionSeriesId, String filter, Boolean includeAllowableActions,
-      ExtensionsData extension, ObjectInfoHolder objectInfos) {
-
-    try {
-      // Attach the CallContext to a thread local context that can be accessed from everywhere
-      RuntimeContext.attachCfg(context);
-
-      StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
-
-      if (!(so instanceof VersionedDocument))
-        throw new RuntimeException("Object is not instance of a VersionedDocument (version series)");
-
-      VersionedDocument verDoc = (VersionedDocument) so;
-      List<ObjectData> res = new ArrayList<ObjectData>();
-      List<DocumentVersion> versions = verDoc.getAllVersions();
-      for (DocumentVersion version : versions) {
-        ObjectData objData = getObject(context, repositoryId, version.getId(), filter,
-            includeAllowableActions, extension, objectInfos);
-        res.add(objData);
-      }
-
-      // provide information for Atom links for version series:
-      fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
-
-      return res;
-    }
-    finally {
-      RuntimeContext.remove();
-    }
-  }
-
-  public ObjectData getObjectOfLatestVersion(CallContext context, String repositoryId,
-      String versionSeriesId, Boolean major, String filter, Boolean includeAllowableActions,
-      IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
-      Boolean includeAcl, ExtensionsData extension, ObjectInfoHolder objectInfos) {
-
-    try {
-      // Attach the CallContext to a thread local context that can be accessed from everywhere
-      RuntimeContext.attachCfg(context);
-
-      StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
-      ObjectData objData = null;
-
-      if (so instanceof VersionedDocument) {
-        VersionedDocument verDoc = (VersionedDocument) so;
-        DocumentVersion latestVersion = verDoc.getLatestVersion(major);
-        objData = getObject(context, repositoryId, latestVersion.getId(), filter,
-            includeAllowableActions, extension, objectInfos);
-      }
-      else if (so instanceof Document) {
-        objData = getObject(context, repositoryId, so.getId(), filter, includeAllowableActions,
-            extension, objectInfos);
-      }
-      else
-        throw new RuntimeException("Object is not instance of a document (version series)");
-
-      // provide information for Atom links for version series:
-      fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
-
-      return objData;
-    }
-    finally {
-      RuntimeContext.remove();
-    }
-  }
-
-  public Properties getPropertiesOfLatestVersion(CallContext context, String repositoryId,
-      String versionSeriesId, Boolean major, String filter, ExtensionsData extension) {
-
-    try {
-      // Attach the CallContext to a thread local context that can be accessed from everywhere
-      RuntimeContext.attachCfg(context);
-
-      StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
-      StoredObject latestVersionObject = null;
-
-      if (so instanceof VersionedDocument) {
-        VersionedDocument verDoc = (VersionedDocument) so;
-        latestVersionObject = verDoc.getLatestVersion(major);
-      }
-      else if (so instanceof Document) {
-        latestVersionObject = so;
-      }
-      else
-        throw new RuntimeException("Object is not instance of a document (version series)");
-
-      List<String> requestedIds = FilterParser.getRequestedIdsFromFilter(filter);
-      Properties props = PropertyCreationHelper.getPropertiesFromObject(repositoryId,
-          latestVersionObject, fStoreManager, requestedIds);
-
-      return props;
-    }
-    finally {
-      RuntimeContext.remove();
-    }
-  }
-
-  private ObjectData getObject(CallContext context, String repositoryId, String objectId,
-      String filter, Boolean includeAllowableActions, ExtensionsData extension,
-      ObjectInfoHolder objectInfos) {
-
-    return fObjectService.getObject(context, repositoryId, objectId, filter,
-        includeAllowableActions, IncludeRelationships.NONE, null, false, includeAllowableActions,
-        extension, objectInfos);
-  }
+	InMemoryObjectServiceImpl fObjectService; // real implementation of the
+												// service
+	AtomLinkInfoProvider fAtomLinkProvider;
+
+	public InMemoryVersioningServiceImpl(StoreManager storeManager, InMemoryObjectServiceImpl objectService) {
+		super(storeManager);
+		fObjectService = objectService;
+		fAtomLinkProvider = new AtomLinkInfoProvider(fStoreManager);
+	}
+
+	public void cancelCheckOut(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
+
+		try {
+			// Attach the CallContext to a thread local context that can be
+			// accessed from everywhere
+			RuntimeContext.attachCfg(context);
+
+			StoredObject so = checkStandardParameters(repositoryId, objectId);
+			String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
+			VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
+
+			verDoc.cancelCheckOut(user);
+		} finally {
+			RuntimeContext.remove();
+		}
+	}
+
+	public ObjectData checkIn(CallContext context, String repositoryId, Holder<String> objectId, Boolean major,
+			Properties properties, ContentStream contentStream, String checkinComment, List<String> policies,
+			Acl addAces, Acl removeAces, ExtensionsData extension, ObjectInfoHolder objectInfos) {
+
+		try {
+			// Attach the CallContext to a thread local context that can be
+			// accessed from everywhere
+			RuntimeContext.attachCfg(context);
+
+			StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
+			String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
+			VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
+
+			DocumentVersion pwc = verDoc.getPwc();
+
+			if (null != contentStream)
+				pwc.setContent(contentStream, false);
+
+			if (null != properties && null != properties.getProperties())
+				pwc.setCustomProperties(properties.getProperties());
+
+			verDoc.checkIn(major, checkinComment, user);
+
+			// To be able to provide all Atom links in the response we need
+			// additional information:
+			fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
+
+			ObjectData od = PropertyCreationHelper.getObjectData(fStoreManager, so, null, false,
+					IncludeRelationships.NONE, null, false, false, extension);
+
+			return od;
+		} finally {
+			RuntimeContext.remove();
+		}
+	}
+
+	public ObjectData checkOut(CallContext context, String repositoryId, Holder<String> objectId,
+			ExtensionsData extension, Holder<Boolean> contentCopied, ObjectInfoHolder objectInfos) {
+
+		try {
+			// Attach the CallContext to a thread local context that can be
+			// accessed from everywhere
+			RuntimeContext.attachCfg(context);
+
+			StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
+			TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
+			if (!typeDef.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT))
+				throw new CmisNotSupportedException("Only documents can be checked-out.");
+			else if (!((DocumentTypeDefinition) typeDef).isVersionable())
+				throw new CmisNotSupportedException("Object can't be checked-out, type is not versionable.");
+
+			checkIsVersionableObject(so);
+
+			VersionedDocument verDoc = getVersionedDocumentOfObjectId(so);
+
+			ContentStream content = null;
+
+			if (so instanceof DocumentVersion) {
+				// get document the version is contained in to c
+				content = ((DocumentVersion) so).getContent(0, -1);
+			} else {
+				content = ((VersionedDocument) so).getLatestVersion(false).getContent(0, -1);
+			}
+
+			if (verDoc.isCheckedOut())
+				throw new CmisUpdateConflictException("Document " + objectId.getValue() + " is already checked out.");
+
+			String user = RuntimeContext.getRuntimeConfigValue(CallContext.USERNAME);
+			checkHasUser(user);
+
+			DocumentVersion pwc = verDoc.checkOut(content, user);
+			objectId.setValue(pwc.getId()); // return the id of the created pwc
+
+			// To be able to provide all Atom links in the response we need
+			// additional information:
+			fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
+
+			ObjectData od = PropertyCreationHelper.getObjectData(fStoreManager, so, null, false,
+					IncludeRelationships.NONE, null, false, false, extension);
+
+			return od;
+		} finally {
+			RuntimeContext.remove();
+		}
+	}
+
+	public List<ObjectData> getAllVersions(CallContext context, String repositoryId, String versionSeriesId,
+			String filter, Boolean includeAllowableActions, ExtensionsData extension, ObjectInfoHolder objectInfos) {
+
+		try {
+			// Attach the CallContext to a thread local context that can be
+			// accessed from everywhere
+			RuntimeContext.attachCfg(context);
+
+			StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
+
+			if (!(so instanceof VersionedDocument))
+				throw new RuntimeException("Object is not instance of a VersionedDocument (version series)");
+
+			VersionedDocument verDoc = (VersionedDocument) so;
+			List<ObjectData> res = new ArrayList<ObjectData>();
+			List<DocumentVersion> versions = verDoc.getAllVersions();
+			for (DocumentVersion version : versions) {
+				ObjectData objData = getObject(context, repositoryId, version.getId(), filter, includeAllowableActions,
+						extension, objectInfos);
+				res.add(objData);
+			}
+
+			// provide information for Atom links for version series:
+			fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
+
+			return res;
+		} finally {
+			RuntimeContext.remove();
+		}
+	}
+
+	public ObjectData getObjectOfLatestVersion(CallContext context, String repositoryId, String versionSeriesId,
+			Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+			String renditionFilter, Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension,
+			ObjectInfoHolder objectInfos) {
+
+		try {
+			// Attach the CallContext to a thread local context that can be
+			// accessed from everywhere
+			RuntimeContext.attachCfg(context);
+
+			StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
+			ObjectData objData = null;
+
+			if (so instanceof VersionedDocument) {
+				VersionedDocument verDoc = (VersionedDocument) so;
+				DocumentVersion latestVersion = verDoc.getLatestVersion(major);
+				objData = getObject(context, repositoryId, latestVersion.getId(), filter, includeAllowableActions,
+						extension, objectInfos);
+			} else if (so instanceof Document) {
+				objData = getObject(context, repositoryId, so.getId(), filter, includeAllowableActions, extension,
+						objectInfos);
+			} else
+				throw new RuntimeException("Object is not instance of a document (version series)");
+
+			// provide information for Atom links for version series:
+			fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
+
+			return objData;
+		} finally {
+			RuntimeContext.remove();
+		}
+	}
+
+	public Properties getPropertiesOfLatestVersion(CallContext context, String repositoryId, String versionSeriesId,
+			Boolean major, String filter, ExtensionsData extension) {
+
+		try {
+			// Attach the CallContext to a thread local context that can be
+			// accessed from everywhere
+			RuntimeContext.attachCfg(context);
+
+			StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
+			StoredObject latestVersionObject = null;
+
+			if (so instanceof VersionedDocument) {
+				VersionedDocument verDoc = (VersionedDocument) so;
+				latestVersionObject = verDoc.getLatestVersion(major);
+			} else if (so instanceof Document) {
+				latestVersionObject = so;
+			} else
+				throw new RuntimeException("Object is not instance of a document (version series)");
+
+			List<String> requestedIds = FilterParser.getRequestedIdsFromFilter(filter);
+			Properties props = PropertyCreationHelper.getPropertiesFromObject(repositoryId, latestVersionObject,
+					fStoreManager, requestedIds);
+
+			return props;
+		} finally {
+			RuntimeContext.remove();
+		}
+	}
+
+	private ObjectData getObject(CallContext context, String repositoryId, String objectId, String filter,
+			Boolean includeAllowableActions, ExtensionsData extension, ObjectInfoHolder objectInfos) {
+
+		return fObjectService.getObject(context, repositoryId, objectId, filter, includeAllowableActions,
+				IncludeRelationships.NONE, null, false, includeAllowableActions, extension, objectInfos);
+	}
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/RuntimeContext.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/RuntimeContext.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/RuntimeContext.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/RuntimeContext.java Fri Apr 16 14:00:23 2010
@@ -20,71 +20,60 @@ package org.apache.chemistry.opencmis.in
 
 import org.apache.chemistry.opencmis.server.spi.CallContext;
 
-
 /**
- * This class uses a thread local storage to store the runtime context. The runtime
- * context can be accessed from everywhere using thread local storage access The runtime
- * context is only valid during the lifetime of a single request.
+ * This class uses a thread local storage to store the runtime context. The
+ * runtime context can be accessed from everywhere using thread local storage
+ * access The runtime context is only valid during the lifetime of a single
+ * request.
+ * 
  * @author jens
- *
+ * 
  */
 
 /*
+ * public class RuntimeContext { public static class ThreadLocalRuntimeConfig
+ * extends ThreadLocal<CallContext> {
+ * 
+ * public void attachCfg(CallContext ctx) { if (null != ctx) set(ctx); }
+ * 
+ * public synchronized String getConfigValue(String key) { return get().get(key)
+ * ; }
+ * 
+ * public void deleteCfg() { set(null); } };
+ * 
+ * private static ThreadLocalRuntimeConfig CONN = new
+ * ThreadLocalRuntimeConfig();
+ * 
+ * public static ThreadLocalRuntimeConfig getRuntimeConfig() { return CONN; }
+ * 
+ * public static String getRuntimeConfigValue(String key) { return
+ * CONN.getConfigValue(key); }
+ * 
+ * public static void remove() { CONN.remove(); } }
+ */
+
 public class RuntimeContext {
-  public static class ThreadLocalRuntimeConfig extends ThreadLocal<CallContext> {    
 
-    public void attachCfg(CallContext ctx) {
-      if (null != ctx)
-        set(ctx);      
-    }
-
-    public synchronized String getConfigValue(String key) {
-      return get().get(key) ;
-    }
-
-    public void deleteCfg() {
-      set(null);      
-    }
-  };
-
-  private static ThreadLocalRuntimeConfig CONN = new ThreadLocalRuntimeConfig();
-  
-  public static ThreadLocalRuntimeConfig getRuntimeConfig() {
-    return CONN;
-  }
-
-  public static String getRuntimeConfigValue(String key) {
-    return CONN.getConfigValue(key);
-  }
-  
-  public static void remove() {
-    CONN.remove();
-  }
-}
-*/
+	private static ThreadLocal<CallContext> CTX_TLS = new ThreadLocal<CallContext>();
 
-public class RuntimeContext {
-  
-  private static ThreadLocal<CallContext> CTX_TLS =  new ThreadLocal<CallContext>(); 
+	public static void attachCfg(CallContext ctx) {
+		CTX_TLS.set(ctx);
+	}
+
+	public static synchronized String getRuntimeConfigValue(String key) {
+		CallContext ctx = CTX_TLS.get();
+		if (null == ctx)
+			return null;
+		else
+			return CTX_TLS.get().get(key);
+	}
+
+	public static void remove() {
+		CTX_TLS.remove();
+	}
+
+	public static final CallContext getCurrentContext() {
+		return CTX_TLS.get();
+	}
 
-  public static void attachCfg(CallContext ctx) {      
-    CTX_TLS.set(ctx);      
-  }
-
-  public static synchronized String getRuntimeConfigValue(String key) {
-    CallContext ctx = CTX_TLS.get();
-    if (null == ctx)
-      return null;
-    else      
-      return CTX_TLS.get().get(key) ;
-  }
-  
-  public static void remove() {
-    CTX_TLS.remove();
-  }
-
-  public static final CallContext getCurrentContext() {
-    return CTX_TLS.get();
-  }
-  
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/ServiceFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/ServiceFactory.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/ServiceFactory.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/ServiceFactory.java Fri Apr 16 14:00:23 2010
@@ -55,234 +55,231 @@ import org.apache.commons.logging.LogFac
 
 public class ServiceFactory extends AbstractServicesFactory {
 
-  private static final Log LOG = LogFactory.getLog(ServiceFactory.class.getName());
-  private static final BigInteger DEFAULT_MAX_ITEMS_OBJECTS = BigInteger.valueOf(1000);
-  private static final BigInteger DEFAULT_MAX_ITEMS_TYPES = BigInteger.valueOf(100);
-  private static final BigInteger DEFAULT_DEPTH_OBJECTS = BigInteger.valueOf(2);
-  private static final BigInteger DEFAULT_DEPTH_TYPES = BigInteger.valueOf(-1);
-
-  private StoreManager fStoreManager; // singleton root of everything
-
-  private CmisRepositoryService fRepositoryService;
-  private CmisNavigationService fNavigationService;
-  private CmisObjectService fObjectService;
-  private CmisVersioningService fVersioningService;
-  private CmisDiscoveryService fDiscoveryService;
-  InMemoryRepositoryServiceImpl fRepSvc;
-  InMemoryObjectServiceImpl fObjSvc;
-  InMemoryNavigationServiceImpl fNavSvc;
-  
-  public StoreManager getStoreManager() {
-    return fStoreManager;
-  }
-
-  @Override
-  public void init(Map<String, String> parameters) {
-    LOG.info("Initializing in-memory repository...");
-
-    // initialize in-memory management
-    String repositoryClassName = (String) parameters.get(ConfigConstants.REPOSITORY_CLASS);
-    if (null == repositoryClassName)
-      repositoryClassName = StoreManagerImpl.class.getName();
-
-    if (null == fStoreManager)
-      fStoreManager = StoreManagerFactory.createInstance(repositoryClassName);
-
-    String repositoryId = parameters.get(ConfigConstants.REPOSITORY_ID);
-
-    List<String> allAvailableRepositories = fStoreManager.getAllRepositoryIds();
-
-    // init existing repositories
-    for (String existingRepId : allAvailableRepositories)
-      fStoreManager.initRepository(existingRepId);
-
-    // create repository if configured as a startup parameter
-    if (null != repositoryId) {
-      if (allAvailableRepositories.contains(repositoryId))
-        LOG.warn("Repostory " + repositoryId + " already exists and will not be created.");
-      else {
-        String typeCreatorClassName = parameters.get(ConfigConstants.TYPE_CREATOR_CLASS);
-        fStoreManager.createAndInitRepository(repositoryId, typeCreatorClassName);
-      }
-    }
-
-    fRepSvc = new InMemoryRepositoryServiceImpl(fStoreManager);
-    fNavSvc = new InMemoryNavigationServiceImpl(fStoreManager);
-    fObjSvc = new InMemoryObjectServiceImpl(fStoreManager);
-    InMemoryVersioningServiceImpl verSvc = new InMemoryVersioningServiceImpl(fStoreManager, fObjSvc);
-    InMemoryDiscoveryServiceImpl disSvc = new InMemoryDiscoveryServiceImpl(fStoreManager, fRepSvc,
-        fNavSvc);
-    
-    // Initialize services, use the service wrappers to provide suitable default parameters and
-    // paging sets
-    fRepositoryService = new RepositoryServiceWrapper(fRepSvc, DEFAULT_MAX_ITEMS_TYPES,
-        DEFAULT_DEPTH_TYPES);
-    fNavigationService = new NavigationServiceWrapper(fNavSvc, DEFAULT_MAX_ITEMS_OBJECTS,
-        DEFAULT_DEPTH_OBJECTS);
-    fObjectService = new ObjectServiceWrapper(fObjSvc, DEFAULT_MAX_ITEMS_OBJECTS);
-    fVersioningService = new VersioningServiceWrapper(verSvc);
-    fDiscoveryService = new DiscoveryServiceWrapper(disSvc, DEFAULT_MAX_ITEMS_OBJECTS);
-    
-    // With some special configuration settings fill the repository with some documents and folders
-    // if is empty
-    if (!allAvailableRepositories.contains(repositoryId))
-      fillRepositoryIfConfigured(parameters, repositoryId);
-
-    LOG.info("...initialized in-memory repository.");
-  }
-
-  @Override
-  public void destroy() {
-    LOG.info("Destroyed in-memory repository.");
-  }
-
-  @Override
-  public CmisRepositoryService getRepositoryService() {
-    return fRepositoryService;
-  }
-
-  @Override
-  public CmisNavigationService getNavigationService() {
-    return fNavigationService;
-  }
-
-  @Override
-  public CmisObjectService getObjectService() {
-    return fObjectService;
-  }
-
-  @Override
-  public CmisVersioningService getVersioningService() {
-    return fVersioningService;
-  }
-
-  @Override
-  public CmisDiscoveryService getDiscoveryService() {
-    return fDiscoveryService;
-  }
-
-  private void fillRepositoryIfConfigured(Map<String, String> parameters, String repositoryId) {
-    class DummyCallContext implements CallContext {
-
-      public String get(String key) {
-        return null;
-      }
-
-      public String getBinding() {
-        return null;
-      }
-
-      public String getLocale() {
-        return null;
-      }
-
-      public String getPassword() {
-        return null;
-      }
-
-      public String getUsername() {
-        return null;
-      }
-    }
-
-    String doFillRepositoryStr = parameters.get(ConfigConstants.USE_REPOSITORY_FILER);
-    boolean doFillRepository = doFillRepositoryStr == null ? false : Boolean
-        .parseBoolean(doFillRepositoryStr);
-
-    if (!doFillRepository)
-      return;
-
-    BindingsObjectFactory objectFactory = new BindingsObjectFactoryImpl();
-    NavigationService navSvc = new NavigationServiceImpl(fNavSvc);
-    ObjectService objSvc = new ObjectServiceImpl(fObjSvc);
-    RepositoryService repSvc = new RepositoryServiceImpl(fRepSvc);
-
-    String levelsStr = parameters.get(ConfigConstants.FILLER_DEPTH);
-    int levels = 1;
-    if (null != levelsStr)
-      levels = Integer.parseInt(levelsStr);
-
-    String docsPerLevelStr = parameters.get(ConfigConstants.FILLER_DOCS_PER_FOLDER);
-    int docsPerLevel = 1;
-    if (null != docsPerLevelStr)
-      docsPerLevel = Integer.parseInt(docsPerLevelStr);
-
-    String childrenPerLevelStr = parameters.get(ConfigConstants.FILLER_FOLDERS_PER_FOLDER);
-    int childrenPerLevel = 2;
-    if (null != childrenPerLevelStr)
-      childrenPerLevel = Integer.parseInt(childrenPerLevelStr);
-
-    String documentTypeId = parameters.get(ConfigConstants.FILLER_DOCUMENT_TYPE_ID);
-    if (null == documentTypeId)
-      documentTypeId = BaseTypeId.CMIS_DOCUMENT.value();
-
-    String folderTypeId = parameters.get(ConfigConstants.FILLER_FOLDER_TYPE_ID);
-    if (null == folderTypeId)
-      folderTypeId = BaseTypeId.CMIS_FOLDER.value();
-
-    int contentSizeKB = 0;
-    String contentSizeKBStr = parameters.get(ConfigConstants.FILLER_CONTENT_SIZE);
-    if (null != contentSizeKBStr)
-      contentSizeKB = Integer.parseInt(contentSizeKBStr);
-
-    // Create a hierarchy of folders and fill it with some documents
-    ObjectGenerator gen = new ObjectGenerator(objectFactory, navSvc, objSvc, repositoryId);
-
-    gen.setNumberOfDocumentsToCreatePerFolder(docsPerLevel);
-
-    // Set the type id for all created documents:
-    gen.setDocumentTypeId(documentTypeId);
-
-    // Set the type id for all created folders:
-    gen.setFolderTypeId(folderTypeId);
-
-    // Set contentSize
-    gen.setContentSizeInKB(contentSizeKB);
-
-    // set properties that need to be filled
-    // set the properties the generator should fill with values for documents:
-    // Note: must be valid properties in configured document and folder type
-
-    List<String> propsToSet = readPropertiesToSetFromConfig(parameters,
-        ConfigConstants.FILLER_DOCUMENT_PROPERTY);
-    if (null != propsToSet)
-      gen.setDocumentPropertiesToGenerate(propsToSet);
-
-    propsToSet = readPropertiesToSetFromConfig(parameters, ConfigConstants.FILLER_FOLDER_PROPERTY);
-    if (null != propsToSet)
-      gen.setFolderPropertiesToGenerate(propsToSet);
-
-    // Simulate a runtime context with configuration parameters
-    // Attach the CallContext to a thread local context that can be accessed from everywhere
-   RuntimeContext.attachCfg(new DummyCallContext());
-
-    // Build the tree
-    RepositoryInfo rep = repSvc.getRepositoryInfo(repositoryId, null);
-    String rootFolderId = rep.getRootFolderId();
-
-    try {
-      gen.createFolderHierachy(levels, childrenPerLevel, rootFolderId);
-      // Dump the tree
-      gen.dumpFolder(rootFolderId, "*");
-    }
-    catch (Exception e) {
-      LOG.error("Could not create folder hierarchy with documents. " + e);
-      e.printStackTrace();
-    }
-
-  }
-
-  private List<String> readPropertiesToSetFromConfig(Map<String, String> parameters,
-      String keyPrefix) {
-    List<String> propsToSet = new ArrayList<String>();
-    for (int i = 0;; ++i) {
-      String propertyKey = keyPrefix + Integer.toString(i);
-      String propertyToAdd = parameters.get(propertyKey);
-      if (null == propertyToAdd)
-        break;
-      else
-        propsToSet.add(propertyToAdd);
-    }
-    return propsToSet;
-  }
+	private static final Log LOG = LogFactory.getLog(ServiceFactory.class.getName());
+	private static final BigInteger DEFAULT_MAX_ITEMS_OBJECTS = BigInteger.valueOf(1000);
+	private static final BigInteger DEFAULT_MAX_ITEMS_TYPES = BigInteger.valueOf(100);
+	private static final BigInteger DEFAULT_DEPTH_OBJECTS = BigInteger.valueOf(2);
+	private static final BigInteger DEFAULT_DEPTH_TYPES = BigInteger.valueOf(-1);
+
+	private StoreManager fStoreManager; // singleton root of everything
+
+	private CmisRepositoryService fRepositoryService;
+	private CmisNavigationService fNavigationService;
+	private CmisObjectService fObjectService;
+	private CmisVersioningService fVersioningService;
+	private CmisDiscoveryService fDiscoveryService;
+	InMemoryRepositoryServiceImpl fRepSvc;
+	InMemoryObjectServiceImpl fObjSvc;
+	InMemoryNavigationServiceImpl fNavSvc;
+
+	public StoreManager getStoreManager() {
+		return fStoreManager;
+	}
+
+	@Override
+	public void init(Map<String, String> parameters) {
+		LOG.info("Initializing in-memory repository...");
+
+		// initialize in-memory management
+		String repositoryClassName = (String) parameters.get(ConfigConstants.REPOSITORY_CLASS);
+		if (null == repositoryClassName)
+			repositoryClassName = StoreManagerImpl.class.getName();
+
+		if (null == fStoreManager)
+			fStoreManager = StoreManagerFactory.createInstance(repositoryClassName);
+
+		String repositoryId = parameters.get(ConfigConstants.REPOSITORY_ID);
+
+		List<String> allAvailableRepositories = fStoreManager.getAllRepositoryIds();
+
+		// init existing repositories
+		for (String existingRepId : allAvailableRepositories)
+			fStoreManager.initRepository(existingRepId);
+
+		// create repository if configured as a startup parameter
+		if (null != repositoryId) {
+			if (allAvailableRepositories.contains(repositoryId))
+				LOG.warn("Repostory " + repositoryId + " already exists and will not be created.");
+			else {
+				String typeCreatorClassName = parameters.get(ConfigConstants.TYPE_CREATOR_CLASS);
+				fStoreManager.createAndInitRepository(repositoryId, typeCreatorClassName);
+			}
+		}
+
+		fRepSvc = new InMemoryRepositoryServiceImpl(fStoreManager);
+		fNavSvc = new InMemoryNavigationServiceImpl(fStoreManager);
+		fObjSvc = new InMemoryObjectServiceImpl(fStoreManager);
+		InMemoryVersioningServiceImpl verSvc = new InMemoryVersioningServiceImpl(fStoreManager, fObjSvc);
+		InMemoryDiscoveryServiceImpl disSvc = new InMemoryDiscoveryServiceImpl(fStoreManager, fRepSvc, fNavSvc);
+
+		// Initialize services, use the service wrappers to provide suitable
+		// default parameters and
+		// paging sets
+		fRepositoryService = new RepositoryServiceWrapper(fRepSvc, DEFAULT_MAX_ITEMS_TYPES, DEFAULT_DEPTH_TYPES);
+		fNavigationService = new NavigationServiceWrapper(fNavSvc, DEFAULT_MAX_ITEMS_OBJECTS, DEFAULT_DEPTH_OBJECTS);
+		fObjectService = new ObjectServiceWrapper(fObjSvc, DEFAULT_MAX_ITEMS_OBJECTS);
+		fVersioningService = new VersioningServiceWrapper(verSvc);
+		fDiscoveryService = new DiscoveryServiceWrapper(disSvc, DEFAULT_MAX_ITEMS_OBJECTS);
+
+		// With some special configuration settings fill the repository with
+		// some documents and folders
+		// if is empty
+		if (!allAvailableRepositories.contains(repositoryId))
+			fillRepositoryIfConfigured(parameters, repositoryId);
+
+		LOG.info("...initialized in-memory repository.");
+	}
+
+	@Override
+	public void destroy() {
+		LOG.info("Destroyed in-memory repository.");
+	}
+
+	@Override
+	public CmisRepositoryService getRepositoryService() {
+		return fRepositoryService;
+	}
+
+	@Override
+	public CmisNavigationService getNavigationService() {
+		return fNavigationService;
+	}
+
+	@Override
+	public CmisObjectService getObjectService() {
+		return fObjectService;
+	}
+
+	@Override
+	public CmisVersioningService getVersioningService() {
+		return fVersioningService;
+	}
+
+	@Override
+	public CmisDiscoveryService getDiscoveryService() {
+		return fDiscoveryService;
+	}
+
+	private void fillRepositoryIfConfigured(Map<String, String> parameters, String repositoryId) {
+		class DummyCallContext implements CallContext {
+
+			public String get(String key) {
+				return null;
+			}
+
+			public String getBinding() {
+				return null;
+			}
+
+			public String getLocale() {
+				return null;
+			}
+
+			public String getPassword() {
+				return null;
+			}
+
+			public String getUsername() {
+				return null;
+			}
+		}
+
+		String doFillRepositoryStr = parameters.get(ConfigConstants.USE_REPOSITORY_FILER);
+		boolean doFillRepository = doFillRepositoryStr == null ? false : Boolean.parseBoolean(doFillRepositoryStr);
+
+		if (!doFillRepository)
+			return;
+
+		BindingsObjectFactory objectFactory = new BindingsObjectFactoryImpl();
+		NavigationService navSvc = new NavigationServiceImpl(fNavSvc);
+		ObjectService objSvc = new ObjectServiceImpl(fObjSvc);
+		RepositoryService repSvc = new RepositoryServiceImpl(fRepSvc);
+
+		String levelsStr = parameters.get(ConfigConstants.FILLER_DEPTH);
+		int levels = 1;
+		if (null != levelsStr)
+			levels = Integer.parseInt(levelsStr);
+
+		String docsPerLevelStr = parameters.get(ConfigConstants.FILLER_DOCS_PER_FOLDER);
+		int docsPerLevel = 1;
+		if (null != docsPerLevelStr)
+			docsPerLevel = Integer.parseInt(docsPerLevelStr);
+
+		String childrenPerLevelStr = parameters.get(ConfigConstants.FILLER_FOLDERS_PER_FOLDER);
+		int childrenPerLevel = 2;
+		if (null != childrenPerLevelStr)
+			childrenPerLevel = Integer.parseInt(childrenPerLevelStr);
+
+		String documentTypeId = parameters.get(ConfigConstants.FILLER_DOCUMENT_TYPE_ID);
+		if (null == documentTypeId)
+			documentTypeId = BaseTypeId.CMIS_DOCUMENT.value();
+
+		String folderTypeId = parameters.get(ConfigConstants.FILLER_FOLDER_TYPE_ID);
+		if (null == folderTypeId)
+			folderTypeId = BaseTypeId.CMIS_FOLDER.value();
+
+		int contentSizeKB = 0;
+		String contentSizeKBStr = parameters.get(ConfigConstants.FILLER_CONTENT_SIZE);
+		if (null != contentSizeKBStr)
+			contentSizeKB = Integer.parseInt(contentSizeKBStr);
+
+		// Create a hierarchy of folders and fill it with some documents
+		ObjectGenerator gen = new ObjectGenerator(objectFactory, navSvc, objSvc, repositoryId);
+
+		gen.setNumberOfDocumentsToCreatePerFolder(docsPerLevel);
+
+		// Set the type id for all created documents:
+		gen.setDocumentTypeId(documentTypeId);
+
+		// Set the type id for all created folders:
+		gen.setFolderTypeId(folderTypeId);
+
+		// Set contentSize
+		gen.setContentSizeInKB(contentSizeKB);
+
+		// set properties that need to be filled
+		// set the properties the generator should fill with values for
+		// documents:
+		// Note: must be valid properties in configured document and folder type
+
+		List<String> propsToSet = readPropertiesToSetFromConfig(parameters, ConfigConstants.FILLER_DOCUMENT_PROPERTY);
+		if (null != propsToSet)
+			gen.setDocumentPropertiesToGenerate(propsToSet);
+
+		propsToSet = readPropertiesToSetFromConfig(parameters, ConfigConstants.FILLER_FOLDER_PROPERTY);
+		if (null != propsToSet)
+			gen.setFolderPropertiesToGenerate(propsToSet);
+
+		// Simulate a runtime context with configuration parameters
+		// Attach the CallContext to a thread local context that can be accessed
+		// from everywhere
+		RuntimeContext.attachCfg(new DummyCallContext());
+
+		// Build the tree
+		RepositoryInfo rep = repSvc.getRepositoryInfo(repositoryId, null);
+		String rootFolderId = rep.getRootFolderId();
+
+		try {
+			gen.createFolderHierachy(levels, childrenPerLevel, rootFolderId);
+			// Dump the tree
+			gen.dumpFolder(rootFolderId, "*");
+		} catch (Exception e) {
+			LOG.error("Could not create folder hierarchy with documents. " + e);
+			e.printStackTrace();
+		}
+
+	}
+
+	private List<String> readPropertiesToSetFromConfig(Map<String, String> parameters, String keyPrefix) {
+		List<String> propsToSet = new ArrayList<String>();
+		for (int i = 0;; ++i) {
+			String propertyKey = keyPrefix + Integer.toString(i);
+			String propertyToAdd = parameters.get(propertyKey);
+			if (null == propertyToAdd)
+				break;
+			else
+				propsToSet.add(propertyToAdd);
+		}
+		return propsToSet;
+	}
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Children.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Children.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Children.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Children.java Fri Apr 16 14:00:23 2010
@@ -21,74 +21,72 @@ package org.apache.chemistry.opencmis.in
 import java.util.List;
 
 /**
- * A folder is a StoredObject that that has a path and children. Children can be 
+ * A folder is a StoredObject that that has a path and children. Children can be
  * folder or documents
  * 
  * @author Jens
  */
 public interface Children {
 
-  /**
-   * Create a subfolder in an existing folder. This call persists parent and child folder
-   * as transactional step. 
-   * 
-   * @param folder
-   *    new child folder
-   */
-  public void addChildFolder(Folder folder);
-
-  /**
-   * Add a document to a folder. This call persists the folder and the document as a
-   * transactional step.
-   * 
-   * @param doc
-   *    document to be added
-   */
-  public void addChildDocument(Document doc);
-
-  /**
-   * Add a versioned document to a folder. This call persists the folder and the document as a
-   * transactional step.
-   * 
-   * @param doc
-   *    document to be added
-   */
-  public void addChildDocument(VersionedDocument doc);
-
-  /**
-   * get all the children of this folder. To support paging an initial offset and a
-   * maximum number of children to retrieve can be passed
-   * 
-   * @param maxItems
-   *    max. number of items to return
-   * @param skipCount
-   *    initial offset where to start fetching
-   * @return
-   *    list of children objects
-   */
-  public List<StoredObject> getChildren(int maxItems, int skipCount);
-
-  /**
-   * get all the children of this folder which are folders. To support paging an 
-   * initial offset and a maximum number of childrent to retrieve can be passed.
-   * 
-   * @param maxItems
-   *    max. number of items to return
-   * @param skipCount
-   *    initial offset where to start fetching
-   * @return
-   *    list of children folders
-   */
-  public List<Folder> getFolderChildren(int maxItems, int skipCount);
-
-  /**
-   * indicate if a child with the given name exists in this folder
-   * 
-   * @param name
-   *    name to check
-   * @return
-   *    true if the name exists in the folderas child, false otherwise
-   */
-  public boolean hasChild(String name);
+	/**
+	 * Create a subfolder in an existing folder. This call persists parent and
+	 * child folder as transactional step.
+	 * 
+	 * @param folder
+	 *            new child folder
+	 */
+	public void addChildFolder(Folder folder);
+
+	/**
+	 * Add a document to a folder. This call persists the folder and the
+	 * document as a transactional step.
+	 * 
+	 * @param doc
+	 *            document to be added
+	 */
+	public void addChildDocument(Document doc);
+
+	/**
+	 * Add a versioned document to a folder. This call persists the folder and
+	 * the document as a transactional step.
+	 * 
+	 * @param doc
+	 *            document to be added
+	 */
+	public void addChildDocument(VersionedDocument doc);
+
+	/**
+	 * get all the children of this folder. To support paging an initial offset
+	 * and a maximum number of children to retrieve can be passed
+	 * 
+	 * @param maxItems
+	 *            max. number of items to return
+	 * @param skipCount
+	 *            initial offset where to start fetching
+	 * @return list of children objects
+	 */
+	public List<StoredObject> getChildren(int maxItems, int skipCount);
+
+	/**
+	 * get all the children of this folder which are folders. To support paging
+	 * an initial offset and a maximum number of childrent to retrieve can be
+	 * passed.
+	 * 
+	 * @param maxItems
+	 *            max. number of items to return
+	 * @param skipCount
+	 *            initial offset where to start fetching
+	 * @return list of children folders
+	 */
+	public List<Folder> getFolderChildren(int maxItems, int skipCount);
+
+	/**
+	 * indicate if a child with the given name exists in this folder
+	 * 
+	 * @param name
+	 *            name to check
+	 * @return true if the name exists in the folderas child, false otherwise
+	 */
+	public boolean hasChild(String name);
 
 }
\ No newline at end of file

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Content.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Content.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Content.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Content.java Fri Apr 16 14:00:23 2010
@@ -21,28 +21,32 @@ package org.apache.chemistry.opencmis.in
 import org.apache.chemistry.opencmis.commons.api.ContentStream;
 
 public interface Content {
-  
-  /** 
-   * return true if this object has content or false if there is no content attached.
-   * @return
-   */
-  boolean hasContent();
-  
-  /**
-   * retrieve the content of a document
-   * @return
-   *    object containing mime-type, length and a stream with content
-   */
-  ContentStream getContent(long offset, long length);
 
-  /**
-   * Assign content do a document. Existing content gets overwritten.
-   * The document is not yet persisted in the new state.
-   * @param content
-   *    content to be assigned to the document.
-   * @param mustPersist
-   *    persist document (set to false if content is set during creation of a document)
-   */
-  void setContent(ContentStream content, boolean mustPersist);
-  
+	/**
+	 * return true if this object has content or false if there is no content
+	 * attached.
+	 * 
+	 * @return
+	 */
+	boolean hasContent();
+
+	/**
+	 * retrieve the content of a document
+	 * 
+	 * @return object containing mime-type, length and a stream with content
+	 */
+	ContentStream getContent(long offset, long length);
+
+	/**
+	 * Assign content do a document. Existing content gets overwritten. The
+	 * document is not yet persisted in the new state.
+	 * 
+	 * @param content
+	 *            content to be assigned to the document.
+	 * @param mustPersist
+	 *            persist document (set to false if content is set during
+	 *            creation of a document)
+	 */
+	void setContent(ContentStream content, boolean mustPersist);
+
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Document.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Document.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Document.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Document.java Fri Apr 16 14:00:23 2010
@@ -18,16 +18,14 @@
  */
 package org.apache.chemistry.opencmis.inmemory.storedobj.api;
 
-
 /**
- * A document is a concrete object (meaning it can be stored) and has 
- * content. It also has a path (is contained in a parent folder)
+ * A document is a concrete object (meaning it can be stored) and has content.
+ * It also has a path (is contained in a parent folder)
  * 
  * @author Jens
- *
+ * 
  */
 
 public interface Document extends StoredObject, MultiFiling, Content {
 
 }
-

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/DocumentVersion.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/DocumentVersion.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/DocumentVersion.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/DocumentVersion.java Fri Apr 16 14:00:23 2010
@@ -19,13 +19,13 @@
 package org.apache.chemistry.opencmis.inmemory.storedobj.api;
 
 /**
- * A DocumentVersion is a concrete version of a versioned document. It has an id,
- * is stored in the object store, has content and adds versioning functionality. 
- * It does not have a path. It inherits also properties so each version may have 
- * its own properties. 
+ * A DocumentVersion is a concrete version of a versioned document. It has an
+ * id, is stored in the object store, has content and adds versioning
+ * functionality. It does not have a path. It inherits also properties so each
+ * version may have its own properties.
  * 
  * @author Jens
- *
+ * 
  */
 public interface DocumentVersion extends Version, Content, StoredObject, MultiFiling {
 

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Filing.java Fri Apr 16 14:00:23 2010
@@ -20,39 +20,38 @@ package org.apache.chemistry.opencmis.in
 
 import java.util.List;
 
-
 /**
- * Path is the capability of an object to get accessed by a path in addition to the identifier.
- * Paths are hierarchical, each object with a path has a parent where the parent is always a 
- * folder. Paths do not exist on its own but are part of other objects (documents and folders).
- * Most of the functionality is defined in interfaces that are subclasses.
+ * Path is the capability of an object to get accessed by a path in addition to
+ * the identifier. Paths are hierarchical, each object with a path has a parent
+ * where the parent is always a folder. Paths do not exist on its own but are
+ * part of other objects (documents and folders). Most of the functionality is
+ * defined in interfaces that are subclasses.
  * 
  * @author Jens
  */
 public interface Filing {
 
-  /**
-   * character indicating how folders are separated within a path string. This char must not be a
-   * valid character of an object name.
-   */
-  public static final String PATH_SEPARATOR = "/";
-
-  /**
-   * return a list of parents. for single parent object this list must contain
-   * only one element. returns an empty list if this is an unfiled document.
-   * 
-   * @return
-   *    list of parent folders
-   */
-  List<Folder> getParents();
-  
-  /**
-   * Move an object to a different folder. Source and target object are persisted in this 
-   * call as part of a transactional step.
-   *  
-   * @param newParent
-   *    new parent folder for the object
-   */
-  public void move(Folder oldParent, Folder newParent);
-  
+	/**
+	 * character indicating how folders are separated within a path string. This
+	 * char must not be a valid character of an object name.
+	 */
+	public static final String PATH_SEPARATOR = "/";
+
+	/**
+	 * return a list of parents. for single parent object this list must contain
+	 * only one element. returns an empty list if this is an unfiled document.
+	 * 
+	 * @return list of parent folders
+	 */
+	List<Folder> getParents();
+
+	/**
+	 * Move an object to a different folder. Source and target object are
+	 * persisted in this call as part of a transactional step.
+	 * 
+	 * @param newParent
+	 *            new parent folder for the object
+	 */
+	public void move(Folder oldParent, Folder newParent);
+
 }
\ No newline at end of file

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/Folder.java Fri Apr 16 14:00:23 2010
@@ -21,20 +21,21 @@ package org.apache.chemistry.opencmis.in
 import java.util.List;
 
 /**
- * A folder is a concrete object (meaning it can be stored) and has 
- * Each folder is contained in a parent folder. The parent folder for
- * the special root folder is null.
+ * A folder is a concrete object (meaning it can be stored) and has Each folder
+ * is contained in a parent folder. The parent folder for the special root
+ * folder is null.
  * 
  * @author Jens
- *
+ * 
  */
 
 public interface Folder extends Children, SingleFiling, StoredObject {
-  
-  /**
-   * return a list of allowed types of children in this folder
-   * @return
-   */
-  List<String> getAllowedChildObjectTypeIds();
-  
+
+	/**
+	 * return a list of allowed types of children in this folder
+	 * 
+	 * @return
+	 */
+	List<String> getAllowedChildObjectTypeIds();
+
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/MultiFiling.java Fri Apr 16 14:00:23 2010
@@ -21,33 +21,34 @@ package org.apache.chemistry.opencmis.in
 import java.util.List;
 
 /**
- * Documents can have in the CMIS specification multiple parents. This interface describes
- * the behavior of objects with multiple parent objects.
+ * Documents can have in the CMIS specification multiple parents. This interface
+ * describes the behavior of objects with multiple parent objects.
  * 
  * @author Jens
- *
+ * 
  */
 public interface MultiFiling extends Filing {
 
-  /**
-   * retrieve the path segment of this folder
-   * @return
-   */
-  String getPathSegment();
+	/**
+	 * retrieve the path segment of this folder
+	 * 
+	 * @return
+	 */
+	String getPathSegment();
+
+	/**
+	 * Add this document to a new parent folder as child object
+	 * 
+	 * @param parent
+	 *            new parent folder of the document.
+	 */
+	void addParent(Folder parent);
 
-  /** 
-   * Add this document to a new parent folder as child object
-   * 
-   * @param parent
-   *    new parent folder of the document.
-   */
-  void addParent(Folder parent);
-  
-  /**
-   * Remove this object from the children of parent
-   * 
-   * @param parent
-   *    parent folder of the document
-   */
-  void removeParent(Folder parent);
+	/**
+	 * Remove this object from the children of parent
+	 * 
+	 * @param parent
+	 *            parent folder of the document
+	 */
+	void removeParent(Folder parent);
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java Fri Apr 16 14:00:23 2010
@@ -23,92 +23,90 @@ import java.util.List;
 /**
  * @author Jens
  * 
- * This is the interface an implementation must provide to store any kind of CMIS
- * objects. The ObjectStore is the topmost container of all CMIS object that get 
- * persisted. It is comparable to a file system, one object store exists per 
- * repository id. The object store allows access objects by an id. In addition a
- * object can be retrieved by path. Typically the object store owns the list of 
- * object ids and maintains the path hierarchy.
+ *         This is the interface an implementation must provide to store any
+ *         kind of CMIS objects. The ObjectStore is the topmost container of all
+ *         CMIS object that get persisted. It is comparable to a file system,
+ *         one object store exists per repository id. The object store allows
+ *         access objects by an id. In addition a object can be retrieved by
+ *         path. Typically the object store owns the list of object ids and
+ *         maintains the path hierarchy.
  */
 public interface ObjectStore {
 
-  /**
-   * Get the root folder of this object store
-   * @return
-   *    the root folder of this store
-   */
-  Folder getRootFolder();
-
-  /**
-   * return an object by path. 
-   * @param path
-   *    the path to the object
-   * @return
-   *    the stored object with this path
-   */
-  StoredObject getObjectByPath(String path);
-
-  /**
-   * get an object by its id
-   * @param folderId
-   *      the id of the object
-   * @return
-   *      the object identified by this id
-   */
-  StoredObject getObjectById(String folderId);
-  
-  /**
-   * Deletes an object from the store. For a folders the folder must be empty.
-   * @param objectId
-   */
-  void deleteObject(String objectId);
-
-  /**
-   * Create a document as initial step. The document is created but still temporary
-   * It is not yet persisted and does not have an id yet. After this call additional
-   * actions can take place (like assigning properties and a type) before it is 
-   * persisted.
-   * 
-   * @param name
-   *    name of the document
-   * @return
-   *    document object
-   */
-  Document createDocument(String name);
-  
-  /**
-   * Create a folder as initial step. The folder is created but still temporary
-   * It is not yet persisted and does not have an id yet. After this call additional
-   * actions can take place (like assigning properties and a type) before it is 
-   * persisted.
-   * 
-   * @param name
-   *    name of the folder
-   * @return
-   *    folder object
-   */
-  Folder createFolder(String name);
-
-  /**
-   * Create a document that supports versions as initial step. The document is created 
-   * but still temporary. It is not yet persisted and does not have an id yet. After 
-   * this call additional actions can take place (like assigning properties and a type) 
-   * before it is persisted.
-   * 
-   * @param name
-   *    name of the document
-   * @return
-   *    versioned document object
-   */
-  VersionedDocument createVersionedDocument(String name);
-
-  /**
-   * Return a list of all documents that are checked out in the repository.
-   * 
-   * @param orderBy
-   *    orderBy specification according to CMIS spec.
-   * @return
-   *    list of checked out documents in the repository
-   */
-  List<VersionedDocument> getCheckedOutDocuments(String orderBy);
+	/**
+	 * Get the root folder of this object store
+	 * 
+	 * @return the root folder of this store
+	 */
+	Folder getRootFolder();
+
+	/**
+	 * return an object by path.
+	 * 
+	 * @param path
+	 *            the path to the object
+	 * @return the stored object with this path
+	 */
+	StoredObject getObjectByPath(String path);
+
+	/**
+	 * get an object by its id
+	 * 
+	 * @param folderId
+	 *            the id of the object
+	 * @return the object identified by this id
+	 */
+	StoredObject getObjectById(String folderId);
+
+	/**
+	 * Deletes an object from the store. For a folders the folder must be empty.
+	 * 
+	 * @param objectId
+	 */
+	void deleteObject(String objectId);
+
+	/**
+	 * Create a document as initial step. The document is created but still
+	 * temporary It is not yet persisted and does not have an id yet. After this
+	 * call additional actions can take place (like assigning properties and a
+	 * type) before it is persisted.
+	 * 
+	 * @param name
+	 *            name of the document
+	 * @return document object
+	 */
+	Document createDocument(String name);
+
+	/**
+	 * Create a folder as initial step. The folder is created but still
+	 * temporary It is not yet persisted and does not have an id yet. After this
+	 * call additional actions can take place (like assigning properties and a
+	 * type) before it is persisted.
+	 * 
+	 * @param name
+	 *            name of the folder
+	 * @return folder object
+	 */
+	Folder createFolder(String name);
+
+	/**
+	 * Create a document that supports versions as initial step. The document is
+	 * created but still temporary. It is not yet persisted and does not have an
+	 * id yet. After this call additional actions can take place (like assigning
+	 * properties and a type) before it is persisted.
+	 * 
+	 * @param name
+	 *            name of the document
+	 * @return versioned document object
+	 */
+	VersionedDocument createVersionedDocument(String name);
+
+	/**
+	 * Return a list of all documents that are checked out in the repository.
+	 * 
+	 * @param orderBy
+	 *            orderBy specification according to CMIS spec.
+	 * @return list of checked out documents in the repository
+	 */
+	List<VersionedDocument> getCheckedOutDocuments(String orderBy);
 }
\ No newline at end of file

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/SingleFiling.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/SingleFiling.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/SingleFiling.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/SingleFiling.java Fri Apr 16 14:00:23 2010
@@ -19,31 +19,33 @@
 package org.apache.chemistry.opencmis.inmemory.storedobj.api;
 
 /**
- * Folders have in the CMIS specification exactly one parent. This interface describes
- * the behavior of objects with a single parent object.
+ * Folders have in the CMIS specification exactly one parent. This interface
+ * describes the behavior of objects with a single parent object.
  * 
  * @author Jens
- *
+ * 
  */
 public interface SingleFiling extends Filing {
 
-  /**
-   * @return
-   */
-  String getPath();
+	/**
+	 * @return
+	 */
+	String getPath();
+
+	/**
+	 * @return
+	 */
+	Folder getParent();
 
-  /**
-   * @return
-   */
-  Folder getParent();
+	/**
+	 * Put the document in a folder and set the parent. This method should not
+	 * be used to file a document in a folder. It is used internally when a
+	 * document is filed to the folder. The document does not get persisted in
+	 * this call.
+	 * 
+	 * @param parent
+	 *            parent folder of the document to be assigned.
+	 */
+	void setParent(Folder parent);
 
-  /** Put the document in a folder and set the parent. This method should not 
-   * be used to file a document in a folder. It is used internally when a document
-   * is filed to the folder. The document does not get persisted in this call.
-   * 
-   * @param parent
-   *    parent folder of the document to be assigned.
-   */
-  void setParent(Folder parent);
-  
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java Fri Apr 16 14:00:23 2010
@@ -26,124 +26,121 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.api.TypeDefinitionContainer;
 
 /**
- * interface to a repository implementation. This interface is the entry point to a 
- * repository that can persist CMIS objects. Using this interface the type information
- * can be retrieved or set, a repository can be created or for a given repository the
- * store can be retrieved. 
+ * interface to a repository implementation. This interface is the entry point
+ * to a repository that can persist CMIS objects. Using this interface the type
+ * information can be retrieved or set, a repository can be created or for a
+ * given repository the store can be retrieved.
  * 
  * @author Jens
  */
 public interface StoreManager {
 
-  /**
-   * return a list of all available repositories
-   * @return
-   */
-  List<String> getAllRepositoryIds();
-  
-  /**
-   * Initialize the store for the given repository. Only called for repositories
-   * that exist on startup (i.e. for each repository id returned in a previous
-   * getAllRepositoryIds() call.
-   * 
-   * @param repositoryId
-   *    id of repository to initialize
-   * @param isCreated
-   *    true if the repository was just created and is initialized for the first time
-   *    false if it existed before and is reloaded
-   */
-  public void initRepository(String repositoryId);
-  
-  /**
-   * get the object store for the given repository id.
-   * 
-   * @param repositoryId
-   * @return the object store in which objects for this repository are stored.
-   */
-  ObjectStore getObjectStore(String repositoryId);
-
-  /**
-   * create a new repository with the given id. Create the repository, initiate
-   * the type system and initialize it so that it is ready for use
-   * 
-   * @param repositoryId
-   *    id of repository
-   * @param typeCreatorClassName
-   *    class implementing the type creation, the class must implement the interface
-   *    TypeCreator
-   */
-  void createAndInitRepository(String repositoryId, String typeCreatorClassName);
-    
-  /**
-   * retrieve a list with all type definitions. 
-   * @param repositoryId
-   *    id of repository 
-   * @param includePropertyDefinitions
-   *    indicates whether to include property definitions in returned type
-   * @return
-   *    map with type definition
-   */
-  Collection<TypeDefinitionContainer> getTypeDefinitionList(String repositoryId,
-      boolean includePropertyDefinitions);
-  
-  /**
-   * Retrieve a type definition for a give repository and type id
-   * 
-   * @param repositoryId
-   *    id of repository 
-   * @param typeId
-   *    id of type definition
-   * @return
-   *    type definition
-   */
-  TypeDefinitionContainer getTypeById(String repositoryId, String typeId);
-
-  /**
-   * Retrieve a type definition for a give repository and type id with or
-   * without property definitions and limited to depth in hierarchy
-   * 
-   * @param repositoryId
-   *    id of repository 
-   * @param typeId
-   *    id of type definition
-   * @param includePropertyDefinitions
-   *    indicates whether to include property definitions in returned type
-   * @param depth
-   *    limit depth of type hierarchy in return (-1 means unlimited)
-   * @return
-   *    type definition
-   */
-  TypeDefinitionContainer getTypeById(String repositoryId, String typeId,
-      boolean includePropertyDefinitions, int depth);
-
-  /**
-   * Retrieve a factory to create CMIS data structures used as containers
-   * 
-   * @return
-   *    factory object
-   */
-  BindingsObjectFactory getObjectFactory();
-
-  /**
-   * Retrieve a list of root types in the repositories. Root types are available by
-   * definition and need to to be created by a client. CMIS supports documents,
-   * folders, relations and policies as root types
-   * 
-   * @param repositoryId
-   *    id of repository
-   * @return
-   *    list of root types
-   */
-  List<TypeDefinitionContainer> getRootTypes(String repositoryId);
-
-  /**
-   * Retrieve the repository information for a repository
-   * 
-   * @param repositoryId
-   *    id of repository
-   * @return
-   *    repository information
-   */
-  RepositoryInfo getRepositoryInfo(String repositoryId);
+	/**
+	 * return a list of all available repositories
+	 * 
+	 * @return
+	 */
+	List<String> getAllRepositoryIds();
+
+	/**
+	 * Initialize the store for the given repository. Only called for
+	 * repositories that exist on startup (i.e. for each repository id returned
+	 * in a previous getAllRepositoryIds() call.
+	 * 
+	 * @param repositoryId
+	 *            id of repository to initialize
+	 * @param isCreated
+	 *            true if the repository was just created and is initialized for
+	 *            the first time false if it existed before and is reloaded
+	 */
+	public void initRepository(String repositoryId);
+
+	/**
+	 * get the object store for the given repository id.
+	 * 
+	 * @param repositoryId
+	 * @return the object store in which objects for this repository are stored.
+	 */
+	ObjectStore getObjectStore(String repositoryId);
+
+	/**
+	 * create a new repository with the given id. Create the repository,
+	 * initiate the type system and initialize it so that it is ready for use
+	 * 
+	 * @param repositoryId
+	 *            id of repository
+	 * @param typeCreatorClassName
+	 *            class implementing the type creation, the class must implement
+	 *            the interface TypeCreator
+	 */
+	void createAndInitRepository(String repositoryId, String typeCreatorClassName);
+
+	/**
+	 * retrieve a list with all type definitions.
+	 * 
+	 * @param repositoryId
+	 *            id of repository
+	 * @param includePropertyDefinitions
+	 *            indicates whether to include property definitions in returned
+	 *            type
+	 * @return map with type definition
+	 */
+	Collection<TypeDefinitionContainer> getTypeDefinitionList(String repositoryId, boolean includePropertyDefinitions);
+
+	/**
+	 * Retrieve a type definition for a give repository and type id
+	 * 
+	 * @param repositoryId
+	 *            id of repository
+	 * @param typeId
+	 *            id of type definition
+	 * @return type definition
+	 */
+	TypeDefinitionContainer getTypeById(String repositoryId, String typeId);
+
+	/**
+	 * Retrieve a type definition for a give repository and type id with or
+	 * without property definitions and limited to depth in hierarchy
+	 * 
+	 * @param repositoryId
+	 *            id of repository
+	 * @param typeId
+	 *            id of type definition
+	 * @param includePropertyDefinitions
+	 *            indicates whether to include property definitions in returned
+	 *            type
+	 * @param depth
+	 *            limit depth of type hierarchy in return (-1 means unlimited)
+	 * @return type definition
+	 */
+	TypeDefinitionContainer getTypeById(String repositoryId, String typeId, boolean includePropertyDefinitions,
+			int depth);
+
+	/**
+	 * Retrieve a factory to create CMIS data structures used as containers
+	 * 
+	 * @return factory object
+	 */
+	BindingsObjectFactory getObjectFactory();
+
+	/**
+	 * Retrieve a list of root types in the repositories. Root types are
+	 * available by definition and need to to be created by a client. CMIS
+	 * supports documents, folders, relations and policies as root types
+	 * 
+	 * @param repositoryId
+	 *            id of repository
+	 * @return list of root types
+	 */
+	List<TypeDefinitionContainer> getRootTypes(String repositoryId);
+
+	/**
+	 * Retrieve the repository information for a repository
+	 * 
+	 * @param repositoryId
+	 *            id of repository
+	 * @return repository information
+	 */
+	RepositoryInfo getRepositoryInfo(String repositoryId);
 
 }
\ No newline at end of file

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java?rev=934878&r1=934877&r2=934878&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java Fri Apr 16 14:00:23 2010
@@ -26,194 +26,205 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.api.PropertyData;
 
 /**
- * Stored Object interface is common part that all objects handled by CMIS (Documents, Folders,
- * Relations, Policies, ACLs) share. Objects that implement this interface are always concrete
- * and can live in the object store. A stored object always has an id, a name and properties.
+ * Stored Object interface is common part that all objects handled by CMIS
+ * (Documents, Folders, Relations, Policies, ACLs) share. Objects that implement
+ * this interface are always concrete and can live in the object store. A stored
+ * object always has an id, a name and properties.
  * 
  * @author Jens
  */
 
 public interface StoredObject {
 
-  /**
-   * Retrieve the id of this object.
-   *  
-   * @return
-   *    id of this object
-   */
-  String getId();
-
-  /**
-   * Retrieve the name of this object
-   * 
-   * @return 
-   *    name of this object
-   */
-  String getName();
-
-  /**
-   * Set the name of this document. This method does not persist the object.
-   * 
-   * @param name
-   *    name that is assigned to this object
-   */
-  void setName(String name);
-
-  /**
-   * Retrieve the type of this document.
-   * 
-   * @return
-   *    Id of the type identifying the type of this object
-   */
-  String getTypeId();
-
-  /**
-   * Set the type of this document. This method does not persist the object.
-   * 
-   * @param type
-   *    id of the type this object gets assigned.
-   */
-  void setTypeId(String type);
-
-  /**
-   * Retrieve the user who created the document
-   * 
-   * @return
-   *    user who created the document. 
-   */
-  String getCreatedBy();
-
-  /** 
-   * Set the user who last modified the object. This method does not persist the object.
-   * 
-   * @param createdBy
-   *    user who last modified the document
-   */
-  void setCreatedBy(String createdBy);
-
-  /**
-   * Retrieve the user who last modified the document
-   * 
-   * @return
-   *    user who last modified the document. 
-   */
-  String getModifiedBy();
-
-  /** 
-   * Set the user who last modified the object. This method does not persist the object.
-   * 
-   * @param modifiedBy
-   *    user who last modified the document
-   */
-  void setModifiedBy(String modifiedBy);
-
-  GregorianCalendar getCreatedAt();
-
-  /**
-   * Assign date and time when the object was created. Usually you should not call this
-   * method externally. This method does not persist the object.
-   * 
-   * @param createdAt
-   *    date the object was created
-   */
-  void setCreatedAt(GregorianCalendar createdAt);
-
-  /** 
-   * Retrieve date and time when the object was last modified.
-   * @return
-   *    date the object was last modified
-   */
-  GregorianCalendar getModifiedAt();
-
-  /**
-   * Assign current date and time when the object was last modified. Usually you should not call this
-   * method externally. This method does not persist the object.
-   */
-  void setModifiedAtNow();
-  
-  /** Get the repository id of this object where the object is stored. 
-   * @return
-   */
-  String getRepositoryId();
-
-  /**
-   * Assign a repository where this object will be stored. This method does not persist the object.
-   * 
-   * @param repositoryId
-   *    id of the repository 
-   */
-  void setRepositoryId(String repositoryId);
-  
-  /**
-   * Retrieve the list of properties
-   * @return
-   */
-  Map<String, PropertyData<?>> getProperties();
-
-  /**
-   * Assign the properties to an object. This method does not persist the object.
-   * 
-   * @param props
-   *    properties to be assigned
-   */
-  void setProperties(Map<String, PropertyData<?>> props);
-  
-  /**
-   * Retrieve a change token uniquely identifying the state of the object when it was
-   * persisted (used for optimistic locking)
-   * 
-   * @return
-   *    String identifying the change token
-   */
-  String getChangeToken();
-
-  /**
-   * Persist the object so that it can be later retrieved by its id. Assign an id to the object
-   */
-  void persist();
-
-  /** 
-   * Rename an object 
-   * @param newName
-   *      the new name of the object
-   */
-  void rename(String newName);
-
-  /**
-   * Create all system base properties that need to be stored with every object in the repository
-   * This method is called when a new object is created to record all of the capturing data like the
-   * creation time, creator etc.
-   * 
-   * @param properties
-   *          The properties passed by the client, containing, name, type, etc
-   * @param user
-   *          The user creating the document
-   */
-  void createSystemBasePropertiesWhenCreated(Map<String, PropertyData<?>> properties, String user);
-
-  /**
-   * Update all system base properties that need to be stored with every object in the repository
-   * This method is called when an object is is updated to record all of the capturing data like the
-   * modification time, updating user etc.
-   * 
-   * @param properties
-   *          The properties passed by the client, containing, name, type, etc
-   * @param user
-   *          The user creating the document
-   */
-  void updateSystemBasePropertiesWhenModified(Map<String, PropertyData<?>> properties, String user);
-
-  void fillProperties(Map<String, PropertyData<?>> properties, BindingsObjectFactory objFactory,
-      List<String> requestedIds);
-
-  /**
-   * Set all properties which are not system properties. These are the properties as defined in Type
-   * system definition. This method is called when an object is created or updated. The
-   * implementation must ignore the system properties.
-   * 
-   * @param properties
-   *          Set of properties as set by the client, including system parameters
-   */
-  void setCustomProperties(Map<String, PropertyData<?>> properties);
+	/**
+	 * Retrieve the id of this object.
+	 * 
+	 * @return id of this object
+	 */
+	String getId();
+
+	/**
+	 * Retrieve the name of this object
+	 * 
+	 * @return name of this object
+	 */
+	String getName();
+
+	/**
+	 * Set the name of this document. This method does not persist the object.
+	 * 
+	 * @param name
+	 *            name that is assigned to this object
+	 */
+	void setName(String name);
+
+	/**
+	 * Retrieve the type of this document.
+	 * 
+	 * @return Id of the type identifying the type of this object
+	 */
+	String getTypeId();
+
+	/**
+	 * Set the type of this document. This method does not persist the object.
+	 * 
+	 * @param type
+	 *            id of the type this object gets assigned.
+	 */
+	void setTypeId(String type);
+
+	/**
+	 * Retrieve the user who created the document
+	 * 
+	 * @return user who created the document.
+	 */
+	String getCreatedBy();
+
+	/**
+	 * Set the user who last modified the object. This method does not persist
+	 * the object.
+	 * 
+	 * @param createdBy
+	 *            user who last modified the document
+	 */
+	void setCreatedBy(String createdBy);
+
+	/**
+	 * Retrieve the user who last modified the document
+	 * 
+	 * @return user who last modified the document.
+	 */
+	String getModifiedBy();
+
+	/**
+	 * Set the user who last modified the object. This method does not persist
+	 * the object.
+	 * 
+	 * @param modifiedBy
+	 *            user who last modified the document
+	 */
+	void setModifiedBy(String modifiedBy);
+
+	GregorianCalendar getCreatedAt();
+
+	/**
+	 * Assign date and time when the object was created. Usually you should not
+	 * call this method externally. This method does not persist the object.
+	 * 
+	 * @param createdAt
+	 *            date the object was created
+	 */
+	void setCreatedAt(GregorianCalendar createdAt);
+
+	/**
+	 * Retrieve date and time when the object was last modified.
+	 * 
+	 * @return date the object was last modified
+	 */
+	GregorianCalendar getModifiedAt();
+
+	/**
+	 * Assign current date and time when the object was last modified. Usually
+	 * you should not call this method externally. This method does not persist
+	 * the object.
+	 */
+	void setModifiedAtNow();
+
+	/**
+	 * Get the repository id of this object where the object is stored.
+	 * 
+	 * @return
+	 */
+	String getRepositoryId();
+
+	/**
+	 * Assign a repository where this object will be stored. This method does
+	 * not persist the object.
+	 * 
+	 * @param repositoryId
+	 *            id of the repository
+	 */
+	void setRepositoryId(String repositoryId);
+
+	/**
+	 * Retrieve the list of properties
+	 * 
+	 * @return
+	 */
+	Map<String, PropertyData<?>> getProperties();
+
+	/**
+	 * Assign the properties to an object. This method does not persist the
+	 * object.
+	 * 
+	 * @param props
+	 *            properties to be assigned
+	 */
+	void setProperties(Map<String, PropertyData<?>> props);
+
+	/**
+	 * Retrieve a change token uniquely identifying the state of the object when
+	 * it was persisted (used for optimistic locking)
+	 * 
+	 * @return String identifying the change token
+	 */
+	String getChangeToken();
+
+	/**
+	 * Persist the object so that it can be later retrieved by its id. Assign an
+	 * id to the object
+	 */
+	void persist();
+
+	/**
+	 * Rename an object
+	 * 
+	 * @param newName
+	 *            the new name of the object
+	 */
+	void rename(String newName);
+
+	/**
+	 * Create all system base properties that need to be stored with every
+	 * object in the repository This method is called when a new object is
+	 * created to record all of the capturing data like the creation time,
+	 * creator etc.
+	 * 
+	 * @param properties
+	 *            The properties passed by the client, containing, name, type,
+	 *            etc
+	 * @param user
+	 *            The user creating the document
+	 */
+	void createSystemBasePropertiesWhenCreated(Map<String, PropertyData<?>> properties, String user);
+
+	/**
+	 * Update all system base properties that need to be stored with every
+	 * object in the repository This method is called when an object is is
+	 * updated to record all of the capturing data like the modification time,
+	 * updating user etc.
+	 * 
+	 * @param properties
+	 *            The properties passed by the client, containing, name, type,
+	 *            etc
+	 * @param user
+	 *            The user creating the document
+	 */
+	void updateSystemBasePropertiesWhenModified(Map<String, PropertyData<?>> properties, String user);
+
+	void fillProperties(Map<String, PropertyData<?>> properties, BindingsObjectFactory objFactory,
+			List<String> requestedIds);
+
+	/**
+	 * Set all properties which are not system properties. These are the
+	 * properties as defined in Type system definition. This method is called
+	 * when an object is created or updated. The implementation must ignore the
+	 * system properties.
+	 * 
+	 * @param properties
+	 *            Set of properties as set by the client, including system
+	 *            parameters
+	 */
+	void setCustomProperties(Map<String, PropertyData<?>> properties);
 
 }
\ No newline at end of file