From e1ac9e9ea138417ba8a80e35f869d693fd790aa9 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Mon, 4 Jul 2011 08:07:52 +0000
Subject: [PATCH] improved kernel implementation documentation (package.html
 and javadoc)

---
 .../kernel/ToolingKernelActivator.java        |  5 ---
 .../kernel/base/EObjectAware2ServiceBase.java | 11 +++--
 .../kernel/base/EObjectAwareServiceBase.java  | 32 +++++++++++++--
 .../kernel/base/PrototypeProviderBase.java    |  8 +++-
 .../fortiss/tooling/kernel/base/package.html  |  5 ++-
 .../IConnectionCompositionContext.java        |  2 +-
 .../interfaces/IConnectionCompositor.java     | 25 ++++++++++--
 .../kernel/interfaces/IConstraintChecker.java | 13 ++++--
 .../interfaces/IConstraintViolation.java      |  7 ++--
 .../kernel/interfaces/IEObjectAware.java      | 14 +++++--
 .../kernel/interfaces/IEObjectAware2.java     | 13 +++++-
 ...clipseResourceStorageLocationProvider.java |  8 ++--
 .../IElementCompositionContext.java           |  2 +-
 .../kernel/interfaces/IElementCompositor.java | 20 +++++++---
 .../kernel/interfaces/IPrototypeProvider.java |  8 ++--
 .../kernel/interfaces/IStorageProvider.java   |  9 ++++-
 .../interfaces/ITopLevelElementContext.java   |  6 ++-
 .../internal/ConnectionCompositorService.java | 38 ++++++++++++++----
 .../internal/ElementCompositorService.java    |  2 +-
 .../kernel/internal/LibraryService.java       | 32 ---------------
 .../kernel/internal/MultiUserService.java     | 32 ---------------
 .../kernel/internal/PrototypeService.java     |  2 +-
 .../kernel/internal/ServiceManager.java       | 40 -------------------
 .../internal/TransformationService.java       | 32 ---------------
 .../tooling/kernel/internal/package.html      |  6 ++-
 .../IConnectionCompositorService.java         | 35 +++++++++++++---
 .../kernel/services/IConstraintService.java   |  2 +-
 .../services/IElementCompositorService.java   | 11 ++++-
 .../kernel/services/ILibraryService.java      | 38 ------------------
 .../kernel/services/IMultiUserService.java    | 37 -----------------
 .../services/ITransformationService.java      | 36 -----------------
 31 files changed, 216 insertions(+), 315 deletions(-)
 delete mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/LibraryService.java
 delete mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/MultiUserService.java
 delete mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ServiceManager.java
 delete mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java
 delete mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ILibraryService.java
 delete mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IMultiUserService.java
 delete mode 100644 org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ITransformationService.java

diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/ToolingKernelActivator.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/ToolingKernelActivator.java
index 659629e39..1f27ca5e0 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/ToolingKernelActivator.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/ToolingKernelActivator.java
@@ -18,7 +18,6 @@ $Id$
 package org.fortiss.tooling.kernel;
 
 import org.eclipse.core.runtime.Plugin;
