diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.doc/src/org/eclipse/emf/cdo/doc/programmers/client/ViewProviders.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.doc/src/org/eclipse/emf/cdo/doc/programmers/client/ViewProviders.java | 292 |
1 files changed, 146 insertions, 146 deletions
diff --git a/plugins/org.eclipse.emf.cdo.doc/src/org/eclipse/emf/cdo/doc/programmers/client/ViewProviders.java b/plugins/org.eclipse.emf.cdo.doc/src/org/eclipse/emf/cdo/doc/programmers/client/ViewProviders.java index 745235b4af..68d73b7346 100644 --- a/plugins/org.eclipse.emf.cdo.doc/src/org/eclipse/emf/cdo/doc/programmers/client/ViewProviders.java +++ b/plugins/org.eclipse.emf.cdo.doc/src/org/eclipse/emf/cdo/doc/programmers/client/ViewProviders.java @@ -1,146 +1,146 @@ -/*
- * 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:
- * Victor Roldan Betancort - initial API and implementation
- */
-package org.eclipse.emf.cdo.doc.programmers.client;
-
-import org.eclipse.emf.cdo.eresource.CDOResourceFactory;
-import org.eclipse.emf.cdo.net4j.CDONet4jSessionConfiguration;
-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.view.AbstractCDOViewProvider;
-import org.eclipse.emf.cdo.view.CDOView;
-import org.eclipse.emf.cdo.view.CDOViewProvider;
-import org.eclipse.emf.cdo.view.CDOViewProviderRegistry;
-
-import org.eclipse.net4j.Net4jUtil;
-import org.eclipse.net4j.connector.IConnector;
-import org.eclipse.net4j.tcp.TCPUtil;
-import org.eclipse.net4j.util.container.IManagedContainer;
-import org.eclipse.net4j.util.container.ManagedContainer;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-/**
- * View Providers
- * <p>
- * A {@link CDOViewProvider view provider} allows clients to inject custom logic into the {@link CDOResourceFactory
- * resource factory} mechansim, capable of handling the whole {@link CDOSession session} and {@link CDOView view}
- * instantiation process. This permits to obtain {@link Resource resources} through the {@link ResourceSet resource set}
- * API transparently, without any prior CDO client API code. The view provider automatically kicks in the middle of the
- * {@link ResourceSet#getResource(org.eclipse.emf.common.util.URI, boolean) ResourceSet.getResource()} call, forgetting
- * about the whole openning session / openning transaction process, which happens behind the scenes.
- * <p>
- * This is quite useful when integrating CDO with EMF-based frameworks and tools that are not prepared for a CDO
- * scenario themselves.
- * <p>
- * <b>Table of Contents</b> {@toc}
- *
- * @author Victor Roldan Betancort
- */
-public class ViewProviders
-{
- /**
- * Implementing a View Provider
- * <p>
- * Clients should implement the {@link CDOViewProvider} interface, or sub class the {@link AbstractCDOViewProvider}
- * class, which provides common functionality.
- * <p>
- * The example below shows a simple implementation that opens a <b>new</b> {@link CDOSession session} to a local
- * server and a <b>new</b> {@link CDOTransaction transaction} on that session.
- * <p>
- * {@link #example() ExampleViewProvider.java}
- */
- public class ProviderImplementation
- {
- /**
- * @snippet
- * @callout The example provider catches all URIs with shape "cdo.local:<repoName>".
- * @callout Register the provider with {@link CDOViewProviderRegistry}.
- */
- public void example()
- {
- /* callout */new AbstractCDOViewProvider("cdo\\.local:.*", 100)
- {
- private IManagedContainer container;
-
- /* callout */public CDOView getView(URI uri, ResourceSet resourceSet)
- {
- if (container == null)
- {
- container = new ManagedContainer();
- Net4jUtil.prepareContainer(container);
- TCPUtil.prepareContainer(container);
- container.activate();
- }
-
- int startIndex = uri.toString().indexOf(':');
- String repoName = uri.toString().substring(startIndex);
-
- IConnector connector = (IConnector)container.getElement("org.eclipse.net4j.connectors", "tcp", "localhost");
-
- CDONet4jSessionConfiguration config = CDONet4jUtil.createNet4jSessionConfiguration();
- config.setConnector(connector);
- config.setRepositoryName(repoName);
-
- CDOSession session = config.openNet4jSession();
- return session.openTransaction();
- }
- };
- }
- }
-
- /**
- * Contributing View Providers Programmatically
- * <p>
- * A client's view provider implementation can be contributed programmatically to the {@link CDOViewProviderRegistry},
- * as the following example suggests:
- * <p>
- * {@link #snippet2() ProviderContribution.java}
- */
- public class ContributeProviderProgrammatically
- {
- /**
- * @snippet
- * @callout Get the target {@link CDOViewProvider} implementation.
- * @callout Add the provider instance to {@link CDOViewProviderRegistry}.
- */
- @SuppressWarnings("restriction")
- public void snippet2()
- {
- // Instantiate your view provider
- CDOViewProvider viewProvider = /* callout */org.eclipse.emf.internal.cdo.view.PluginContainerViewProvider.INSTANCE;
-
- // Add the instance to the registry
- /* callout */CDOViewProviderRegistry.INSTANCE.addViewProvider(viewProvider);
- }
- }
-
- /**
- * Contributing View Providers Using Extension Points
- * <p>
- * A specific {@link CDOViewProvider} implementation can also be contributed using the
- * <code>org.eclipse.emf.cdo.viewProviders</code> extension point. Clients specify:
- * <p>
- * <ul>
- * <li>A mandatory <b><code>class</code></b> implementing the {@link CDOViewProvider} interface.
- * <li>A mandatory <b>regular expression</b> string indicating the shape of {@link org.eclipse.emf.common.util.URI
- * URIs} that should match with the contributed provider.
- * <li>An optional <b><code>priority</code></b> integer value, to indicate preference over other implementations
- * matching the same regular expression. A higher value indicates a higher priority, {@link Integer#MAX_VALUE} being
- * the maximum priority value and {@link Integer#MIN_VALUE} the minimum.
- * </ul>
- */
- public class ContributeProviderUsingExtensionPoint
- {
- }
-}
+/* + * 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: + * Victor Roldan Betancort - initial API and implementation + */ +package org.eclipse.emf.cdo.doc.programmers.client; + +import org.eclipse.emf.cdo.eresource.CDOResourceFactory; +import org.eclipse.emf.cdo.net4j.CDONet4jSessionConfiguration; +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.view.AbstractCDOViewProvider; +import org.eclipse.emf.cdo.view.CDOView; +import org.eclipse.emf.cdo.view.CDOViewProvider; +import org.eclipse.emf.cdo.view.CDOViewProviderRegistry; + +import org.eclipse.net4j.Net4jUtil; +import org.eclipse.net4j.connector.IConnector; +import org.eclipse.net4j.tcp.TCPUtil; +import org.eclipse.net4j.util.container.IManagedContainer; +import org.eclipse.net4j.util.container.ManagedContainer; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +/** + * View Providers + * <p> + * A {@link CDOViewProvider view provider} allows clients to inject custom logic into the {@link CDOResourceFactory + * resource factory} mechansim, capable of handling the whole {@link CDOSession session} and {@link CDOView view} + * instantiation process. This permits to obtain {@link Resource resources} through the {@link ResourceSet resource set} + * API transparently, without any prior CDO client API code. The view provider automatically kicks in the middle of the + * {@link ResourceSet#getResource(org.eclipse.emf.common.util.URI, boolean) ResourceSet.getResource()} call, forgetting + * about the whole openning session / openning transaction process, which happens behind the scenes. + * <p> + * This is quite useful when integrating CDO with EMF-based frameworks and tools that are not prepared for a CDO + * scenario themselves. + * <p> + * <b>Table of Contents</b> {@toc} + * + * @author Victor Roldan Betancort + */ +public class ViewProviders +{ + /** + * Implementing a View Provider + * <p> + * Clients should implement the {@link CDOViewProvider} interface, or sub class the {@link AbstractCDOViewProvider} + * class, which provides common functionality. + * <p> + * The example below shows a simple implementation that opens a <b>new</b> {@link CDOSession session} to a local + * server and a <b>new</b> {@link CDOTransaction transaction} on that session. + * <p> + * {@link #example() ExampleViewProvider.java} + */ + public class ProviderImplementation + { + /** + * @snippet + * @callout The example provider catches all URIs with shape "cdo.local:<repoName>". + * @callout Register the provider with {@link CDOViewProviderRegistry}. + */ + public void example() + { + /* callout */new AbstractCDOViewProvider("cdo\\.local:.*", 100) + { + private IManagedContainer container; + + /* callout */public CDOView getView(URI uri, ResourceSet resourceSet) + { + if (container == null) + { + container = new ManagedContainer(); + Net4jUtil.prepareContainer(container); + TCPUtil.prepareContainer(container); + container.activate(); + } + + int startIndex = uri.toString().indexOf(':'); + String repoName = uri.toString().substring(startIndex); + + IConnector connector = (IConnector)container.getElement("org.eclipse.net4j.connectors", "tcp", "localhost"); + + CDONet4jSessionConfiguration config = CDONet4jUtil.createNet4jSessionConfiguration(); + config.setConnector(connector); + config.setRepositoryName(repoName); + + CDOSession session = config.openNet4jSession(); + return session.openTransaction(); + } + }; + } + } + + /** + * Contributing View Providers Programmatically + * <p> + * A client's view provider implementation can be contributed programmatically to the {@link CDOViewProviderRegistry}, + * as the following example suggests: + * <p> + * {@link #snippet2() ProviderContribution.java} + */ + public class ContributeProviderProgrammatically + { + /** + * @snippet + * @callout Get the target {@link CDOViewProvider} implementation. + * @callout Add the provider instance to {@link CDOViewProviderRegistry}. + */ + @SuppressWarnings("restriction") + public void snippet2() + { + // Instantiate your view provider + CDOViewProvider viewProvider = /* callout */org.eclipse.emf.internal.cdo.view.PluginContainerViewProvider.INSTANCE; + + // Add the instance to the registry + /* callout */CDOViewProviderRegistry.INSTANCE.addViewProvider(viewProvider); + } + } + + /** + * Contributing View Providers Using Extension Points + * <p> + * A specific {@link CDOViewProvider} implementation can also be contributed using the + * <code>org.eclipse.emf.cdo.viewProviders</code> extension point. Clients specify: + * <p> + * <ul> + * <li>A mandatory <b><code>class</code></b> implementing the {@link CDOViewProvider} interface. + * <li>A mandatory <b>regular expression</b> string indicating the shape of {@link org.eclipse.emf.common.util.URI + * URIs} that should match with the contributed provider. + * <li>An optional <b><code>priority</code></b> integer value, to indicate preference over other implementations + * matching the same regular expression. A higher value indicates a higher priority, {@link Integer#MAX_VALUE} being + * the maximum priority value and {@link Integer#MIN_VALUE} the minimum. + * </ul> + */ + public class ContributeProviderUsingExtensionPoint + { + } +} |