Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'incoming/serviceregistry/org.eclipse.papyrus.infra.core.serviceregistry/models/architectures.uml')
-rw-r--r--incoming/serviceregistry/org.eclipse.papyrus.infra.core.serviceregistry/models/architectures.uml3852
1 files changed, 3852 insertions, 0 deletions
diff --git a/incoming/serviceregistry/org.eclipse.papyrus.infra.core.serviceregistry/models/architectures.uml b/incoming/serviceregistry/org.eclipse.papyrus.infra.core.serviceregistry/models/architectures.uml
new file mode 100644
index 00000000000..b124c69401b
--- /dev/null
+++ b/incoming/serviceregistry/org.eclipse.papyrus.infra.core.serviceregistry/models/architectures.uml
@@ -0,0 +1,3852 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:java="http://www.eclipse.org/papyrus/JAVA/1" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_gYo-EH1yEeGcMtmaQ3nQLw" name="model">
+ <packagedElement xmi:type="uml:Model" xmi:id="_kaJEoH1yEeGcMtmaQ3nQLw" name="serviceregistry">
+ <packagedElement xmi:type="uml:Class" xmi:id="_zqu50H1yEeGcMtmaQ3nQLw" name="ServiceRegistry">
+ <ownedComment xmi:id="_rIDxUH12EeGOQuKePEwyrw">
+ <body> &lt;java:JavaProject xmi:id=&quot;_0TY_0H1zEeGOQuKePEwyrw&quot; srcName=&quot;src&quot; projectName=&quot;org.eclipse.papyrus.infra.core.serviceregistry&quot; base_Package=&quot;_kaJEoH1yEeGcMtmaQ3nQLw&quot;/>
+</body>
+ </ownedComment>
+ <ownedComment xmi:id="_t3cIsH12EeGOQuKePEwyrw">
+ <body> &lt;java:JavaProject xmi:id=&quot;_0TY_0H1zEeGOQuKePEwyrw&quot; srcName=&quot;src&quot; projectName=&quot;org.eclipse.papyrus.infra.core.serviceregistry&quot; base_Package=&quot;_kaJEoH1yEeGcMtmaQ3nQLw&quot;/>
+</body>
+ </ownedComment>
+ <ownedOperation xmi:id="_vNLzoH12EeGOQuKePEwyrw" name="getService" visibility="public">
+ <ownedComment xmi:id="_vNLzoX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Get the requested service by its key. The key is usually the classname of&#xD;
+ * the service.&#xD;
+ * &#xD;
+ * @param serviceClass&#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ * If servive can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_vNLzon12EeGOQuKePEwyrw" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_vNLzo312EeGOQuKePEwyrw" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_vNNBwH12EeGOQuKePEwyrw" name="getService" visibility="public">
+ <ownedComment xmi:id="_vNNBwX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Get the requested service by its class (the service has to be registered&#xD;
+ * by its class object).&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * The service class.&#xD;
+ * @return The service.&#xD;
+ * @throws ServiceException&#xD;
+ * If service can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_vNNBwn12EeGOQuKePEwyrw" type="_AVPWMH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_vNNBw312EeGOQuKePEwyrw" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_EuybQH10EeGOQuKePEwyrw" name="impl"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_TYM0UH13EeGOQuKePEwyrw" name="IService">
+ <ownedComment xmi:id="_TYM0UX13EeGOQuKePEwyrw">
+ <body>&#xD;
+ * An Service that can be registered in the {@link ServicesRegistry}. A service&#xD;
+ * is a singleton available throw the registry. A service can be shared across&#xD;
+ * editors. &lt;br>&#xD;
+ * The life cycle is as follow:&#xD;
+ * &lt;ul>&#xD;
+ * &lt;li>service creation&lt;/li>&#xD;
+ * &lt;li>{@link #init(ServicesRegistry)} - Other service can be retrieved from the registry, but are not started yet.&lt;/li>&#xD;
+ * &lt;li>{@link #startService()} - service is started.&lt;/li>&#xD;
+ * &lt;li>Service can be used&lt;/li>&#xD;
+ * &lt;li>{@link #disposeService()} - service is disposed and should not be used anymore.&lt;/li>&#xD;
+ * &lt;/ul>&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedOperation xmi:id="_TYM0Un13EeGOQuKePEwyrw" name="init" visibility="public">
+ <ownedComment xmi:id="_TYM0U313EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Init the service and set its associated Registry. The registry can be&#xD;
+ * used to retrieve other services.&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_TYM0VH13EeGOQuKePEwyrw" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_TYM0VX13EeGOQuKePEwyrw" name="startService" visibility="public">
+ <ownedComment xmi:id="_TYM0Vn13EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Start the service. This method is called when the service is started.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_TYM0V313EeGOQuKePEwyrw" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_TYM0WH13EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Dispose the service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_4NJNsH11EeGOQuKePEwyrw" name="generated"/>
+ <packagedElement xmi:type="uml:Model" xmi:id="_4OUSYH11EeGOQuKePEwyrw" name="infra">
+ <packagedElement xmi:type="uml:Package" xmi:id="_4OU5cH11EeGOQuKePEwyrw" name="org">
+ <packagedElement xmi:type="uml:Package" xmi:id="_4OU5cX11EeGOQuKePEwyrw" name="eclipse">
+ <packagedElement xmi:type="uml:Package" xmi:id="_4OVggH11EeGOQuKePEwyrw" name="papyrus">
+ <packagedElement xmi:type="uml:Package" xmi:id="_4OVggX11EeGOQuKePEwyrw" name="infra">
+ <packagedElement xmi:type="uml:Package" xmi:id="_4OVggn11EeGOQuKePEwyrw" name="core">
+ <packagedElement xmi:type="uml:Package" xmi:id="_4OVgg311EeGOQuKePEwyrw" name="services">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_4OZx8H11EeGOQuKePEwyrw" name="IService">
+ <ownedComment xmi:id="_4OaZAH11EeGOQuKePEwyrw">
+ <body>&#xD;
+ * An Service that can be registered in the {@link ServicesRegistry}. A service&#xD;
+ * is a singleton available throw the registry. A service can be shared across&#xD;
+ * editors. &lt;br>&#xD;
+ * The life cycle is as follow:&#xD;
+ * &lt;ul>&#xD;
+ * &lt;li>service creation&lt;/li>&#xD;
+ * &lt;li>{@link #init(ServicesRegistry)} - Other service can be retrieved from the registry, but are not started yet.&lt;/li>&#xD;
+ * &lt;li>{@link #startService()} - service is started.&lt;/li>&#xD;
+ * &lt;li>Service can be used&lt;/li>&#xD;
+ * &lt;li>{@link #disposeService()} - service is disposed and should not be used anymore.&lt;/li>&#xD;
+ * &lt;/ul>&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedOperation xmi:id="_4OfRgH11EeGOQuKePEwyrw" name="init" visibility="public">
+ <ownedComment xmi:id="_4Of4kH11EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Init the service and set its associated Registry. The registry can be&#xD;
+ * used to retrieve other services.&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_4OgfoH11EeGOQuKePEwyrw" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_4OgfoX11EeGOQuKePEwyrw" name="startService" visibility="public">
+ <ownedComment xmi:id="_4Ogfon11EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Start the service. This method is called when the service is started.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_4OhGsH11EeGOQuKePEwyrw" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_4OhGsX11EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Dispose the service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_4OeqcH11EeGOQuKePEwyrw" name="ServicesRegistry">
+ <ownedComment xmi:id="_AUST8H12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * A registry of services. This registry allows to get a service by its&#xD;
+ * identifier. The identifier is generally the classname of the service.&#xD;
+ * Services can be added using the Eclipse extension mechanism (if you use {@link ExtensionServicesRegistry}). &lt;br>&#xD;
+ * A Service is a class providing operations. The ServiceRegistry is used to&#xD;
+ * share objects (i.e. services) between nested editors and also the core main&#xD;
+ * editor.&#xD;
+ * &#xD;
+ * &lt;br>&#xD;
+ * In this implementation, services should be added to the registry before the&#xD;
+ * call to createServices(). If a service is added after the call, it will not&#xD;
+ * be started (except if it is a lazy service). &lt;br>&#xD;
+ * A typical usage is:&#xD;
+ * &#xD;
+ * &lt;pre>&#xD;
+ * &lt;code>&#xD;
+ * ServicesRegistry serviceRegistry = new ServiceRegistry();&#xD;
+ * // Add your services&#xD;
+ * serviceRegistry.add( ...);&#xD;
+ * serviceRegistry.add( ...);&#xD;
+ * &#xD;
+ * // start the services&#xD;
+ * serviceRegistry.startRegistry();&#xD;
+ * &#xD;
+ * // Retrieve a service&#xD;
+ * myService = serviceRegistry.getService( serviceKey );&#xD;
+ * &lt;/code>&#xD;
+ * &lt;/pre>&#xD;
+ * &#xD;
+ * It is possible to register new services after the serviceRegistry has been&#xD;
+ * started. In this case, you need to start them explicitly if they are of type&#xD;
+ * ServiceStartKind.STARTUP.&#xD;
+ * &#xD;
+ * &lt;pre>&#xD;
+ * &lt;code>&#xD;
+ * // Add your new services&#xD;
+ * serviceRegistry.add( key1, ...);&#xD;
+ * serviceRegistry.add( key2, ...);&#xD;
+ * &#xD;
+ * // start the new services&#xD;
+ * serviceRegistry.startRegistry(key1, key2);&#xD;
+ * &lt;/code>&#xD;
+ * &lt;/pre>&#xD;
+ * &#xD;
+ * &lt;ul>&#xD;
+ * &lt;li>&lt;/li>&#xD;
+ * &lt;li>&lt;/li>&#xD;
+ * &lt;/ul>&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_AUUJIH12EeGOQuKePEwyrw" name="log" visibility="protected" type="_AUTiEX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_AUUwMH12EeGOQuKePEwyrw">
+ <body> Log object </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AUVXQH12EeGOQuKePEwyrw" name="addedServices" visibility="private" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_AUV-UH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * A Map of services added to the register (thow the addXxx() methods), but&#xD;
+ * not yet registered. They will be registered after a call to startXxx().&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AUV-UX12EeGOQuKePEwyrw" name="namedServices" visibility="private" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_AUWlYH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Map of services registered with a name.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AUXzgH12EeGOQuKePEwyrw" name="anonymousServices" visibility="private" type="_AUXMcX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_AUXzgX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Map of services registered without a name (anonymous). Such services&#xD;
+ * can't be retrieved.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AUYakH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AUZBoH12EeGOQuKePEwyrw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_AUZosH12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUZosX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add a service by its ServiceDescriptor.&#xD;
+ * &#xD;
+ * @param serviceDescriptor&#xD;
+ * Descriptor describing the service.&#xD;
+ * @throws ServiceException&#xD;
+ * If an error occurs while initializing service.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUaPwH12EeGOQuKePEwyrw" name="serviceDescriptor" type="_AUZBoX12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AUcE8H12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUcE8X12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUcsAH12EeGOQuKePEwyrw" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUdTEH12EeGOQuKePEwyrw" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUd6IH12EeGOQuKePEwyrw" name="serviceInstance" type="_4OZx8H11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AUehMH12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUehMX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUfIQH12EeGOQuKePEwyrw" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUfvUH12EeGOQuKePEwyrw" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUgWYH12EeGOQuKePEwyrw" name="serviceInstance" type="_4OZx8H11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AUhkgH12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUhkgX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUiLkH12EeGOQuKePEwyrw" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUiyoH12EeGOQuKePEwyrw" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUjZsH12EeGOQuKePEwyrw" name="serviceInstance" type="_4OZx8H11EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUkAwH12EeGOQuKePEwyrw" name="startKind" type="_AUg9cH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AUkn0H12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUkn0X12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key Class used as key. The classname is used as key.&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUl18H12EeGOQuKePEwyrw" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUmdAH12EeGOQuKePEwyrw" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUnEEH12EeGOQuKePEwyrw" name="serviceInstance" type="_4OZx8H11EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUnrIH12EeGOQuKePEwyrw" name="startKind" type="_AUg9cH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AUo5QH12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUo5QX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add an already instanciated pojo (Plain Old Java Object) as Service. The&#xD;
+ * descriptor will be created. No life cycle methods are called on the&#xD;
+ * service.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUpgUH12EeGOQuKePEwyrw" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUqHYH12EeGOQuKePEwyrw" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUqucH12EeGOQuKePEwyrw" name="serviceInstance" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AUrVgH12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUrVgX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add an already instanciated pojo (Plain Old Java Object) as Service. The&#xD;
+ * descriptor will be created. No life cycle methods are called on the&#xD;
+ * service.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ * @param startKind&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUr8kH12EeGOQuKePEwyrw" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUsjoH12EeGOQuKePEwyrw" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUu_4H12EeGOQuKePEwyrw" name="serviceInstance" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AUvm8H12EeGOQuKePEwyrw" name="startKind" type="_AUg9cH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AUwOAH12EeGOQuKePEwyrw" name="add" visibility="public">
+ <ownedComment xmi:id="_AUw1EH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add an already instanciated pojo (Plain Old Java Object) as Service. The&#xD;
+ * descriptor will be created. No life cycle methods are called on the&#xD;
+ * service.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key Class used as key. The classname is used as key.&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ * @param startKind&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AUxcIH12EeGOQuKePEwyrw" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AVAFoH12EeGOQuKePEwyrw" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AVAssH12EeGOQuKePEwyrw" name="serviceInstance" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AVBTwH12EeGOQuKePEwyrw" name="startKind" type="_AUg9cH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVB60H12EeGOQuKePEwyrw" name="remove" visibility="public">
+ <ownedComment xmi:id="_AVB60X12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Remove the specified service from the registry.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVCh4H12EeGOQuKePEwyrw" name="serviceDescriptor" type="_AUZBoX12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVDI8H12EeGOQuKePEwyrw" name="remove" visibility="public">
+ <ownedComment xmi:id="_AVDwAH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Remove the specified service from the registry.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVDwAX12EeGOQuKePEwyrw" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVEXEH12EeGOQuKePEwyrw" name="getService" visibility="public">
+ <ownedComment xmi:id="_AVE-IH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Get the requested service by its key. The key is usually the classname of&#xD;
+ * the service.&#xD;
+ * &#xD;
+ * @param serviceClass&#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ * If servive can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVHaYH12EeGOQuKePEwyrw" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_AVIBcH12EeGOQuKePEwyrw" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVOIEH12EeGOQuKePEwyrw" name="getService" visibility="public">
+ <ownedComment xmi:id="_AVOvIH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Get the requested service by its class (the service has to be registered&#xD;
+ * by its class object).&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * The service class.&#xD;
+ * @return The service.&#xD;
+ * @throws ServiceException&#xD;
+ * If service can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVP9QH12EeGOQuKePEwyrw" type="_AVPWMH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_AVRycH12EeGOQuKePEwyrw" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVSZgH12EeGOQuKePEwyrw" name="isStarted" visibility="public">
+ <ownedComment xmi:id="_AVSZgX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Return true if the service is instantiated. Return false otherwise.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVTnoH12EeGOQuKePEwyrw" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_AVUOsH12EeGOQuKePEwyrw" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVU1wH12EeGOQuKePEwyrw" name="serviceState" visibility="public">
+ <ownedComment xmi:id="_AVU1wX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Return the state of the specified service.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVWD4H12EeGOQuKePEwyrw" type="_AVVc0H12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_AVWD4X12EeGOQuKePEwyrw" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVWq8H12EeGOQuKePEwyrw" name="startRegistry" visibility="public">
+ <ownedComment xmi:id="_AVXSAH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Start the registry. Start all services marked as start = STARTUP are&#xD;
+ * started. All services are first created, then initialized and finally&#xD;
+ * started. If an error occur on a service during one of this step, the&#xD;
+ * service is removed from the registry and and the error is logged.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVX5EH12EeGOQuKePEwyrw" name="startServices" visibility="public">
+ <ownedComment xmi:id="_AVX5EX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Same as {@link #startServices(List)}, but with an array as input.&#xD;
+ * &#xD;
+ * @see #startServices(List)&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * Keys of services to start.&#xD;
+ * @throws ServiceMultiException&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVYgIH12EeGOQuKePEwyrw" name="serviceKeys" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVZHMH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVZuQH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVa8YH12EeGOQuKePEwyrw" name="startServicesByClassKeys" visibility="public">
+ <ownedComment xmi:id="_AVa8YX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Same as {@link #startServicesByClassKeys(List)}, but with an array as&#xD;
+ * input.&#xD;
+ * &#xD;
+ * @see #startServices(List)&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * Keys of services to start.&#xD;
+ * @throws ServiceMultiException&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVcKgH12EeGOQuKePEwyrw" name="serviceKeys" type="_AUd6IX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVcKgX12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVcxkH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVemwH12EeGOQuKePEwyrw" name="startServices" visibility="private">
+ <ownedComment xmi:id="_AVemwX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Start the specified services, and their required services. The specifies&#xD;
+ * services should be in the specified map. The map is also used to resolves&#xD;
+ * dependencies. Start all services marked as start = STARTUP . All eligible&#xD;
+ * services are first created, then initialized and finally started. If an&#xD;
+ * error occur on a service during one of this step, the service is removed&#xD;
+ * from the registry and and the error is logged.&#xD;
+ * &#xD;
+ * @param services&#xD;
+ * Services to start&#xD;
+ * @param map&#xD;
+ * a table of (key, service) used to get a service by its key.&#xD;
+ * @throws ServiceMultiException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVf04H12EeGOQuKePEwyrw" name="services" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVgb8H12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVhDAH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AVhqEH12EeGOQuKePEwyrw" name="map" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AViRIH12EeGOQuKePEwyrw" name="keysToServices" visibility="private">
+ <ownedComment xmi:id="_AViRIX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Return a list of services from a list of services keys.&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * @param map&#xD;
+ * @return&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVi4MH12EeGOQuKePEwyrw" type="_AUXMcX12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVjfQH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVkGUH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AVktYH12EeGOQuKePEwyrw" name="serviceKeys" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVlUcH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVl7gH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AVmikH12EeGOQuKePEwyrw" name="map" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVnJoH12EeGOQuKePEwyrw" name="classKeysToServices" visibility="private">
+ <ownedComment xmi:id="_AVnJoX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Return a list of services from a list of services keys.&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * @param map&#xD;
+ * @return&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVnwsH12EeGOQuKePEwyrw" type="_AUXMcX12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVoXwH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVo-0H12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AVpl4H12EeGOQuKePEwyrw" name="serviceKeys" type="_AUd6IX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVqM8H12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVq0AH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AVrbEH12EeGOQuKePEwyrw" name="map" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVsCIH12EeGOQuKePEwyrw" name="showServices" visibility="private">
+ <ownedComment xmi:id="_AVsCIX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Print the services. For debug purpose&#xD;
+ * &#xD;
+ * @param roots&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVspMH12EeGOQuKePEwyrw" name="message" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AVt3UH12EeGOQuKePEwyrw" name="roots" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVueYH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVueYX12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVvFcH12EeGOQuKePEwyrw" name="checkDependencies" visibility="private">
+ <ownedComment xmi:id="_AVvsgH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Check if all dependencies exist. Throw an error if a declared dependency&#xD;
+ * has no corresponding service.&#xD;
+ * &#xD;
+ * @param services&#xD;
+ * Services to check&#xD;
+ * @param map&#xD;
+ * Map of services by keys.&#xD;
+ * @throws ServiceMultiException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVwTkH12EeGOQuKePEwyrw" name="services" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVw6oH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVw6oX12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AVxhsH12EeGOQuKePEwyrw" name="map" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AVyIwH12EeGOQuKePEwyrw" name="retainsToStartServices" visibility="private">
+ <ownedComment xmi:id="_AVyv0H12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Retains only the services that should be started. Retains only services&#xD;
+ * with startupkind = START and state == REGISTERED&#xD;
+ * &#xD;
+ * @param services&#xD;
+ * Collection to filter&#xD;
+ * @return a new Collection containing the services to start.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AVzW4H12EeGOQuKePEwyrw" type="_AUXMcX12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AVzW4X12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AVz98H12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AV0lAH12EeGOQuKePEwyrw" name="services" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AV1MEH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AV1zIH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AV2aMH12EeGOQuKePEwyrw" name="checkCycle" visibility="private">
+ <ownedComment xmi:id="_AV2aMX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Check for cycles. Throws an exception if a cycle is discovered. Each root&#xD;
+ * is checked to see if it contains a cycle.&#xD;
+ * &#xD;
+ * @param roots&#xD;
+ * @param map&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AV3BQH12EeGOQuKePEwyrw" name="roots" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AV3oUH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AV4PYH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AV42cH12EeGOQuKePEwyrw" name="map" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AV5dgH12EeGOQuKePEwyrw" name="buildTopologicalListOfServicesToStart" visibility="private">
+ <ownedComment xmi:id="_AV6EkH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Build a list of services to start, in the topological order (right&#xD;
+ * order). The required services are placed before the dependent services in&#xD;
+ * the list. Services already started are disguarded.&#xD;
+ * &#xD;
+ * @param roots&#xD;
+ * @param map&#xD;
+ * Map used to resolve the entry by their key.&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AV6roH12EeGOQuKePEwyrw" type="_AUXMcX12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AV6roX12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AV7SsH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AV75wH12EeGOQuKePEwyrw" name="roots" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AV8g0H12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AV9H4H12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AV9u8H12EeGOQuKePEwyrw" name="map" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AV-WAH12EeGOQuKePEwyrw" name="walkGraphDepthFirst" visibility="private">
+ <ownedComment xmi:id="_AV-9EH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Add recursively the provided node, and then its direct children.&#xD;
+ * &#xD;
+ * @param result&#xD;
+ * The list where the node are added&#xD;
+ * @param node&#xD;
+ * The node to add&#xD;
+ * @param map&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AV_kIH12EeGOQuKePEwyrw" name="result" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWALMH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWAyQH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AWBZUH12EeGOQuKePEwyrw" name="node" type="_AUXMcX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_AWCAYH12EeGOQuKePEwyrw" name="map" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWCncH12EeGOQuKePEwyrw" name="getServiceRoots" visibility="private">
+ <ownedComment xmi:id="_AWCncX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Create a List of the root services. The roots are services that are not&#xD;
+ * required by any service.&#xD;
+ * &#xD;
+ * @param addedServices&#xD;
+ * A collection from which roots are required. The collection is&#xD;
+ * unmodified.&#xD;
+ * @param map&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWDOgH12EeGOQuKePEwyrw" type="_AUXMcX12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWD1kH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWEcoH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AWFDsH12EeGOQuKePEwyrw" name="addedServices" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWFDsX12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWFqwH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AWGR0H12EeGOQuKePEwyrw" name="keyServiceMap" type="_AVd_sH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWG44H12EeGOQuKePEwyrw" name="disposeRegistry" visibility="public">
+ <ownedComment xmi:id="_AWG44X12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Dispose all services.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWIHAH12EeGOQuKePEwyrw" name="createServices" visibility="private">
+ <ownedComment xmi:id="_AWIuEH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Create all services provided in the list&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to create.&#xD;
+ * @param errors&#xD;
+ * Exception to collect errors.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * If an error occure during the creation&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWJVIH12EeGOQuKePEwyrw" name="toStart" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWJVIX12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWJ8MH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AWKjQH12EeGOQuKePEwyrw" name="errors" type="_AWHf8H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWLKUH12EeGOQuKePEwyrw" name="registerServices" visibility="private">
+ <ownedComment xmi:id="_AWLKUX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Register all services provided in the list. After this operation,&#xD;
+ * services are available thru {@link #getService(Class)}.&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to register.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWMYcH12EeGOQuKePEwyrw" name="toStart" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWM_gH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWM_gX12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWONoH12EeGOQuKePEwyrw" name="initServices" visibility="private">
+ <ownedComment xmi:id="_AWONoX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Init all services provided in the list&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to init.&#xD;
+ * @param errors&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * If an error occure during the process&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWO0sH12EeGOQuKePEwyrw" name="toStart" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWPbwH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWQC0H12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AWQp4H12EeGOQuKePEwyrw" name="errors" type="_AWHf8H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWR4AH12EeGOQuKePEwyrw" name="startServices" visibility="private">
+ <ownedComment xmi:id="_AWR4AX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Init all services provided in the list&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to init.&#xD;
+ * @param errors&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * If an error occure during the process&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWSfEH12EeGOQuKePEwyrw" name="toStart" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWTGIH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWTtMH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AWUUQH12EeGOQuKePEwyrw" name="errors" type="_AWHf8H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWU7UH12EeGOQuKePEwyrw" name="disposeServices" visibility="private">
+ <ownedComment xmi:id="_AWU7UX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Dispose all started services.&#xD;
+ * Services are disposed in creation reverse order&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWViYH12EeGOQuKePEwyrw" name="services" type="_AUXMcX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWWJcH12EeGOQuKePEwyrw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWWwgH12EeGOQuKePEwyrw" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AWXXkH12EeGOQuKePEwyrw" name="errors" type="_AWHf8H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_AVd_sH12EeGOQuKePEwyrw" name="LookupMap" visibility="private">
+ <ownedComment xmi:id="_AWZMwH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * This class represents a union of two maps of &lt;String,&#xD;
+ * ServiceStartupEntry>. It provide specific methods to retrieve a {@link ServiceStartupEntry} by its key.&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_AWZz0H12EeGOQuKePEwyrw" name="map1" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false"/>
+ <ownedAttribute xmi:id="_AWbB8H12EeGOQuKePEwyrw" name="map2" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false"/>
+ <ownedOperation xmi:id="_AWbpAH12EeGOQuKePEwyrw" name="get" visibility="public">
+ <ownedComment xmi:id="_AWbpAX12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Get a service by its key.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * @return the service or null if not found.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWcQEH12EeGOQuKePEwyrw" type="_AUXMcX12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_AWc3IH12EeGOQuKePEwyrw" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AWdeMH12EeGOQuKePEwyrw" name="getChecked" visibility="public">
+ <ownedComment xmi:id="_AWeFQH12EeGOQuKePEwyrw">
+ <body>&#xD;
+ * Get a service by its key.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * @return The requested service.&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * if the service can't be found.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AWesUH12EeGOQuKePEwyrw" type="_AUXMcX12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_AWfTYH12EeGOQuKePEwyrw" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_AUXMcH12EeGOQuKePEwyrw" name="internal">
+ <ownedComment xmi:id="_kk6mEI7dEeGR4_nY7YyRrQ">
+ <body>Not used</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUXMcX12EeGOQuKePEwyrw" name="ServiceStartupEntry" isAbstract="true">
+ <ownedComment xmi:id="_wLjEUI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Base class for the different types of service startups (lazy, synchronized).&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_wLkScI4UEeGjLtNqkbcdmg" name="serviceEntry" visibility="protected" type="_wIeiMI4UEeGjLtNqkbcdmg" isUnique="false" aggregation="composite" association="_NPvMQI4VEeGjLtNqkbcdmg">
+ <ownedComment xmi:id="_wLlgkI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * The ServiceEntry, according to its type.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_wLmusI4UEeGjLtNqkbcdmg" name="requiredServices" visibility="protected" type="_AUXMcX12EeGOQuKePEwyrw" isUnique="false" aggregation="composite" association="_PErUoI4VEeGjLtNqkbcdmg">
+ <ownedComment xmi:id="_wLn80I4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Entries of Services required by this service.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wLoj4I4UEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wLpyAI4UEeGjLtNqkbcdmg" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_wLqZEI4UEeGjLtNqkbcdmg" name="createService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wLrAII4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Create the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wLsOQI4UEeGjLtNqkbcdmg" name="initService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wLsOQY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Init the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * The servicesRegistry containing this service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wLtcYI4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wLuqgI4UEeGjLtNqkbcdmg" name="startService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wLuqgY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Start the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wLv4oI4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wLv4oY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get the service instance.&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wLxGwI4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wLyU4I4UEeGjLtNqkbcdmg" name="disposeService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wLyU4Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Dispose associated service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wLzjAI4UEeGjLtNqkbcdmg" name="getRequiredServices" visibility="public">
+ <ownedComment xmi:id="_wL0KEI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Return the list of the {@link ServiceStartupEntry} required by this&#xD;
+ * service.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wL0xII4UEeGjLtNqkbcdmg" type="_AUXMcX12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wL1_QI4UEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wL2mUI4UEeGjLtNqkbcdmg" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wL30cI4UEeGjLtNqkbcdmg" name="getDescriptor" visibility="public">
+ <ownedComment xmi:id="_wL30cY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get {@link ServiceDescriptor} associated to this entry.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wL4bgI4UEeGjLtNqkbcdmg" type="_AUZBoX12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wL5poI4UEeGjLtNqkbcdmg" name="getState" visibility="public">
+ <ownedComment xmi:id="_wL5poY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the state of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wL6QsI4UEeGjLtNqkbcdmg" type="_AVVc0H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wL63wI4UEeGjLtNqkbcdmg" name="isStarted" visibility="public">
+ <ownedComment xmi:id="_wL7e0I4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Return true if the service is started. Return false otherwise.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wL8F4I4UEeGjLtNqkbcdmg" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wL9UAI4UEeGjLtNqkbcdmg" name="toString" visibility="public">
+ <ownedComment xmi:id="_wL9UAY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see java.lang.Object#toString()&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wL97EI4UEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wIctAI4UEeGjLtNqkbcdmg" name="ErrorServiceTypeEntry">
+ <ownedComment xmi:id="_wIdUEI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * A service entry used for faulty services. In this implementation, methods do&#xD;
+ * nothings or throw an error.&#xD;
+ * &#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <generalization xmi:id="_wIfJQI4UEeGjLtNqkbcdmg" general="_wIeiMI4UEeGjLtNqkbcdmg"/>
+ <ownedAttribute xmi:id="_wIkBwI4UEeGjLtNqkbcdmg" name="descriptor" visibility="private" type="_AUZBoX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_wIlP4I4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * The original service descriptor.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_wImeAI4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public">
+ <ownedComment xmi:id="_wInFEI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.services.internal.ServiceTypeEntry#getServiceInstance()&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wIphUI4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wIqvcI4UEeGjLtNqkbcdmg" name="createService" visibility="public">
+ <ownedComment xmi:id="_wIqvcY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.services.internal.ServiceTypeEntry#createService()&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wIskoI4UEeGjLtNqkbcdmg" name="initService" visibility="public">
+ <ownedComment xmi:id="_wIskoY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.services.internal.ServiceTypeEntry#initService(ServicesRegistry)&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wItywI4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wIuZ0I4UEeGjLtNqkbcdmg" name="startService" visibility="public">
+ <ownedComment xmi:id="_wIuZ0Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.services.internal.ServiceTypeEntry#startService()&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wIvn8I4UEeGjLtNqkbcdmg" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_wIvn8Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.services.internal.ServiceTypeEntry#disposeService()&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wIeiMI4UEeGjLtNqkbcdmg" name="ServiceTypeEntry" isAbstract="true">
+ <ownedComment xmi:id="_wMFP0I4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Base class for the different types of service entries (PoJo, Service,&#xD;
+ * ServiceFactory, ...).&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_wMGd8I4UEeGjLtNqkbcdmg" name="state" visibility="protected" type="_AVVc0H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_wMHsEI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Current state of the service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_wMITII4UEeGjLtNqkbcdmg" name="serviceDescriptor" visibility="protected" type="_AUZBoX12EeGOQuKePEwyrw" isUnique="false" aggregation="composite" association="_G8H5II4VEeGjLtNqkbcdmg">
+ <ownedComment xmi:id="_wMJhQI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Descriptor of the service associated to this entry.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_wMKvYI4UEeGjLtNqkbcdmg" name="setState" visibility="protected">
+ <ownedComment xmi:id="_wMKvYY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Change the state of the service.&#xD;
+ * &#xD;
+ * @param newState&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wML9gI4UEeGjLtNqkbcdmg" name="newState" type="_AVVc0H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMNysI4UEeGjLtNqkbcdmg" name="getState" visibility="public">
+ <ownedComment xmi:id="_wMNysY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the state&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wMOZwI4UEeGjLtNqkbcdmg" type="_AVVc0H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMPn4I4UEeGjLtNqkbcdmg" name="checkState" visibility="protected">
+ <ownedComment xmi:id="_wMPn4Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Check if the current state is the proposed state. Throws an exception if&#xD;
+ * the state is different.&#xD;
+ * &#xD;
+ * @param expectedState&#xD;
+ * @throws BadStateException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wMQO8I4UEeGjLtNqkbcdmg" name="expectedState" type="_AVVc0H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMRdEI4UEeGjLtNqkbcdmg" name="getDescriptor" visibility="public">
+ <ownedComment xmi:id="_wMRdEY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get the descriptor of the service associated to this entry.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wMSrMI4UEeGjLtNqkbcdmg" type="_AUZBoX12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMTSQI4UEeGjLtNqkbcdmg" name="instanciateService" visibility="protected">
+ <ownedComment xmi:id="_wMTSQY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Instanciate the service as specified in serviceClassname.&#xD;
+ * &#xD;
+ * @return the created service.&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wMVHcI4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMWVkI4UEeGjLtNqkbcdmg" name="loadClass" visibility="private">
+ <ownedComment xmi:id="_wMWVkY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Load the Class object. Try from current ClassLoader, then try using the&#xD;
+ * plugin referenced in the serviceDescriptor.PluginId&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wMth8I4UEeGjLtNqkbcdmg" type="_AUd6IX12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMuwEI4UEeGjLtNqkbcdmg" name="isStarted" visibility="public">
+ <ownedComment xmi:id="_wMuwEY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Return true if the service is started. Return false otherwise.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wMvXII4UEeGjLtNqkbcdmg" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMwlQI4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wMwlQY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get the service instance.&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wMxzYI4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wMyacI4UEeGjLtNqkbcdmg" name="createService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wMzBgI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Create the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wM0PoI4UEeGjLtNqkbcdmg" name="initService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wM0PoY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Start the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * The servicesRegistry containing this service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wM1dwI4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wM2r4I4UEeGjLtNqkbcdmg" name="startService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wM2r4Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Start the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wM36AI4UEeGjLtNqkbcdmg" name="disposeService" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wM36AY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Dispose associated service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wI5Y8I4UEeGjLtNqkbcdmg" name="LazyStartupEntry">
+ <ownedComment xmi:id="_wI6AAI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * An ServiceEntry managing {@link IService} registered as lazy start.&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <generalization xmi:id="_wI6nEI4UEeGjLtNqkbcdmg" general="_AUXMcX12EeGOQuKePEwyrw"/>
+ <ownedAttribute xmi:id="_wI71MI4UEeGjLtNqkbcdmg" name="registry" visibility="protected" type="_4OeqcH11EeGOQuKePEwyrw" isUnique="false"/>
+ <ownedOperation xmi:id="_wI9qYI4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public">
+ <ownedComment xmi:id="_wI9qYY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.services.internal.ServiceStartupEntry#getServiceInstance()&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wI-4gI4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJAGoI4UEeGjLtNqkbcdmg" name="createService" visibility="public">
+ <ownedComment xmi:id="_wJAGoY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Do nothing&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJAtsI4UEeGjLtNqkbcdmg" name="initService" visibility="public">
+ <ownedComment xmi:id="_wJBUwI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Do nothing&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wJVd0I4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJWr8I4UEeGjLtNqkbcdmg" name="startService" visibility="public">
+ <ownedComment xmi:id="_wJWr8Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Do nothing.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJXTAI4UEeGjLtNqkbcdmg" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_wJXTAY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @see org.eclipse.papyrus.infra.core.services.AbstractServiceEntry#disposeService()&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wJgc8I4UEeGjLtNqkbcdmg" name="PojoServiceEntry">
+ <ownedComment xmi:id="_wJhEAI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Entry for a service provided as POJO.&#xD;
+ * &#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ </body>
+ </ownedComment>
+ <generalization xmi:id="_wJhEAY4UEeGjLtNqkbcdmg" general="_wIeiMI4UEeGjLtNqkbcdmg"/>
+ <ownedAttribute xmi:id="_wJiSII4UEeGjLtNqkbcdmg" name="serviceInstance" visibility="private" type="_AUoSMH12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_wJi5MI4UEeGjLtNqkbcdmg">
+ <body> Instance of the service, if started. </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_wJjgQI4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public">
+ <ownedComment xmi:id="_wJkHUI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get the service instance.&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ * If service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wJkuYI4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJlVcI4UEeGjLtNqkbcdmg" name="createService" visibility="public">
+ <ownedComment xmi:id="_wJlVcY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Already created : do nothing.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJmjkI4UEeGjLtNqkbcdmg" name="initService" visibility="public">
+ <ownedComment xmi:id="_wJmjkY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Pojo : can't initialize the service. Do nothing.&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * The servicesRegistry containing this service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wJnKoI4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJnxsI4UEeGjLtNqkbcdmg" name="startService" visibility="public">
+ <ownedComment xmi:id="_wJoYwI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Already started : do nothing.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wJo_0I4UEeGjLtNqkbcdmg" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_wJo_0Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Do nothing.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wKAMMI4UEeGjLtNqkbcdmg" name="ServiceEntry">
+ <ownedComment xmi:id="_wKAzQI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Entry of a Service implementing {@link IService}. This class provide methods&#xD;
+ * to manage the Service life cycle.&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <generalization xmi:id="_wKBaUI4UEeGjLtNqkbcdmg" general="_wIeiMI4UEeGjLtNqkbcdmg"/>
+ <ownedAttribute xmi:id="_wKCocI4UEeGjLtNqkbcdmg" name="serviceInstance" visibility="private" type="_4OZx8H11EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_wKDPgI4UEeGjLtNqkbcdmg">
+ <body> Instance of the service, if started. </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_wKEdoI4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public">
+ <ownedComment xmi:id="_wKEdoY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get the service instance, even if it is not started. The service should&#xD;
+ * be created.&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ * If service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wKFEsI4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKFrwI4UEeGjLtNqkbcdmg" name="toString" visibility="public">
+ <ownedComment xmi:id="_wKGS0I4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @see java.lang.Object#toString()&#xD;
+ * @return&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wKG54I4UEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKHg8I4UEeGjLtNqkbcdmg" name="createService" visibility="public">
+ <ownedComment xmi:id="_wKHg8Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Create the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKIIAI4UEeGjLtNqkbcdmg" name="initService" visibility="public">
+ <ownedComment xmi:id="_wKIIAY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Start the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * The servicesRegistry containing this service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wKJWII4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKJ9MI4UEeGjLtNqkbcdmg" name="startService" visibility="public">
+ <ownedComment xmi:id="_wKJ9MY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Start the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKKkQI4UEeGjLtNqkbcdmg" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_wKLLUI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Dispose the service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wKTHII4UEeGjLtNqkbcdmg" name="ServiceFactoryEntry">
+ <ownedComment xmi:id="_wKTuMI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Entry of a Service implementing {@link IServiceFactory}. This class provide&#xD;
+ * methods to manage the Service life cycle.&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <generalization xmi:id="_wKUVQI4UEeGjLtNqkbcdmg" general="_wIeiMI4UEeGjLtNqkbcdmg"/>
+ <ownedAttribute xmi:id="_wKU8UI4UEeGjLtNqkbcdmg" name="serviceInstance" visibility="private" type="_AUoSMH12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_wKWKcI4UEeGjLtNqkbcdmg">
+ <body> Instance of the service, if started. </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_wKX_oI4UEeGjLtNqkbcdmg" name="factoryInstance" visibility="private" type="_wKXYkI4UEeGjLtNqkbcdmg" isUnique="false">
+ <ownedComment xmi:id="_wKZNwI4UEeGjLtNqkbcdmg">
+ <body> Instance of the factory, if created. </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_wKZ00I4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public">
+ <ownedComment xmi:id="_wKZ00Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get the service instance, even if it is not started. The service should&#xD;
+ * be created.&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ * If service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wKab4I4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKbqAI4UEeGjLtNqkbcdmg" name="toString" visibility="public">
+ <ownedComment xmi:id="_wKbqAY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @see java.lang.Object#toString()&#xD;
+ * @return&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wKcREI4UEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKc4II4UEeGjLtNqkbcdmg" name="createService" visibility="public">
+ <ownedComment xmi:id="_wKc4IY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Create the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKeGQI4UEeGjLtNqkbcdmg" name="initService" visibility="public">
+ <ownedComment xmi:id="_wKeGQY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Start the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * The servicesRegistry containing this service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wKetUI4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKf7cI4UEeGjLtNqkbcdmg" name="startService" visibility="public">
+ <ownedComment xmi:id="_wKf7cY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Start the associated service if not a Lazy Service.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wKiXsI4UEeGjLtNqkbcdmg" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_wKiXsY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Dispose the service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wM8LcI4UEeGjLtNqkbcdmg" name="StartStartupEntry">
+ <ownedComment xmi:id="_wM9ZkI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * An ServiceEntry managing {@link IService} that should be started when the&#xD;
+ * registry is started.&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <generalization xmi:id="_wM9ZkY4UEeGjLtNqkbcdmg" general="_AUXMcX12EeGOQuKePEwyrw"/>
+ <ownedOperation xmi:id="_wM-nsI4UEeGjLtNqkbcdmg" name="getServiceInstance" visibility="public">
+ <ownedComment xmi:id="_wM-nsY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.services.internal.ServiceStartupEntry#getServiceInstance()&#xD;
+ * &#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wM_10I4UEeGjLtNqkbcdmg" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wNAc4I4UEeGjLtNqkbcdmg" name="createService" visibility="public">
+ <ownedComment xmi:id="_wNAc4Y4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Do nothing&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wNBrAI4UEeGjLtNqkbcdmg" name="initService" visibility="public">
+ <ownedComment xmi:id="_wNCSEI4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Do nothing&#xD;
+ * &#xD;
+ * @param servicesRegistry&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wNC5II4UEeGjLtNqkbcdmg" name="servicesRegistry" type="_4OeqcH11EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wNEHQI4UEeGjLtNqkbcdmg" name="startService" visibility="public">
+ <ownedComment xmi:id="_wNEHQY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Do nothing.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wNEuUI4UEeGjLtNqkbcdmg" name="disposeService" visibility="public">
+ <ownedComment xmi:id="_wNEuUY4UEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @see org.eclipse.papyrus.infra.core.services.AbstractServiceEntry#disposeService()&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_G8H5II4VEeGjLtNqkbcdmg" name="A_serviceDescriptor_serviceTypeEntry" memberEnd="_wMITII4UEeGjLtNqkbcdmg _G8LjgI4VEeGjLtNqkbcdmg">
+ <ownedEnd xmi:id="_G8LjgI4VEeGjLtNqkbcdmg" name="serviceTypeEntry" type="_wIeiMI4UEeGjLtNqkbcdmg" association="_G8H5II4VEeGjLtNqkbcdmg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G8MxoI4VEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G8NYsI4VEeGjLtNqkbcdmg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_NPvMQI4VEeGjLtNqkbcdmg" name="A_serviceEntry_serviceStartupEntry" memberEnd="_wLkScI4UEeGjLtNqkbcdmg _NPyPkI4VEeGjLtNqkbcdmg">
+ <ownedEnd xmi:id="_NPyPkI4VEeGjLtNqkbcdmg" name="serviceStartupEntry" type="_AUXMcX12EeGOQuKePEwyrw" association="_NPvMQI4VEeGjLtNqkbcdmg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NPzdsI4VEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NP1S4I4VEeGjLtNqkbcdmg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_PErUoI4VEeGjLtNqkbcdmg" name="A_requiredServices_serviceStartupEntry" memberEnd="_wLmusI4UEeGjLtNqkbcdmg _PEuX8I4VEeGjLtNqkbcdmg">
+ <ownedEnd xmi:id="_PEuX8I4VEeGjLtNqkbcdmg" name="serviceStartupEntry" type="_AUXMcX12EeGOQuKePEwyrw" association="_PErUoI4VEeGjLtNqkbcdmg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PEwNII4VEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PExbQI4VEeGjLtNqkbcdmg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUZBoX12EeGOQuKePEwyrw" name="ServiceDescriptor">
+ <ownedComment xmi:id="_tBqs0I4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Descriptor of a service. This descriptor describe a service.&#xD;
+ * &#xD;
+ * @author cedirc dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_tBr68I4VEeGjLtNqkbcdmg" name="serviceClassname" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tBtJEI4VEeGjLtNqkbcdmg">
+ <body> Classname of the service. USed to start the service </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tBuXMI4VEeGjLtNqkbcdmg" name="serviceStartKind" visibility="private" type="_AUg9cH12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tBu-QI4VEeGjLtNqkbcdmg">
+ <body> Kind of start for this service </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tBwzcI4VEeGjLtNqkbcdmg" name="serviceTypeKind" visibility="private" type="_tBwMYI4VEeGjLtNqkbcdmg" isUnique="false">
+ <ownedComment xmi:id="_tBxagI4VEeGjLtNqkbcdmg">
+ <body> Kind of service </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tByooI4VEeGjLtNqkbcdmg" name="priority" visibility="private" type="_AUbd4X12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tBzPsI4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Service priority. If two service are registered under the same key, only&#xD;
+ * the one with the higher priority is started.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tB0d0I4VEeGjLtNqkbcdmg" name="key" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tB1E4I4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Key used to register the service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tB2TAI4VEeGjLtNqkbcdmg" name="classBundleID" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tB26EI4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Id of the bundle owning the .class that is referenced by&#xD;
+ * serviceClassname. Requested when instanciating the class.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tB4IMI4VEeGjLtNqkbcdmg" name="isAnonymous" visibility="private" type="_AVTAkH12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tB4vQI4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * If set to true, the service is anonymous : it is not registered and can't&#xD;
+ * be retrieved with getService().&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tB59YI4VEeGjLtNqkbcdmg" name="requiredServices" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tB7LgI4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * List of keys of Services required by this service.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tB7ykI4VEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tB8ZoI4VEeGjLtNqkbcdmg" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tB9AsI4VEeGjLtNqkbcdmg" name="EMPTY_LIST_STRING" visibility="private" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_tB-O0I4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Empty list.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tB_c8I4VEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tCAEAI4VEeGjLtNqkbcdmg" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_tCArEI4VEeGjLtNqkbcdmg" name="getServiceStartKind" visibility="public">
+ <ownedComment xmi:id="_tCArEY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the serviceStartKind&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCBSII4VEeGjLtNqkbcdmg" type="_AUg9cH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCCgQI4VEeGjLtNqkbcdmg" name="isStartAtStartup" visibility="public">
+ <ownedComment xmi:id="_tCCgQY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Return true if StartKind is 'always'.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCDHUI4VEeGjLtNqkbcdmg" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCDuYI4VEeGjLtNqkbcdmg" name="getPriority" visibility="public">
+ <ownedComment xmi:id="_tCEVcI4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the priority&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCE8gI4VEeGjLtNqkbcdmg" type="_AUbd4X12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCFjkI4VEeGjLtNqkbcdmg" name="getKey" visibility="public">
+ <ownedComment xmi:id="_tCGKoI4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the key&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCGxsI4VEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCHYwI4VEeGjLtNqkbcdmg" name="getServiceClassname" visibility="public">
+ <ownedComment xmi:id="_tCHYwY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the serviceClassname&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCH_0I4VEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCJN8I4VEeGjLtNqkbcdmg" name="getClassBundleID" visibility="public">
+ <ownedComment xmi:id="_tCJN8Y4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the classBundleID&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCJ1AI4VEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCKcEI4VEeGjLtNqkbcdmg" name="setClassBundleID" visibility="public">
+ <ownedComment xmi:id="_tCLDII4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @param classBundleId&#xD;
+ * the classBundleID to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCLqMI4VEeGjLtNqkbcdmg" name="classBundleId" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCMRQI4VEeGjLtNqkbcdmg" name="getRequiredServiceKeys" visibility="public">
+ <ownedComment xmi:id="_tCM4UI4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * Get the keys of all the required services&#xD;
+ * &#xD;
+ * @return the requiredServices&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCNfYI4VEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tCOGcI4VEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tCPUkI4VEeGjLtNqkbcdmg" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCP7oI4VEeGjLtNqkbcdmg" name="setRequiredServiceKeys" visibility="public">
+ <ownedComment xmi:id="_tCP7oY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @param requiredServices&#xD;
+ * the requiredServices to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCRJwI4VEeGjLtNqkbcdmg" name="requiredServices" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tCRw0I4VEeGjLtNqkbcdmg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tCS-8I4VEeGjLtNqkbcdmg" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCTmAI4VEeGjLtNqkbcdmg" name="toString" visibility="public">
+ <ownedComment xmi:id="_tCTmAY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @see java.lang.Object#toString()&#xD;
+ * @return&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCUNEI4VEeGjLtNqkbcdmg" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCVbMI4VEeGjLtNqkbcdmg" name="isAnonymous" visibility="public">
+ <ownedComment xmi:id="_tCVbMY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the isAnonymous&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCWCQI4VEeGjLtNqkbcdmg" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCXQYI4VEeGjLtNqkbcdmg" name="setAnonymous" visibility="public">
+ <ownedComment xmi:id="_tCXQYY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @param isAnonymous&#xD;
+ * the isAnonymous to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCYegI4VEeGjLtNqkbcdmg" name="isAnonymous" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCZFkI4VEeGjLtNqkbcdmg" name="getServiceTypeKind" visibility="public">
+ <ownedComment xmi:id="_tCZFkY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @return the serviceTypeKind&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCZsoI4VEeGjLtNqkbcdmg" type="_tBwMYI4VEeGjLtNqkbcdmg" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tCa6wI4VEeGjLtNqkbcdmg" name="setServiceTypeKind" visibility="public">
+ <ownedComment xmi:id="_tCa6wY4VEeGjLtNqkbcdmg">
+ <body>&#xD;
+ * @param serviceTypeKind&#xD;
+ * the serviceTypeKind to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tCbh0I4VEeGjLtNqkbcdmg" name="serviceTypeKind" type="_tBwMYI4VEeGjLtNqkbcdmg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUg9cH12EeGOQuKePEwyrw" name="ServiceStartKind"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AVPWMH12EeGOQuKePEwyrw" name="S"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AVVc0H12EeGOQuKePEwyrw" name="ServiceState"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AWHf8H12EeGOQuKePEwyrw" name="ServiceMultiException"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_wKXYkI4UEeGjLtNqkbcdmg" name="IServiceFactory"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tBwMYI4VEeGjLtNqkbcdmg" name="ServiceTypeKind"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_rqUq4L-jEeGnLN6u0QNctQ" name="serviceregistry">
+ <packagedElement xmi:type="uml:Class" xmi:id="_rqaxgL-jEeGnLN6u0QNctQ" name="DescriptorsCache">
+ <ownedComment xmi:id="_rqbYkL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * A cache used to query the {@link IDeclaredDescriptorsProvider}. The cache return resolved descriptors, &#xD;
+ * in the form of instance of the ServiceDescriptors model.&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ *&#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_rqhfML-jEeGnLN6u0QNctQ" name="descriptorsCache" visibility="protected" type="_rqg4IL-jEeGnLN6u0QNctQ" isUnique="false" aggregation="composite" association="_CfTekL-kEeGnLN6u0QNctQ">
+ <ownedComment xmi:id="_rqjUYL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * The cache of descriptors.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rqlJkL-jEeGnLN6u0QNctQ" name="declaredDescriptorProvider" visibility="protected" type="_rqkigL-jEeGnLN6u0QNctQ" isUnique="false" aggregation="composite" association="_G2_3kL-kEeGnLN6u0QNctQ">
+ <ownedComment xmi:id="_rqmXsL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * The provider used to query declarations.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_rqpbAL-jEeGnLN6u0QNctQ" name="addAll" visibility="public">
+ <ownedComment xmi:id="_rqpbAb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add all the provided {@link IDeclaredDescriptorsProvider} to the list of providers to use.&#xD;
+ * @param declaredDescriptorProviders&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rqrQML-jEeGnLN6u0QNctQ" name="declaredDescriptorProviders" type="_rqoM4L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rqr3QL-jEeGnLN6u0QNctQ" name="getRegistryDesc" visibility="public">
+ <ownedComment xmi:id="_rqseUL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the descriptor for the specified registry.&#xD;
+ * The descriptor is built from the declarations found in {@link #declaredDescriptorProvider}.&#xD;
+ * The descriptor is cached. This mean that subsequent calls for the same name will return the same &#xD;
+ * result.&#xD;
+ * &lt;br/>&#xD;
+ * If the registry is not found, throws an exception.&#xD;
+ * &#xD;
+ * @param registryName The name of the registry for which the descriptor is required.&#xD;
+ * &#xD;
+ * @return The registry descriptor&#xD;
+ * @throws DeclarationException If an error occur while reading declarations.&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rqvhoL-jEeGnLN6u0QNctQ" type="_rqtFYL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rqwvwL-jEeGnLN6u0QNctQ" name="registryName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rqx94L-jEeGnLN6u0QNctQ" name="getServiceSetDesc" visibility="public">
+ <ownedComment xmi:id="_rqx94b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the {@link ServiceSetDesc} for the specified name.&#xD;
+ * The descriptor is built from the declarations found in {@link #declaredDescriptorProvider}.&#xD;
+ * The descriptor is cached. This mean that subsequent calls for the same name will return the same &#xD;
+ * result.&#xD;
+ * &lt;br/>&#xD;
+ * If the descriptor is not found, throws an exception.&#xD;
+ * &#xD;
+ * @param serviceSetId&#xD;
+ * @return&#xD;
+ * @throws DeclarationException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rqzMAb-jEeGnLN6u0QNctQ" type="_rqzMAL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rq1oQL-jEeGnLN6u0QNctQ" name="serviceSetId" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rq4rkL-jEeGnLN6u0QNctQ" name="transformAbstractServiceIdDescToRef" visibility="private">
+ <ownedComment xmi:id="_rq4rkb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Transform {@link AncestorEvent} {@link AbstractServiceIdDesc} to an {@link AbstractServiceDesc}.&#xD;
+ * &#xD;
+ * @param serviceIdDesc&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rq7u4L-jEeGnLN6u0QNctQ" type="_rq5SoL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rq8V8L-jEeGnLN6u0QNctQ" name="serviceIdDesc" type="_rq3dcL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rq_ZQL-jEeGnLN6u0QNctQ" name="transformServiceIdDescToRef" visibility="private">
+ <ownedComment xmi:id="_rq_ZQb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * &#xD;
+ * @param serviceIdDesc&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrAnYL-jEeGnLN6u0QNctQ" name="serviceIdDesc" type="_rq-yML-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrGG8L-jEeGnLN6u0QNctQ" name="transformStartKind" visibility="private">
+ <ownedComment xmi:id="_rrGG8b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * &#xD;
+ * @param startKind&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrH8IL-jEeGnLN6u0QNctQ" type="_rrHVEL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rrJKQL-jEeGnLN6u0QNctQ" name="startKind" type="_rrFf4b-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrK_cL-jEeGnLN6u0QNctQ" name="transformAliasIdDescToRef" visibility="private">
+ <ownedComment xmi:id="_rrK_cb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * &#xD;
+ * @param serviceIdDesc&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrMNkL-jEeGnLN6u0QNctQ" name="serviceIdDesc" type="_rrKYYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrOCwL-jEeGnLN6u0QNctQ" name="transformServiceFactoryIdDescToRef" visibility="private">
+ <ownedComment xmi:id="_rrOp0L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * &#xD;
+ * @param serviceIdDesc&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrPQ4L-jEeGnLN6u0QNctQ" name="serviceIdDesc" type="_rrNbsL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrQfAL-jEeGnLN6u0QNctQ" name="computeRegistryServices" visibility="private">
+ <ownedComment xmi:id="_rrQfAb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Compute the services available from this registry. This implies &#xD;
+ * resolving inheritances from extends.&#xD;
+ * @param registryDesc The descriptor for which services should be computed.&#xD;
+ * &#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrRtIL-jEeGnLN6u0QNctQ" name="registryDesc" type="_rqtFYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrSUML-jEeGnLN6u0QNctQ" name="computeServiceSetServices" visibility="private">
+ <ownedComment xmi:id="_rrSUMb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Compute the services available from the specified {@link ServiceSetDesc}. This reset and compute &#xD;
+ * the {@link ServiceSetDesc#getServices()} property.&#xD;
+ * &#xD;
+ * @param serviceSetDesc&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrTiUL-jEeGnLN6u0QNctQ" name="serviceSetDesc" type="_rqzMAL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrVXgL-jEeGnLN6u0QNctQ" name="collectMissingServices" visibility="private">
+ <ownedComment xmi:id="_rrVXgb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Collect the services that are set in the parent, but not found in the collect.&#xD;
+ * @param res&#xD;
+ * @param resolvedServiceSet&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrWloL-jEeGnLN6u0QNctQ" name="collect" type="_rrUwcL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rrXMsL-jEeGnLN6u0QNctQ" name="parent" type="_rrUwcL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_rqgREL-jEeGnLN6u0QNctQ" name="servicedescriptors">
+ <packagedElement xmi:type="uml:Class" xmi:id="_rqg4IL-jEeGnLN6u0QNctQ" name="Descriptors"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rqtFYL-jEeGnLN6u0QNctQ" name="RegistryDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rqzMAL-jEeGnLN6u0QNctQ" name="ServiceSetDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rq5SoL-jEeGnLN6u0QNctQ" name="AbstractServiceDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rrHVEL-jEeGnLN6u0QNctQ" name="StartupKind"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rqkigL-jEeGnLN6u0QNctQ" name="DescriptorsProviderCollection">
+ <ownedComment xmi:id="_rrmdQL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * A collection of DescriptorsProviders.&#xD;
+ * This provide nearly the same method as DescriptorsProviders, but the search is done over&#xD;
+ * a collection of DescriptorsProviders.&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ *&#xD;
+ * TODO : complete&#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_rrnrYL-jEeGnLN6u0QNctQ" name="descriptorsProviders" visibility="protected" type="_rqoM4L-jEeGnLN6u0QNctQ" isUnique="false" aggregation="composite" association="_l2cLQL-kEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrpgkL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrqusL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_rrrVwL-jEeGnLN6u0QNctQ" name="addAll" visibility="public">
+ <ownedComment xmi:id="_rrrVwb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add all the provided {@link IDeclaredDescriptorsProvider} to the list of providers to use.&#xD;
+ * @param declaredDescriptorProviders&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrtK8L-jEeGnLN6u0QNctQ" name="declaredDescriptorProviders" type="_rqoM4L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rruZEL-jEeGnLN6u0QNctQ" name="getRegistryIdDesc" visibility="public">
+ <ownedComment xmi:id="_rruZEb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the descriptor for the specified registry.&#xD;
+ * If the registry is found more than one, throw an exception.&#xD;
+ * If the registry is not found, throws an exception.&#xD;
+ * &#xD;
+ * @param registryName The name of the registry for which the descriptor is required.&#xD;
+ * &#xD;
+ * @return The registry descriptor&#xD;
+ * @throws DeclarationException If an error occur while reading declarations.&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rrwOQL-jEeGnLN6u0QNctQ" type="_rrvnML-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rrxcYL-jEeGnLN6u0QNctQ" name="registryName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrzRkL-jEeGnLN6u0QNctQ" name="getResolvedRegistryIdDesc" visibility="public">
+ <ownedComment xmi:id="_rrzRkb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the descriptor for the specified registry, with all inheritance resolved. This mean that &#xD;
+ * the returned descriptor has no inheritance, but the found inheritance are added in the inner properties&#xD;
+ * (sets, parents).&#xD;
+ * &#xD;
+ * @param registryName&#xD;
+ * @return&#xD;
+ * @throws DeclarationException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rr0fsL-jEeGnLN6u0QNctQ" type="_rrvnML-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rr1GwL-jEeGnLN6u0QNctQ" name="registryName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rr2U4L-jEeGnLN6u0QNctQ" name="getResolvedServiceSetIdDesc" visibility="public">
+ <ownedComment xmi:id="_rr2U4b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the descriptor for the specified ServiceSetIdDesc, with all inheritance resolved. This mean that &#xD;
+ * the returned {@link ServiceSetIdDesc} has no inheritance. All services found from inherited sets are added in the set, &#xD;
+ * according to the following rules:&#xD;
+ * &lt;ul>&#xD;
+ * &lt;li>Names found in children hides names in parent (overloading)&lt;/li>&#xD;
+ * &lt;li>&lt;/li>&#xD;
+ * &lt;li>&lt;/li>&#xD;
+ * &lt;/ul>&#xD;
+ * @param setName&#xD;
+ * @return&#xD;
+ * @throws DeclarationException &#xD;
+ * @throws DeclarationNotFoundException If the set is not found&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rr3jAL-jEeGnLN6u0QNctQ" type="_rrUwcL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rr4xIL-jEeGnLN6u0QNctQ" name="setName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rr5_QL-jEeGnLN6u0QNctQ" name="collectMissingServices" visibility="private">
+ <ownedComment xmi:id="_rr5_Qb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Collect the services that are set in the parent, but not found in the collect.&#xD;
+ * @param res&#xD;
+ * @param resolvedServiceSet&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rr_e0L-jEeGnLN6u0QNctQ" name="collect" type="_rrUwcL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rsAs8L-jEeGnLN6u0QNctQ" name="parent" type="_rrUwcL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rsHaoL-jEeGnLN6u0QNctQ" name="getServiceSetIdDesc" visibility="public">
+ <ownedComment xmi:id="_rsHaob-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the {@link ServiceSetIdDesc} concatenating all fragments declaring a part of the ServiceSetIdDesc.&#xD;
+ * &#xD;
+ * &#xD;
+ * @param setName&#xD;
+ * @return&#xD;
+ * @throws DeclarationNotFoundException &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rsIowL-jEeGnLN6u0QNctQ" type="_rrUwcL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rsJ24L-jEeGnLN6u0QNctQ" name="serviceSetName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rsKd8L-jEeGnLN6u0QNctQ" name="removeDoubleName" visibility="private">
+ <ownedComment xmi:id="_rsLFAL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Remove double names from the provided list.&#xD;
+ * @param list&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rsMTIL-jEeGnLN6u0QNctQ" name="list" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsNhQL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsOvYL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_rqoM4L-jEeGnLN6u0QNctQ" name="IDeclaredDescriptorsProvider">
+ <ownedComment xmi:id="_rwF7sL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * A declared descriptor provider is used to read declared descriptor.&#xD;
+ * Real implementation can read declared descriptor from various sources (Eclipse extension, model, ...).&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ *&#xD;
+ </body>
+ </ownedComment>
+ <ownedOperation xmi:id="_rwHJ0L-jEeGnLN6u0QNctQ" name="getRegistryDescriptor" visibility="public">
+ <ownedComment xmi:id="_rwHw4L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the requested descriptor.&#xD;
+ * If the registry is found more than one, throw an exception.&#xD;
+ * If the registry is not found, return null.&#xD;
+ * @param registryName&#xD;
+ * @return The {@link RegistryIdDesc} or null if not found.&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rwJmEL-jEeGnLN6u0QNctQ" type="_rrvnML-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rwK0ML-jEeGnLN6u0QNctQ" name="registryName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rwMpYL-jEeGnLN6u0QNctQ" name="getServiceSetFragments" visibility="public">
+ <ownedComment xmi:id="_rwMpYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get all the declared fragments for the specified serviceSet.&#xD;
+ * &#xD;
+ * @param serviceSetName The name of the set for which fragments are required.&#xD;
+ * &#xD;
+ * @return A list of fragment. The list can be empty if no fragment is found.&#xD;
+ * @throws DeclarationException &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rwN3gL-jEeGnLN6u0QNctQ" type="_rrUwcL-jEeGnLN6u0QNctQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rwPssL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rwQ60L-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_rwSwAL-jEeGnLN6u0QNctQ" name="serviceSetName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rwT-IL-jEeGnLN6u0QNctQ" name="getServiceSet" visibility="public" isAbstract="true">
+ <ownedParameter xmi:id="_rwVMQL-jEeGnLN6u0QNctQ" type="_rrUwcL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rwXBcL-jEeGnLN6u0QNctQ" name="serviceSetName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_rq22YL-jEeGnLN6u0QNctQ" name="servicedescriptorswithid">
+ <packagedElement xmi:type="uml:Class" xmi:id="_rq3dcL-jEeGnLN6u0QNctQ" name="AbstractServiceIdDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rq-yML-jEeGnLN6u0QNctQ" name="ServiceIdDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rrKYYL-jEeGnLN6u0QNctQ" name="AliasIdDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rrNbsL-jEeGnLN6u0QNctQ" name="ServiceFactoryIdDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rrUwcL-jEeGnLN6u0QNctQ" name="ServiceSetIdDesc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rrvnML-jEeGnLN6u0QNctQ" name="RegistryIdDesc"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_rrCckL-jEeGnLN6u0QNctQ" name="org">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rrDDoL-jEeGnLN6u0QNctQ" name="eclipse">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rrDDob-jEeGnLN6u0QNctQ" name="papyrus">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rrDqsL-jEeGnLN6u0QNctQ" name="infra">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rrERwL-jEeGnLN6u0QNctQ" name="core">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rrE40L-jEeGnLN6u0QNctQ" name="serviceregistry">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rrFf4L-jEeGnLN6u0QNctQ" name="servicedescriptorswithid">
+ <packagedElement xmi:type="uml:Class" xmi:id="_rrFf4b-jEeGnLN6u0QNctQ" name="StartupKind"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rs6r4L-jEeGnLN6u0QNctQ" clientDependency="_rtFrAL-jEeGnLN6u0QNctQ" name="ExtensionDeclaredDescriptorsProvider">
+ <ownedComment xmi:id="_rs76AL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * A declared service provider reading declaration from eclipse extensions (plugin.xml).&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ *&#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_rtIHQL-jEeGnLN6u0QNctQ" name="extensionPointNamespace" visibility="public" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtJVYL-jEeGnLN6u0QNctQ">
+ <body> Namespace where to look for the extension points. </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rtLKkL-jEeGnLN6u0QNctQ" name="SERVICE_EXTENSION_ID" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtMYsL-jEeGnLN6u0QNctQ">
+ <body> ID of the extension (schema filename) </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rtUUgL-jEeGnLN6u0QNctQ" name="REGISTRY_ELEMENT_NAME" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtWJsL-jEeGnLN6u0QNctQ">
+ <body> Extension point name inside the extension description *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rtX-4L-jEeGnLN6u0QNctQ" name="REGISTRY_EXTENDS_ELEMENT" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtZNAL-jEeGnLN6u0QNctQ">
+ <body> Extension point name inside the extension description *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rtdecL-jEeGnLN6u0QNctQ" name="REGISTRY_PARENT_ELEMENT" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtfToL-jEeGnLN6u0QNctQ">
+ <body> Extension point name inside the extension description *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rthI0L-jEeGnLN6u0QNctQ" name="REGISTRY_SERVICE_SETS_ELEMENT" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtpEoL-jEeGnLN6u0QNctQ">
+ <body> Extension point name inside the extension description *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rtq50L-jEeGnLN6u0QNctQ" name="SERVICE_ELEMENT_NAME" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtsvAL-jEeGnLN6u0QNctQ">
+ <body> Extension point name inside the extension description *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rtvLQL-jEeGnLN6u0QNctQ" name="SERVICE_SET_ELEMENT_NAME" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtwZYL-jEeGnLN6u0QNctQ">
+ <body> servicesSet name *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rtyOkL-jEeGnLN6u0QNctQ" name="SERVICE_FACTORY_ELEMENT_NAME" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rtzcsL-jEeGnLN6u0QNctQ">
+ <body> ServiceFactory Extension point *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rt1R4L-jEeGnLN6u0QNctQ" name="ALIAS_ELEMENT_NAME" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rt2gAL-jEeGnLN6u0QNctQ">
+ <body> ServiceFactory Extension point *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rt48QL-jEeGnLN6u0QNctQ" name="ALIASED_SERVICE_ID_ATTRIBUTE" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rt6KYL-jEeGnLN6u0QNctQ">
+ <body> ServiceFactory Extension point *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rt7_kL-jEeGnLN6u0QNctQ" name="ID_ATTRIBUTE" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rt90wL-jEeGnLN6u0QNctQ">
+ <body> id attribute </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rt_p8L-jEeGnLN6u0QNctQ" name="CONTEXTCLASS_ATTRIBUTE" visibility="public" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruA4EL-jEeGnLN6u0QNctQ">
+ <body> constant for the attribute factoryClass *</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruCtQL-jEeGnLN6u0QNctQ" name="STARTKIND_PROPERTY" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruD7YL-jEeGnLN6u0QNctQ">
+ <body> extension point propertyname </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruGXoL-jEeGnLN6u0QNctQ" name="DEPENDSON_ELEMENT_NAME" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruHlwL-jEeGnLN6u0QNctQ">
+ <body> name of the dependsOn element </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruJa8L-jEeGnLN6u0QNctQ" name="SERVICE_ID_ATTRIBUTE_NAME" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruLQIL-jEeGnLN6u0QNctQ">
+ <body> </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruNFUL-jEeGnLN6u0QNctQ" name="SERVICE_SET_EXTENDS_ELEMENT" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruOTcL-jEeGnLN6u0QNctQ">
+ <body> </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruQIoL-jEeGnLN6u0QNctQ" name="DESCRIPTION_ATTRIBUTE" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruR90L-jEeGnLN6u0QNctQ">
+ <body> </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruTzAL-jEeGnLN6u0QNctQ" name="IS_UNIQUE_ATTRIBUTE" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruVBIL-jEeGnLN6u0QNctQ">
+ <body> </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruW2UL-jEeGnLN6u0QNctQ" name="REGISTRY_ID_ATTRIBUTE" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ruYrgL-jEeGnLN6u0QNctQ">
+ <body> </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ruZ5oL-jEeGnLN6u0QNctQ" name="SERVICE_SET_ID_ATTRIBUTE" visibility="private" isLeaf="true" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rubu0L-jEeGnLN6u0QNctQ">
+ <body> </body>
+ </ownedComment>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_rtFrAL-jEeGnLN6u0QNctQ" name="ExtensionDeclaredDescriptorsProvider implements IDeclaredDescriptorsProvider" client="_rs6r4L-jEeGnLN6u0QNctQ" supplier="_rqoM4L-jEeGnLN6u0QNctQ" contract="_rqoM4L-jEeGnLN6u0QNctQ"/>
+ <ownedOperation xmi:id="_rudkAL-jEeGnLN6u0QNctQ" name="getRegistryDescriptor" visibility="public">
+ <ownedComment xmi:id="_rudkAb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the descriptor for the specified registry.&#xD;
+ * Return null if not found.&#xD;
+ * @see org.eclipse.papyrus.infra.core.serviceregistry.IDeclaredDescriptorsProvider#getRegistryDescriptor(java.lang.String)&#xD;
+ *&#xD;
+ * @param registryName&#xD;
+ * @return The specified descriptor, or null if not found&#xD;
+ * @throws DeclarationException If there is more than one registry declared under the name.&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rueyIL-jEeGnLN6u0QNctQ" type="_rrvnML-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rugAQL-jEeGnLN6u0QNctQ" name="registryName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rumt8L-jEeGnLN6u0QNctQ" name="parseRegistryDescriptor" visibility="private">
+ <ownedComment xmi:id="_rumt8b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse the RegistryDescriptor from the provided {@link IConfigurationElement}.&#xD;
+ * &#xD;
+ * @param ele The {@link IConfigurationElement} representing a RegistryDescriptor.&#xD;
+ * @param warnings A list used to record encountered warnings.&#xD;
+ * @return A registry descriptor.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ruojIL-jEeGnLN6u0QNctQ" type="_rrvnML-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rupxQL-jEeGnLN6u0QNctQ" name="ele" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ruq_YL-jEeGnLN6u0QNctQ" name="warnings" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rusNgL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutboL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ruupwL-jEeGnLN6u0QNctQ" name="parseRegistryServiceSetId" visibility="private">
+ <ownedComment xmi:id="_ruupwb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse the declared sets of a Registry.&#xD;
+ * &#xD;
+ * @param ele&#xD;
+ * @param registryIdDesc&#xD;
+ * @param warnings&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ruv34L-jEeGnLN6u0QNctQ" name="parentElement" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ruxGAL-jEeGnLN6u0QNctQ" name="registryIdDesc" type="_rrvnML-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ruyUIL-jEeGnLN6u0QNctQ" name="warnings" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruy7ML-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ru0JUL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ru1XcL-jEeGnLN6u0QNctQ" name="parseRegistryParent" visibility="private">
+ <ownedComment xmi:id="_ru1Xcb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse the parent declaration of a Registry.&#xD;
+ * @param ele&#xD;
+ * @param registryIdDesc&#xD;
+ * @param warnings&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ru2lkL-jEeGnLN6u0QNctQ" name="parentElement" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ru3zsL-jEeGnLN6u0QNctQ" name="registryIdDesc" type="_rrvnML-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ru5B0L-jEeGnLN6u0QNctQ" name="warnings" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ru5o4L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ru63AL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ru8FIL-jEeGnLN6u0QNctQ" name="parseRegistryExtends" visibility="private">
+ <ownedComment xmi:id="_ru8FIb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse the extends declaration of a Registry.&#xD;
+ * @param parentElement The element to parse. This element must represent a Registry.&#xD;
+ * @param registryIdDesc The registry into which the result is stored&#xD;
+ * @param warnings A list used to record encountered warnings.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ru9TQL-jEeGnLN6u0QNctQ" name="parentElement" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ru-hYL-jEeGnLN6u0QNctQ" name="registryIdDesc" type="_rrvnML-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ru_vgL-jEeGnLN6u0QNctQ" name="warnings" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvA9oL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvBksL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvCy0L-jEeGnLN6u0QNctQ" name="getServiceSetFragments" visibility="public">
+ <ownedComment xmi:id="_rvCy0b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get all fragments contributing to the declaration of the specified ServiceSetIdDesc.&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.serviceregistry.IDeclaredDescriptorsProvider#getServiceSetFragments(java.lang.String)&#xD;
+ *&#xD;
+ * @param serviceSetName&#xD;
+ * @return&#xD;
+ * @throws DeclarationMultiException &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvEA8L-jEeGnLN6u0QNctQ" type="_rrUwcL-jEeGnLN6u0QNctQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvFPEL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvF2IL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_rvHEQL-jEeGnLN6u0QNctQ" name="serviceSetName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvISYL-jEeGnLN6u0QNctQ" name="getServiceSet" visibility="public">
+ <ownedComment xmi:id="_rvISYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the requested ServiceSetIdDesc. If several fragmants are used to declare the ServiceSetIdDesc, &#xD;
+ * this fragments are concatenated in one ServiceSetIdDesc.&#xD;
+ * &#xD;
+ * @see org.eclipse.papyrus.infra.core.serviceregistry.IDeclaredDescriptorsProvider#getServiceSetFragments(java.lang.String)&#xD;
+ *&#xD;
+ * @param serviceSetName&#xD;
+ * @return &#xD;
+ * @throws DeclarationMultiException &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvJggL-jEeGnLN6u0QNctQ" type="_rrUwcL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rvKuoL-jEeGnLN6u0QNctQ" name="serviceSetName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvL8wL-jEeGnLN6u0QNctQ" name="parseServiceSetDescriptor" visibility="private">
+ <ownedComment xmi:id="_rvL8wb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add the ServiceSetIdDesc declarations found in the provided {@link IConfigurationElement}, and add&#xD;
+ * it to the provided {@link ServiceSetIdDesc}.&#xD;
+ * @param ele&#xD;
+ * @param warnings&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvNK4L-jEeGnLN6u0QNctQ" name="ele" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rvOZAL-jEeGnLN6u0QNctQ" name="serviceSet" type="_rrUwcL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rvPnIL-jEeGnLN6u0QNctQ" name="warnings" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvQ1QL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvRcUL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvSqcL-jEeGnLN6u0QNctQ" name="parseServiceSetDescriptor" visibility="private">
+ <ownedComment xmi:id="_rvTRgL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse a {@link ServiceSetIdDesc}&#xD;
+ * @param ele&#xD;
+ * @param warnings&#xD;
+ * @return A newly created ServiceSetIdDesc initialized with the declaration found in ele.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvT4kL-jEeGnLN6u0QNctQ" type="_rrUwcL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rvVGsL-jEeGnLN6u0QNctQ" name="ele" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rvWU0L-jEeGnLN6u0QNctQ" name="warnings" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvXi8L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvYKAL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvZYIL-jEeGnLN6u0QNctQ" name="parseServiceSetExtends" visibility="private">
+ <ownedComment xmi:id="_rvZYIb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse the extended attribute of a ServiceSetIdDesc declaration.&#xD;
+ * @param parentElement&#xD;
+ * @param serviceSet&#xD;
+ * @param warnings&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvamQL-jEeGnLN6u0QNctQ" name="parentElement" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rvb0YL-jEeGnLN6u0QNctQ" name="serviceSet" type="_rrUwcL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rvdCgL-jEeGnLN6u0QNctQ" name="warnings" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rveQoL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rve3sL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvgs4L-jEeGnLN6u0QNctQ" name="parseServiceSetServices" visibility="private">
+ <ownedComment xmi:id="_rvgs4b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Read services descriptors from the specified element configuration.&#xD;
+ * The element configuration should contains service elements declarations.&#xD;
+ * IdDescriptors are added to the specified list&#xD;
+ * &#xD;
+ * @param descriptors The list into which descriptors are added&#xD;
+ * @param parentElement The configuration element containing some service declarations.&#xD;
+ * @param serviceSet &#xD;
+ * @param exceptions List used to add encountered exceptions.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rviiEL-jEeGnLN6u0QNctQ" name="parentElement" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rvjwML-jEeGnLN6u0QNctQ" name="descriptors" type="_rq3dcL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvk-UL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvmMcL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_rvnakL-jEeGnLN6u0QNctQ" name="exceptions" type="_rumG4L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvoosL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvpPwL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvqd4L-jEeGnLN6u0QNctQ" name="parseAliasDescriptor" visibility="private">
+ <ownedComment xmi:id="_rvqd4b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Read an alias descriptor.&#xD;
+ * @param ele&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvrsAL-jEeGnLN6u0QNctQ" type="_rrKYYL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rvs6IL-jEeGnLN6u0QNctQ" name="ele" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvuIQL-jEeGnLN6u0QNctQ" name="parseServiceDescriptor" visibility="private">
+ <ownedComment xmi:id="_rvuIQb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Read descriptor values from provided element.&#xD;
+ * &#xD;
+ * @param ele&#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvuvUL-jEeGnLN6u0QNctQ" type="_rq-yML-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rvv9cL-jEeGnLN6u0QNctQ" name="ele" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rvxLkL-jEeGnLN6u0QNctQ" name="parseStartKindAttribute" visibility="private">
+ <ownedComment xmi:id="_rvxyoL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse the StartupKind attribute.&#xD;
+ * @param ele&#xD;
+ * @return&#xD;
+ * @throws DeclarationException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rvyZsL-jEeGnLN6u0QNctQ" type="_rrFf4b-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_rvzn0L-jEeGnLN6u0QNctQ" name="ele" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rv3SML-jEeGnLN6u0QNctQ" name="parsePriorityAttribute" visibility="private">
+ <ownedComment xmi:id="_rv3SMb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @param ele&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rv4gUL-jEeGnLN6u0QNctQ" type="_AUbd4X12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_rv5ucL-jEeGnLN6u0QNctQ" name="ele" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rv68kL-jEeGnLN6u0QNctQ" name="parseServiceDependsOn" visibility="private">
+ <ownedComment xmi:id="_rv68kb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Parse the dependsOn attribute of a service.&#xD;
+ * @param parentElement The {@link IConfigurationElement} containing a dependsOn attribute.&#xD;
+ * @param dependsOnServices Parsed value are added in this list.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rv8KsL-jEeGnLN6u0QNctQ" name="parentElement" type="_ruk4wL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_rv9_4L-jEeGnLN6u0QNctQ" name="dependsOnServices" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rv_OAL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rwAcIL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rwBDML-jEeGnLN6u0QNctQ" name="getExtensionRegistry" visibility="protected">
+ <ownedComment xmi:id="_rwBDMb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the Eclipse extensionRegistry.&#xD;
+ * This method can be overloaded by subclasses. This is useful for tests.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rwC4YL-jEeGnLN6u0QNctQ" type="_rwCRUL-jEeGnLN6u0QNctQ" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rwgLYL-jEeGnLN6u0QNctQ" name="ServiceDescriptor">
+ <ownedComment xmi:id="_rwhZgL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Descriptor of a service. This descriptor describe a service.&#xD;
+ * &#xD;
+ * @author cedirc dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_rwinoL-jEeGnLN6u0QNctQ" name="serviceClassname" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rwkc0L-jEeGnLN6u0QNctQ">
+ <body> Classname of the service. USed to start the service </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rwmSAL-jEeGnLN6u0QNctQ" name="serviceStartKind" visibility="private" type="_rwlq8L-jEeGnLN6u0QNctQ" isUnique="false">
+ <ownedComment xmi:id="_rwngIL-jEeGnLN6u0QNctQ">
+ <body> Kind of start for this service </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rwqjcL-jEeGnLN6u0QNctQ" name="serviceTypeKind" visibility="private" type="_rwpVUL-jEeGnLN6u0QNctQ" isUnique="false">
+ <ownedComment xmi:id="_rwtmwL-jEeGnLN6u0QNctQ">
+ <body> Kind of service </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rwu04L-jEeGnLN6u0QNctQ" name="priority" visibility="private" type="_AUbd4X12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rwwqEL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Service priority. If two service are registered under the same key, only&#xD;
+ * the one with the higher priority is started.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rwx4ML-jEeGnLN6u0QNctQ" name="key" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rwztYL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Key used to register the service.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rw07gL-jEeGnLN6u0QNctQ" name="classBundleID" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rw2JoL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Id of the bundle owning the .class that is referenced by&#xD;
+ * serviceClassname. Requested when instanciating the class.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rw3XwL-jEeGnLN6u0QNctQ" name="isAnonymous" visibility="private" type="_AVTAkH12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rw5M8L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * If set to true, the service is anonymous : it is not registered and can't&#xD;
+ * be retrieved with getService().&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rw6bEL-jEeGnLN6u0QNctQ" name="requiredServices" visibility="private" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rw8QQL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * List of keys of Services required by this service.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rw9eYL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rw-FcL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rw_TkL-jEeGnLN6u0QNctQ" name="EMPTY_LIST_STRING" visibility="private" isStatic="true" type="_AUa20H12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rxBIwL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Empty list.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxC98L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxEMEL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_rxFaML-jEeGnLN6u0QNctQ" name="getServiceStartKind" visibility="public">
+ <ownedComment xmi:id="_rxGBQL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @return the serviceStartKind&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxHPYL-jEeGnLN6u0QNctQ" type="_rwlq8L-jEeGnLN6u0QNctQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxIdgL-jEeGnLN6u0QNctQ" name="isStartAtStartup" visibility="public">
+ <ownedComment xmi:id="_rxIdgb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return true if StartKind is 'always'.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxJroL-jEeGnLN6u0QNctQ" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxK5wL-jEeGnLN6u0QNctQ" name="getPriority" visibility="public">
+ <ownedComment xmi:id="_rxK5wb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @return the priority&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxMH4L-jEeGnLN6u0QNctQ" type="_AUbd4X12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxNWAL-jEeGnLN6u0QNctQ" name="getKey" visibility="public">
+ <ownedComment xmi:id="_rxNWAb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @return the key&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxOkIL-jEeGnLN6u0QNctQ" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxPLML-jEeGnLN6u0QNctQ" name="getServiceClassname" visibility="public">
+ <ownedComment xmi:id="_rxPyQL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @return the serviceClassname&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxRAYL-jEeGnLN6u0QNctQ" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxSOgL-jEeGnLN6u0QNctQ" name="getClassBundleID" visibility="public">
+ <ownedComment xmi:id="_rxSOgb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @return the classBundleID&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxTcoL-jEeGnLN6u0QNctQ" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxUqwL-jEeGnLN6u0QNctQ" name="setClassBundleID" visibility="public">
+ <ownedComment xmi:id="_rxUqwb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @param classBundleId&#xD;
+ * the classBundleID to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxV44L-jEeGnLN6u0QNctQ" name="classBundleId" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxXHAL-jEeGnLN6u0QNctQ" name="getRequiredServiceKeys" visibility="public">
+ <ownedComment xmi:id="_rxXHAb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the keys of all the required services&#xD;
+ * &#xD;
+ * @return the requiredServices&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxY8ML-jEeGnLN6u0QNctQ" type="_AUa20H12EeGOQuKePEwyrw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxaKUL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxbYcL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxcmkL-jEeGnLN6u0QNctQ" name="setRequiredServiceKeys" visibility="public">
+ <ownedComment xmi:id="_rxcmkb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @param requiredServices&#xD;
+ * the requiredServices to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxd0sL-jEeGnLN6u0QNctQ" name="requiredServices" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxebwL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxfp4L-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxg4AL-jEeGnLN6u0QNctQ" name="toString" visibility="public">
+ <ownedComment xmi:id="_rxhfEL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @see java.lang.Object#toString()&#xD;
+ * @return&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxitML-jEeGnLN6u0QNctQ" type="_AUa20H12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxj7UL-jEeGnLN6u0QNctQ" name="isAnonymous" visibility="public">
+ <ownedComment xmi:id="_rxj7Ub-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @return the isAnonymous&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxkiYL-jEeGnLN6u0QNctQ" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxnlsL-jEeGnLN6u0QNctQ" name="setAnonymous" visibility="public">
+ <ownedComment xmi:id="_rxoMwL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @param isAnonymous&#xD;
+ * the isAnonymous to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxpa4L-jEeGnLN6u0QNctQ" name="isAnonymous" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxqpAL-jEeGnLN6u0QNctQ" name="getServiceTypeKind" visibility="public">
+ <ownedComment xmi:id="_rxrQEL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @return the serviceTypeKind&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxtFQL-jEeGnLN6u0QNctQ" type="_rwpVUL-jEeGnLN6u0QNctQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rxuTYL-jEeGnLN6u0QNctQ" name="setServiceTypeKind" visibility="public">
+ <ownedComment xmi:id="_rxuTYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @param serviceTypeKind&#xD;
+ * the serviceTypeKind to set&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rxvhgL-jEeGnLN6u0QNctQ" name="serviceTypeKind" type="_rwpVUL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rwlq8L-jEeGnLN6u0QNctQ" name="ServiceStartKind"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rwpVUL-jEeGnLN6u0QNctQ" name="ServiceTypeKind"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rx1oIL-jEeGnLN6u0QNctQ" name="ServiceRegistryFactory">
+ <ownedComment xmi:id="_rx22QL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * @author cedric dumoulin&#xD;
+ *&#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_rx4EYL-jEeGnLN6u0QNctQ" name="singleRegistries" visibility="protected" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_rx55kL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Repository of single registries.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rx7HsL-jEeGnLN6u0QNctQ" name="descriptorProviders" visibility="protected" type="_rqaxgL-jEeGnLN6u0QNctQ" isUnique="false" aggregation="composite" association="_6y8P0L-jEeGnLN6u0QNctQ">
+ <ownedComment xmi:id="_rx884L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * DescriptorProviders access point.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_rx-LAL-jEeGnLN6u0QNctQ" name="getServicesRegistry" visibility="public">
+ <ownedComment xmi:id="_rx-LAb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Create a {@link ServicesRegistry} from the specified description.&#xD;
+ * The description is searched in the associated {@link DescriptorsProviderCollection}.&#xD;
+ * &#xD;
+ * @param registryName The name of the description used to initialized the ServicesRegistry.&#xD;
+ * &#xD;
+ * @return The requested {@link ServicesRegistry}&#xD;
+ * @throws DeclarationException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ryAnQL-jEeGnLN6u0QNctQ" type="_rx_ZIL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_ryB1YL-jEeGnLN6u0QNctQ" name="registryName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ryDDgL-jEeGnLN6u0QNctQ" name="getServicesRegistry" visibility="protected">
+ <ownedComment xmi:id="_ryDDgb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get a {@link ServicesRegistry} corresponding to the specified descriptor. Also create recursively referenced&#xD;
+ * registries and services.&#xD;
+ * &#xD;
+ * If the registry is &quot;unique&quot;, lookup for an already existing instance, and return it if found.&#xD;
+ * If the registry is not unique, create a new instance corresponding to the descriptor.&#xD;
+ * Referenced descriptions are searched in the associated ConfigurationProvider.&#xD;
+ * &#xD;
+ * @param registryIdDesc The descriptor used to initialized the ServicesRegistry.&#xD;
+ * &#xD;
+ * @return The requested {@link ServicesRegistry}&#xD;
+ * @throws DeclarationException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ryERoL-jEeGnLN6u0QNctQ" type="_rx_ZIL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_ryFfwL-jEeGnLN6u0QNctQ" name="registryIdDesc" type="_rqtFYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ryGt4L-jEeGnLN6u0QNctQ" name="extendsServicesRegistry" visibility="public">
+ <ownedComment xmi:id="_ryGt4b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Extends the specified registry with all services and parents declared in the specified descriptor.&#xD;
+ * Only missing services and parents are added.&#xD;
+ * &lt;br>If both the original registry and the additional registry contain a service with the same name, &#xD;
+ * the service from the original registry is conserved.&#xD;
+ * &#xD;
+ * @param registry The registry to extends.&#xD;
+ * @param extendsWithRegistryName The name of the descriptor used to extends the registry.&#xD;
+ * @return&#xD;
+ * @throws DeclarationException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ryH8AL-jEeGnLN6u0QNctQ" type="_rx_ZIL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_ryJKIL-jEeGnLN6u0QNctQ" name="registry" type="_rx_ZIL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ryKYQL-jEeGnLN6u0QNctQ" name="extendsWithRegistryName" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ryMNcL-jEeGnLN6u0QNctQ" name="extendsServicesRegistry" visibility="protected">
+ <ownedComment xmi:id="_ryMNcb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Extends the specified registry with all services and parents declared in the specified descriptor.&#xD;
+ * Only missing services and parents are added.&#xD;
+ * &lt;br>If both the original registry and the additional registry contain a service with the same name, &#xD;
+ * the service from the original registry is conserved.&#xD;
+ * &#xD;
+ * @param extendRegistryDesc The descriptor used to initialized the ServicesRegistry.&#xD;
+ * &#xD;
+ * @return The requested {@link ServicesRegistry}&#xD;
+ * @throws DeclarationException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ryNbkL-jEeGnLN6u0QNctQ" type="_rx_ZIL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_ryOpsL-jEeGnLN6u0QNctQ" name="registry" type="_rx_ZIL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_ryP30L-jEeGnLN6u0QNctQ" name="extendRegistryDesc" type="_rqtFYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ryRF8L-jEeGnLN6u0QNctQ" name="getSingleRegistry" visibility="private">
+ <ownedComment xmi:id="_ryRF8b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the specified single registry by its name.&#xD;
+ * Return null if not found or if the repository do not exist.&#xD;
+ * &#xD;
+ * @param registryIdDesc&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ryS7IL-jEeGnLN6u0QNctQ" type="_rx_ZIL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_ryUJQL-jEeGnLN6u0QNctQ" name="registryIdDesc" type="_rqtFYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rx_ZIL-jEeGnLN6u0QNctQ" name="ServicesRegistry">
+ <ownedComment xmi:id="_rytK0L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * A registry of services. This registry allows to get a service by its&#xD;
+ * identifier. The identifier is generally the classname of the service.&#xD;
+ * Services can be added using the Eclipse extension mechanism (if you use {@link ExtensionServicesRegistry}). &lt;br>&#xD;
+ * A Service is a class providing operations. The ServiceRegistry is used to&#xD;
+ * share objects (i.e. services) between nested editors and also the core main&#xD;
+ * editor.&#xD;
+ * &#xD;
+ * &lt;br>&#xD;
+ * In this implementation, services should be added to the registry before the&#xD;
+ * call to createServices(). If a service is added after the call, it will not&#xD;
+ * be started (except if it is a lazy service). &lt;br>&#xD;
+ * A typical usage is:&#xD;
+ * &#xD;
+ * &lt;pre>&#xD;
+ * &lt;code>&#xD;
+ * ServicesRegistry serviceRegistry = new ServiceRegistry();&#xD;
+ * // Add your services&#xD;
+ * serviceRegistry.add( ...);&#xD;
+ * serviceRegistry.add( ...);&#xD;
+ * &#xD;
+ * // start the services&#xD;
+ * serviceRegistry.startRegistry();&#xD;
+ * &#xD;
+ * // Retrieve a service&#xD;
+ * myService = serviceRegistry.getService( serviceKey );&#xD;
+ * &lt;/code>&#xD;
+ * &lt;/pre>&#xD;
+ * &#xD;
+ * It is possible to register new services after the serviceRegistry has been&#xD;
+ * started. In this case, you need to start them explicitly if they are of type&#xD;
+ * ServiceStartKind.STARTUP.&#xD;
+ * &#xD;
+ * &lt;pre>&#xD;
+ * &lt;code>&#xD;
+ * // Add your new services&#xD;
+ * serviceRegistry.add( key1, ...);&#xD;
+ * serviceRegistry.add( key2, ...);&#xD;
+ * &#xD;
+ * // start the new services&#xD;
+ * serviceRegistry.startRegistry(key1, key2);&#xD;
+ * &lt;/code>&#xD;
+ * &lt;/pre>&#xD;
+ * &#xD;
+ * &lt;ul>&#xD;
+ * &lt;li>&lt;/li>&#xD;
+ * &lt;li>&lt;/li>&#xD;
+ * &lt;/ul>&#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_ryvAAL-jEeGnLN6u0QNctQ" name="log" visibility="protected" type="_AUTiEX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ryzRcL-jEeGnLN6u0QNctQ">
+ <body> Log object </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ry0fkL-jEeGnLN6u0QNctQ" name="addedServices" visibility="private" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ry2UwL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * A Map of services added to the register (thow the addXxx() methods), but&#xD;
+ * not yet registered. They will be registered after a call to startXxx().&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ry4J8L-jEeGnLN6u0QNctQ" name="namedServices" visibility="private" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false">
+ <ownedComment xmi:id="_ry5_IL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Map of services registered with a name.&#xD;
+ </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ry8bYL-jEeGnLN6u0QNctQ" name="anonymousServices" visibility="private" type="_ry70UL-jEeGnLN6u0QNctQ" isUnique="false">
+ <ownedComment xmi:id="_ry-QkL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Map of services registered without a name (anonymous). Such services&#xD;
+ * can't be retrieved.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ry_esL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rzB68L-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rzDwIL-jEeGnLN6u0QNctQ" name="parents" visibility="private" type="_rx_ZIL-jEeGnLN6u0QNctQ" isUnique="false">
+ <ownedComment xmi:id="_rzFlUL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * List of parents used as fallback if the service is not found in this registry.&#xD;
+ </body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rzGzcL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rzIooL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_rzJ2wL-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rzJ2wb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add a service by its ServiceDescriptor.&#xD;
+ * &#xD;
+ * @param serviceDescriptor&#xD;
+ * Descriptor describing the service.&#xD;
+ * @throws ServiceException&#xD;
+ * If an error occurs while initializing service.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rzLr8L-jEeGnLN6u0QNctQ" name="serviceDescriptor" type="_rwgLYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rzNhIL-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rzNhIb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rzOvQL-jEeGnLN6u0QNctQ" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzQkcL-jEeGnLN6u0QNctQ" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzRykL-jEeGnLN6u0QNctQ" name="serviceInstance" type="_TYM0UH13EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rzTAsL-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rzTAsb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rzU14L-jEeGnLN6u0QNctQ" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzWEAL-jEeGnLN6u0QNctQ" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzXSIL-jEeGnLN6u0QNctQ" name="serviceInstance" type="_TYM0UH13EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rzZHUL-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rzZHUb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rza8gL-jEeGnLN6u0QNctQ" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzcxsL-jEeGnLN6u0QNctQ" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzem4L-jEeGnLN6u0QNctQ" name="serviceInstance" type="_TYM0UH13EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzf1AL-jEeGnLN6u0QNctQ" name="startKind" type="_rwlq8L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rzhqML-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rzhqMb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add a service. The descriptor will be created.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key Class used as key. The classname is used as key.&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rzjfYL-jEeGnLN6u0QNctQ" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzktgL-jEeGnLN6u0QNctQ" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rznJwL-jEeGnLN6u0QNctQ" name="serviceInstance" type="_TYM0UH13EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzo-8L-jEeGnLN6u0QNctQ" name="startKind" type="_rwlq8L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rzq0IL-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rzq0Ib-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add an already instanciated pojo (Plain Old Java Object) as Service. The&#xD;
+ * descriptor will be created. No life cycle methods are called on the&#xD;
+ * service.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rzspUL-jEeGnLN6u0QNctQ" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzuegL-jEeGnLN6u0QNctQ" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rzwTsL-jEeGnLN6u0QNctQ" name="serviceInstance" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rzyI4L-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rzyI4b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add an already instanciated pojo (Plain Old Java Object) as Service. The&#xD;
+ * descriptor will be created. No life cycle methods are called on the&#xD;
+ * service.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ * @param startKind&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rzz-EL-jEeGnLN6u0QNctQ" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rz1zQL-jEeGnLN6u0QNctQ" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rz3BYL-jEeGnLN6u0QNctQ" name="serviceInstance" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rz5doL-jEeGnLN6u0QNctQ" name="startKind" type="_rwlq8L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rz6rwL-jEeGnLN6u0QNctQ" name="add" visibility="public">
+ <ownedComment xmi:id="_rz7S0L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add an already instanciated pojo (Plain Old Java Object) as Service. The&#xD;
+ * descriptor will be created. No life cycle methods are called on the&#xD;
+ * service.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * Service key Class used as key. The classname is used as key.&#xD;
+ * @param priority&#xD;
+ * service priority&#xD;
+ * @param serviceInstance&#xD;
+ * The instance of the service&#xD;
+ * @param startKind&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rz8g8L-jEeGnLN6u0QNctQ" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_rz-WIL-jEeGnLN6u0QNctQ" name="priority" type="_AUbd4X12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r0ALUL-jEeGnLN6u0QNctQ" name="serviceInstance" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r0CAgL-jEeGnLN6u0QNctQ" name="startKind" type="_rwlq8L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0D1sL-jEeGnLN6u0QNctQ" name="addParentRegistry" visibility="public">
+ <ownedComment xmi:id="_r0D1sb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Remove the specified Registry as parent of this registry.&#xD;
+ * . &#xD;
+ * @param parentRegistry&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0Fq4L-jEeGnLN6u0QNctQ" name="parentRegistry" type="_rx_ZIL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0HgEL-jEeGnLN6u0QNctQ" name="removeParentRegistry" visibility="public">
+ <ownedComment xmi:id="_r0HgEb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * &#xD;
+ * @param parentRegistry&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0JVQL-jEeGnLN6u0QNctQ" name="parentRegistry" type="_rx_ZIL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0KjYL-jEeGnLN6u0QNctQ" name="remove" visibility="public">
+ <ownedComment xmi:id="_r0KjYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Remove the specified service from the registry.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0MYkL-jEeGnLN6u0QNctQ" name="serviceDescriptor" type="_rwgLYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0ONwL-jEeGnLN6u0QNctQ" name="remove" visibility="public">
+ <ownedComment xmi:id="_r0ONwb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Remove the specified service from the registry.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0Pb4L-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0R4IL-jEeGnLN6u0QNctQ" name="getService" visibility="public">
+ <ownedComment xmi:id="_r0R4Ib-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the requested service by its key. The key is usually the classname of&#xD;
+ * the service.&#xD;
+ * &#xD;
+ * @param serviceClass&#xD;
+ * @return&#xD;
+ * @throws ServiceException&#xD;
+ * If servive can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0TtUL-jEeGnLN6u0QNctQ" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_r0U7cL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0WwoL-jEeGnLN6u0QNctQ" name="getService" visibility="public">
+ <ownedComment xmi:id="_r0Wwob-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the requested service by its class (the service has to be registered&#xD;
+ * by its class object).&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * The service class.&#xD;
+ * @return The service.&#xD;
+ * @throws ServiceException&#xD;
+ * If service can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0abAL-jEeGnLN6u0QNctQ" type="_r0ZM4L-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r0bpIL-jEeGnLN6u0QNctQ" name="key" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0deUL-jEeGnLN6u0QNctQ" name="getServiceFromParents" visibility="private">
+ <ownedComment xmi:id="_r0eFYL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the requested service by its class (the service has to be registered&#xD;
+ * by its class object).&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * The service class.&#xD;
+ * @return The service.&#xD;
+ * @throws ServiceException&#xD;
+ * If service can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0fTgL-jEeGnLN6u0QNctQ" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_r0hIsL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0i94L-jEeGnLN6u0QNctQ" name="getServiceUnchecked" visibility="protected">
+ <ownedComment xmi:id="_r0i94b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get the requested service by its key. The key is usually the classname of&#xD;
+ * the service.&#xD;
+ * Return the service, or null if not found.&#xD;
+ * This is for internal use.&#xD;
+ * &#xD;
+ * @param serviceClass&#xD;
+ * @return The service, or null if not found.&#xD;
+ * @throws ServiceException&#xD;
+ * If servive can't be started&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0mBML-jEeGnLN6u0QNctQ" type="_AUoSMH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_r0nPUL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0pEgL-jEeGnLN6u0QNctQ" name="getServiceStartupEntry" visibility="protected">
+ <ownedComment xmi:id="_r0prkL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Try to get the {@link ServiceStartupEntry} of the specified service.&#xD;
+ * Search in local namedServices.&#xD;
+ * Also lookup in parents. Return null if not found.&#xD;
+ * The returned entry should not be modified by caller.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * @return The requested entry, or null if not found.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0tV8L-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r0vLIL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r0xAUL-jEeGnLN6u0QNctQ" name="getServiceStartupEntry" visibility="protected">
+ <ownedComment xmi:id="_r0xAUb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Try to get the {@link ServiceStartupEntry} of the specified service.&#xD;
+ * Search in local namedServices.&#xD;
+ * Also lookup in parents. Return null if not found.&#xD;
+ * The returned entry should not be modified by caller.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * @param searchInParent True if we should search in parent, false if search take place in this registry only.&#xD;
+ * @return The requested entry, or null if not found.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r0y1gL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r00DoL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r01RwL-jEeGnLN6u0QNctQ" name="searchInParent" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r03G8L-jEeGnLN6u0QNctQ" name="isStarted" visibility="public">
+ <ownedComment xmi:id="_r03G8b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return true if the service is instantiated. Return false otherwise.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r048IL-jEeGnLN6u0QNctQ" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_r06KQL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r07YYL-jEeGnLN6u0QNctQ" name="isStarted" visibility="public">
+ <ownedComment xmi:id="_r07YYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return true if the service is instantiated. Return false otherwise.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r09NkL-jEeGnLN6u0QNctQ" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_r0-bsL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r1AQ4L-jEeGnLN6u0QNctQ" name="searchInParents" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1CtIL-jEeGnLN6u0QNctQ" name="isStarted" visibility="public">
+ <ownedComment xmi:id="_r1CtIb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return true if the service is instantiated. Return false otherwise.&#xD;
+ * The service type is converted to its name, then the method is performed.&#xD;
+ * @see #isStarted(Class)&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r1EiUL-jEeGnLN6u0QNctQ" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_r1FwcL-jEeGnLN6u0QNctQ" name="serviceType" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1HloL-jEeGnLN6u0QNctQ" name="isStarted" visibility="public">
+ <ownedComment xmi:id="_r1IzwL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return true if the service is instantiated. Return false otherwise.&#xD;
+ * The service type is converted to its name, then the method is performed.&#xD;
+ * @see #isStarted(Class)&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r1KB4L-jEeGnLN6u0QNctQ" type="_AVTAkH12EeGOQuKePEwyrw" direction="return"/>
+ <ownedParameter xmi:id="_r1L3EL-jEeGnLN6u0QNctQ" name="serviceType" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r1NFML-jEeGnLN6u0QNctQ" name="searchInParents" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1PhcL-jEeGnLN6u0QNctQ" name="serviceState" visibility="public">
+ <ownedComment xmi:id="_r1Phcb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return the state of the specified service.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r1SkwL-jEeGnLN6u0QNctQ" type="_r1RWoL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r1UZ8L-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1VoEL-jEeGnLN6u0QNctQ" name="serviceState" visibility="public">
+ <ownedComment xmi:id="_r1WPIL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return the state of the specified service.&#xD;
+ * @param key&#xD;
+ * @param searchInParents&#xD;
+ * @return&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r1XdQL-jEeGnLN6u0QNctQ" type="_r1RWoL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r1agkL-jEeGnLN6u0QNctQ" name="key" type="_AUoSMH12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r1cVwL-jEeGnLN6u0QNctQ" name="searchInParents" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1dj4L-jEeGnLN6u0QNctQ" name="serviceState" visibility="public">
+ <ownedComment xmi:id="_r1eK8L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return the state of the specified service.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r1fZEL-jEeGnLN6u0QNctQ" type="_r1RWoL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r1hOQL-jEeGnLN6u0QNctQ" name="serviceType" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1jDcL-jEeGnLN6u0QNctQ" name="serviceState" visibility="public">
+ <ownedComment xmi:id="_r1jDcb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return the state of the specified service.&#xD;
+ * &#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r1kRkL-jEeGnLN6u0QNctQ" type="_r1RWoL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r1nU4L-jEeGnLN6u0QNctQ" name="serviceType" type="_AUd6IX12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r1pKEL-jEeGnLN6u0QNctQ" name="searchInParents" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1qYML-jEeGnLN6u0QNctQ" name="startNewServices" visibility="public">
+ <ownedComment xmi:id="_r1qYMb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Start services newly added.&#xD;
+ * Start all services marked as start = STARTUP. &#xD;
+ * All services are first created, then initialized and finally&#xD;
+ * started. If an error occur on a service during one of this step, the&#xD;
+ * service is removed from the registry and and the error is logged.&#xD;
+&#xD;
+ * @throws ServiceMultiException&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1sNYL-jEeGnLN6u0QNctQ" name="startRegistry" visibility="protected">
+ <ownedComment xmi:id="_r1sNYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Start the registry. Start all services marked as start = STARTUP are&#xD;
+ * started. All services are first created, then initialized and finally&#xD;
+ * started. If an error occur on a service during one of this step, the&#xD;
+ * service is removed from the registry and and the error is logged.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ * &#xD;
+ * @deprecated Use {@link #startNewServices()} &#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r1upoL-jEeGnLN6u0QNctQ" name="startServices" visibility="public">
+ <ownedComment xmi:id="_r1upob-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Same as {@link #startServices(List)}, but with an array as input.&#xD;
+ * &#xD;
+ * @see #startServices(List)&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * Keys of services to start.&#xD;
+ * @throws ServiceMultiException&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r1we0L-jEeGnLN6u0QNctQ" name="serviceKeys" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1yUAL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r10JML-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r13MgL-jEeGnLN6u0QNctQ" name="startServicesByClassKeys" visibility="public">
+ <ownedComment xmi:id="_r13Mgb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Same as {@link #startServicesByClassKeys(List)}, but with an array as&#xD;
+ * input.&#xD;
+ * &#xD;
+ * @see #startServices(List)&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * Keys of services to start.&#xD;
+ * @throws ServiceMultiException&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r15owL-jEeGnLN6u0QNctQ" name="serviceKeys" type="_AUd6IX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1624L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r18sEL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r2A9gL-jEeGnLN6u0QNctQ" name="startServices" visibility="private">
+ <ownedComment xmi:id="_r2BkkL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Start the specified services, and their required services. The specifies&#xD;
+ * services should be in the specified map. The map is also used to resolves&#xD;
+ * dependencies. Start all services marked as start = STARTUP . All eligible&#xD;
+ * services are first created, then initialized and finally started. If an&#xD;
+ * error occur on a service during one of this step, the service is removed&#xD;
+ * from the registry and and the error is logged.&#xD;
+ * &#xD;
+ * @param services&#xD;
+ * Services to start&#xD;
+ * @param map&#xD;
+ * a table of (key, service) used to get a service by its key.&#xD;
+ * @throws ServiceMultiException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r2CysL-jEeGnLN6u0QNctQ" name="services" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2En4L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r2GdEL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r2HrML-jEeGnLN6u0QNctQ" name="map" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r2JgYL-jEeGnLN6u0QNctQ" name="keysToServices" visibility="private">
+ <ownedComment xmi:id="_r2JgYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return a list of services from a list of services keys.&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * @param map&#xD;
+ * @return&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r2MjsL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2dpcL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r2feoL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r2gswL-jEeGnLN6u0QNctQ" name="serviceKeys" type="_AUa20H12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2kXIL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r2ookL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r2qdwL-jEeGnLN6u0QNctQ" name="map" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r2sS8L-jEeGnLN6u0QNctQ" name="classKeysToServices" visibility="private">
+ <ownedComment xmi:id="_r2sS8b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Return a list of services from a list of services keys.&#xD;
+ * &#xD;
+ * @param serviceKeys&#xD;
+ * @param map&#xD;
+ * @return&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * If a service can't be retrieved by its key.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r2uIIL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2vWQL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r2xLcL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r2yZkL-jEeGnLN6u0QNctQ" name="serviceKeys" type="_AUd6IX12EeGOQuKePEwyrw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r20OwL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r25uUL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r268cL-jEeGnLN6u0QNctQ" name="map" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r29YsL-jEeGnLN6u0QNctQ" name="showServices" visibility="private">
+ <ownedComment xmi:id="_r29Ysb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Print the services. For debug purpose&#xD;
+ * &#xD;
+ * @param roots&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r2_N4L-jEeGnLN6u0QNctQ" name="message" type="_AUa20H12EeGOQuKePEwyrw"/>
+ <ownedParameter xmi:id="_r3BDEL-jEeGnLN6u0QNctQ" name="roots" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3DfUL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r3EtcL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r3GioL-jEeGnLN6u0QNctQ" name="checkDependencies" visibility="private">
+ <ownedComment xmi:id="_r3Giob-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Check if all dependencies exist. Throw an error if a declared dependency&#xD;
+ * has no corresponding service.&#xD;
+ * &#xD;
+ * @param services&#xD;
+ * Services to check&#xD;
+ * @param map&#xD;
+ * Map of services by keys.&#xD;
+ * @throws ServiceMultiException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r3I-4L-jEeGnLN6u0QNctQ" name="services" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3KNAL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r3MCML-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r3PFgL-jEeGnLN6u0QNctQ" name="map" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r3RhwL-jEeGnLN6u0QNctQ" name="retainsToStartServices" visibility="private">
+ <ownedComment xmi:id="_r3Rhwb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Retains only the services that should be started. Retains only services&#xD;
+ * with startupkind = START and state == REGISTERED&#xD;
+ * &#xD;
+ * @param services&#xD;
+ * Collection to filter&#xD;
+ * @return a new Collection containing the services to start.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r3T-AL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3VzML-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r3XBUL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r3Y2gL-jEeGnLN6u0QNctQ" name="services" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3arsL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r3cg4L-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r3dvAL-jEeGnLN6u0QNctQ" name="checkCycle" visibility="private">
+ <ownedComment xmi:id="_r3eWEL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Check for cycles. Throws an exception if a cycle is discovered. Each root&#xD;
+ * is checked to see if it contains a cycle.&#xD;
+ * &#xD;
+ * @param roots&#xD;
+ * @param map&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r3gLQL-jEeGnLN6u0QNctQ" name="roots" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3iAcL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r3jOkL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r3lDwL-jEeGnLN6u0QNctQ" name="map" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r3m48L-jEeGnLN6u0QNctQ" name="buildTopologicalListOfServicesToStart" visibility="private">
+ <ownedComment xmi:id="_r3m48b-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Build a list of services to start, in the topological order (right&#xD;
+ * order). The required services are placed before the dependent services in&#xD;
+ * the list. Services already started are disguarded.&#xD;
+ * &#xD;
+ * @param roots&#xD;
+ * @param map&#xD;
+ * Map used to resolve the entry by their key.&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r3ouIL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3qjUL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r3rxcL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r3tmoL-jEeGnLN6u0QNctQ" name="roots" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3u0wL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r3wC4L-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r3xRAL-jEeGnLN6u0QNctQ" name="map" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r3zGML-jEeGnLN6u0QNctQ" name="walkGraphDepthFirst" visibility="private">
+ <ownedComment xmi:id="_r3zGMb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Add recursively the provided node, and then its direct children.&#xD;
+ * &#xD;
+ * @param result&#xD;
+ * The list where the node are added&#xD;
+ * @param node&#xD;
+ * The node to add&#xD;
+ * @param map&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r307YL-jEeGnLN6u0QNctQ" name="result" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r32JgL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r33XoL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r35M0L-jEeGnLN6u0QNctQ" name="node" type="_ry70UL-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_r36a8L-jEeGnLN6u0QNctQ" name="map" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r38QIL-jEeGnLN6u0QNctQ" name="getServiceRoots" visibility="private">
+ <ownedComment xmi:id="_r38QIb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Create a List of the root services. The roots are services that are not&#xD;
+ * required by any service.&#xD;
+ * &#xD;
+ * @param addedServices&#xD;
+ * A collection from which roots are required. The collection is&#xD;
+ * unmodified.&#xD;
+ * @param map&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r3-FUL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3_TcL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4AhkL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r4CWwL-jEeGnLN6u0QNctQ" name="addedServices" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4Dk4L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4FaEL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r4GoML-jEeGnLN6u0QNctQ" name="keyServiceMap" type="_r1_vYL-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4IdYL-jEeGnLN6u0QNctQ" name="disposeRegistry" visibility="public">
+ <ownedComment xmi:id="_r4IdYb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Dispose all services for this registry and its parents.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ </body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4JrgL-jEeGnLN6u0QNctQ" name="disposeRegistry" visibility="public">
+ <ownedComment xmi:id="_r4Jrgb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Dispose all services, and parent registries if any.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r4MHwL-jEeGnLN6u0QNctQ" name="isRecursive" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4PLEL-jEeGnLN6u0QNctQ" name="disposeRegistry" visibility="protected">
+ <ownedComment xmi:id="_r4PLEb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Dispose all services, and parent registries if any.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r4RAQL-jEeGnLN6u0QNctQ" name="errors" type="_r4N88L-jEeGnLN6u0QNctQ"/>
+ <ownedParameter xmi:id="_r4S1cL-jEeGnLN6u0QNctQ" name="isRecursive" type="_AVTAkH12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4UqoL-jEeGnLN6u0QNctQ" name="createServices" visibility="private">
+ <ownedComment xmi:id="_r4Uqob-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Create all services provided in the list&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to create.&#xD;
+ * @param errors&#xD;
+ * Exception to collect errors.&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * If an error occure during the creation&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r4Wf0L-jEeGnLN6u0QNctQ" name="toStart" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4Xt8L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4Y8EL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r4axQL-jEeGnLN6u0QNctQ" name="errors" type="_r4N88L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4cmcL-jEeGnLN6u0QNctQ" name="registerServices" visibility="private">
+ <ownedComment xmi:id="_r4cmcb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Register all services provided in the list. After this operation,&#xD;
+ * services are available thru {@link #getService(Class)}.&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to register.&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r4eboL-jEeGnLN6u0QNctQ" name="toStart" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4gQ0L-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4he8L-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4jUIL-jEeGnLN6u0QNctQ" name="initServices" visibility="private">
+ <ownedComment xmi:id="_r4jUIb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Init all services provided in the list&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to init.&#xD;
+ * @param errors&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * If an error occure during the process&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r4lJUL-jEeGnLN6u0QNctQ" name="toStart" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4mXcL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4nlkL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r4pawL-jEeGnLN6u0QNctQ" name="errors" type="_r4N88L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4qo4L-jEeGnLN6u0QNctQ" name="startServices" visibility="private">
+ <ownedComment xmi:id="_r4rP8L-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Init all services provided in the list&#xD;
+ * &#xD;
+ * @param toStart&#xD;
+ * List of services to init.&#xD;
+ * @param errors&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * If an error occure during the process&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r4tFIL-jEeGnLN6u0QNctQ" name="toStart" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4uTQL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4vhYL-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r4xWkL-jEeGnLN6u0QNctQ" name="errors" type="_r4N88L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r4yksL-jEeGnLN6u0QNctQ" name="disposeServices" visibility="private">
+ <ownedComment xmi:id="_r4zLwL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Dispose all started services.&#xD;
+ * Services are disposed in creation reverse order&#xD;
+ * &#xD;
+ * @throws ServiceMultiException&#xD;
+ * &#xD;
+ * @throws ServiceException&#xD;
+ * If a service can't be started.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r40Z4L-jEeGnLN6u0QNctQ" name="services" type="_ry70UL-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r42PEL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r43dML-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r45SYL-jEeGnLN6u0QNctQ" name="errors" type="_r4N88L-jEeGnLN6u0QNctQ"/>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_r1_vYL-jEeGnLN6u0QNctQ" name="LookupMap" visibility="private">
+ <ownedComment xmi:id="_r48VsL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * This class represents a union of two maps of &lt;String,&#xD;
+ * ServiceStartupEntry>. It provide specific methods to retrieve a {@link ServiceStartupEntry} by its key.&#xD;
+ * &lt;br>&#xD;
+ * This class is used to lookup {@link ServiceStartupEntry} in multiple namespaces (2 maps, and then registries).&#xD;
+ * &#xD;
+ * &#xD;
+ * @author cedric dumoulin&#xD;
+ * &#xD;
+ </body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_r4-K4L-jEeGnLN6u0QNctQ" name="map1" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false"/>
+ <ownedAttribute xmi:id="_r5AnIL-jEeGnLN6u0QNctQ" name="map2" type="_AUUwMX12EeGOQuKePEwyrw" isUnique="false"/>
+ <ownedAttribute xmi:id="_r5DqcL-jEeGnLN6u0QNctQ" name="registries" type="_rx_ZIL-jEeGnLN6u0QNctQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r5GGsL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r5H74L-jEeGnLN6u0QNctQ" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_r5JxEL-jEeGnLN6u0QNctQ" name="get" visibility="public">
+ <ownedComment xmi:id="_r5JxEb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get a service by its key.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * @return the service or null if not found.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r5LmQL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r5NbcL-jEeGnLN6u0QNctQ" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r5PQoL-jEeGnLN6u0QNctQ" name="getChecked" visibility="public">
+ <ownedComment xmi:id="_r5P3sL-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Get a service by its key.&#xD;
+ * &#xD;
+ * @param key&#xD;
+ * @return The requested service.&#xD;
+ * @throws ServiceNotFoundException&#xD;
+ * if the service can't be found.&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r5Rs4L-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r5TiEL-jEeGnLN6u0QNctQ" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r5VXQL-jEeGnLN6u0QNctQ" name="getFromRegistries" visibility="private">
+ <ownedComment xmi:id="_r5VXQb-jEeGnLN6u0QNctQ">
+ <body>&#xD;
+ * Try to get the entry from the registries.&#xD;
+ * @param key&#xD;
+ * @return&#xD;
+ </body>
+ </ownedComment>
+ <ownedParameter xmi:id="_r5YakL-jEeGnLN6u0QNctQ" type="_ry70UL-jEeGnLN6u0QNctQ" direction="return"/>
+ <ownedParameter xmi:id="_r5nrIL-jEeGnLN6u0QNctQ" name="key" type="_AUa20H12EeGOQuKePEwyrw"/>
+ </ownedOperation>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_ry7NQL-jEeGnLN6u0QNctQ" name="internal">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ry70UL-jEeGnLN6u0QNctQ" name="ServiceStartupEntry"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_r0ZM4L-jEeGnLN6u0QNctQ" name="S"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_r1RWoL-jEeGnLN6u0QNctQ" name="ServiceState"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_r4N88L-jEeGnLN6u0QNctQ" name="ServiceMultiException"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_6y8P0L-jEeGnLN6u0QNctQ" name="A_descriptorProviders_serviceRegistryFactory" memberEnd="_rx7HsL-jEeGnLN6u0QNctQ _6zCWcL-jEeGnLN6u0QNctQ">
+ <ownedEnd xmi:id="_6zCWcL-jEeGnLN6u0QNctQ" name="serviceRegistryFactory" type="_rx1oIL-jEeGnLN6u0QNctQ" association="_6y8P0L-jEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6zFZwL-jEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6zIdEL-jEeGnLN6u0QNctQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_CfTekL-kEeGnLN6u0QNctQ" name="A_descriptorsCache_descriptorsCache" memberEnd="_rqhfML-jEeGnLN6u0QNctQ _CfXI8L-kEeGnLN6u0QNctQ">
+ <ownedEnd xmi:id="_CfXI8L-kEeGnLN6u0QNctQ" name="descriptorsCache" type="_rqaxgL-jEeGnLN6u0QNctQ" association="_CfTekL-kEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CfYXEL-kEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CfaMQL-kEeGnLN6u0QNctQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_G2_3kL-kEeGnLN6u0QNctQ" name="A_declaredDescriptorProvider_descriptorsCache" memberEnd="_rqlJkL-jEeGnLN6u0QNctQ _G3F-ML-kEeGnLN6u0QNctQ">
+ <ownedEnd xmi:id="_G3F-ML-kEeGnLN6u0QNctQ" name="descriptorsCache" type="_rqaxgL-jEeGnLN6u0QNctQ" association="_G2_3kL-kEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G3JBgL-kEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G3ME0L-kEeGnLN6u0QNctQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_l2cLQL-kEeGnLN6u0QNctQ" name="A_descriptorsProviders_descriptorsProviderCollection" memberEnd="_rrnrYL-jEeGnLN6u0QNctQ _l2i48L-kEeGnLN6u0QNctQ">
+ <ownedEnd xmi:id="_l2i48L-kEeGnLN6u0QNctQ" name="descriptorsProviderCollection" type="_rqkigL-jEeGnLN6u0QNctQ" association="_l2cLQL-kEeGnLN6u0QNctQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l2mjUL-kEeGnLN6u0QNctQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l2o_kL-kEeGnLN6u0QNctQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_AUS7AH12EeGOQuKePEwyrw" name="java">
+ <packagedElement xmi:type="uml:Package" xmi:id="_AUS7AX12EeGOQuKePEwyrw" name="java">
+ <packagedElement xmi:type="uml:Package" xmi:id="_AUS7An12EeGOQuKePEwyrw" name="util">
+ <packagedElement xmi:type="uml:Package" xmi:id="_AUTiEH12EeGOQuKePEwyrw" name="logging">
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUTiEX12EeGOQuKePEwyrw" name="Logger"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUUwMX12EeGOQuKePEwyrw" name="Map"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_AUaPwX12EeGOQuKePEwyrw" name="lang">
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUa20H12EeGOQuKePEwyrw" name="String"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUd6IX12EeGOQuKePEwyrw" name="Class"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AUoSMH12EeGOQuKePEwyrw" name="Object"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rumG4L-jEeGnLN6u0QNctQ" name="Throwable"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_AUa20X12EeGOQuKePEwyrw" name="datatype">
+ <packagedElement xmi:type="uml:Package" xmi:id="_AUbd4H12EeGOQuKePEwyrw" name="datatype">
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AUbd4X12EeGOQuKePEwyrw" name="Integer"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AVTAkH12EeGOQuKePEwyrw" name="Boolean"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_rugnUL-jEeGnLN6u0QNctQ" name="core">
+ <packagedElement xmi:type="uml:Package" xmi:id="_ruh1cL-jEeGnLN6u0QNctQ" name="org">
+ <packagedElement xmi:type="uml:Package" xmi:id="_ruicgL-jEeGnLN6u0QNctQ" name="eclipse">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rujqoL-jEeGnLN6u0QNctQ" name="core">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rukRsL-jEeGnLN6u0QNctQ" name="runtime">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_ruk4wL-jEeGnLN6u0QNctQ" name="IConfigurationElement"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_rwCRUL-jEeGnLN6u0QNctQ" name="IExtensionRegistry"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_sQQ24H1zEeGOQuKePEwyrw">
+ <eAnnotations xmi:id="_sQrtoH1zEeGOQuKePEwyrw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/JAVA/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_JAVA_PROFILES/java.profile.uml#_6TYLMN0yEd6P1qtlpBOZyg"/>
+ </profileApplication>
+ </uml:Model>
+ <java:JavaPackage_ xmi:id="_cBGEIH10EeGOQuKePEwyrw" srcName="src" projectName="org.eclipse.papyrus.infra.core.serviceregistry" packageName="org.eclipse.papyrus.infra.core.serviceregistry" base_Package="_kaJEoH1yEeGcMtmaQ3nQLw"/>
+</xmi:XMI>

Back to the top