diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.dawn.util/src/org/eclipse/emf/cdo/dawn/util/connection/CDOConnectionUtil.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.dawn.util/src/org/eclipse/emf/cdo/dawn/util/connection/CDOConnectionUtil.java | 432 |
1 files changed, 216 insertions, 216 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.util/src/org/eclipse/emf/cdo/dawn/util/connection/CDOConnectionUtil.java b/plugins/org.eclipse.emf.cdo.dawn.util/src/org/eclipse/emf/cdo/dawn/util/connection/CDOConnectionUtil.java index a10c15ec35..573fa93590 100644 --- a/plugins/org.eclipse.emf.cdo.dawn.util/src/org/eclipse/emf/cdo/dawn/util/connection/CDOConnectionUtil.java +++ b/plugins/org.eclipse.emf.cdo.dawn.util/src/org/eclipse/emf/cdo/dawn/util/connection/CDOConnectionUtil.java @@ -1,216 +1,216 @@ -/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * 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:
- * Martin Fluegge - initial API and implementation
- */
-package org.eclipse.emf.cdo.dawn.util.connection;
-
-import org.eclipse.emf.cdo.dawn.internal.util.bundle.OM;
-import org.eclipse.emf.cdo.dawn.util.exceptions.DawnInvalidIdException;
-import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
-import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CDOUtil;
-import org.eclipse.emf.cdo.view.CDOAdapterPolicy;
-import org.eclipse.emf.cdo.view.CDOView;
-import org.eclipse.emf.cdo.view.CDOViewSet;
-
-import org.eclipse.net4j.Net4jUtil;
-import org.eclipse.net4j.connector.IConnector;
-import org.eclipse.net4j.tcp.TCPUtil;
-import org.eclipse.net4j.util.container.IPluginContainer;
-import org.eclipse.net4j.util.om.OMPlatform;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.spi.cdo.InternalCDOView;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Martin Fluegge
- */
-public class CDOConnectionUtil
-{
- private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, CDOConnectionUtil.class);
-
- public static CDOConnectionUtil instance = new CDOConnectionUtil();
-
- private CDOSession currentSession;
-
- private String repositoryName;
-
- private String protocol;
-
- private String host;
-
- private Map<String, CDOTransaction> transactions;
-
- private IConnector connector;
-
- static
- {
- if (!OMPlatform.INSTANCE.isOSGiRunning())
- {
- Net4jUtil.prepareContainer(IPluginContainer.INSTANCE);
- TCPUtil.prepareContainer(IPluginContainer.INSTANCE);
- CDONet4jUtil.prepareContainer(IPluginContainer.INSTANCE);
- }
- }
-
- public CDOConnectionUtil()
- {
- }
-
- public void init(String repositoryName, String protocol, String host)
- {
- this.repositoryName = repositoryName;
- this.protocol = protocol;
- this.host = host;
- setConnector(Net4jUtil.getConnector(IPluginContainer.INSTANCE, protocol, host));
- }
-
- public void registerPackages(List<EPackage> packages)
- {
- if (packages == null)
- {
- return;
- }
-
- for (EPackage pack : packages)
- {
- pack.eClass();
- }
- }
-
- /**
- * opens the session if it is not opened.
- */
- public CDOSession openSession()
- {
- if (!CDOUtil.isLegacyModeDefault())
- {
- CDOUtil.setLegacyModeDefault(true);
- }
-
- currentSession = (CDOSession)IPluginContainer.INSTANCE.getElement("org.eclipse.emf.cdo.sessions", "cdo", protocol
- + "://" + host + "?repositoryName=" + repositoryName);
-
- return currentSession;
- }
-
- public void closeCurrentSession()
- {
- getCurrentSession().close();
- }
-
- /**
- * opens a transaction on the given resourceSet
- */
- public CDOTransaction openCurrentTransaction(ResourceSet resourceSet, String id)
- {
- if (id == null)
- {
- throw new DawnInvalidIdException("The identifier '" + id + "' is invalid for openeing a transaction");
- }
-
- if (TRACER.isEnabled())
- {
- TRACER.format("Opening transaction for {0} on {1}", id, resourceSet); //$NON-NLS-1$
- }
-
- id = convert(id);
- CDOTransaction transaction = getCurrentSession().openTransaction(resourceSet);
- getTransactions().put(id, transaction);
- return transaction;
- }
-
- public void setChangeSubscribtionPolicyForCurrentTransaction(CDOAdapterPolicy policy, String id)
- {
- id = convert(id);
- getTransactions().get(id).options().addChangeSubscriptionPolicy(policy);
- }
-
- public CDOTransaction getCurrentTransaction(String id)
- {
- id = convert(id);
- return getTransactions().get(id);
- }
-
- // TODO find a better way to solve this problem
- private String convert(String id)
- {
- return id.replace("dawn", "cdo");
- }
-
- public CDOSession getCurrentSession()
- {
- if (currentSession == null)
- {
- currentSession = openSession();
- }
-
- return currentSession;
- }
-
- public Map<String, CDOTransaction> getTransactions()
- {
- if (transactions == null)
- {
- transactions = new HashMap<String, CDOTransaction>();
- }
-
- return transactions;
- }
-
- public CDOView openView(CDOSession session)
- {
- return session.openView();
- }
-
- public CDOTransaction openTransaction(CDOSession session)
- {
- return session.openTransaction();
- }
-
- @Deprecated
- public static void closeSession(CDOSession session)
- {
- session.close();
- }
-
- public CDOTransaction getOrOpenCurrentTransaction(String id, ResourceSet resourceSet, String repositoryName)
- {
- CDOTransaction transaction = getCurrentTransaction(id);
- CDOViewSet viewSet = CDOUtil.getViewSet(resourceSet);
- if (viewSet != null)
- {
- return ((InternalCDOView)viewSet.resolveView(repositoryName)).toTransaction();
- }
-
- if (transaction == null)
- {
- transaction = openCurrentTransaction(resourceSet, id);
- }
-
- return transaction;
- }
-
- public void setConnector(IConnector connector)
- {
- this.connector = connector;
- }
-
- public IConnector getConnector()
- {
- return connector;
- }
-}
+/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * 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: + * Martin Fluegge - initial API and implementation + */ +package org.eclipse.emf.cdo.dawn.util.connection; + +import org.eclipse.emf.cdo.dawn.internal.util.bundle.OM; +import org.eclipse.emf.cdo.dawn.util.exceptions.DawnInvalidIdException; +import org.eclipse.emf.cdo.net4j.CDONet4jUtil; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.transaction.CDOTransaction; +import org.eclipse.emf.cdo.util.CDOUtil; +import org.eclipse.emf.cdo.view.CDOAdapterPolicy; +import org.eclipse.emf.cdo.view.CDOView; +import org.eclipse.emf.cdo.view.CDOViewSet; + +import org.eclipse.net4j.Net4jUtil; +import org.eclipse.net4j.connector.IConnector; +import org.eclipse.net4j.tcp.TCPUtil; +import org.eclipse.net4j.util.container.IPluginContainer; +import org.eclipse.net4j.util.om.OMPlatform; +import org.eclipse.net4j.util.om.trace.ContextTracer; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.spi.cdo.InternalCDOView; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Martin Fluegge + */ +public class CDOConnectionUtil +{ + private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, CDOConnectionUtil.class); + + public static CDOConnectionUtil instance = new CDOConnectionUtil(); + + private CDOSession currentSession; + + private String repositoryName; + + private String protocol; + + private String host; + + private Map<String, CDOTransaction> transactions; + + private IConnector connector; + + static + { + if (!OMPlatform.INSTANCE.isOSGiRunning()) + { + Net4jUtil.prepareContainer(IPluginContainer.INSTANCE); + TCPUtil.prepareContainer(IPluginContainer.INSTANCE); + CDONet4jUtil.prepareContainer(IPluginContainer.INSTANCE); + } + } + + public CDOConnectionUtil() + { + } + + public void init(String repositoryName, String protocol, String host) + { + this.repositoryName = repositoryName; + this.protocol = protocol; + this.host = host; + setConnector(Net4jUtil.getConnector(IPluginContainer.INSTANCE, protocol, host)); + } + + public void registerPackages(List<EPackage> packages) + { + if (packages == null) + { + return; + } + + for (EPackage pack : packages) + { + pack.eClass(); + } + } + + /** + * opens the session if it is not opened. + */ + public CDOSession openSession() + { + if (!CDOUtil.isLegacyModeDefault()) + { + CDOUtil.setLegacyModeDefault(true); + } + + currentSession = (CDOSession)IPluginContainer.INSTANCE.getElement("org.eclipse.emf.cdo.sessions", "cdo", protocol + + "://" + host + "?repositoryName=" + repositoryName); + + return currentSession; + } + + public void closeCurrentSession() + { + getCurrentSession().close(); + } + + /** + * opens a transaction on the given resourceSet + */ + public CDOTransaction openCurrentTransaction(ResourceSet resourceSet, String id) + { + if (id == null) + { + throw new DawnInvalidIdException("The identifier '" + id + "' is invalid for openeing a transaction"); + } + + if (TRACER.isEnabled()) + { + TRACER.format("Opening transaction for {0} on {1}", id, resourceSet); //$NON-NLS-1$ + } + + id = convert(id); + CDOTransaction transaction = getCurrentSession().openTransaction(resourceSet); + getTransactions().put(id, transaction); + return transaction; + } + + public void setChangeSubscribtionPolicyForCurrentTransaction(CDOAdapterPolicy policy, String id) + { + id = convert(id); + getTransactions().get(id).options().addChangeSubscriptionPolicy(policy); + } + + public CDOTransaction getCurrentTransaction(String id) + { + id = convert(id); + return getTransactions().get(id); + } + + // TODO find a better way to solve this problem + private String convert(String id) + { + return id.replace("dawn", "cdo"); + } + + public CDOSession getCurrentSession() + { + if (currentSession == null) + { + currentSession = openSession(); + } + + return currentSession; + } + + public Map<String, CDOTransaction> getTransactions() + { + if (transactions == null) + { + transactions = new HashMap<String, CDOTransaction>(); + } + + return transactions; + } + + public CDOView openView(CDOSession session) + { + return session.openView(); + } + + public CDOTransaction openTransaction(CDOSession session) + { + return session.openTransaction(); + } + + @Deprecated + public static void closeSession(CDOSession session) + { + session.close(); + } + + public CDOTransaction getOrOpenCurrentTransaction(String id, ResourceSet resourceSet, String repositoryName) + { + CDOTransaction transaction = getCurrentTransaction(id); + CDOViewSet viewSet = CDOUtil.getViewSet(resourceSet); + if (viewSet != null) + { + return ((InternalCDOView)viewSet.resolveView(repositoryName)).toTransaction(); + } + + if (transaction == null) + { + transaction = openCurrentTransaction(resourceSet, id); + } + + return transaction; + } + + public void setConnector(IConnector connector) + { + this.connector = connector; + } + + public IConnector getConnector() + { + return connector; + } +} |