diff options
author | Eike Stepper | 2008-09-22 09:20:06 +0000 |
---|---|---|
committer | Eike Stepper | 2008-09-22 09:20:06 +0000 |
commit | 91cf0441c6eec7922615a0bde10d31cb7ccf5f7b (patch) | |
tree | ba551831427f0b232b1295f123c0fab7b41f4420 /plugins | |
parent | 5f8e5f6c696fac456ede5cd5162449beb486e1d4 (diff) | |
download | cdo-91cf0441c6eec7922615a0bde10d31cb7ccf5f7b.tar.gz cdo-91cf0441c6eec7922615a0bde10d31cb7ccf5f7b.tar.xz cdo-91cf0441c6eec7922615a0bde10d31cb7ccf5f7b.zip |
[247817] Develop configurable test bed
https://bugs.eclipse.org/bugs/show_bug.cgi?id=247817
Diffstat (limited to 'plugins')
56 files changed, 998 insertions, 664 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java index e83db12d9b..d7840a48ac 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageImpl.java @@ -54,9 +54,6 @@ public class CDOPackageImpl extends CDOModelElementImpl implements InternalCDOPa private String parentURI; - /** - * TODO If this is only needed by the client then put it into server info - */ private transient boolean persistent = true; public CDOPackageImpl() diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java index dc2cc04632..205af5c86a 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/CommitManager.java @@ -11,6 +11,7 @@ package org.eclipse.emf.cdo.internal.server; import org.eclipse.emf.cdo.internal.server.Transaction.InternalCommitContext; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IRepositoryElement; import org.eclipse.net4j.util.lifecycle.Lifecycle; @@ -29,22 +30,26 @@ import java.util.concurrent.Future; */ public class CommitManager extends Lifecycle implements IRepositoryElement { - private Repository repository; + private IRepository repository; private ExecutorService executors; private Map<Transaction, TransactionCommitContextEntry> commitContextMap = new ConcurrentHashMap<Transaction, TransactionCommitContextEntry>(); - public CommitManager(Repository repository) + public CommitManager() { - this.repository = repository; } - public Repository getRepository() + public IRepository getRepository() { return repository; } + public void setRepository(IRepository repository) + { + this.repository = repository; + } + public synchronized ExecutorService getExecutors() { if (executors == null) diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java index 0cc2b6526e..289f43c971 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/NotificationManager.java @@ -16,6 +16,7 @@ import org.eclipse.emf.cdo.common.id.CDOIDAndVersion; import org.eclipse.emf.cdo.common.id.CDOIDUtil; import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; import org.eclipse.emf.cdo.server.INotificationManager; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IStoreWriter.CommitContext; import org.eclipse.net4j.util.lifecycle.Lifecycle; @@ -29,18 +30,22 @@ import java.util.List; */ public class NotificationManager extends Lifecycle implements INotificationManager { - private Repository repository; + private IRepository repository; - public NotificationManager(Repository repository) + public NotificationManager() { - this.repository = repository; } - public Repository getRepository() + public IRepository getRepository() { return repository; } + public void setRepository(IRepository repository) + { + this.repository = repository; + } + public void notifyCommit(Session session, CommitContext commitContext) { CDORevisionDelta[] arrayOfDeltas = commitContext.getDirtyObjectDeltas(); @@ -60,12 +65,14 @@ public class NotificationManager extends Lifecycle implements INotificationManag dirtyIDs.add(dirtyIDAndVersion); deltas.add(delta); } + List<CDOID> detachedObjects = new ArrayList<CDOID>(detachedObjectsSize); for (int i = 0; i < detachedObjectsSize; i++) { detachedObjects.add(arrayOfDetachedObjects[i]); } - SessionManager sessionManager = repository.getSessionManager(); + + SessionManager sessionManager = (SessionManager)repository.getSessionManager(); sessionManager.handleCommitNotification(commitContext.getTimeStamp(), dirtyIDs, detachedObjects, deltas, session); } } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java index ed32508a7d..813d9edb84 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/PackageManager.java @@ -16,6 +16,7 @@ import org.eclipse.emf.cdo.common.model.CDOPackage; import org.eclipse.emf.cdo.common.model.CDOPackageInfo; import org.eclipse.emf.cdo.internal.common.model.CDOPackageManagerImpl; import org.eclipse.emf.cdo.server.IPackageManager; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IStoreReader; import org.eclipse.emf.cdo.server.StoreThreadLocal; @@ -26,18 +27,31 @@ import java.util.Collection; */ public class PackageManager extends CDOPackageManagerImpl implements IPackageManager { - private Repository repository; + private IRepository repository; - public PackageManager(Repository repository) + /** + * @since 2.0 + */ + public PackageManager() { - this.repository = repository; } - public Repository getRepository() + /** + * @since 2.0 + */ + public IRepository getRepository() { return repository; } + /** + * @since 2.0 + */ + public void setRepository(IRepository repository) + { + this.repository = repository; + } + public CDOIDObjectFactory getCDOIDObjectFactory() { return repository.getStore().getCDOIDObjectFactory(); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java index dcf52db9b8..c4d4a31125 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/QueryManager.java @@ -15,6 +15,7 @@ import org.eclipse.emf.cdo.common.query.CDOQueryInfo; import org.eclipse.emf.cdo.internal.server.bundle.OM; import org.eclipse.emf.cdo.server.IQueryContext; import org.eclipse.emf.cdo.server.IQueryHandler; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IRepositoryElement; import org.eclipse.emf.cdo.server.IView; @@ -39,7 +40,7 @@ public class QueryManager extends Lifecycle implements IRepositoryElement { private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, QueryManager.class); - private Repository repository; + private IRepository repository; private Map<Integer, QueryContext> queryContexts = new ConcurrentHashMap<Integer, QueryContext>(); @@ -47,16 +48,20 @@ public class QueryManager extends Lifecycle implements IRepositoryElement private int nextQuery; - public QueryManager(Repository repository) + public QueryManager() { - this.repository = repository; } - public Repository getRepository() + public IRepository getRepository() { return repository; } + public void setRepository(IRepository repository) + { + this.repository = repository; + } + public synchronized ExecutorService getExecutors() { if (executors == null) diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java index 8f3e17745e..71b9d422d8 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java @@ -57,19 +57,19 @@ public class Repository extends Container<IRepositoryElement> implements IReposi private Boolean verifyingRevisions; - private PackageManager packageManager = createPackageManager(); + private PackageManager packageManager; - private SessionManager sessionManager = createSessionManager(); + private SessionManager sessionManager; - private ResourceManager resourceManager = createResourceManager(); + private ResourceManager resourceManager; - private RevisionManager revisionManager = createRevisionManager(); + private RevisionManager revisionManager; - private QueryManager queryManager = createQueryManager(); + private QueryManager queryManager; - private NotificationManager notificationManager = createNotificationManager(); + private NotificationManager notificationManager; - private CommitManager commitManager = createCommitManager(); + private CommitManager commitManager; private IQueryHandlerProvider queryHandlerProvider; @@ -106,8 +106,15 @@ public class Repository extends Container<IRepositoryElement> implements IReposi { if (uuid == null) { - String value = getProperties().get(Props.PROP_OVERRIDE_UUID); - uuid = StringUtil.isEmpty(value) ? UUID.randomUUID().toString() : value; + uuid = getProperties().get(Props.PROP_OVERRIDE_UUID); + if (uuid == null) + { + uuid = UUID.randomUUID().toString(); + } + else if (uuid.length() == 0) + { + uuid = getName(); + } } return uuid; @@ -166,16 +173,40 @@ public class Repository extends Container<IRepositoryElement> implements IReposi return packageManager; } + /** + * @since 2.0 + */ + public void setPackageManager(PackageManager packageManager) + { + this.packageManager = packageManager; + } + public SessionManager getSessionManager() { return sessionManager; } + /** + * @since 2.0 + */ + public void setSessionManager(SessionManager sessionManager) + { + this.sessionManager = sessionManager; + } + public ResourceManager getResourceManager() { return resourceManager; } + /** + * @since 2.0 + */ + public void setResourceManager(ResourceManager resourceManager) + { + this.resourceManager = resourceManager; + } + public RevisionManager getRevisionManager() { return revisionManager; @@ -184,6 +215,14 @@ public class Repository extends Container<IRepositoryElement> implements IReposi /** * @since 2.0 */ + public void setRevisionManager(RevisionManager revisionManager) + { + this.revisionManager = revisionManager; + } + + /** + * @since 2.0 + */ public QueryManager getQueryManager() { return queryManager; @@ -192,6 +231,14 @@ public class Repository extends Container<IRepositoryElement> implements IReposi /** * @since 2.0 */ + public void setQueryManager(QueryManager queryManager) + { + this.queryManager = queryManager; + } + + /** + * @since 2.0 + */ public NotificationManager getNotificationManager() { return notificationManager; @@ -200,6 +247,14 @@ public class Repository extends Container<IRepositoryElement> implements IReposi /** * @since 2.0 */ + public void setNotificationManager(NotificationManager notificationManager) + { + this.notificationManager = notificationManager; + } + + /** + * @since 2.0 + */ public CommitManager getCommitManager() { return commitManager; @@ -208,6 +263,14 @@ public class Repository extends Container<IRepositoryElement> implements IReposi /** * @since 2.0 */ + public void setCommitManager(CommitManager commitManager) + { + this.commitManager = commitManager; + } + + /** + * @since 2.0 + */ public IQueryHandlerProvider getQueryHandlerProvider() { return queryHandlerProvider; @@ -294,54 +357,26 @@ public class Repository extends Container<IRepositoryElement> implements IReposi return MessageFormat.format("Repository[{0}]", name); } - protected PackageManager createPackageManager() - { - return new PackageManager(this); - } - - protected SessionManager createSessionManager() - { - return new SessionManager(this); - } - - protected ResourceManager createResourceManager() - { - return new ResourceManager(this); - } - - protected RevisionManager createRevisionManager() - { - return new RevisionManager(this); - } - - /** - * @since 2.0 - */ - protected QueryManager createQueryManager() - { - return new QueryManager(this); - } - - /** - * @since 2.0 - */ - protected NotificationManager createNotificationManager() - { - return new NotificationManager(this); - } - - /** - * @since 2.0 - */ - protected CommitManager createCommitManager() - { - return new CommitManager(this); - } - @Override protected void doBeforeActivate() throws Exception { super.doBeforeActivate(); + checkArg(packageManager, "packageManager"); + checkArg(sessionManager, "sessionManager"); + checkArg(resourceManager, "resourceManager"); + checkArg(revisionManager, "revisionManager"); + checkArg(queryManager, "queryManager"); + checkArg(notificationManager, "notificationManager"); + checkArg(commitManager, "commitManager"); + + packageManager.setRepository(this); + sessionManager.setRepository(this); + resourceManager.setRepository(this); + revisionManager.setRepository(this); + queryManager.setRepository(this); + notificationManager.setRepository(this); + commitManager.setRepository(this); + if (StringUtil.isEmpty(name)) { throw new IllegalArgumentException("name is null or empty"); @@ -414,4 +449,91 @@ public class Repository extends Container<IRepositoryElement> implements IReposi LifecycleUtil.deactivate(packageManager); LifecycleUtil.deactivate(store); } + + /** + * @author Eike Stepper + * @since 2.0 + */ + public static class Default extends Repository + { + public Default() + { + } + + @Override + protected void doBeforeActivate() throws Exception + { + if (getPackageManager() == null) + { + setPackageManager(createPackageManager()); + } + + if (getSessionManager() == null) + { + setSessionManager(createSessionManager()); + } + + if (getResourceManager() == null) + { + setResourceManager(createResourceManager()); + } + + if (getRevisionManager() == null) + { + setRevisionManager(createRevisionManager()); + } + + if (getQueryManager() == null) + { + setQueryManager(createQueryManager()); + } + + if (getNotificationManager() == null) + { + setNotificationManager(createNotificationManager()); + } + + if (getCommitManager() == null) + { + setCommitManager(createCommitManager()); + } + + super.doBeforeActivate(); + } + + protected PackageManager createPackageManager() + { + return new PackageManager(); + } + + protected SessionManager createSessionManager() + { + return new SessionManager(); + } + + protected ResourceManager createResourceManager() + { + return new ResourceManager(); + } + + protected RevisionManager createRevisionManager() + { + return new RevisionManager(); + } + + protected QueryManager createQueryManager() + { + return new QueryManager(); + } + + protected NotificationManager createNotificationManager() + { + return new NotificationManager(); + } + + protected CommitManager createCommitManager() + { + return new CommitManager(); + } + } } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryFactory.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryFactory.java index 6d45c6968f..20087bb556 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryFactory.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryFactory.java @@ -35,7 +35,7 @@ public class RepositoryFactory implements IRepositoryFactory public Repository createRepository() { - return new Repository(); + return new Repository.Default(); } public static IRepository get(IManagedContainer container, String name) diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/ResourceManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/ResourceManager.java index a21ed24a67..aa1b0447b3 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/ResourceManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/ResourceManager.java @@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.internal.server; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.internal.server.bundle.OM; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IResourceManager; import org.eclipse.emf.cdo.server.IStoreReader; import org.eclipse.emf.cdo.server.StoreThreadLocal; @@ -29,22 +30,35 @@ public class ResourceManager extends Lifecycle implements IResourceManager { private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, SessionManager.class); - private Repository repository; + private IRepository repository; private Map<CDOID, String> idToPathMap = new HashMap<CDOID, String>(); private Map<String, CDOID> pathToIDMap = new HashMap<String, CDOID>(); - public ResourceManager(Repository repository) + /** + * @since 2.0 + */ + public ResourceManager() { - this.repository = repository; } - public Repository getRepository() + /** + * @since 2.0 + */ + public IRepository getRepository() { return repository; } + /** + * @since 2.0 + */ + public void setRepository(IRepository repository) + { + this.repository = repository; + } + public CDOID getResourceID(String path) { CDOID id = pathToIDMap.get(path); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java index 436611f82e..d5516a9936 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java @@ -20,6 +20,7 @@ import org.eclipse.emf.cdo.common.model.resource.CDOPathFeature; import org.eclipse.emf.cdo.common.revision.CDOReferenceProxy; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.internal.common.revision.CDORevisionResolverImpl; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IRevisionManager; import org.eclipse.emf.cdo.server.IStoreChunkReader; import org.eclipse.emf.cdo.server.IStoreReader; @@ -38,21 +39,34 @@ import java.util.List; */ public class RevisionManager extends CDORevisionResolverImpl implements IRevisionManager { - private Repository repository; + private IRepository repository; private CDOPathFeature cdoPathFeature; - public RevisionManager(Repository repository) + /** + * @since 2.0 + */ + public RevisionManager() { - this.repository = repository; - cdoPathFeature = repository.getPackageManager().getCDOResourcePackage().getCDOResourceClass().getCDOPathFeature(); } - public Repository getRepository() + /** + * @since 2.0 + */ + public IRepository getRepository() { return repository; } + /** + * @since 2.0 + */ + public void setRepository(IRepository repository) + { + this.repository = repository; + cdoPathFeature = repository.getPackageManager().getCDOResourcePackage().getCDOResourceClass().getCDOPathFeature(); + } + public CDOIDObjectFactory getCDOIDObjectFactory() { return repository.getStore().getCDOIDObjectFactory(); @@ -75,7 +89,7 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio if (revision.isResource()) { String path = (String)revision.get(cdoPathFeature, 0); - repository.getResourceManager().registerResource(revision.getID(), path); + ((Repository)repository).getResourceManager().registerResource(revision.getID(), path); } return super.addCachedRevision(revision); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java index 7803df05a8..53d7f394df 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java @@ -223,7 +223,7 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider public void collectContainedRevisions(InternalCDORevision revision, int referenceChunk, Set<CDOID> revisions, List<InternalCDORevision> additionalRevisions) { - RevisionManager revisionManager = getSessionManager().getRepository().getRevisionManager(); + RevisionManager revisionManager = (RevisionManager)getSessionManager().getRepository().getRevisionManager(); CDOClass cdoClass = revision.getCDOClass(); CDOFeature[] features = cdoClass.getAllFeatures(); for (int i = 0; i < features.length; i++) diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java index ec024b1eed..3bc9a5c77f 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/SessionManager.java @@ -17,6 +17,7 @@ import org.eclipse.emf.cdo.common.id.CDOIDAndVersion; import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; import org.eclipse.emf.cdo.internal.server.bundle.OM; import org.eclipse.emf.cdo.internal.server.protocol.CDOServerProtocol; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.ISession; import org.eclipse.emf.cdo.server.ISessionManager; import org.eclipse.emf.cdo.server.SessionCreationException; @@ -35,22 +36,35 @@ public class SessionManager extends Container<ISession> implements ISessionManag { private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, SessionManager.class); - private Repository repository; + private IRepository repository; private Map<Integer, Session> sessions = new HashMap<Integer, Session>(); private int lastSessionID; - public SessionManager(Repository repository) + /** + * @since 2.0 + */ + public SessionManager() { - this.repository = repository; } - public Repository getRepository() + /** + * @since 2.0 + */ + public IRepository getRepository() { return repository; } + /** + * @since 2.0 + */ + public void setRepository(IRepository repository) + { + this.repository = repository; + } + public Session[] getSessions() { synchronized (sessions) diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java index bf710086ae..eb41bb5f5d 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Transaction.java @@ -18,6 +18,7 @@ import org.eclipse.emf.cdo.common.model.CDOPackage; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; import org.eclipse.emf.cdo.internal.server.TransactionCommitContextImpl.TransactionPackageManager; +import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.ITransaction; import org.eclipse.emf.cdo.server.IStoreWriter.CommitContext; @@ -29,7 +30,7 @@ import java.util.List; */ public class Transaction extends View implements ITransaction { - private Repository repository; + private IRepository repository; public Transaction(Session session, int viewID) { @@ -40,7 +41,7 @@ public class Transaction extends View implements ITransaction /** * @since 2.0 */ - public Repository getRepository() + public IRepository getRepository() { return repository; } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java index 0aa5e71d58..2d24899a3a 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContextImpl.java @@ -402,7 +402,7 @@ public class TransactionCommitContextImpl implements IStoreWriter.CommitContext, private void addNewPackages() { - PackageManager packageManager = transaction.getRepository().getPackageManager(); + PackageManager packageManager = (PackageManager)transaction.getRepository().getPackageManager(); for (int i = 0; i < newPackages.length; i++) { CDOPackage cdoPackage = newPackages[i]; @@ -412,7 +412,7 @@ public class TransactionCommitContextImpl implements IStoreWriter.CommitContext, private void addRevisions(CDORevision[] revisions) { - RevisionManager revisionManager = transaction.getRepository().getRevisionManager(); + RevisionManager revisionManager = (RevisionManager)transaction.getRepository().getRevisionManager(); for (CDORevision revision : revisions) { if (revision != null) @@ -434,7 +434,7 @@ public class TransactionCommitContextImpl implements IStoreWriter.CommitContext, { detachedRevisions.clear(); - RevisionManager revisionManager = transaction.getRepository().getRevisionManager(); + RevisionManager revisionManager = (RevisionManager)transaction.getRepository().getRevisionManager(); for (CDOID id : getDetachedObjects()) { @@ -453,7 +453,7 @@ public class TransactionCommitContextImpl implements IStoreWriter.CommitContext, { private List<CDOPackage> newPackages = new ArrayList<CDOPackage>(); - private PackageManager repositoryPackageManager = transaction.getRepository().getPackageManager(); + private PackageManager repositoryPackageManager = (PackageManager)transaction.getRepository().getPackageManager(); public TransactionPackageManager() { diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java index 51b2a9fc2e..611135b54b 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/XATransactionCommitContext.java @@ -39,7 +39,8 @@ public class XATransactionCommitContext extends TransactionCommitContextImpl @Override public void postCommit(boolean success) { - getTransaction().getRepository().getCommitManager().remove(this); + Repository repository = (Repository)getTransaction().getRepository(); + repository.getCommitManager().remove(this); super.postCommit(success); } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java index e753ed7143..17549e0707 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerIndication.java @@ -78,7 +78,7 @@ public abstract class CDOServerIndication extends IndicationWithResponse protected Repository getRepository() { - Repository repository = getSessionManager().getRepository(); + Repository repository = (Repository)getSessionManager().getRepository(); if (!repository.isActive()) { throw new IllegalStateException("Repository has been deactivated"); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java index 07cfb39b2a..acbc73c4b0 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/CDOServerRequest.java @@ -74,7 +74,7 @@ public abstract class CDOServerRequest extends Request protected Repository getRepository() { - Repository repository = getSessionManager().getRepository(); + Repository repository = (Repository)getSessionManager().getRepository(); if (!repository.isActive()) { throw new IllegalStateException("Repository has been deactivated"); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java index b8a0d428da..72a4954636 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java @@ -179,7 +179,7 @@ public class LoadRevisionIndication extends CDOReadIndication visitedFetchRules.add(fetchRule); - RevisionManager revisionManager = getSessionManager().getRepository().getRevisionManager(); + RevisionManager revisionManager = (RevisionManager)getSessionManager().getRepository().getRevisionManager(); for (CDOFeature feature : fetchRule.getFeatures()) { if (feature.isMany()) diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerUtil.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerUtil.java index 0b21ee6edc..e52b9aad6f 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerUtil.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/CDOServerUtil.java @@ -45,7 +45,7 @@ public final class CDOServerUtil public static IRepository createRepository(String name, IStore store, Map<String, String> props) { - Repository repository = new Repository(); + Repository repository = new Repository.Default(); repository.setName(name); repository.setStore(store); repository.setProperties(props); diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryElement.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryElement.java index 8cf97386a5..8bb4ce1fe2 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryElement.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryElement.java @@ -10,6 +10,7 @@ **************************************************************************/ package org.eclipse.emf.cdo.server; + /** * @author Eike Stepper * @noimplement This interface is not intended to be implemented by clients. @@ -17,4 +18,11 @@ package org.eclipse.emf.cdo.server; public interface IRepositoryElement { public IRepository getRepository(); + + /** + * Internal. + * + * @since 2.0 + */ + public void setRepository(IRepository repository); } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java index 8362b40b54..6d4169ded9 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStore.java @@ -14,18 +14,12 @@ import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor; import org.eclipse.emf.cdo.common.id.CDOIDLibraryProvider; import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory; import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; -import org.eclipse.emf.cdo.internal.server.Repository; /** * @author Eike Stepper */ public interface IStore extends IRepositoryElement { - /** - * Internal method. Should only be called by {@link Repository#setStore(IStore)}. - */ - public void setRepository(IRepository repository); - public String getStoreType(); public CDOIDObjectFactory getCDOIDObjectFactory(); diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java index 1a7a41b3ed..cc537c682d 100644 --- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java +++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOAutomaticPackageRefTest.java @@ -1,12 +1,10 @@ package org.eclipse.emf.cdo.tests.hibernate; import org.eclipse.emf.cdo.CDOSession; -import org.eclipse.emf.cdo.CDOSessionConfiguration; import org.eclipse.emf.cdo.CDOTransaction; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.tests.AbstractCDOTest; import org.eclipse.emf.cdo.tests.StoreRepositoryProvider; -import org.eclipse.emf.cdo.util.CDOUtil; import base.BaseFactory; import base.BasePackage; @@ -24,21 +22,11 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest StoreRepositoryProvider.setInstance(HbStoreRepositoryProvider.getInstance()); } - @Override - protected CDOSession openSession() - { - CDOSessionConfiguration configuration = CDOUtil.createSessionConfiguration(); - configuration.setConnector(getConnector()); - configuration.setRepositoryName(REPOSITORY_NAME); - configuration.setLazyPackageRegistry(); - return configuration.openSession(); - } - public void testPutPackage() throws Exception { try { - CDOSession session = openSession(); + CDOSession session = openLazySession(); session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE); session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE); @@ -58,7 +46,7 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest { try { - CDOSession session = openSession(); + CDOSession session = openLazySession(); session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE); session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE); @@ -79,7 +67,7 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest { try { - CDOSession session = openSession(); + CDOSession session = openLazySession(); session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE); session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE); @@ -99,7 +87,7 @@ public class HbCDOAutomaticPackageRefTest extends AbstractCDOTest { try { - CDOSession session = openSession(); + CDOSession session = openLazySession(); session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE); session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE); diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java index c2567de338..bfe54a1709 100644 --- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java +++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbCDOPackageRefTest.java @@ -1,12 +1,10 @@ package org.eclipse.emf.cdo.tests.hibernate; import org.eclipse.emf.cdo.CDOSession; -import org.eclipse.emf.cdo.CDOSessionConfiguration; import org.eclipse.emf.cdo.CDOTransaction; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.tests.AbstractCDOTest; import org.eclipse.emf.cdo.tests.StoreRepositoryProvider; -import org.eclipse.emf.cdo.util.CDOUtil; import reference.ReferenceFactory; import reference.ReferencePackage; @@ -21,21 +19,11 @@ public class HbCDOPackageRefTest extends AbstractCDOTest StoreRepositoryProvider.setInstance(HbStoreRepositoryProvider.getInstance()); } - @Override - protected CDOSession openSession() - { - CDOSessionConfiguration configuration = CDOUtil.createSessionConfiguration(); - configuration.setConnector(getConnector()); - configuration.setRepositoryName(REPOSITORY_NAME); - configuration.setLazyPackageRegistry(); - return configuration.openSession(); - } - public void testOnlyReference() throws Exception { try { - CDOSession session = openSession(); + CDOSession session = openLazySession(); session.getPackageRegistry().putEPackage(InterfacePackage.eINSTANCE); session.getPackageRegistry().putEPackage(ReferencePackage.eINSTANCE); diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbPackageRegistryTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbPackageRegistryTest.java index 592b5e7645..75552d1fc5 100644 --- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbPackageRegistryTest.java +++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbPackageRegistryTest.java @@ -14,7 +14,6 @@ package org.eclipse.emf.cdo.tests.hibernate; import org.eclipse.emf.cdo.tests.PackageRegistryTest; import org.eclipse.emf.cdo.tests.StoreRepositoryProvider; -import java.util.HashMap; import java.util.Map; /** @@ -31,15 +30,15 @@ public class HbPackageRegistryTest extends PackageRegistryTest StoreRepositoryProvider.setInstance(HbStoreRepositoryProvider.getInstance()); } - // allows a testcase to pass specific properties @Override - protected Map<String, String> getTestProperties() + public Map<String, Object> getTestProperties() { - final Map<String, String> testProperties = new HashMap<String, String>(); + Map<String, Object> testProperties = super.getTestProperties(); if (getHbm2ddlValue() != null) { testProperties.put("hibernate.hbm2ddl.auto", getHbm2ddlValue()); } + return testProperties; } diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbResourceTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbResourceTest.java index 71b305bee0..8136be135c 100644 --- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbResourceTest.java +++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbResourceTest.java @@ -14,7 +14,6 @@ package org.eclipse.emf.cdo.tests.hibernate; import org.eclipse.emf.cdo.tests.ResourceTest; import org.eclipse.emf.cdo.tests.StoreRepositoryProvider; -import java.util.HashMap; import java.util.Map; /** @@ -27,11 +26,10 @@ public class HbResourceTest extends ResourceTest StoreRepositoryProvider.setInstance(HbStoreRepositoryProvider.getInstance()); } - // allows a testcase to pass specific properties @Override - protected Map<String, String> getTestProperties() + public Map<String, Object> getTestProperties() { - final Map<String, String> testProperties = new HashMap<String, String>(); + Map<String, Object> testProperties = super.getTestProperties(); testProperties.put("hibernate.hbm2ddl.auto", "update"); return testProperties; } diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbRevisionDeltaTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbRevisionDeltaTest.java index 44d3ee0f18..9ef60f5b84 100644 --- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbRevisionDeltaTest.java +++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbRevisionDeltaTest.java @@ -11,12 +11,8 @@ **************************************************************************/ package org.eclipse.emf.cdo.tests.hibernate; -import org.eclipse.emf.cdo.internal.server.Repository; -import org.eclipse.emf.cdo.internal.server.RevisionManager; -import org.eclipse.emf.cdo.server.IRepository; -import org.eclipse.emf.cdo.server.IStore; import org.eclipse.emf.cdo.tests.RevisionDeltaWithoutDeltaSupportTest; -import org.eclipse.emf.cdo.tests.StoreRepositoryProvider; +import org.eclipse.emf.cdo.tests.config.RepositoryConfig; import java.util.Map; @@ -27,36 +23,11 @@ import java.util.Map; */ public class HbRevisionDeltaTest extends RevisionDeltaWithoutDeltaSupportTest { - public HbRevisionDeltaTest() - { - StoreRepositoryProvider.setInstance(LocalHbStoreRepositoryProvider.getInstance()); - } - @Override - protected Repository createRepository() + public Map<String, Object> getTestProperties() { - LocalHbStoreRepositoryProvider provider = new LocalHbStoreRepositoryProvider(); - return (Repository)provider.createRepository(REPOSITORY_NAME, getTestProperties()); - } - - private class LocalHbStoreRepositoryProvider extends HbStoreRepositoryProvider - { - @Override - protected IRepository createRepository(String name, IStore store, Map<String, String> props) - { - Repository repository = new Repository() - { - @Override - protected RevisionManager createRevisionManager() - { - return new TestRevisionManager(this); - } - }; - - repository.setName(name); - repository.setProperties(props); - repository.setStore(store); - return repository; - } + Map<String, Object> testProperties = super.getTestProperties(); + testProperties.put(RepositoryConfig.PROP_TEST_REVISION_MANAGER, new TestRevisionManager()); + return testProperties; } } diff --git a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbTransactionDeadLockTest.java b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbTransactionDeadLockTest.java index 7eb4af7f77..c02ac32dd0 100644 --- a/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbTransactionDeadLockTest.java +++ b/plugins/org.eclipse.emf.cdo.tests.hibernate/src/org/eclipse/emf/cdo/tests/hibernate/HbTransactionDeadLockTest.java @@ -14,7 +14,6 @@ package org.eclipse.emf.cdo.tests.hibernate; import org.eclipse.emf.cdo.tests.StoreRepositoryProvider; import org.eclipse.emf.cdo.tests.TransactionDeadLockTest; -import java.util.HashMap; import java.util.Map; /** @@ -35,11 +34,10 @@ public class HbTransactionDeadLockTest extends TransactionDeadLockTest StoreRepositoryProvider.setInstance(HbStoreRepositoryProvider.getInstance()); } - // allows a testcase to pass specific properties @Override - protected Map<String, String> getTestProperties() + public Map<String, Object> getTestProperties() { - final Map<String, String> testProperties = new HashMap<String, String>(); + Map<String, Object> testProperties = super.getTestProperties(); testProperties.put("hibernate.hbm2ddl.auto", "update"); return testProperties; } diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (All Configs).launch b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (All Configs).launch new file mode 100644 index 0000000000..23e89a8101 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests (All Configs).launch @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.junit.launchconfig"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> +<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> +<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> +<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.AllTestsAllConfigs"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/> +</launchConfiguration> diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch index 8c875b2d3c..60e98179d3 100644 --- a/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch +++ b/plugins/org.eclipse.emf.cdo.tests/CDO AllTests.launch @@ -6,14 +6,14 @@ <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listEntry value="1"/> </listAttribute> -<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> -<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> -<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;org.eclipse.emf.cdo&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> +</listAttribute> <stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.AllTests"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true -Dvista.cache.selector"/> </launchConfiguration> diff --git a/plugins/org.eclipse.emf.cdo.tests/build.properties b/plugins/org.eclipse.emf.cdo.tests/build.properties index 84bc79edba..1954e5118a 100644 --- a/plugins/org.eclipse.emf.cdo.tests/build.properties +++ b/plugins/org.eclipse.emf.cdo.tests/build.properties @@ -26,7 +26,8 @@ bin.includes = .,\ test.xml,\ uml2/,\ My.ecore,\ - .options + .options,\ + CDO AllTests (All Configs).launch jars.compile.order = . source.. = src/,\ model/,\ diff --git a/plugins/org.eclipse.emf.cdo.tests/net4j/org/eclipse/net4j/tests/AbstractOMTest.java b/plugins/org.eclipse.emf.cdo.tests/net4j/org/eclipse/net4j/tests/AbstractOMTest.java index 48230568e0..8ae23a6e2c 100644 --- a/plugins/org.eclipse.emf.cdo.tests/net4j/org/eclipse/net4j/tests/AbstractOMTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/net4j/org/eclipse/net4j/tests/AbstractOMTest.java @@ -20,6 +20,7 @@ import org.eclipse.net4j.util.om.log.PrintLogHandler; import org.eclipse.net4j.util.om.trace.PrintTraceHandler; import junit.framework.TestCase; +import junit.framework.TestResult; /** * @author Eike Stepper @@ -65,11 +66,11 @@ public abstract class AbstractOMTest extends TestCase } @Override - protected void runTest() throws Throwable + public void runBare() throws Throwable { try { - super.runTest(); + super.runBare(); } catch (SkipTestException ex) { @@ -82,6 +83,29 @@ public abstract class AbstractOMTest extends TestCase } } + @Override + public void run(TestResult result) + { + try + { + super.run(result); + } + catch (SkipTestException ex) + { + OM.LOG.info("Skipped " + this); + } + catch (RuntimeException ex) + { + ex.printStackTrace(IOUtil.OUT()); + throw ex; + } + catch (Error err) + { + err.printStackTrace(IOUtil.OUT()); + throw err; + } + } + protected void enableConsole() { if (!consoleEnabled) diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java index f49198907c..7fcc6e0362 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java @@ -11,38 +11,19 @@ package org.eclipse.emf.cdo.tests; import org.eclipse.emf.cdo.CDOObject; -import org.eclipse.emf.cdo.CDOSession; -import org.eclipse.emf.cdo.CDOSessionConfiguration; import org.eclipse.emf.cdo.CDOState; import org.eclipse.emf.cdo.CDOView; import org.eclipse.emf.cdo.eresource.CDOResource; -import org.eclipse.emf.cdo.server.CDOServerUtil; -import org.eclipse.emf.cdo.server.IRepository; -import org.eclipse.emf.cdo.server.IStore; -import org.eclipse.emf.cdo.tests.mango.MangoFactory; -import org.eclipse.emf.cdo.tests.mango.MangoPackage; -import org.eclipse.emf.cdo.tests.model1.Model1Factory; -import org.eclipse.emf.cdo.tests.model1.Model1Package; -import org.eclipse.emf.cdo.tests.model2.Model2Factory; -import org.eclipse.emf.cdo.tests.model2.Model2Package; -import org.eclipse.emf.cdo.tests.model3.Model3Factory; -import org.eclipse.emf.cdo.tests.model3.Model3Package; -import org.eclipse.emf.cdo.tests.model4.model4Factory; -import org.eclipse.emf.cdo.tests.model4.model4Package; -import org.eclipse.emf.cdo.tests.model4interfaces.model4interfacesPackage; +import org.eclipse.emf.cdo.tests.config.ConfigTest; import org.eclipse.emf.cdo.util.CDOUtil; import org.eclipse.emf.internal.cdo.CDOLegacyWrapper; import org.eclipse.emf.internal.cdo.util.FSMUtil; import org.eclipse.net4j.tests.AbstractTransportTest; -import org.eclipse.net4j.util.container.IManagedContainer; -import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.emf.ecore.EObject; -import java.util.HashMap; -import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; @@ -50,12 +31,8 @@ import java.util.concurrent.locks.Lock; /** * @author Eike Stepper */ -public abstract class AbstractCDOTest extends AbstractTransportTest +public abstract class AbstractCDOTest extends ConfigTest { - public static final String REPOSITORY_NAME = "repo1"; - - protected static boolean legacyTesting = false; - @Override protected void doSetUp() throws Exception { @@ -63,226 +40,6 @@ public abstract class AbstractCDOTest extends AbstractTransportTest startTransport(); } - @Override - protected IManagedContainer createContainer() - { - LifecycleUtil.deactivate(container); - IManagedContainer container = super.createContainer(); - CDOUtil.prepareContainer(container); - CDOServerUtil.prepareContainer(container); - CDOServerUtil.addRepository(container, createRepository()); - return container; - } - - protected IStore createStore() - { - return StoreRepositoryProvider.getInstance().createStore(); - } - - protected IRepository createRepository() - { - return StoreRepositoryProvider.getInstance().createRepository(REPOSITORY_NAME, getTestProperties()); - } - - // allows a testcase to pass specific properties - protected Map<String, String> getTestProperties() - { - return new HashMap<String, String>(); - } - - protected IRepository getRepository() - { - return CDOServerUtil.getRepository(container, REPOSITORY_NAME); - } - - protected IRepository getRepository(String repositoryName) - { - IRepository repository = createRepository(); - repository.setName(repositoryName); - CDOServerUtil.addRepository(container, repository); - return repository; - } - - protected CDOSession openSession(String repoName) - { - CDOSessionConfiguration configuration = CDOUtil.createSessionConfiguration(); - configuration.setConnector(getConnector()); - configuration.setRepositoryName(repoName); - return configuration.openSession(); - } - - protected CDOSession openSession() - { - CDOSessionConfiguration configuration = CDOUtil.createSessionConfiguration(); - configuration.setConnector(getConnector()); - configuration.setRepositoryName(REPOSITORY_NAME); - return configuration.openSession(); - } - - protected CDOSession openModel1Session(String repoName) - { - CDOSession session = openSession(repoName); - session.getPackageRegistry().putEPackage(getModel1Package()); - return session; - } - - protected CDOSession openModel1Session() - { - CDOSession session = openSession(); - session.getPackageRegistry().putEPackage(getModel1Package()); - return session; - } - - protected CDOSession openModel2Session() - { - CDOSession session = openModel1Session(); - session.getPackageRegistry().putEPackage(getModel2Package()); - return session; - } - - protected CDOSession openModel3Session() - { - CDOSession session = openSession(); - session.getPackageRegistry().putEPackage(getModel3Package()); - return session; - } - - protected CDOSession openMangoSession() - { - CDOSession session = openSession(); - session.getPackageRegistry().putEPackage(getMangoPackage()); - return session; - } - - // TODO LEGACY - // protected CDOSession openLegacySession() - // { - // CDOSession session = openSession(); - // session.getPackageRegistry().putEPackage(LegacyPackage.eINSTANCE); - // return session; - // } - - protected static MangoFactory getMangoFactory() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.mango.MangoFactory.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.mango.MangoFactory.eINSTANCE; - } - - protected static MangoPackage getMangoPackage() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.mango.MangoPackage.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.mango.MangoPackage.eINSTANCE; - } - - protected static Model1Factory getModel1Factory() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model1.Model1Factory.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model1.Model1Factory.eINSTANCE; - } - - protected static Model1Package getModel1Package() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model1.Model1Package.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model1.Model1Package.eINSTANCE; - } - - protected static Model2Factory getModel2Factory() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model2.Model2Factory.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model2.Model2Factory.eINSTANCE; - } - - protected static Model2Package getModel2Package() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model2.Model2Package.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model2.Model2Package.eINSTANCE; - } - - protected static Model3Factory getModel3Factory() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model3.Model3Factory.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model3.Model3Factory.eINSTANCE; - } - - protected static Model3Package getModel3Package() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model3.Model3Package.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model3.Model3Package.eINSTANCE; - } - - protected static model4Factory getModel4Factory() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model4.model4Factory.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model4.model4Factory.eINSTANCE; - } - - protected static model4Package getModel4Package() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model4.model4Package.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model4.model4Package.eINSTANCE; - } - - protected static model4interfacesPackage getModel4InterfacesPackage() - { - if (legacyTesting) - { - // TODO LEGACY - // return org.eclipse.emf.cdo.tests.legacy.model4interfaces.model4interfacesPackage.eINSTANCE; - } - - return org.eclipse.emf.cdo.tests.model4interfaces.model4interfacesPackage.eINSTANCE; - } - public static void assertEquals(Object expected, Object actual) { // IMPORTANT: Give possible CDOLegacyWrapper a chance for actual, too diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java index 7e405d04ea..a0f57e05c2 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java @@ -10,69 +10,22 @@ **************************************************************************/ package org.eclipse.emf.cdo.tests; -import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_241464_Test; -import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_243310_Test; -import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246442_Test; -import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246456_Test; -import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246622_Test; -import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_248052_Test; - import junit.framework.Test; import junit.framework.TestSuite; /** * @author Eike Stepper */ -public class AllTests +public class AllTests extends AllTestsAllConfigs { public static Test suite() { - TestSuite suite = new TestSuite("Tests for CDO"); - - // $JUnit-BEGIN$ - suite.addTestSuite(InitialTest.class); - - suite.addTestSuite(ComplexTest.class); - suite.addTestSuite(AttributeTest.class); - suite.addTestSuite(EnumTest.class); - suite.addTestSuite(StateMachineTest.class); - suite.addTestSuite(ViewTest.class); - suite.addTestSuite(ResourceTest.class); - suite.addTestSuite(NonCDOResourceTest.class); - suite.addTestSuite(ContainmentTest.class); - suite.addTestSuite(InvalidationTest.class); - suite.addTestSuite(RollbackTest.class); - suite.addTestSuite(CrossReferenceTest.class); - suite.addTestSuite(ChunkingTest.class); - suite.addTestSuite(ChunkingWithMEMTest.class); - suite.addTestSuite(TransactionDeadLockTest.class); - suite.addTestSuite(PackageRegistryTest.class); - suite.addTestSuite(MetaTest.class); - suite.addTestSuite(RevisionDeltaWithDeltaSupportTest.class); - suite.addTestSuite(RevisionDeltaWithoutDeltaSupportTest.class); - suite.addTestSuite(IndexReconstructionTest.class); - suite.addTestSuite(AutoAttacherTest.class); - suite.addTestSuite(SavepointTest.class); - suite.addTestSuite(ChangeSubscriptionTest.class); - suite.addTestSuite(DetachTest.class); - suite.addTestSuite(ExternalReferenceTest.class); - suite.addTestSuite(XATransactionTest.class); - suite.addTestSuite(TransactionHandlerTest.class); - - // Specific for MEMStore - suite.addTestSuite(QueryTest.class); - - // Bugzilla verifications - suite.addTestSuite(Bugzilla_241464_Test.class); - suite.addTestSuite(Bugzilla_243310_Test.class); - suite.addTestSuite(Bugzilla_246442_Test.class); - suite.addTestSuite(Bugzilla_246456_Test.class); - suite.addTestSuite(Bugzilla_246622_Test.class); - suite.addTestSuite(Bugzilla_248052_Test.class); - - // TODO suite.addTestSuite(GeneratedEcoreTest.class); - // $JUnit-END$ + return new AllTests().getTestSuite("CDO Tests"); + } - return suite; + @Override + protected void initConfigSuites(TestSuite parent) + { + initConfigSuite(parent, COMBINED, MEM, TCP, NATIVE); } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java new file mode 100644 index 0000000000..8836d8a3ee --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java @@ -0,0 +1,79 @@ +/*************************************************************************** + * Copyright (c) 2004 - 2008 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.emf.cdo.tests; + +import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_241464_Test; +import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_243310_Test; +import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246442_Test; +import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246456_Test; +import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246622_Test; +import org.eclipse.emf.cdo.tests.config.ConfigTest; +import org.eclipse.emf.cdo.tests.config.ConfigTestSuite; + +import java.util.List; + +import junit.framework.Test; + +/** + * @author Eike Stepper + */ +public class AllTestsAllConfigs extends ConfigTestSuite +{ + public static Test suite() + { + return new AllTestsAllConfigs().getTestSuite("CDO Tests (All Configs)"); + } + + @Override + protected void initTestClasses(List<Class<? extends ConfigTest>> testClasses) + { + // General + testClasses.add(InitialTest.class); + testClasses.add(ComplexTest.class); + testClasses.add(AttributeTest.class); + testClasses.add(EnumTest.class); + testClasses.add(StateMachineTest.class); + testClasses.add(ViewTest.class); + testClasses.add(ResourceTest.class); + testClasses.add(ContainmentTest.class); + testClasses.add(InvalidationTest.class); + testClasses.add(RollbackTest.class); + testClasses.add(CrossReferenceTest.class); + testClasses.add(ChunkingTest.class); + testClasses.add(ChunkingWithMEMTest.class); + testClasses.add(TransactionDeadLockTest.class); + testClasses.add(PackageRegistryTest.class); + testClasses.add(MetaTest.class); + testClasses.add(RevisionDeltaWithDeltaSupportTest.class); + testClasses.add(RevisionDeltaWithoutDeltaSupportTest.class); + testClasses.add(IndexReconstructionTest.class); + testClasses.add(AutoAttacherTest.class); + testClasses.add(SavepointTest.class); + testClasses.add(ChangeSubscriptionTest.class); + testClasses.add(DetachTest.class); + testClasses.add(ExternalReferenceTest.class); + testClasses.add(XATransactionTest.class); + testClasses.add(TransactionHandlerTest.class); + + // Specific for MEMStore + testClasses.add(QueryTest.class); + + // Bugzilla verifications + testClasses.add(Bugzilla_241464_Test.class); + testClasses.add(Bugzilla_243310_Test.class); + testClasses.add(Bugzilla_246442_Test.class); + testClasses.add(Bugzilla_246456_Test.class); + testClasses.add(Bugzilla_246622_Test.class); + + // TODO testClasses.add(NonCDOResourceTest.class); + // TODO testClasses.add(GeneratedEcoreTest.class); + } +} diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsHibernate.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsHibernate.java new file mode 100644 index 0000000000..139d1a629d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsHibernate.java @@ -0,0 +1,40 @@ +/*************************************************************************** + * Copyright (c) 2004 - 2008 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.emf.cdo.tests; + +import org.eclipse.emf.cdo.tests.config.ContainerConfig; +import org.eclipse.emf.cdo.tests.config.ModelConfig; +import org.eclipse.emf.cdo.tests.config.RepositoryConfig; +import org.eclipse.emf.cdo.tests.config.SessionConfig; + +import junit.framework.Test; +import junit.framework.TestSuite; + +/** + * @author Eike Stepper + */ +public class AllTestsHibernate extends AllTestsAllConfigs +{ + public static Test suite() + { + return new AllTestsHibernate().getTestSuite("CDO Tests (Hibernate)"); + } + + @Override + protected void initConfigSuite(TestSuite parent, ContainerConfig containerConfig, RepositoryConfig repositoryConfig, + SessionConfig sessionConfig, ModelConfig modelConfig) + { + if (repositoryConfig == HIBERNATE) + { + super.initConfigSuite(parent, containerConfig, repositoryConfig, sessionConfig, modelConfig); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingWithMEMTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingWithMEMTest.java index d65f984ba9..f3f73f1ffd 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingWithMEMTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChunkingWithMEMTest.java @@ -15,16 +15,14 @@ import org.eclipse.emf.cdo.CDOSession; import org.eclipse.emf.cdo.CDOTransaction; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.eresource.CDOResource; -import org.eclipse.emf.cdo.internal.server.Repository; import org.eclipse.emf.cdo.internal.server.RevisionManager; -import org.eclipse.emf.cdo.server.IStore; +import org.eclipse.emf.cdo.tests.config.RepositoryConfig; import org.eclipse.emf.cdo.tests.model1.Customer; import org.eclipse.emf.cdo.tests.model1.SalesOrder; import org.eclipse.emf.cdo.util.CDOUtil; import org.eclipse.emf.common.util.EList; -import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -153,25 +151,11 @@ public class ChunkingWithMEMTest extends AbstractCDOTest } @Override - protected Repository createRepository() + public Map<String, Object> getTestProperties() { - Map<String, String> props = new HashMap<String, String>(); - // props.put(IRepository.PROP_SUPPORTING_REVISION_DELTAS, "true"); - - IStore store = createStore(); - Repository repository = new Repository() - { - @Override - protected RevisionManager createRevisionManager() - { - return new TestRevisionManager(this); - } - }; - - repository.setName(REPOSITORY_NAME); - repository.setProperties(props); - repository.setStore(store); - return repository; + Map<String, Object> testProperties = super.getTestProperties(); + testProperties.put(RepositoryConfig.PROP_TEST_REVISION_MANAGER, new TestRevisionManager()); + return testProperties; } /** @@ -179,11 +163,6 @@ public class ChunkingWithMEMTest extends AbstractCDOTest */ private class TestRevisionManager extends RevisionManager { - public TestRevisionManager(Repository repository) - { - super(repository); - } - public void removeCachedRevision(CDORevision revision) { super.removeCachedRevision(revision.getID(), revision.getVersion()); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java index ca1cf981b7..933686e130 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ComplexTest.java @@ -61,20 +61,21 @@ public class ComplexTest extends AbstractCDOTest { private static long uniqueCounter = System.currentTimeMillis(); - private model4Factory factory = getModel4Factory(); + private model4Factory factory; - private CDOResource resource1 = null; + private CDOResource resource1; - private CDOResource resource2 = null; + private CDOResource resource2; - private CDOTransaction transaction = null; + private CDOTransaction transaction; - private CDOSession session = null; + private CDOSession session; @Override protected void doSetUp() throws Exception { super.doSetUp(); + factory = getModel4Factory(); session = openSession(); session.getPackageRegistry().putEPackage(model4interfacesPackage.eINSTANCE); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/NonCDOResourceTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/NonCDOResourceTest.java index ade66366b7..31f8a47be6 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/NonCDOResourceTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/NonCDOResourceTest.java @@ -23,7 +23,6 @@ import junit.framework.TestCase; /** * @see http://bugs.eclipse.org/201593 * @author Simon McDuff - * @author Eike Stepper */ public class NonCDOResourceTest extends TestCase { diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java index 15987976e4..0cd03c6b4b 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ResourceTest.java @@ -53,7 +53,7 @@ public class ResourceTest extends AbstractCDOTest IStore store = getRepository().getStore(); if (!(store instanceof MEMStore)) { - restartContainer(); + restartContainers(); } CDOSession session = openModel1Session(); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java index bd5aa1785c..fe61d271ac 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaTest.java @@ -24,7 +24,6 @@ import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta; import org.eclipse.emf.cdo.common.revision.delta.CDOSetFeatureDelta; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.internal.common.revision.delta.CDOListFeatureDeltaImpl; -import org.eclipse.emf.cdo.internal.server.Repository; import org.eclipse.emf.cdo.internal.server.RevisionManager; import org.eclipse.emf.cdo.spi.common.InternalCDORevision; import org.eclipse.emf.cdo.tests.model1.Category; @@ -225,13 +224,8 @@ public abstract class RevisionDeltaTest extends AbstractCDOTest /** * @author Simon McDuff */ - protected static class TestRevisionManager extends RevisionManager + public static class TestRevisionManager extends RevisionManager { - public TestRevisionManager(Repository repository) - { - super(repository); - } - public void removeCachedRevision(CDORevision revision) { super.removeCachedRevision(revision.getID(), revision.getVersion()); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithDeltaSupportTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithDeltaSupportTest.java index 999170db28..86566ddb1c 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithDeltaSupportTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithDeltaSupportTest.java @@ -11,12 +11,9 @@ **************************************************************************/ package org.eclipse.emf.cdo.tests; -import org.eclipse.emf.cdo.internal.server.Repository; -import org.eclipse.emf.cdo.internal.server.RevisionManager; import org.eclipse.emf.cdo.server.IRepository; -import org.eclipse.emf.cdo.server.IStore; +import org.eclipse.emf.cdo.tests.config.RepositoryConfig; -import java.util.HashMap; import java.util.Map; /** @@ -25,29 +22,12 @@ import java.util.Map; */ public class RevisionDeltaWithDeltaSupportTest extends RevisionDeltaTest { - public RevisionDeltaWithDeltaSupportTest() - { - } - @Override - protected Repository createRepository() + public Map<String, Object> getTestProperties() { - Map<String, String> props = new HashMap<String, String>(); - props.put(IRepository.Props.PROP_SUPPORTING_REVISION_DELTAS, "true"); - - IStore store = createStore(); - Repository repository = new Repository() - { - @Override - protected RevisionManager createRevisionManager() - { - return new TestRevisionManager(this); - } - }; - - repository.setName(REPOSITORY_NAME); - repository.setProperties(props); - repository.setStore(store); - return repository; + Map<String, Object> testProperties = super.getTestProperties(); + testProperties.put(IRepository.Props.PROP_SUPPORTING_REVISION_DELTAS, "true"); + testProperties.put(RepositoryConfig.PROP_TEST_REVISION_MANAGER, new TestRevisionManager()); + return testProperties; } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithoutDeltaSupportTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithoutDeltaSupportTest.java index e592f06a8c..f57e5d5620 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithoutDeltaSupportTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionDeltaWithoutDeltaSupportTest.java @@ -11,12 +11,9 @@ **************************************************************************/ package org.eclipse.emf.cdo.tests; -import org.eclipse.emf.cdo.internal.server.Repository; -import org.eclipse.emf.cdo.internal.server.RevisionManager; import org.eclipse.emf.cdo.server.IRepository; -import org.eclipse.emf.cdo.server.IStore; +import org.eclipse.emf.cdo.tests.config.RepositoryConfig; -import java.util.HashMap; import java.util.Map; /** @@ -25,29 +22,12 @@ import java.util.Map; */ public class RevisionDeltaWithoutDeltaSupportTest extends RevisionDeltaTest { - public RevisionDeltaWithoutDeltaSupportTest() - { - } - @Override - protected Repository createRepository() + public Map<String, Object> getTestProperties() { - Map<String, String> props = new HashMap<String, String>(); - props.put(IRepository.Props.PROP_SUPPORTING_REVISION_DELTAS, "false"); - - IStore store = createStore(); - Repository repository = new Repository() - { - @Override - protected RevisionManager createRevisionManager() - { - return new TestRevisionManager(this); - } - }; - - repository.setName(REPOSITORY_NAME); - repository.setProperties(props); - repository.setStore(store); - return repository; + Map<String, Object> testProperties = super.getTestProperties(); + testProperties.put(IRepository.Props.PROP_SUPPORTING_REVISION_DELTAS, "false"); + testProperties.put(RepositoryConfig.PROP_TEST_REVISION_MANAGER, new TestRevisionManager()); + return testProperties; } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StateMachineTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StateMachineTest.java index 0392d221a5..893d7f0e69 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StateMachineTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/StateMachineTest.java @@ -16,6 +16,7 @@ import org.eclipse.emf.cdo.CDOState; import org.eclipse.emf.cdo.CDOTransaction; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.tests.config.SessionConfig; import org.eclipse.emf.cdo.tests.model1.Category; import org.eclipse.emf.cdo.tests.model1.Product1; import org.eclipse.emf.cdo.tests.model1.Supplier; @@ -578,9 +579,10 @@ public class StateMachineTest extends AbstractCDOTest // /////////////////////////////////////////////////// @Override - protected boolean useJVMTransport() + protected void doSetUp() throws Exception { - return true; + super.doSetUp(); + skipUnlessConfig(SessionConfig.JVM.INSTANCE); } private static void assertFailure(IllegalStateException ex) diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionDeadLockTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionDeadLockTest.java index b7ba4f8e46..d10c1c8583 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionDeadLockTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionDeadLockTest.java @@ -30,10 +30,10 @@ import java.util.List; public class TransactionDeadLockTest extends AbstractCDOTest { @Override - protected boolean useJVMTransport() + protected void doSetUp() throws Exception { + super.doSetUp(); OMPlatform.INSTANCE.setDebugging(false); - return false; } public void _testCreateManySession() throws Exception @@ -62,6 +62,7 @@ public class TransactionDeadLockTest extends AbstractCDOTest } } + @SuppressWarnings("deprecation") public void testCreateManyTransaction() throws Exception { msg("Opening session"); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java index 986a25883f..6f74bfabe6 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ViewTest.java @@ -66,6 +66,7 @@ public class ViewTest extends AbstractCDOTest session.close(); } + @SuppressWarnings("deprecation") public void testUniqueResourceContents() throws Exception { { @@ -107,6 +108,7 @@ public class ViewTest extends AbstractCDOTest session.close(); } + @SuppressWarnings("deprecation") public void testNonUniqueResourceContents() throws Exception { { diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246456_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246456_Test.java index 0c1f9a0b0b..793fa0eace 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246456_Test.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246456_Test.java @@ -24,6 +24,7 @@ import org.eclipse.emf.internal.cdo.CDOTransactionImpl; */ public class Bugzilla_246456_Test extends AbstractCDOTest { + @SuppressWarnings("deprecation") public void testBugzilla_246456() throws Exception { msg("Opening session"); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248052_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248052_Test.java index fb88b63a78..45e914e39a 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248052_Test.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248052_Test.java @@ -14,16 +14,13 @@ import org.eclipse.emf.cdo.CDOSession; import org.eclipse.emf.cdo.CDOTransaction; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.internal.common.revision.CDORevisionResolverImpl; -import org.eclipse.emf.cdo.internal.server.Repository; import org.eclipse.emf.cdo.server.IRepository; -import org.eclipse.emf.cdo.server.IStore; import org.eclipse.emf.cdo.tests.AbstractCDOTest; import org.eclipse.emf.cdo.tests.model1.Customer; import org.eclipse.emf.internal.cdo.InternalCDOObject; import org.eclipse.emf.internal.cdo.util.FSMUtil; -import java.util.HashMap; import java.util.Map; /** @@ -35,6 +32,16 @@ import java.util.Map; */ public class Bugzilla_248052_Test extends AbstractCDOTest { + + @Override + public Map<String, Object> getTestProperties() + { + Map<String, Object> testProperties = super.getTestProperties(); + testProperties.put(IRepository.Props.PROP_SUPPORTING_REVISION_DELTAS, "false"); + testProperties.put(IRepository.Props.PROP_SUPPORTING_AUDITS, "false"); + return testProperties; + } + public void testNoSupportingDeltas() throws Exception { CDOSession session = openModel1Session(); @@ -57,19 +64,4 @@ public class Bugzilla_248052_Test extends AbstractCDOTest transaction1.commit(); } - - @Override - protected Repository createRepository() - { - Map<String, String> props = new HashMap<String, String>(); - props.put(IRepository.Props.PROP_SUPPORTING_REVISION_DELTAS, "false"); - props.put(IRepository.Props.PROP_SUPPORTING_AUDITS, "false"); - - IStore store = createStore(); - Repository repository = new Repository(); - repository.setName(REPOSITORY_NAME); - repository.setProperties(props); - repository.setStore(store); - return repository; - } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/Config.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/Config.java index f098731d52..8e446a4cdb 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/Config.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/Config.java @@ -10,6 +10,7 @@ **************************************************************************/ package org.eclipse.emf.cdo.tests.config; +import java.util.Map; import java.util.Set; /** @@ -47,6 +48,22 @@ public abstract class Config this.currentTest = currentTest; } + public Map<String, Object> getTestProperties() + { + return currentTest.getTestProperties(); + } + + public Object getTestProperty(String key) + { + Map<String, Object> testProperties = getTestProperties(); + if (testProperties != null) + { + return testProperties.get(key); + } + + return null; + } + protected boolean isValid(Set<Config> configs) { return true; diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigConstants.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigConstants.java new file mode 100644 index 0000000000..e800d1efd5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigConstants.java @@ -0,0 +1,41 @@ +/*************************************************************************** + * Copyright (c) 2004 - 2008 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.emf.cdo.tests.config; + +/** + * @author Eike Stepper + */ +public interface ConfigConstants +{ + public static final Config[][] CONFIGS = { // + ContainerConfig.CONFIGS, // + RepositoryConfig.CONFIGS, // + SessionConfig.CONFIGS, // + ModelConfig.CONFIGS }; + + public static final ContainerConfig COMBINED = ContainerConfig.Combined.INSTANCE; + + public static final ContainerConfig SEPARATED = ContainerConfig.Separated.INSTANCE; + + public static final RepositoryConfig MEM = RepositoryConfig.MEM.INSTANCE; + + public static final RepositoryConfig DB_HORIZONTAL_HSQL = RepositoryConfig.DBHorizontalHsql.INSTANCE; + + public static final RepositoryConfig DB_HORIZONTAL_DERBY = RepositoryConfig.DBHorizontalDerby.INSTANCE; + + public static final RepositoryConfig HIBERNATE = RepositoryConfig.Hibernate.INSTANCE; + + public static final SessionConfig JVM = SessionConfig.JVM.INSTANCE; + + public static final SessionConfig TCP = SessionConfig.TCP.INSTANCE; + + public static final ModelConfig NATIVE = ModelConfig.Native.INSTANCE; +} diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTest.java index abf0078ad9..85154d2f33 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTest.java @@ -24,6 +24,7 @@ import org.eclipse.emf.cdo.tests.model4.model4Factory; import org.eclipse.emf.cdo.tests.model4.model4Package; import org.eclipse.emf.cdo.tests.model4interfaces.model4interfacesPackage; +import org.eclipse.net4j.acceptor.IAcceptor; import org.eclipse.net4j.connector.IConnector; import org.eclipse.net4j.tests.AbstractOMTest; import org.eclipse.net4j.util.container.IManagedContainer; @@ -31,22 +32,15 @@ import org.eclipse.net4j.util.container.IManagedContainer; import org.eclipse.emf.ecore.EPackage; import java.text.MessageFormat; +import java.util.HashMap; import java.util.Map; /** * @author Eike Stepper */ -public abstract class ConfigTest extends AbstractOMTest implements ContainerProvider, RepositoryProvider, - SessionProvider, ModelProvider +public abstract class ConfigTest extends AbstractOMTest implements ConfigConstants, ContainerProvider, + RepositoryProvider, SessionProvider, ModelProvider { - private ContainerConfig containerConfig; - - private RepositoryConfig repositoryConfig; - - private SessionConfig sessionConfig; - - private ModelConfig modelConfig; - public ConfigTest() { } @@ -57,6 +51,16 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv /** *@category Container */ + public static final ContainerConfig DEFAULT_CONTAINER_CONFIG = COMBINED; + + /** + *@category Container + */ + private ContainerConfig containerConfig; + + /** + *@category Container + */ public ContainerConfig getContainerConfig() { return containerConfig; @@ -73,6 +77,22 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv /** *@category Container */ + public boolean hasClientContainer() + { + return containerConfig.hasClientContainer(); + } + + /** + *@category Container + */ + public boolean hasServerContainer() + { + return containerConfig.hasServerContainer(); + } + + /** + *@category Container + */ public IManagedContainer getClientContainer() { return containerConfig.getClientContainer(); @@ -86,12 +106,30 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv return containerConfig.getServerContainer(); } + /** + *@category Container + */ + public void restartContainers() throws Exception + { + containerConfig.restartContainers(); + } + // ///////////////////////////////////////////////////////////////////////// // //////////////////////// Repository ///////////////////////////////////// /** *@category Repository */ + public static final RepositoryConfig DEFAULT_REPOSITORY_CONFIG = MEM; + + /** + *@category Repository + */ + private RepositoryConfig repositoryConfig; + + /** + *@category Repository + */ public RepositoryConfig getRepositoryConfig() { return repositoryConfig; @@ -135,6 +173,16 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv /** *@category Session */ + public static final SessionConfig DEFAULT_SESSION_CONFIG = TCP; + + /** + *@category Session + */ + private SessionConfig sessionConfig; + + /** + *@category Session + */ public SessionConfig getSessionConfig() { return sessionConfig; @@ -151,6 +199,30 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv /** *@category Session */ + public void startTransport() throws Exception + { + sessionConfig.startTransport(); + } + + /** + *@category Session + */ + public void stopTransport() throws Exception + { + sessionConfig.stopTransport(); + } + + /** + *@category Session + */ + public IAcceptor getAcceptor() + { + return sessionConfig.getAcceptor(); + } + + /** + *@category Session + */ public IConnector getConnector() { return sessionConfig.getConnector(); @@ -191,6 +263,22 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv /** *@category Session */ + public CDOSession openEagerSession() + { + return sessionConfig.openEagerSession(); + } + + /** + *@category Session + */ + public CDOSession openLazySession() + { + return sessionConfig.openLazySession(); + } + + /** + *@category Session + */ public CDOSession openSession(EPackage ePackage) { return sessionConfig.openSession(ePackage); @@ -218,6 +306,16 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv /** *@category Model */ + public static final ModelConfig DEFAULT_MODEL_CONFIG = NATIVE; + + /** + *@category Model + */ + private ModelConfig modelConfig; + + /** + *@category Model + */ public ModelConfig getModelConfig() { return modelConfig; @@ -322,9 +420,9 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv // ///////////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////////// - public Map<String, String> getProperties() + public Map<String, Object> getTestProperties() { - return null; + return new HashMap<String, Object>(); } public boolean isValid() @@ -339,20 +437,66 @@ public abstract class ConfigTest extends AbstractOMTest implements ContainerProv repositoryConfig, sessionConfig, modelConfig); } + protected ContainerConfig filterContainerConfig(ContainerConfig config) + { + if (config == null) + { + config = DEFAULT_CONTAINER_CONFIG; + } + + return config; + } + + protected RepositoryConfig filterRepositoryConfig(RepositoryConfig config) + { + if (config == null) + { + config = DEFAULT_REPOSITORY_CONFIG; + } + + return config; + } + + protected SessionConfig filterSessionConfig(SessionConfig config) + { + if (config == null) + { + config = DEFAULT_SESSION_CONFIG; + } + + return config; + } + + protected ModelConfig filterModelConfig(ModelConfig config) + { + if (config == null) + { + config = DEFAULT_MODEL_CONFIG; + } + + return config; + } + protected void skipConfig(Config config) { - skipTest(modelConfig == config); - skipTest(sessionConfig == config); + skipTest(containerConfig == config || repositoryConfig == config || sessionConfig == config + || modelConfig == config); + } + + protected void skipUnlessConfig(Config config) + { + skipTest(containerConfig != config && repositoryConfig != config && sessionConfig != config + && modelConfig != config); } @Override protected void doSetUp() throws Exception { super.doSetUp(); - setUpConfig(containerConfig); - setUpConfig(repositoryConfig); - setUpConfig(sessionConfig); - setUpConfig(modelConfig); + setUpConfig(containerConfig = filterContainerConfig(containerConfig)); + setUpConfig(repositoryConfig = filterRepositoryConfig(repositoryConfig)); + setUpConfig(sessionConfig = filterSessionConfig(sessionConfig)); + setUpConfig(modelConfig = filterModelConfig(modelConfig)); } @Override diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTestSuite.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTestSuite.java index 60f0da6acf..2a57d76bd7 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTestSuite.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ConfigTestSuite.java @@ -23,14 +23,8 @@ import junit.framework.TestSuite; /** * @author Eike Stepper */ -public abstract class ConfigTestSuite +public abstract class ConfigTestSuite implements ConfigConstants { - public static final Config[][] CONFIGS = { // - ContainerConfig.CONFIGS, // - RepositoryConfig.CONFIGS, // - SessionConfig.CONFIGS, // - ModelConfig.CONFIGS }; - public ConfigTestSuite() { } @@ -42,7 +36,7 @@ public abstract class ConfigTestSuite return suite; } - private void initConfigSuites(TestSuite parent) + protected void initConfigSuites(TestSuite parent) { for (ContainerConfig containerConfig : ContainerConfig.CONFIGS) { @@ -59,7 +53,7 @@ public abstract class ConfigTestSuite } } - private void initConfigSuite(TestSuite parent, ContainerConfig containerConfig, RepositoryConfig repositoryConfig, + protected void initConfigSuite(TestSuite parent, ContainerConfig containerConfig, RepositoryConfig repositoryConfig, SessionConfig sessionConfig, ModelConfig modelConfig) { Set<Config> configs = new HashSet<Config>(); @@ -107,7 +101,7 @@ public abstract class ConfigTestSuite public ConfigSuite(Class<? extends ConfigTest> testClass, ContainerConfig containerConfig, RepositoryConfig repositoryConfig, SessionConfig sessionConfig, ModelConfig modelConfig) { - super(testClass, testClass.getSimpleName()); + super(testClass, testClass.getName()); // Important for the UI to set the *qualified* class name! this.containerConfig = containerConfig; this.repositoryConfig = repositoryConfig; this.sessionConfig = sessionConfig; @@ -137,14 +131,21 @@ public abstract class ConfigTestSuite @Override public void runTest(Test test, TestResult result) { - ConfigTest configTest = (ConfigTest)test; - configTest.setContainerConfig(containerConfig); - configTest.setRepositoryConfig(repositoryConfig); - configTest.setSessionConfig(sessionConfig); - configTest.setModelConfig(modelConfig); - if (configTest.isValid()) + if (test instanceof ConfigTest) + { + ConfigTest configTest = (ConfigTest)test; + configTest.setContainerConfig(containerConfig); + configTest.setRepositoryConfig(repositoryConfig); + configTest.setSessionConfig(sessionConfig); + configTest.setModelConfig(modelConfig); + if (configTest.isValid()) + { + super.runTest(configTest, result); + } + } + else { - super.runTest(configTest, result); + super.runTest(test, result); } } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerConfig.java index eacb9491a6..e3a9da904f 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerConfig.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerConfig.java @@ -16,6 +16,8 @@ import org.eclipse.emf.cdo.util.CDOUtil; import org.eclipse.net4j.Net4jUtil; import org.eclipse.net4j.util.container.ContainerUtil; import org.eclipse.net4j.util.container.IManagedContainer; +import org.eclipse.net4j.util.io.IOUtil; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; /** * @author Eike Stepper @@ -29,6 +31,41 @@ public abstract class ContainerConfig extends Config implements ContainerProvide super(name); } + protected IManagedContainer clientContainer; + + protected IManagedContainer serverContainer; + + public boolean hasClientContainer() + { + return clientContainer != null; + } + + public boolean hasServerContainer() + { + return serverContainer != null; + } + + public void restartContainers() throws Exception + { + IOUtil.OUT().println("RESTARTING CONTAINER"); + getCurrentTest().stopTransport(); + + // Stop client + LifecycleUtil.deactivate(clientContainer); + clientContainer = null; + + // Restart server + LifecycleUtil.deactivate(serverContainer); + serverContainer = null; + getServerContainer(); + + // Start client + getClientContainer(); + + getCurrentTest().startTransport(); + IOUtil.OUT().println("RESTARTING CONTAINER - FINISHED"); + } + /** * @author Eike Stepper */ @@ -38,8 +75,6 @@ public abstract class ContainerConfig extends Config implements ContainerProvide public static final Combined INSTANCE = new Combined(); - private IManagedContainer container; - public Combined() { super(NAME); @@ -47,12 +82,14 @@ public abstract class ContainerConfig extends Config implements ContainerProvide public synchronized IManagedContainer getClientContainer() { - if (container == null) + if (clientContainer == null) { - container = createContainer(); + clientContainer = createContainer(); + LifecycleUtil.activate(clientContainer); + serverContainer = clientContainer; } - return container; + return clientContainer; } public IManagedContainer getServerContainer() @@ -79,10 +116,6 @@ public abstract class ContainerConfig extends Config implements ContainerProvide public static final Separated INSTANCE = new Separated(); - private IManagedContainer clientContainer; - - private IManagedContainer serverContainer; - public Separated() { super(NAME); @@ -93,6 +126,7 @@ public abstract class ContainerConfig extends Config implements ContainerProvide if (clientContainer == null) { clientContainer = createClientContainer(); + LifecycleUtil.activate(clientContainer); } return clientContainer; @@ -103,6 +137,7 @@ public abstract class ContainerConfig extends Config implements ContainerProvide if (serverContainer == null) { serverContainer = createServerContainer(); + LifecycleUtil.activate(serverContainer); } return serverContainer; diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerProvider.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerProvider.java index 80aa37053c..335555e31b 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerProvider.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/ContainerProvider.java @@ -17,7 +17,13 @@ import org.eclipse.net4j.util.container.IManagedContainer; */ public interface ContainerProvider { + public boolean hasClientContainer(); + + public boolean hasServerContainer(); + public IManagedContainer getClientContainer(); public IManagedContainer getServerContainer(); + + public void restartContainers() throws Exception; } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/RepositoryConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/RepositoryConfig.java index 5699b996dd..65bd709790 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/RepositoryConfig.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/RepositoryConfig.java @@ -10,15 +10,23 @@ **************************************************************************/ package org.eclipse.emf.cdo.tests.config; +import org.eclipse.emf.cdo.internal.server.Repository; +import org.eclipse.emf.cdo.internal.server.RevisionManager; import org.eclipse.emf.cdo.server.CDOServerUtil; import org.eclipse.emf.cdo.server.IRepository; +import org.eclipse.emf.cdo.server.IRepositoryProvider; import org.eclipse.emf.cdo.server.IStore; import org.eclipse.emf.cdo.server.StoreUtil; import org.eclipse.emf.cdo.server.IRepository.Props; import org.eclipse.emf.cdo.server.db.IMappingStrategy; +import org.eclipse.net4j.util.ObjectUtil; +import org.eclipse.net4j.util.container.IManagedContainer; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; + import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; /** * @author Eike Stepper @@ -28,6 +36,12 @@ public abstract class RepositoryConfig extends Config implements RepositoryProvi public static final RepositoryConfig[] CONFIGS = { MEM.INSTANCE, DBHorizontalHsql.INSTANCE, DBHorizontalDerby.INSTANCE, Hibernate.INSTANCE }; + public static final String PROP_TEST_REPOSITORY = "test.repository"; + + public static final String PROP_TEST_REVISION_MANAGER = "test.repository.revisionmanager"; + + public static final String PROP_TEST_STORE = "test.repository.store"; + private Map<String, IRepository> repositories = new HashMap<String, IRepository>(); public RepositoryConfig(String name) @@ -40,10 +54,16 @@ public abstract class RepositoryConfig extends Config implements RepositoryProvi Map<String, String> repositoryProperties = new HashMap<String, String>(); initRepositoryProperties(repositoryProperties); - Map<String, String> properties = getCurrentTest().getProperties(); - if (properties != null) + Map<String, Object> testProperties = getTestProperties(); + if (testProperties != null) { - repositoryProperties.putAll(properties); + for (Entry<String, Object> entry : testProperties.entrySet()) + { + if (entry.getValue() instanceof String) + { + repositoryProperties.put(entry.getKey(), (String)entry.getValue()); + } + } } return repositoryProperties; @@ -54,8 +74,21 @@ public abstract class RepositoryConfig extends Config implements RepositoryProvi IRepository repository = repositories.get(name); if (repository == null) { - repository = createRepository(); + repository = getTestRepository(); + if (repository != null && !ObjectUtil.equals(repository.getName(), name)) + { + repository = null; + } + + if (repository == null) + { + repository = createRepository(name); + } + repositories.put(name, repository); + LifecycleUtil.activate(repository); + // IManagedContainer serverContainer = getCurrentTest().getServerContainer(); + // CDOServerUtil.addRepository(serverContainer, repository); } return repository; @@ -63,13 +96,30 @@ public abstract class RepositoryConfig extends Config implements RepositoryProvi protected void initRepositoryProperties(Map<String, String> props) { - props.put(Props.PROP_OVERRIDE_UUID, "TEST_UUID"); + props.put(Props.PROP_OVERRIDE_UUID, ""); // UUID := name !!! props.put(Props.PROP_SUPPORTING_REVISION_DELTAS, "true"); props.put(Props.PROP_CURRENT_LRU_CAPACITY, "10000"); props.put(Props.PROP_REVISED_LRU_CAPACITY, "10000"); } @Override + protected void setUp() throws Exception + { + super.setUp(); + IManagedContainer serverContainer = getCurrentTest().getServerContainer(); + CDOServerUtil.prepareContainer(serverContainer, new IRepositoryProvider() + { + public IRepository getRepository(String name) + { + return repositories.get(name); + } + }); + + // Start default repository + getRepository(REPOSITORY_NAME); + } + + @Override protected void tearDown() throws Exception { // TODO deactivate? @@ -77,13 +127,42 @@ public abstract class RepositoryConfig extends Config implements RepositoryProvi super.tearDown(); } - protected IRepository createRepository() + protected IRepository createRepository(String name) { - return CDOServerUtil.createRepository(REPOSITORY_NAME, createStore(), getRepositoryProperties()); + IStore store = getTestStore(); + if (store == null) + { + store = createStore(); + } + + Repository repository = (Repository)CDOServerUtil.createRepository(name, store, getRepositoryProperties()); + + RevisionManager revisionManager = getTestRevisionManager(); + if (revisionManager != null) + { + repository.setRevisionManager(revisionManager); + } + + return repository; } protected abstract IStore createStore(); + protected IRepository getTestRepository() + { + return (IRepository)getTestProperty(PROP_TEST_REPOSITORY); + } + + protected RevisionManager getTestRevisionManager() + { + return (RevisionManager)getTestProperty(PROP_TEST_REVISION_MANAGER); + } + + protected IStore getTestStore() + { + return (IStore)getTestProperty(PROP_TEST_STORE); + } + /** * @author Eike Stepper */ diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionConfig.java index 11f5ee5ecb..b13f0a71a2 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionConfig.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionConfig.java @@ -14,9 +14,11 @@ import org.eclipse.emf.cdo.CDOSession; import org.eclipse.emf.cdo.CDOSessionConfiguration; import org.eclipse.emf.cdo.util.CDOUtil; +import org.eclipse.net4j.acceptor.IAcceptor; import org.eclipse.net4j.connector.IConnector; import org.eclipse.net4j.jvm.JVMUtil; import org.eclipse.net4j.tcp.TCPUtil; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.emf.ecore.EPackage; @@ -34,6 +36,30 @@ public abstract class SessionConfig extends Config implements SessionProvider super(name); } + public void startTransport() throws Exception + { + IAcceptor acceptor = getAcceptor(); + LifecycleUtil.activate(acceptor); + + IConnector connector = getConnector(); + LifecycleUtil.activate(connector); + } + + public void stopTransport() throws Exception + { + if (getCurrentTest().hasClientContainer()) + { + IConnector connector = getConnector(); + LifecycleUtil.deactivate(connector); + } + + if (getCurrentTest().hasServerContainer()) + { + IAcceptor acceptor = getAcceptor(); + LifecycleUtil.deactivate(acceptor); + } + } + public CDOSession openMangoSession() { return openSession(getCurrentTest().getMangoPackage()); @@ -41,17 +67,33 @@ public abstract class SessionConfig extends Config implements SessionProvider public CDOSession openModel1Session() { - return openSession(getCurrentTest().getMangoPackage()); + return openSession(getCurrentTest().getModel1Package()); } public CDOSession openModel2Session() { - return openSession(getCurrentTest().getMangoPackage()); + CDOSession session = openModel1Session(); + session.getPackageRegistry().putEPackage(getCurrentTest().getModel2Package()); + return session; } public CDOSession openModel3Session() { - return openSession(getCurrentTest().getMangoPackage()); + return openSession(getCurrentTest().getModel3Package()); + } + + public CDOSession openEagerSession() + { + CDOSessionConfiguration configuration = createSessionConfiguration(RepositoryProvider.REPOSITORY_NAME); + configuration.setEagerPackageRegistry(); + return configuration.openSession(); + } + + public CDOSession openLazySession() + { + CDOSessionConfiguration configuration = createSessionConfiguration(RepositoryProvider.REPOSITORY_NAME); + configuration.setEagerPackageRegistry(); + return configuration.openSession(); } public CDOSession openSession(EPackage ePackage) @@ -63,9 +105,7 @@ public abstract class SessionConfig extends Config implements SessionProvider public CDOSession openSession(String repositoryName) { - CDOSessionConfiguration configuration = CDOUtil.createSessionConfiguration(); - configuration.setConnector(getConnector()); - configuration.setRepositoryName(repositoryName); + CDOSessionConfiguration configuration = createSessionConfiguration(repositoryName); return configuration.openSession(); } @@ -74,6 +114,14 @@ public abstract class SessionConfig extends Config implements SessionProvider return openSession(RepositoryProvider.REPOSITORY_NAME); } + private CDOSessionConfiguration createSessionConfiguration(String repositoryName) + { + CDOSessionConfiguration configuration = CDOUtil.createSessionConfiguration(); + configuration.setConnector(getConnector()); + configuration.setRepositoryName(repositoryName); + return configuration; + } + /** * @author Eike Stepper */ @@ -90,6 +138,11 @@ public abstract class SessionConfig extends Config implements SessionProvider super(NAME); } + public IAcceptor getAcceptor() + { + return TCPUtil.getAcceptor(getCurrentTest().getServerContainer(), null); + } + public IConnector getConnector() { return TCPUtil.getConnector(getCurrentTest().getClientContainer(), CONNECTOR_HOST); @@ -100,7 +153,7 @@ public abstract class SessionConfig extends Config implements SessionProvider { super.setUp(); TCPUtil.prepareContainer(getCurrentTest().getClientContainer()); - TCPUtil.prepareContainer(getCurrentTest().getClientContainer()); + TCPUtil.prepareContainer(getCurrentTest().getServerContainer()); } } @@ -113,24 +166,29 @@ public abstract class SessionConfig extends Config implements SessionProvider public static final JVM INSTANCE = new JVM(); - public static final String CONNECTOR_NAME = "default"; + public static final String ACCEPTOR_NAME = "default"; public JVM() { super(NAME); } + public IAcceptor getAcceptor() + { + return JVMUtil.getAcceptor(getCurrentTest().getServerContainer(), ACCEPTOR_NAME); + } + public IConnector getConnector() { - return JVMUtil.getConnector(getCurrentTest().getClientContainer(), CONNECTOR_NAME); + return JVMUtil.getConnector(getCurrentTest().getClientContainer(), ACCEPTOR_NAME); } @Override protected void setUp() throws Exception { super.setUp(); - TCPUtil.prepareContainer(getCurrentTest().getClientContainer()); - TCPUtil.prepareContainer(getCurrentTest().getClientContainer()); + JVMUtil.prepareContainer(getCurrentTest().getClientContainer()); + JVMUtil.prepareContainer(getCurrentTest().getServerContainer()); } @Override diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionProvider.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionProvider.java index b55e1ed9a8..4722bdaba7 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionProvider.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/SessionProvider.java @@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.tests.config; import org.eclipse.emf.cdo.CDOSession; +import org.eclipse.net4j.acceptor.IAcceptor; import org.eclipse.net4j.connector.IConnector; import org.eclipse.emf.ecore.EPackage; @@ -21,6 +22,12 @@ import org.eclipse.emf.ecore.EPackage; */ public interface SessionProvider { + public void startTransport() throws Exception; + + public void stopTransport() throws Exception; + + public IAcceptor getAcceptor(); + public IConnector getConnector(); public CDOSession openMangoSession(); @@ -31,6 +38,10 @@ public interface SessionProvider public CDOSession openModel3Session(); + public CDOSession openEagerSession(); + + public CDOSession openLazySession(); + public CDOSession openSession(EPackage ePackage); public CDOSession openSession(String repositoryName); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java index 0ded76661c..5379f25ebb 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/store/logic/TestLogic.java @@ -92,7 +92,7 @@ public abstract class TestLogic extends AbstractOMTest props.putAll(testProperties); } - Repository repository = new Repository(); + Repository repository = new Repository.Default(); repository.setName(REPOSITORY_NAME); repository.setProperties(props); repository.setStore(createStore()); |