-import org.fortiss.tooling.kernel.internal.ServiceManager;
 import org.osgi.framework.BundleContext;
 
 /**
@@ -42,15 +41,11 @@ public class ToolingKernelActivator extends Plugin {
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
-
-		ServiceManager.start();
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public void stop(BundleContext context) throws Exception {
-		ServiceManager.stop();
-
 		plugin = null;
 		super.stop(context);
 	}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAware2ServiceBase.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAware2ServiceBase.java
index 8a841ff5e..a1138c66c 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAware2ServiceBase.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAware2ServiceBase.java
@@ -28,7 +28,7 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.ToolingKernelActivator;
 import org.fortiss.tooling.kernel.interfaces.IEObjectAware2;
-import org.fortiss.tooling.kernel.internal.ConnectionCompositorService;
+import org.fortiss.tooling.kernel.internal.ElementCompositorService;
 import org.fortiss.tooling.kernel.util.ExtensionPointUtils;
 import org.fortiss.tooling.kernel.util.LoggingUtils;
 import org.osgi.framework.Bundle;
@@ -56,16 +56,19 @@ import org.osgi.framework.Bundle;
  * class configuration element,
  * <LI>{@link #getModelElementClassAttribute()} to provide a element class
  * attribute.
+ * <LI> {@link #requiresUniqueHandler()} should return true if each combination
+ * of source and target class must not have more than one handler. The default
+ * is <code>false</code>.
  * </UL>
  * 
  * An example implementation of a service based on this class is given by
- * {@link ConnectionCompositorService}. The corresponding extension point schema
- * is defined in <code>schema/modelElementConnectionCompositor.exsd</code>.
+ * {@link ElementCompositorService}. The corresponding extension point schema is
+ * defined in <code>schema/modelElementConnectionCompositor.exsd</code>.
  * 
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 5A12CD400F90CECAC6B1246227D363AB
+ * @ConQAT.Rating YELLOW Hash: F0465236EB7C877F0FCFC79200E6D5D4
  */
 public abstract class EObjectAware2ServiceBase<T extends IEObjectAware2<? extends EObject, ? extends EObject>> {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAwareServiceBase.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAwareServiceBase.java
index ad3b22236..f6e5726a8 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAwareServiceBase.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/EObjectAwareServiceBase.java
@@ -28,18 +28,44 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.ToolingKernelActivator;
 import org.fortiss.tooling.kernel.interfaces.IEObjectAware;
+import org.fortiss.tooling.kernel.internal.ConnectionCompositorService;
 import org.fortiss.tooling.kernel.util.ExtensionPointUtils;
 import org.fortiss.tooling.kernel.util.LoggingUtils;
 import org.osgi.framework.Bundle;
 
 /**
- * Service base implementation, which supports handler registration with
- * {@link EObject} relation.
+ * Service base implementation, which supports handler registration with set of
+ * {@link EObject} classes.
+ * 
+ * <p>
+ * Sub-classes must implement:
+ * <UL>
+ * <LI>{@link #getExtensionPointName()} to provide the extension point ID,
+ * <LI>{@link #getConfigurationElementName()} to provide the configuration
+ * element ID,
+ * <LI>{@link #getHandlerClassAttribute()} to provide the attribute of the
+ * handler class.
+ * </UL>
+ * 
+ * <p>
+ * Sub-classes may override:
+ * <UL>
+ * <LI>{@link #getModelElementClassConfigurationElement()} to provide a element
+ * class configuration element,
+ * <LI>{@link #getModelElementClassAttribute()} to provide a element class
+ * attribute.
+ * <LI> {@link #requiresUniqueHandler()} should return true if each EObject class
+ * must not have more than one handler. The default is <code>false</code>.
+ * </UL>
+ * 
+ * An example implementation of a service based on this class is given by
+ * {@link ConnectionCompositorService}. The corresponding extension point schema
+ * is defined in <code>schema/modelElementConnectionCompositor.exsd</code>.
  * 
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 8A8E5E88AC4F8FE9D3213D12B500F959
+ * @ConQAT.Rating YELLOW Hash: 16AFF48B6ABB235CCA6CBF3DF421B790
  */
 public abstract class EObjectAwareServiceBase<T extends IEObjectAware<? extends EObject>> {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/PrototypeProviderBase.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/PrototypeProviderBase.java
index 181275bce..b3fe2c28b 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/PrototypeProviderBase.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/PrototypeProviderBase.java
@@ -28,10 +28,14 @@ import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
 /**
  * Base implementation for {@link IPrototypeProvider}s.
  * 
+ * <p>
+ * Sub-classes must implement {@link #registerPrototypes()} to register specific
+ * prototypes using {@link #registerPrototype(String, EObject)}.
+ * 
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4C38BD776A6B323C540FB8EE8118A5C0
+ * @ConQAT.Rating YELLOW Hash: 8D5C4798D30B81D34FA49DDCCB466B04
  */
 public abstract class PrototypeProviderBase implements IPrototypeProvider {
 
@@ -53,7 +57,7 @@ public abstract class PrototypeProviderBase implements IPrototypeProvider {
 
 	/** {@inheritDoc} */
 	@Override
-	public List<Prototype> getPrototypes() {
+	public final List<Prototype> getPrototypes() {
 		return CollectionUtils.asUnmodifiable(prototypes);
 	}
 }
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/package.html b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/package.html
index 7b531995f..b649ca119 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/package.html
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/base/package.html
@@ -1,8 +1,9 @@
 <!--  
   $Id$
   @version $Rev$
-  @ConQAT.Rating YELLOW Hash: 38DFC9CFE459B4DF2425410CB9B3B693
+  @ConQAT.Rating YELLOW Hash: 129D9CDCB9A71D926BE644DDAD6C9E4F
 -->
 <body>
-Abstract base implementations for the kernel extensions.
+Abstract base implementations for the kernel extensions. Classes in this package are used by the kernel to implement its services.
+These classes my also be interesting for implementing plugability in higher layers of the tool architecture.
 </body>
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositionContext.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositionContext.java
index eb89859eb..e4bb8ed02 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositionContext.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositionContext.java
@@ -29,7 +29,7 @@ package org.fortiss.tooling.kernel.interfaces;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: BE7A6E2BC307F4A6894607896C09D3E8
+ * @ConQAT.Rating YELLOW Hash: 2D904303FDBDC14572DBE392859603DA
  */
 public interface IConnectionCompositionContext {
 	// this is just a marker interface
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositor.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositor.java
index 68d61fc2d..98e4d3e12 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositor.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConnectionCompositor.java
@@ -20,13 +20,32 @@ package org.fortiss.tooling.kernel.interfaces;
 import org.eclipse.emf.ecore.EObject;
 
 /**
- * Interface for connectors, i.e. classes which connect model elements. This may
- * either be a direct connection or by using an additional connection element.
+ * Interface for connection compositors, i.e. classes which connect and
+ * disconnect model elements. This may either be a direct connection or by using
+ * an additional connection element.
+ * 
+ * <P>
+ * A typical example is the creation and removal of an edge in a graph editor.
+ * The connection compositor links two nodes of the graph and aggregates the
+ * edge with the graph as its parent element.
+ * 
+ * @param <P>
+ *            the meta-model class of the parent elements handled by this
+ *            compositor.
+ * @param <S>
+ *            the meta-model class of source model elements handled by this
+ *            compositor.
+ * @param <T>
+ *            the meta-model class of target model elements handled by this
+ *            compositor.
+ * 
+ * 
+ * 
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3AF8EF4B6F61B768A17A63A6FF51CB2B
+ * @ConQAT.Rating YELLOW Hash: 2F4A9CC044F6A4AFE964D9DE293D8D7F
  */
 public interface IConnectionCompositor<P extends EObject, S extends EObject, T extends EObject>
 		extends IEObjectAware2<S, T> {
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintChecker.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintChecker.java
index 23245c0eb..d59b7682b 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintChecker.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintChecker.java
@@ -22,19 +22,24 @@ import org.eclipse.emf.ecore.EObject;
 /**
  * Interface for constraint checker implementations.
  * 
+ * 
+ * @param <C>
+ *            the meta-model class of model elements handled by the constraint
+ *            checker.
+ * 
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B26440F1029C58D8B881C889F3D87A95
+ * @ConQAT.Rating YELLOW Hash: 07CD5EB76EC82EC5882F24D76633F0C9
  */
-public interface IConstraintChecker {
+public interface IConstraintChecker<C extends EObject> extends IEObjectAware<C> {
 
 	/**
 	 * Determines whether the constraint checker is applicable to the given
 	 * model element.
 	 */
-	boolean isApplicable(EObject modelElement);
+	boolean isApplicable(C modelElement);
 
 	/** Applies the constraint checker to the given model element. */
-	IConstraintViolation apply(EObject modelElement);
+	IConstraintViolation apply(C modelElement);
 }
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintViolation.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintViolation.java
index a0ac476a6..607493144 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintViolation.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IConstraintViolation.java
@@ -19,13 +19,14 @@ package org.fortiss.tooling.kernel.interfaces;
 
 /**
  * This interface describes a constraint violation produced by some constraint
- * checker. A constraint violation has a severity, an explanation and possibly a
- * quick fix.
+ * checker. A constraint violation has a severity of type {@link ESeverity}, an
+ * explanation of type String and possibly a quick fix handler of type
+ * {@link IQuickFixHandler}.
  * 
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: BAED4776E8F47E7A6D42A7D38A68FAA6
+ * @ConQAT.Rating YELLOW Hash: 0506883B3019B9D1DC5AC6C0AB2F35FB
  */
 public interface IConstraintViolation {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware.java
index f9309ecf1..ee1742014 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware.java
@@ -19,16 +19,24 @@ package org.fortiss.tooling.kernel.interfaces;
 
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.base.EObjectAwareServiceBase;
+import org.fortiss.tooling.kernel.internal.ElementCompositorService;
+import org.fortiss.tooling.kernel.services.IElementCompositorService;
 
 /**
- * Abstract interface for {@link EObjectAwareServiceBase} base implementation.
+ * Abstract interface for {@link EObjectAwareServiceBase} base implementation. A
+ * plugable extension to the kernel may be parameterized by one meta-model
+ * class, e.g., a constraint checker extension handles a specific type of model
+ * elements. If the extending handler's interface extends the current interface,
+ * {@link EObjectAwareServiceBase} can be used to ease the extension mechanism.
  * 
- * @TODO: a typical use is ...
+ * <P>
+ * Refer to {@link IElementCompositor}, {@link IElementCompositorService} and
+ * {@link ElementCompositorService} for an example implementation.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: F294FE5853AE7D182770C201886531CC
+ * @ConQAT.Rating YELLOW Hash: 1350775A3DAA216F6112520F525628EE
  */
 public interface IEObjectAware<T extends EObject> {
 	// nothing specific is need here
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware2.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware2.java
index 96b2e74d4..9a7dea77d 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware2.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEObjectAware2.java
@@ -19,14 +19,25 @@ package org.fortiss.tooling.kernel.interfaces;
 
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.base.EObjectAware2ServiceBase;
+import org.fortiss.tooling.kernel.internal.ConnectionCompositorService;
+import org.fortiss.tooling.kernel.services.IConnectionCompositorService;
 
 /**
  * Abstract interface for {@link EObjectAware2ServiceBase} base implementation.
+ * A plugable extension to the kernel may be parameterized by two meta-model
+ * class, e.g., a reference creation extension handles a specific source and
+ * target type of model elements. If the extending handler's interface extends
+ * the current interface, {@link EObjectAware2ServiceBase} can be used to ease
+ * the extension mechanism.
+ * 
+ * <P>
+ * Refer to {@link IConnectionCompositor}, {@link IConnectionCompositorService}
+ * and {@link ConnectionCompositorService} for an example implementation.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4DE0035200083916ADDF730A929074BF
+ * @ConQAT.Rating YELLOW Hash: 317229BCCC2DA7C69C78E957F5A87BE8
  */
 public interface IEObjectAware2<S extends EObject, T extends EObject> extends
 		IEObjectAware<T> {
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEclipseResourceStorageLocationProvider.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEclipseResourceStorageLocationProvider.java
index d28997a32..8a7ed9990 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEclipseResourceStorageLocationProvider.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IEclipseResourceStorageLocationProvider.java
@@ -22,13 +22,15 @@ import org.fortiss.tooling.kernel.internal.storage.eclipse.EclipseResourceStorag
 
 /**
  * Extension interface for the {@link EclipseResourceStorageProvider} mechanism.
- * 
- * @TODO: do we really need this interface?
+ * The persistency storage provider, which uses Eclipse resources, does not know
+ * which files should be considered model files. Therefore, a concrete product
+ * built above the kernel is required to decide whether the file provided with
+ * {@link #isStorageLocation(IFile)} should be considered.
  * 
  * @author hoelzlf
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F2CBF6F78C114C5AE2676C85403E4488
+ * @ConQAT.Rating YELLOW Hash: 21EF3B37635B8DDA74E646259CD52166
  */
 public interface IEclipseResourceStorageLocationProvider {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositionContext.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositionContext.java
index 83f3b23d5..18d4dc7af 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositionContext.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositionContext.java
@@ -29,7 +29,7 @@ package org.fortiss.tooling.kernel.interfaces;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: D85BD49FE3F70C2C4AF5B5B9250C0863
+ * @ConQAT.Rating YELLOW Hash: 4C3F8D3097CB3379B1AA27B6A0BC05DE
  */
 public interface IElementCompositionContext {
 	// this is just a marker interface
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositor.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositor.java
index 37d4cef21..ceb253842 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositor.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IElementCompositor.java
@@ -24,17 +24,25 @@ import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
  * Interface for compositors, i.e. classes which know how to compose and
  * decompose {@link EObject}s.
  * 
+ * <P>
+ * A typical example is the adding and removal of a node in a graph editor. The
+ * compositor adds the node to the graph as a child element.
+ * 
+ * 
+ * @param <C>
+ *            the meta-model class of the container element handled by this
+ *            compositor.
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 75F650B0058B591BE903CC45C0AB9876
+ * @ConQAT.Rating YELLOW Hash: 4073D9D3263D0123CD583E9636EE101D
  */
-public interface IElementCompositor<T extends EObject> extends IEObjectAware<T> {
+public interface IElementCompositor<C extends EObject> extends IEObjectAware<C> {
 	/**
 	 * Returns whether the given container may include the given contained
 	 * object.
 	 */
-	boolean canCompose(T container, EObject contained,
+	boolean canCompose(C container, EObject contained,
 			IElementCompositionContext context);
 
 	/**
@@ -52,14 +60,14 @@ public interface IElementCompositor<T extends EObject> extends IEObjectAware<T>
 	 * This method returns a boolean, since user-interaction during compose
 	 * might cancel the command.
 	 */
-	boolean compose(T container, EObject contained,
+	boolean compose(C container, EObject contained,
 			IElementCompositionContext context);
 
 	/**
 	 * Returns whether the given contained element may be removed from the given
 	 * container element.
 	 */
-	boolean canDecompose(T container, EObject contained,
+	boolean canDecompose(C container, EObject contained,
 			IElementCompositionContext context);
 
 	/**
@@ -67,6 +75,6 @@ public interface IElementCompositor<T extends EObject> extends IEObjectAware<T>
 	 * This method returns a boolean, since user-interaction during compose
 	 * might cancel the command.
 	 */
-	boolean decompose(T container, EObject contained,
+	boolean decompose(C container, EObject contained,
 			IElementCompositionContext context);
 }
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IPrototypeProvider.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IPrototypeProvider.java
index 73ddd1028..ff0d9e44c 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IPrototypeProvider.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IPrototypeProvider.java
@@ -23,13 +23,15 @@ import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
 
 /**
- * An {@link IPrototypeProvider} offers preconfigured {@link EObject}s to be
- * displayed in the model element view.
+ * An {@link IPrototypeProvider} offers pre-configured {@link EObject}s.
+ * 
+ * A typical exmaple of a prototype is a model element, which also carries some
+ * initial default layout information.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 97B6B05838E85861C71D22CF74CB73F9
+ * @ConQAT.Rating YELLOW Hash: 1160E8FBB539CAEA58CB178AF41E5ED2
  */
 public interface IPrototypeProvider {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IStorageProvider.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IStorageProvider.java
index e2f296210..c009c78f5 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IStorageProvider.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/IStorageProvider.java
@@ -20,12 +20,17 @@ package org.fortiss.tooling.kernel.interfaces;
 import java.util.List;
 
 /**
- * An {@link IStorageProvider} implements a storage mechanism for EMF models.
+ * An {@link IStorageProvider} implements a storage mechanism for EMF models. A
+ * storage provider must deliver an {@link ITopLevelElementContext} for each
+ * model under his supervision. It may rely on other parts of the Eclipse
+ * workbench like the Team feature or EMFStore providing remote storage
+ * capability. After the context was provided to the kernel it invokes the
+ * methods of the context to execute commands, save, an so on.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 5047804CCEDB2448C6CE4886394F756B
+ * @ConQAT.Rating YELLOW Hash: 94E6ACB100AAF673434E0A0F9B548357
  */
 public interface IStorageProvider {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementContext.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementContext.java
index c01099110..9fbcf6862 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementContext.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/interfaces/ITopLevelElementContext.java
@@ -26,12 +26,14 @@ import org.eclipse.emf.ecore.EObject;
 
 /**
  * Interface for accessing top-level elements provided by
- * {@link IStorageProvider}s.
+ * {@link IStorageProvider}s. The context supports the typical methods like
+ * running commands, listening to the command stack, undo and redo, a dirty
+ * state and a save mechanism.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 95B275B63B2E2FC389D1F8339E2325C9
+ * @ConQAT.Rating YELLOW Hash: DBEB1B9EEF064F64EA76CFFCAB2E8C39
  */
 public interface ITopLevelElementContext {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConnectionCompositorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConnectionCompositorService.java
index 4c60ce03a..20f3814c6 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConnectionCompositorService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConnectionCompositorService.java
@@ -31,7 +31,7 @@ import org.fortiss.tooling.kernel.services.IConnectionCompositorService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: E4E7A3B42928271F17D36BABCB6BEF58
+ * @ConQAT.Rating YELLOW Hash: E03DE566919A836263949B2899453A61
  */
 public class ConnectionCompositorService
 		extends
@@ -51,15 +51,32 @@ public class ConnectionCompositorService
 	@Override
 	public boolean canConnect(EObject source, EObject destination,
 			EObject connection, IConnectionCompositionContext context) {
-		return findWorkingConnector(source, destination, connection, context) != null;
+		return findWorkingConnector(source, destination, connection, true,
+				context) != null;
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public void connect(EObject source, EObject destination,
+	public boolean connect(EObject source, EObject destination,
 			EObject connection, IConnectionCompositionContext context) {
-		findWorkingConnector(source, destination, connection, context).connect(
-				source, destination, connection, context);
+		return findWorkingConnector(source, destination, connection, true,
+				context).connect(source, destination, connection, context);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean canDecompose(EObject source, EObject destination,
+			EObject connection, IConnectionCompositionContext context) {
+		return findWorkingConnector(source, destination, connection, false,
+				context) != null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean decompose(EObject source, EObject destination,
+			EObject connection, IConnectionCompositionContext context) {
+		return findWorkingConnector(source, destination, connection, true,
+				context).connect(source, destination, connection, context);
 	}
 
 	/**
@@ -68,14 +85,21 @@ public class ConnectionCompositorService
 	 */
 	private IConnectionCompositor<EObject, EObject, EObject> findWorkingConnector(
 			EObject source, EObject target, EObject connection,
-			IConnectionCompositionContext context) {
+			boolean connect, IConnectionCompositionContext context) {
 		List<IConnectionCompositor<EObject, EObject, EObject>> list = getRegisteredHandlers(
 				source.getClass(), target.getClass());
 		if (list == null) {
 			return null;
 		}
 		for (IConnectionCompositor<EObject, EObject, EObject> connector : list) {
-			if (connector.canConnect(source, target, connection, context)) {
+			if (connect
+					&& connector
+							.canConnect(source, target, connection, context)) {
+				return connector;
+			}
+			if (!connect
+					&& connector.canDisconnect(source, target, connection,
+							context)) {
 				return connector;
 			}
 		}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ElementCompositorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ElementCompositorService.java
index c1829b70e..e1fcf1c32 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ElementCompositorService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ElementCompositorService.java
@@ -32,7 +32,7 @@ import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1AB8E5D4937CE2C77649035548CA11DF
+ * @ConQAT.Rating YELLOW Hash: E27B124C6AC4A10B7A8C04949A8BFF86
  */
 public final class ElementCompositorService extends
 		EObjectAwareServiceBase<IElementCompositor<EObject>> implements
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/LibraryService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/LibraryService.java
deleted file mode 100644
index 267638de4..000000000
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/LibraryService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.internal;
-
-import org.fortiss.tooling.kernel.services.ILibraryService;
-
-/**
- * This class implements the {@link ILibraryService} interface.
- * 
- * @author hoelzl
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: 4C56A513C7537064088F1E85847745E8
- */
-public class LibraryService implements ILibraryService {
-	// TODO (FH): implement
-}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/MultiUserService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/MultiUserService.java
deleted file mode 100644
index 2c131c28b..000000000
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/MultiUserService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.internal;
-
-import org.fortiss.tooling.kernel.services.IMultiUserService;
-
-/**
- * This class implements the {@link IMultiUserService} interface.
- * 
- * @author hoelzl
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: BE8C6F14A6FDC25C82239503457885DA
- */
-public class MultiUserService implements IMultiUserService {
-	// TODO (FH): implement
-}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/PrototypeService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/PrototypeService.java
index 1b6cba833..0826618cd 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/PrototypeService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/PrototypeService.java
@@ -39,7 +39,7 @@ import org.osgi.framework.Bundle;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3E2A2A18E224F7675FC2BE992D4DD80C
+ * @ConQAT.Rating YELLOW Hash: E67EFFAA3034D8BFA1A2E2C673CA5811
  */
 public class PrototypeService implements IPrototypeService {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ServiceManager.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ServiceManager.java
deleted file mode 100644
index 1cef2f895..000000000
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ServiceManager.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.internal;
-
-/**
- * This class provides startup and shutdown code for the kernel services.
- * 
- * @author hoelzl
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: 6D8EF584707A23F0C91D17694BE03043
- */
-// TODO (FH): is this class needed?
-public final class ServiceManager {
-
-	/** Starts the kernel services. */
-	public static void start() {
-		// TODO (FH): implement
-	}
-
-	/** Stops the kernel services. */
-	public static void stop() {
-		// TODO (FH): implement
-	}
-}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java
deleted file mode 100644
index 3188c7fdc..000000000
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TransformationService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.internal;
-
-import org.fortiss.tooling.kernel.services.ITransformationService;
-
-/**
- * This class implements the {@link ITransformationService} interface.
- * 
- * @author hoelzl
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: E7A9D1E12B9A258D2552DCC9E2EC0B36
- */
-public class TransformationService implements ITransformationService {
-	// TODO (FH): implement
-}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/package.html b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/package.html
index 99c4e9e2d..6d70243e0 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/package.html
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/package.html
@@ -1,10 +1,12 @@
 <!--  
   $Id$
   @version $Rev$
-  @ConQAT.Rating YELLOW Hash: 5A8076657366C6A52F3B3496330207BB
+  @ConQAT.Rating YELLOW Hash: 9EF9DAA1FC3C08A44EC8946A0CFB9ABC
 -->
 <body>
 Implementations of the kernel services defined in the <code>kernel.services</code> package.
+Kernel services are only accessible through the singletons defined in the <code>kernel.services</code> package.
+The implementation in the current package are not intended to be used directly.
+Therefore they are not exported in the <code>plugin.xml</code> 
 <p>
-@TODO: shouldn't this package be named kernel.services.internal? + according to Eclipse naming, the internal packages should not be used by clients -- is this the case here? if not, the name 'internal' should be changed into 'impl' 
 </body>
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConnectionCompositorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConnectionCompositorService.java
index 595a2cff9..4645d873d 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConnectionCompositorService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConnectionCompositorService.java
@@ -22,13 +22,22 @@ import org.fortiss.tooling.kernel.interfaces.IConnectionCompositionContext;
 import org.fortiss.tooling.kernel.internal.ConnectionCompositorService;
 
 /**
- * The connector service provides registration and access to model element
- * connectors.
+ * The connection compositor service provides registration and access to model
+ * element connection compositors. A connection compositor knows how to create
+ * and delete connections between two model elements. Here, a connection can be
+ * a simple reference between two objects or, in a more complex case, an object
+ * aggregated with some parent object and referencing two other objects in the
+ * model element tree.
+ * 
+ * <P>
+ * A typical example is the creation and removal of an edge in a graph editor.
+ * The connection compositor links two nodes of the graph and aggregates the
+ * edge with the graph as its parent element.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 0D2545C48EFB0383922CBB05BB469585
+ * @ConQAT.Rating YELLOW Hash: E9F9052783770B8F9494E84F990874BD
  */
 public interface IConnectionCompositorService {
 
@@ -40,8 +49,8 @@ public interface IConnectionCompositorService {
 	 * possible. Additional information can be included in the context, which
 	 * also may be null.
 	 */
-	public boolean canConnect(EObject source, EObject destination,
-			EObject connection, IConnectionCompositionContext context);
+	boolean canConnect(EObject source, EObject destination, EObject connection,
+			IConnectionCompositionContext context);
 
 	/**
 	 * Actually connects the given source and destination. This will only be
@@ -61,6 +70,20 @@ public interface IConnectionCompositorService {
 	 * @param context
 	 *            context information for the connection. May be null.
 	 */
-	public void connect(EObject source, EObject destination,
+	boolean connect(EObject source, EObject destination, EObject connection,
+			IConnectionCompositionContext context);
+
+	/**
+	 * Determines if there is a compositor that allows the decomposition of the
+	 * connection between the source and target model element.
+	 */
+	boolean canDecompose(EObject source, EObject destination,
 			EObject connection, IConnectionCompositionContext context);
+
+	/**
+	 * Decomposes the connection. Since this operation may be canceled by the
+	 * user, it returns a boolean value.
+	 */
+	boolean decompose(EObject source, EObject destination, EObject connection,
+			IConnectionCompositionContext context);
 }
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConstraintService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConstraintService.java
index 42bf4cc24..a2fc3e368 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConstraintService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IConstraintService.java
@@ -31,7 +31,7 @@ import org.fortiss.tooling.kernel.internal.ConstraintService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 0BE33FB1504293BDE9B7423F78D1349B
+ * @ConQAT.Rating YELLOW Hash: 3FF38207B9BC5B685A80D09D8358849A
  */
 public interface IConstraintService {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IElementCompositorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IElementCompositorService.java
index 7b6989390..c7d5f2f18 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IElementCompositorService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IElementCompositorService.java
@@ -25,12 +25,19 @@ import org.fortiss.tooling.kernel.services.IPrototypeService.Prototype;
 
 /**
  * The element compositor service provides registration and access to model
- * element compositors.
+ * element compositors. A compositor knows how to create and delete a link
+ * between a parent element and its children. The formed relation usually
+ * corresponds to an aggregation between the respective classes of the
+ * meta-model.
+ * 
+ * <P>
+ * A typical example is the adding and removal of a node in a graph editor. The
+ * compositor adds the node to the graph as a child element.
  * 
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4F6FF89C40A2BCE2A0310068028A0567
+ * @ConQAT.Rating YELLOW Hash: 1B489882210AB188E82A94F41F2CF796
  */
 public interface IElementCompositorService {
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ILibraryService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ILibraryService.java
deleted file mode 100644
index c7790b6e1..000000000
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ILibraryService.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.services;
-
-import org.fortiss.tooling.kernel.internal.LibraryService;
-
-/**
- * The library service manages the display of elements in the model element
- * view. It gathers elements from prototypes and the common and user specific
- * model library.
- * 
- * @author hoelzl
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: 71AD3046FC212391B9F98700B5EA3D14
- */
-public interface ILibraryService {
-
-	/** Returns the singleton instance of the service. */
-	public static final ILibraryService INSTANCE = new LibraryService();
-
-	// TODO (FH): define
-}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IMultiUserService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IMultiUserService.java
deleted file mode 100644
index b7bf5c09a..000000000
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/IMultiUserService.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.services;
-
-import org.fortiss.tooling.kernel.internal.MultiUserService;
-
-/**
- * This service provides support for multi-user environments. This service is
- * only active for EMFStore based repsoitories.
- * 
- * @author hoelzl
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: 37964F4226F8463409342F1138A6DDF7
- */
-public interface IMultiUserService {
-
-	/** Returns the singleton instance of the service. */
-	public static final IMultiUserService INSTANCE = new MultiUserService();
-
-	// TODO (FH): define
-}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ITransformationService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ITransformationService.java
deleted file mode 100644
index 656e0dac1..000000000
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/ITransformationService.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                                              |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.services;
-
-import org.fortiss.tooling.kernel.internal.TransformationService;
-
-/**
- * This service manages model element specific transformations.
- * 
- * @author hoelzl
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: EC66C5C09113ADB168DD2F2068D75A2F
- */
-public interface ITransformationService {
-
-	/** Returns the singleton instance of the service. */
-	public static final ITransformationService INSTANCE = new TransformationService();
-
-	// TODO (FH): define
-}
-- 
GitLab