import java.util.Collection;\r
import java.util.HashMap;\r
import java.util.Iterator;\r
-import java.util.Map;\r
import java.util.Map.Entry;\r
\r
-import javax.security.auth.login.AppConfigurationEntry;\r
import javax.transaction.TransactionManager;\r
\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
import org.collectionspace.services.config.tenant.RepositoryDomainType;\r
import org.jboss.remoting.InvokerLocator;\r
-import org.nuxeo.common.collections.ListenerList;\r
import org.nuxeo.ecm.core.api.repository.Repository;\r
import org.nuxeo.ecm.core.api.repository.RepositoryInstance;\r
import org.nuxeo.ecm.core.api.repository.RepositoryInstanceHandler;\r
import org.nuxeo.ecm.core.api.repository.RepositoryManager;\r
-import org.nuxeo.ecm.core.client.ConnectionListener;\r
import org.nuxeo.ecm.core.client.DefaultLoginHandler;\r
import org.nuxeo.ecm.core.client.LoginHandler;\r
//import org.nuxeo.ecm.core.repository.RepositoryDescriptor;\r
-import org.nuxeo.ecm.core.schema.SchemaManager;\r
-import org.nuxeo.ecm.core.schema.SchemaManagerImpl;\r
-import org.nuxeo.ecm.core.schema.TypeProvider;\r
import org.nuxeo.runtime.api.Framework;\r
-import org.nuxeo.runtime.api.ServiceDescriptor;\r
-import org.nuxeo.runtime.api.ServiceManager;\r
-import org.nuxeo.runtime.api.login.LoginComponent;\r
-import org.nuxeo.runtime.api.login.LoginService;\r
-import org.nuxeo.runtime.api.login.SecurityDomain;\r
-import org.nuxeo.runtime.config.AutoConfigurationService;\r
-import org.nuxeo.runtime.remoting.RemotingService;\r
-import org.nuxeo.runtime.services.streaming.StreamingService;\r
import org.nuxeo.runtime.transaction.TransactionHelper;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
private final HashMap<String, RepositoryInstance> repositoryInstances;\r
\r
- private final ListenerList connectionListeners;\r
-\r
private InvokerLocator locator;\r
\r
- private String serverName;\r
-\r
- private final AutoConfigurationService cfg;\r
-\r
private RepositoryManager repositoryMgr;\r
\r
private static final NuxeoClientEmbedded instance = new NuxeoClientEmbedded();\r
* of this constructor is recommended.\r
*/\r
public NuxeoClientEmbedded() {\r
- connectionListeners = new ListenerList();\r
- cfg = new AutoConfigurationService();\r
loginHandler = loginHandler == null ? new DefaultLoginHandler()\r
: loginHandler;\r
repositoryInstances = new HashMap<String, RepositoryInstance>();\r
return instance;\r
}\r
\r
- @Deprecated\r
- private synchronized void disconnect() throws Exception {\r
- if (locator == null) {\r
- throw new IllegalStateException("Client is not connected");\r
- }\r
- doDisconnect();\r
- }\r
-\r
public synchronized void tryDisconnect() throws Exception {\r
if (locator == null) {\r
return; // do nothing\r
\r
private void doDisconnect() throws Exception {\r
locator = null;\r
- serverName = null;\r
// close repository sessions if any\r
Iterator<Entry<String, RepositoryInstance>> it = repositoryInstances.entrySet().iterator();\r
while (it.hasNext()) {\r
repositoryMgr = null;\r
}\r
\r
- public synchronized String getServerName() {\r
- if (locator == null) {\r
- throw new IllegalStateException("Client is not connected");\r
- }\r
- if (serverName == null) {\r
- if (cfg == null) { // compatibility\r
- serverName = RemotingService.ping(locator.getHost(),\r
- locator.getPort());\r
- } else {\r
- serverName = cfg.getServerConfiguration().getProductInfo();\r
- }\r
- }\r
- return serverName;\r
- }\r
-\r
public synchronized boolean isConnected() {\r
return true;\r
}\r
}\r
}\r
\r
- // REM 10/29/2013 - We may want to add this clause if (!TransactionHelper.isTransactionActive()) {\r
- boolean startTransaction = TransactionHelper.startTransaction();\r
- if (startTransaction == false) {\r
- logger.warn("Could not start a Nuxeo transaction with the TransactionHelper class.");\r
+ boolean startedTransaction = false;\r
+ if (TransactionHelper.isTransactionActive() == false) {\r
+ startedTransaction = TransactionHelper.startTransaction();\r
+ if (startedTransaction == false) {\r
+ String errMsg = "Could not start a Nuxeo transaction with the TransactionHelper class.";\r
+ logger.error(errMsg);\r
+ throw new Exception(errMsg);\r
+ }\r
+ } else {\r
+ logger.warn("A request to start a new transaction was made, but a transaction is already open.");\r
}\r
\r
Repository repository = null;\r
if (repoName != null) {\r
repository = getRepositoryManager().getRepository(repoName);\r
} else {\r
- repository = getRepositoryManager().getDefaultRepository(); // Add a log info statement here stating that since no repo name was given we'll use the default repo instead\r
+ repository = getRepositoryManager().getDefaultRepository();\r
+ logger.warn(String.format("Using default repository '%s' because no name was specified.", repository.getName()));\r
}\r
\r
if (repository != null) {\r
result = newRepositoryInstance(repository);\r
- String key = result.getSessionId();\r
- repositoryInstances.put(key, result);\r
- if (logger.isTraceEnabled()) {\r
- logger.trace("Added a new repository instance to our repo list. Current count is now: "\r
- + repositoryInstances.size());\r
+ if (result != null) {\r
+ String key = result.getSessionId();\r
+ repositoryInstances.put(key, result);\r
+ if (logger.isTraceEnabled()) {\r
+ logger.trace(String.format("A new transaction was started on thread '%d' : %s.",\r
+ Thread.currentThread().getId(), startedTransaction ? "true" : "false"));\r
+ logger.trace(String.format("Added a new repository instance to our repo list. Current count is now: %d",\r
+ repositoryInstances.size()));\r
+ }\r
+ } else {\r
+ String errMsg = String.format("Could not create a new repository instance for '%s' repository.", repository.getName());\r
+ logger.error(errMsg);\r
+ throw new Exception(errMsg);\r
}\r
} else {\r
String errMsg = String.format("Could not open a session to the Nuxeo repository='%s'", repoName);\r
+ repositoryInstances.size());\r
}\r
}\r
- //if (TransactionHelper.isTransactionActiveOrMarkedRollback())\r
- TransactionHelper.commitOrRollbackTransaction();\r
+ if (TransactionHelper.isTransactionActiveOrMarkedRollback() == true) {\r
+ TransactionHelper.commitOrRollbackTransaction();\r
+ logger.trace(String.format("Transaction closed on thread '%d'", Thread.currentThread().getId()));\r
+ }\r
}\r
}\r
\r