From 9da2ca0ee937abcb293c78192a951fee3e383eb8 Mon Sep 17 00:00:00 2001
From: Eike Stepper
Date: Mon, 16 Jul 2007 15:54:27 +0000
Subject: *** empty log message ***
---
.../emf/cdo/internal/server/RepositoryManager.java | 7 ++--
.../emf/cdo/internal/server/SessionManager.java | 3 +-
.../server/protocol/OpenSessionIndication.java | 30 +++++++++-------
.../eclipse/emf/cdo/server/IRepositoryManager.java | 5 ++-
.../eclipse/emf/cdo/server/ISessionManager.java | 5 ++-
.../cdo/server/RepositoryNotFoundException.java | 37 ++++++++++++++++++++
.../emf/cdo/server/SessionCreationException.java | 40 ++++++++++++++++++++++
.../org/eclipse/net4j/ui/actions/SafeAction.java | 2 ++
.../src/org/eclipse/net4j/signal/Signal.java | 4 +++
9 files changed, 115 insertions(+), 18 deletions(-)
create mode 100644 plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/RepositoryNotFoundException.java
create mode 100644 plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/SessionCreationException.java
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryManager.java
index 64b6984051..a534277f00 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RepositoryManager.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.internal.server;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.server.IRepositoryManager;
import org.eclipse.emf.cdo.server.IStore;
+import org.eclipse.emf.cdo.server.RepositoryNotFoundException;
import org.eclipse.net4j.internal.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
@@ -50,15 +51,16 @@ public final class RepositoryManager extends Lifecycle implements IRepositoryMan
}
}
- public Repository getRepository(String name)
+ public Repository getRepository(String name) throws RepositoryNotFoundException
{
synchronized (repositories)
{
Repository repository = repositories.get(name);
if (repository == null)
{
- throw new RuntimeException("Repository not found: " + name);
+ throw new RepositoryNotFoundException(name);
}
+
return repository;
}
}
@@ -72,6 +74,7 @@ public final class RepositoryManager extends Lifecycle implements IRepositoryMan
{
throw new RuntimeException("Repository already exists: " + name);
}
+
repository = new Repository(name, store);
LifecycleUtil.activate(repository);
repositories.put(name, repository);
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 e612d8b70f..b780911802 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
@@ -14,6 +14,7 @@ import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
import org.eclipse.emf.cdo.internal.server.bundle.OM;
import org.eclipse.emf.cdo.internal.server.protocol.CDOServerProtocol;
import org.eclipse.emf.cdo.server.ISessionManager;
+import org.eclipse.emf.cdo.server.SessionCreationException;
import org.eclipse.net4j.internal.util.om.trace.ContextTracer;
@@ -51,7 +52,7 @@ public class SessionManager implements ISessionManager
}
}
- public Session openSession(CDOServerProtocol protocol)
+ public Session openSession(CDOServerProtocol protocol) throws SessionCreationException
{
int id = ++lastSessionID;
if (TRACER.isEnabled())
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java
index bd35da9ec0..372249219d 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/OpenSessionIndication.java
@@ -20,6 +20,8 @@ import org.eclipse.emf.cdo.protocol.model.CDOPackage;
import org.eclipse.emf.cdo.protocol.model.CDOPackageManager;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.ISession;
+import org.eclipse.emf.cdo.server.RepositoryNotFoundException;
+import org.eclipse.emf.cdo.server.SessionCreationException;
import org.eclipse.net4j.internal.util.om.trace.ContextTracer;
import org.eclipse.net4j.signal.IndicationWithResponse;
@@ -60,8 +62,20 @@ public class OpenSessionIndication extends IndicationWithResponse
@Override
protected void responding(ExtendedDataOutputStream out) throws IOException
{
- Repository repository = RepositoryManager.INSTANCE.getRepository(repositoryName);
- if (repository == null)
+ try
+ {
+ Repository repository = RepositoryManager.INSTANCE.getRepository(repositoryName);
+ SessionManager sessionManager = repository.getSessionManager();
+
+ CDOServerProtocol serverProtocol = (CDOServerProtocol)getProtocol();
+ Session session = sessionManager.openSession(serverProtocol);
+ serverProtocol.setSession(session);
+
+ writeSessionID(out, session);
+ writeRepositoryUUID(out, repository);
+ writePackageURIs(out, repository.getPackageManager());
+ }
+ catch (RepositoryNotFoundException ex)
{
if (PROTOCOL.isEnabled())
{
@@ -69,13 +83,8 @@ public class OpenSessionIndication extends IndicationWithResponse
}
out.writeInt(CDOProtocolConstants.ERROR_REPOSITORY_NOT_FOUND);
- return;
}
-
- CDOServerProtocol serverProtocol = (CDOServerProtocol)getProtocol();
- SessionManager sessionManager = repository.getSessionManager();
- Session session = sessionManager.openSession(serverProtocol);
- if (session == null)
+ catch (SessionCreationException ex)
{
if (PROTOCOL.isEnabled())
{
@@ -85,11 +94,6 @@ public class OpenSessionIndication extends IndicationWithResponse
out.writeInt(CDOProtocolConstants.ERROR_NO_SESSION);
return;
}
-
- serverProtocol.setSession(session);
- writeSessionID(out, session);
- writeRepositoryUUID(out, repository);
- writePackageURIs(out, repository.getPackageManager());
}
private void writeSessionID(ExtendedDataOutputStream out, ISession session) throws IOException
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryManager.java
index da4ee8b7fc..df6f00bf11 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepositoryManager.java
@@ -23,7 +23,10 @@ public interface IRepositoryManager
public IRepository[] getRepositories();
- public IRepository getRepository(String name);
+ /**
+ * @return Never null
+ */
+ public IRepository getRepository(String name) throws RepositoryNotFoundException;
public IRepository addRepository(String name, IStore store);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java
index 8d14c42588..bcabc5e394 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/ISessionManager.java
@@ -21,5 +21,8 @@ public interface ISessionManager
public ISession[] getSessions();
- public ISession openSession(CDOServerProtocol protocol);
+ /**
+ * @return Never null
+ */
+ public ISession openSession(CDOServerProtocol protocol) throws SessionCreationException;
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/RepositoryNotFoundException.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/RepositoryNotFoundException.java
new file mode 100644
index 0000000000..93b601e070
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/RepositoryNotFoundException.java
@@ -0,0 +1,37 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 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.server;
+
+import org.eclipse.emf.cdo.protocol.util.CDOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryNotFoundException extends CDOException
+{
+ private static final long serialVersionUID = 1L;
+
+ public RepositoryNotFoundException(String repositoryName)
+ {
+ super(repositoryName);
+ }
+
+ public String getRepositoryName()
+ {
+ return super.getMessage();
+ }
+
+ @Override
+ public String getMessage()
+ {
+ return "Repository not found: " + getRepositoryName();
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/SessionCreationException.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/SessionCreationException.java
new file mode 100644
index 0000000000..62a90261ae
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/SessionCreationException.java
@@ -0,0 +1,40 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 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.server;
+
+import org.eclipse.emf.cdo.protocol.util.CDOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class SessionCreationException extends CDOException
+{
+ private static final long serialVersionUID = 1L;
+
+ public SessionCreationException()
+ {
+ }
+
+ public SessionCreationException(String message)
+ {
+ super(message);
+ }
+
+ public SessionCreationException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ public SessionCreationException(Throwable cause)
+ {
+ super(cause);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/actions/SafeAction.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/actions/SafeAction.java
index 35bcdbfddb..a1347353ca 100644
--- a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/actions/SafeAction.java
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/actions/SafeAction.java
@@ -3,6 +3,7 @@ package org.eclipse.net4j.ui.actions;
import org.eclipse.net4j.internal.ui.bundle.OM;
import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
/**
@@ -51,6 +52,7 @@ public abstract class SafeAction extends Action
catch (Exception ex)
{
OM.LOG.error(ex);
+ MessageDialog.openError(null, getText(), ex.getMessage() + "\nSee the Error log for details.");
}
}
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java
index 98d56cf998..56ed2bf0c3 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java
@@ -81,6 +81,10 @@ public abstract class Signal implements Runnable
{
throw new TimeoutException("Timeout");
}
+ catch (Exception ex)
+ {
+ throw ex;
+ }
finally
{
getProtocol().stopSignal(this);
--
cgit v1.2.3