[264424] Initial check-in of the DS 1.1 model
diff --git a/modeling/plugins/org.eclipse.pde.ds/.classpath b/modeling/plugins/org.eclipse.pde.ds/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/modeling/plugins/org.eclipse.pde.ds/.project b/modeling/plugins/org.eclipse.pde.ds/.project
new file mode 100644
index 0000000..9df2d45
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.pde.ds</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.core.resources.prefs b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..d273e88
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 12 18:01:12 CET 2009
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.jdt.core.prefs b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8d63816
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Wed Feb 04 21:58:11 CET 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.jdt.ui.prefs b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..4079175
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,59 @@
+#Sun Dec 23 21:49:35 CST 2007
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_core
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=;
+org.eclipse.jdt.ui.ondemandthreshold=3
+org.eclipse.jdt.ui.staticondemandthreshold=99
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.pde.prefs b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..3a83987
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,13 @@
+#Wed Mar 29 03:57:21 EST 2006
+compilers.p.build=1
+compilers.p.deprecated=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/modeling/plugins/org.eclipse.pde.ds/META-INF/MANIFEST.MF b/modeling/plugins/org.eclipse.pde.ds/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f98283f
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.pde.ds;singleton:=true
+Bundle-Version: 0.1.0
+Bundle-ClassPath: .
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.pde.ds.scr,
+ org.eclipse.pde.ds.scr.impl,
+ org.eclipse.pde.ds.scr.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+Bundle-Vendor: %providerName
diff --git a/modeling/plugins/org.eclipse.pde.ds/build.properties b/modeling/plugins/org.eclipse.pde.ds/build.properties
new file mode 100644
index 0000000..cb057e7
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/build.properties
@@ -0,0 +1,20 @@
+# Copyright (c) 2009 Anyware Technologies and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     Anyware Technologies - initial API and implementation
+#
+# $Id$
+
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               model/scr-1.1.ecore,\
+               model/scr-1.1.genmodel,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/modeling/plugins/org.eclipse.pde.ds/model/scr-1.0.xsd b/modeling/plugins/org.eclipse.pde.ds/model/scr-1.0.xsd
new file mode 100644
index 0000000..ca1ed07
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/model/scr-1.0.xsd
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * $Date: 2008-03-17 10:37:47 -0400 (Mon, 17 Mar 2008) $
+ * 
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->		
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.osgi.org/xmlns/scr/v1.0.0" xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+	<annotation>
+		<documentation xml:lang="en">
+This is the XML Schema for component descriptions used by the Service Component Runtime (SCR).
+Component description documents may be embedded in other XML documents. The SCR will
+process all XML documents listed in the Service-Component manifest header of a bundle. 
+XML documents containing component descriptions may contain a single, root component 
+element or one or more component elements embedded in a larger document. Use of the 
+namespace is optional if the document only contains a root component element. In this 
+case, the scr namespace is assumed. Otherwise the namespace must be used.
+		</documentation>
+	</annotation>
+
+	<element name="component" type="scr:Tcomponent"/>
+
+	<complexType name="Tcomponent">
+		<annotation>
+			<documentation xml:lang="en">
+			Implementations of SCR must not require component descriptions to specify the subelements 
+			of the component element in the order as required by the schema. SCR implementations must 
+			allow other orderings since arbitrary orderings do not affect the meaning of the component 
+			description. Only the relative ordering of property and properties element have meaning.
+			</documentation>
+		</annotation>
+		<sequence>
+			<element name="implementation" type="scr:Timplementation" minOccurs="1" maxOccurs="1"/>
+			<choice minOccurs="0" maxOccurs="unbounded">
+				<element name="property" type="scr:Tproperty"/>
+				<element name="properties" type="scr:Tproperties"/>
+			</choice>
+			<element name="service" type="scr:Tservice" minOccurs="0" maxOccurs="1"/>
+			<element name="reference" type="scr:Treference" minOccurs="0" maxOccurs="unbounded"/>
+		</sequence>
+		<attribute name="enabled" type="boolean" default="true" use="optional"/>
+		<attribute name="name" type="token" use="required"/>
+		<attribute name="factory" type="string" use="optional"/>
+		<attribute name="immediate" type="boolean" use="optional"/>
+	</complexType>
+
+	<complexType name="Timplementation">
+		<attribute name="class" type="token" use="required"/>
+	</complexType>
+
+	<complexType name="Tproperty">
+		<simpleContent>
+			<extension base="string">
+				<attribute name="name" type="string" use="required"/>
+				<attribute name="value" type="string" use="optional"/>
+				<attribute name="type" type="scr:Tjava-types" default="String" use="optional"/>
+			</extension>
+		</simpleContent>
+	</complexType>
+
+	<complexType name="Tproperties">
+		<attribute name="entry" type="string" use="required"/>
+	</complexType>
+
+	<complexType name="Tservice">
+		<sequence>
+			<element name="provide" type="scr:Tprovide" minOccurs="1" maxOccurs="unbounded"/>
+		</sequence>
+		<attribute name="servicefactory" type="boolean" default="false" use="optional"/>
+	</complexType>
+
+	<complexType name="Tprovide">
+		<attribute name="interface" type="token" use="required"/>
+	</complexType>
+
+	<complexType name="Treference">
+		<attribute name="name" type="NMTOKEN" use="required"/>
+		<attribute name="interface" type="token" use="required"/>
+		<attribute name="cardinality" type="scr:Tcardinality" default="1..1" use="optional"/>
+		<attribute name="policy" type="scr:Tpolicy" default="static" use="optional"/>
+		<attribute name="target" type="string" use="optional"/>
+		<attribute name="bind" type="token" use="optional"/>
+		<attribute name="unbind" type="token" use="optional"/>
+	</complexType>
+
+	<simpleType name="Tjava-types">
+		<restriction base="string">
+			<enumeration value="String"/>
+			<enumeration value="Long"/>
+			<enumeration value="Double"/>
+			<enumeration value="Float"/>
+			<enumeration value="Integer"/>
+			<enumeration value="Byte"/>
+			<enumeration value="Character"/>
+			<enumeration value="Boolean"/>
+			<enumeration value="Short"/>
+		</restriction>
+	</simpleType>
+
+	<simpleType name="Tcardinality">
+		<restriction base="string">
+			<enumeration value="0..1"/>
+			<enumeration value="0..n"/>
+			<enumeration value="1..1"/>
+			<enumeration value="1..n"/>
+		</restriction>
+	</simpleType>
+
+	<simpleType name="Tpolicy">
+		<restriction base="string">
+			<enumeration value="static"/>
+			<enumeration value="dynamic"/>
+		</restriction>
+	</simpleType>
+
+</schema>
\ No newline at end of file
diff --git a/modeling/plugins/org.eclipse.pde.ds/model/scr-1.1.ecore b/modeling/plugins/org.eclipse.pde.ds/model/scr-1.1.ecore
new file mode 100644
index 0000000..1fcb4a7
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/model/scr-1.1.ecore
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="scr"
+    nsURI="http://www.osgi.org/xmlns/scr/v1.1.0" nsPrefix="scr">
+  <eClassifiers xsi:type="ecore:EClass" name="Component">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true" unsettable="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="factory" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="immediate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        unsettable="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="activate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="deactivate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="configurationPolicy" eType="#//ConfigurationPolicy"
+        defaultValueLiteral="optional">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="configuration-policy"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="implementation" lowerBound="1"
+        eType="#//Implementation" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="property" upperBound="-1"
+        eType="#//Property" derived="true" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+        eType="#//Properties" derived="true" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="service" eType="#//Service"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="service"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="reference" upperBound="-1"
+        eType="#//Reference" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="reference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Implementation">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="class" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Property">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" defaultValueLiteral="java.lang.String"
+        unsettable="true">
+      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
+        <eTypeArguments/>
+      </eGenericType>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Properties">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="entry" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Service">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="provide" lowerBound="1"
+        upperBound="-1" eType="#//Provide" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="provide"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="servicefactory" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Provide">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="interface" lowerBound="1">
+      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
+        <eTypeArguments/>
+      </eGenericType>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Reference">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cardinality" eType="#//Cardinality"
+        defaultValueLiteral="1..1" unsettable="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="interface" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="policy" eType="#//Policy"
+        defaultValueLiteral="static" unsettable="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="target" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unbind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Policy">
+    <eLiterals name="static" literal="static"/>
+    <eLiterals name="dynamic" value="1" literal="dynamic"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Cardinality">
+    <eLiterals name="_0_1" literal="0..1"/>
+    <eLiterals name="_0_N" value="1" literal="0..n"/>
+    <eLiterals name="_1_1" value="2" literal="1..1"/>
+    <eLiterals name="_1_N" value="3" literal="1..n"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ConfigurationPolicy">
+    <eLiterals name="optional" literal="optional"/>
+    <eLiterals name="require" value="1" literal="require"/>
+    <eLiterals name="ignore" value="2" literal="ignore"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/modeling/plugins/org.eclipse.pde.ds/model/scr-1.1.genmodel b/modeling/plugins/org.eclipse.pde.ds/model/scr-1.1.genmodel
new file mode 100644
index 0000000..1adf016
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/model/scr-1.1.genmodel
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2009 Anyware Technologies and others.&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;    Anyware Technologies - initial API and implementation"
+    modelDirectory="/org.eclipse.pde.ds/src" modelPluginID="org.eclipse.pde.ds" modelName="Declarative Services"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false">
+  <foreignModel>scr-1.1.ecore</foreignModel>
+  <genPackages prefix="Scr" basePackage="org.eclipse.pde.ds" resource="XML" disposableProviderFactory="true"
+      contentTypeIdentifier="org.eclipse.pde.ds.content-type" ecorePackage="scr-1.1.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="scr-1.1.ecore#//Policy">
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//Policy/static"/>
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//Policy/dynamic"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="scr-1.1.ecore#//Cardinality">
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//Cardinality/_0_1"/>
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//Cardinality/_0_N"/>
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//Cardinality/_1_1"/>
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//Cardinality/_1_N"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="scr-1.1.ecore#//ConfigurationPolicy">
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//ConfigurationPolicy/optional"/>
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//ConfigurationPolicy/require"/>
+      <genEnumLiterals ecoreEnumLiteral="scr-1.1.ecore#//ConfigurationPolicy/ignore"/>
+    </genEnums>
+    <genClasses ecoreClass="scr-1.1.ecore#//Component">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Component/enabled"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Component/factory"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Component/immediate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Component/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Component/activate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Component/deactivate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Component/configurationPolicy"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference scr-1.1.ecore#//Component/implementation"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference scr-1.1.ecore#//Component/property"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference scr-1.1.ecore#//Component/properties"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference scr-1.1.ecore#//Component/service"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference scr-1.1.ecore#//Component/reference"/>
+    </genClasses>
+    <genClasses ecoreClass="scr-1.1.ecore#//Implementation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Implementation/class"/>
+    </genClasses>
+    <genClasses ecoreClass="scr-1.1.ecore#//Property">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Property/value"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Property/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Property/type"/>
+    </genClasses>
+    <genClasses ecoreClass="scr-1.1.ecore#//Properties">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Properties/entry"/>
+    </genClasses>
+    <genClasses ecoreClass="scr-1.1.ecore#//Service">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference scr-1.1.ecore#//Service/provide"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Service/servicefactory"/>
+    </genClasses>
+    <genClasses ecoreClass="scr-1.1.ecore#//Provide">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Provide/interface"/>
+    </genClasses>
+    <genClasses ecoreClass="scr-1.1.ecore#//Reference">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Reference/bind"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Reference/cardinality"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Reference/interface"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Reference/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Reference/policy"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Reference/target"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute scr-1.1.ecore#//Reference/unbind"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/modeling/plugins/org.eclipse.pde.ds/plugin.properties b/modeling/plugins/org.eclipse.pde.ds/plugin.properties
new file mode 100644
index 0000000..a0f97a8
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/plugin.properties
Binary files differ
diff --git a/modeling/plugins/org.eclipse.pde.ds/plugin.xml b/modeling/plugins/org.eclipse.pde.ds/plugin.xml
new file mode 100644
index 0000000..5fe1e52
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/plugin.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2009 Anyware Technologies and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ 
+ Contributors:
+     Anyware Technologies - initial API and implementation
+
+ $Id$
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <package
+            uri="http://www.osgi.org/xmlns/scr/v1.1.0"
+            class="org.eclipse.pde.ds.scr.ScrPackage"
+            genModel="model/scr-1.1.genmodel"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.content_parser">
+      <parser
+            contentTypeIdentifier="org.eclipse.pde.ds.content-type"
+            class="org.eclipse.pde.ds.scr.util.ScrResourceFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            base-type="org.eclipse.core.runtime.xml"
+            file-extensions="scr,xml,ds"
+            id="org.eclipse.pde.ds.content-type"
+            name="%_UI_Scr_content_type"
+            priority="normal">
+         <describer class="org.eclipse.emf.ecore.xmi.impl.RootXMLContentHandlerImpl$Describer">
+            <parameter name="namespace" value="http://www.osgi.org/xmlns/scr/v1.1.0"/>
+         </describer>
+      </content-type>
+   </extension>
+
+</plugin>
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Cardinality.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Cardinality.java
new file mode 100644
index 0000000..d7e9a93
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Cardinality.java
@@ -0,0 +1,272 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cardinality</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getCardinality()
+ * @model
+ * @generated
+ */
+public enum Cardinality implements Enumerator {
+	/**
+	 * The '<em><b>01</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #_01_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	_01(0, "_0_1", "0..1"),
+
+	/**
+	 * The '<em><b>0N</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #_0N_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	_0N(1, "_0_N", "0..n"),
+
+	/**
+	 * The '<em><b>11</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #_11_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	_11(2, "_1_1", "1..1"),
+
+	/**
+	 * The '<em><b>1N</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #_1N_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	_1N(3, "_1_N", "1..n");
+
+	/**
+	 * The '<em><b>01</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>01</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #_01
+	 * @model name="_0_1" literal="0..1"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int _01_VALUE = 0;
+
+	/**
+	 * The '<em><b>0N</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>0N</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #_0N
+	 * @model name="_0_N" literal="0..n"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int _0N_VALUE = 1;
+
+	/**
+	 * The '<em><b>11</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>11</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #_11
+	 * @model name="_1_1" literal="1..1"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int _11_VALUE = 2;
+
+	/**
+	 * The '<em><b>1N</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>1N</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #_1N
+	 * @model name="_1_N" literal="1..n"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int _1N_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Cardinality</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final Cardinality[] VALUES_ARRAY =
+		new Cardinality[] {
+			_01,
+			_0N,
+			_11,
+			_1N,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Cardinality</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<Cardinality> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Cardinality</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Cardinality get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Cardinality result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cardinality</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Cardinality getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Cardinality result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cardinality</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Cardinality get(int value) {
+		switch (value) {
+			case _01_VALUE: return _01;
+			case _0N_VALUE: return _0N;
+			case _11_VALUE: return _11;
+			case _1N_VALUE: return _1N;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private Cardinality(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //Cardinality
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Component.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Component.java
new file mode 100644
index 0000000..fb39795
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Component.java
@@ -0,0 +1,391 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#isEnabled <em>Enabled</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getFactory <em>Factory</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#isImmediate <em>Immediate</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getActivate <em>Activate</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getDeactivate <em>Deactivate</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getConfigurationPolicy <em>Configuration Policy</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getImplementation <em>Implementation</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getProperty <em>Property</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getService <em>Service</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Component#getReference <em>Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent()
+ * @model
+ * @generated
+ */
+public interface Component extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Enabled</b></em>' attribute.
+	 * The default value is <code>"true"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Enabled</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Enabled</em>' attribute.
+	 * @see #isSetEnabled()
+	 * @see #unsetEnabled()
+	 * @see #setEnabled(boolean)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Enabled()
+	 * @model default="true" unsettable="true"
+	 * @generated
+	 */
+	boolean isEnabled();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#isEnabled <em>Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Enabled</em>' attribute.
+	 * @see #isSetEnabled()
+	 * @see #unsetEnabled()
+	 * @see #isEnabled()
+	 * @generated
+	 */
+	void setEnabled(boolean value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.pde.ds.scr.Component#isEnabled <em>Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetEnabled()
+	 * @see #isEnabled()
+	 * @see #setEnabled(boolean)
+	 * @generated
+	 */
+	void unsetEnabled();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.pde.ds.scr.Component#isEnabled <em>Enabled</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Enabled</em>' attribute is set.
+	 * @see #unsetEnabled()
+	 * @see #isEnabled()
+	 * @see #setEnabled(boolean)
+	 * @generated
+	 */
+	boolean isSetEnabled();
+
+	/**
+	 * Returns the value of the '<em><b>Factory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Factory</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Factory</em>' attribute.
+	 * @see #setFactory(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Factory()
+	 * @model
+	 * @generated
+	 */
+	String getFactory();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#getFactory <em>Factory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Factory</em>' attribute.
+	 * @see #getFactory()
+	 * @generated
+	 */
+	void setFactory(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Immediate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Immediate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Immediate</em>' attribute.
+	 * @see #isSetImmediate()
+	 * @see #unsetImmediate()
+	 * @see #setImmediate(boolean)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Immediate()
+	 * @model unsettable="true"
+	 * @generated
+	 */
+	boolean isImmediate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#isImmediate <em>Immediate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Immediate</em>' attribute.
+	 * @see #isSetImmediate()
+	 * @see #unsetImmediate()
+	 * @see #isImmediate()
+	 * @generated
+	 */
+	void setImmediate(boolean value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.pde.ds.scr.Component#isImmediate <em>Immediate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetImmediate()
+	 * @see #isImmediate()
+	 * @see #setImmediate(boolean)
+	 * @generated
+	 */
+	void unsetImmediate();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.pde.ds.scr.Component#isImmediate <em>Immediate</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Immediate</em>' attribute is set.
+	 * @see #unsetImmediate()
+	 * @see #isImmediate()
+	 * @see #setImmediate(boolean)
+	 * @generated
+	 */
+	boolean isSetImmediate();
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Activate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Activate</em>' attribute.
+	 * @see #setActivate(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Activate()
+	 * @model
+	 * @generated
+	 */
+	String getActivate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#getActivate <em>Activate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Activate</em>' attribute.
+	 * @see #getActivate()
+	 * @generated
+	 */
+	void setActivate(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Deactivate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Deactivate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Deactivate</em>' attribute.
+	 * @see #setDeactivate(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Deactivate()
+	 * @model
+	 * @generated
+	 */
+	String getDeactivate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#getDeactivate <em>Deactivate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Deactivate</em>' attribute.
+	 * @see #getDeactivate()
+	 * @generated
+	 */
+	void setDeactivate(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Configuration Policy</b></em>' attribute.
+	 * The default value is <code>"optional"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.pde.ds.scr.ConfigurationPolicy}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Configuration Policy</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Configuration Policy</em>' attribute.
+	 * @see org.eclipse.pde.ds.scr.ConfigurationPolicy
+	 * @see #setConfigurationPolicy(ConfigurationPolicy)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_ConfigurationPolicy()
+	 * @model default="optional"
+	 *        extendedMetaData="kind='attribute' name='configuration-policy'"
+	 * @generated
+	 */
+	ConfigurationPolicy getConfigurationPolicy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#getConfigurationPolicy <em>Configuration Policy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Configuration Policy</em>' attribute.
+	 * @see org.eclipse.pde.ds.scr.ConfigurationPolicy
+	 * @see #getConfigurationPolicy()
+	 * @generated
+	 */
+	void setConfigurationPolicy(ConfigurationPolicy value);
+
+	/**
+	 * Returns the value of the '<em><b>Implementation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Implementation</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Implementation</em>' containment reference.
+	 * @see #setImplementation(Implementation)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Implementation()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Implementation getImplementation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#getImplementation <em>Implementation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Implementation</em>' containment reference.
+	 * @see #getImplementation()
+	 * @generated
+	 */
+	void setImplementation(Implementation value);
+
+	/**
+	 * Returns the value of the '<em><b>Property</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.pde.ds.scr.Property}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Property</em>' containment reference list.
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Property()
+	 * @model containment="true" derived="true"
+	 * @generated
+	 */
+	EList<Property> getProperty();
+
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.pde.ds.scr.Properties}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Properties</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Properties</em>' containment reference list.
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Properties()
+	 * @model containment="true" derived="true"
+	 * @generated
+	 */
+	EList<Properties> getProperties();
+
+	/**
+	 * Returns the value of the '<em><b>Service</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Service</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Service</em>' containment reference.
+	 * @see #setService(Service)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Service()
+	 * @model containment="true"
+	 *        extendedMetaData="kind='element' name='service'"
+	 * @generated
+	 */
+	Service getService();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Component#getService <em>Service</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Service</em>' containment reference.
+	 * @see #getService()
+	 * @generated
+	 */
+	void setService(Service value);
+
+	/**
+	 * Returns the value of the '<em><b>Reference</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.pde.ds.scr.Reference}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Reference</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Reference</em>' containment reference list.
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getComponent_Reference()
+	 * @model containment="true"
+	 *        extendedMetaData="kind='element' name='reference'"
+	 * @generated
+	 */
+	EList<Reference> getReference();
+
+} // Component
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ConfigurationPolicy.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ConfigurationPolicy.java
new file mode 100644
index 0000000..25ae7d4
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ConfigurationPolicy.java
@@ -0,0 +1,245 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Configuration Policy</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getConfigurationPolicy()
+ * @model
+ * @generated
+ */
+public enum ConfigurationPolicy implements Enumerator {
+	/**
+	 * The '<em><b>Optional</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OPTIONAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OPTIONAL(0, "optional", "optional"),
+
+	/**
+	 * The '<em><b>Require</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #REQUIRE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	REQUIRE(1, "require", "require"),
+
+	/**
+	 * The '<em><b>Ignore</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IGNORE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IGNORE(2, "ignore", "ignore");
+
+	/**
+	 * The '<em><b>Optional</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Optional</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OPTIONAL
+	 * @model name="optional"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OPTIONAL_VALUE = 0;
+
+	/**
+	 * The '<em><b>Require</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Require</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #REQUIRE
+	 * @model name="require"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int REQUIRE_VALUE = 1;
+
+	/**
+	 * The '<em><b>Ignore</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Ignore</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IGNORE
+	 * @model name="ignore"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IGNORE_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Configuration Policy</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ConfigurationPolicy[] VALUES_ARRAY =
+		new ConfigurationPolicy[] {
+			OPTIONAL,
+			REQUIRE,
+			IGNORE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Configuration Policy</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ConfigurationPolicy> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Configuration Policy</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ConfigurationPolicy get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ConfigurationPolicy result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Configuration Policy</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ConfigurationPolicy getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ConfigurationPolicy result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Configuration Policy</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ConfigurationPolicy get(int value) {
+		switch (value) {
+			case OPTIONAL_VALUE: return OPTIONAL;
+			case REQUIRE_VALUE: return REQUIRE;
+			case IGNORE_VALUE: return IGNORE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private ConfigurationPolicy(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //ConfigurationPolicy
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Implementation.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Implementation.java
new file mode 100644
index 0000000..a8312b1
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Implementation.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Implementation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.Implementation#getClass_ <em>Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getImplementation()
+ * @model
+ * @generated
+ */
+public interface Implementation extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Class</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Class</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Class</em>' attribute.
+	 * @see #setClass(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getImplementation_Class()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getClass_();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Implementation#getClass_ <em>Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Class</em>' attribute.
+	 * @see #getClass_()
+	 * @generated
+	 */
+	void setClass(String value);
+
+} // Implementation
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Policy.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Policy.java
new file mode 100644
index 0000000..31a2b7e
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Policy.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Policy</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getPolicy()
+ * @model
+ * @generated
+ */
+public enum Policy implements Enumerator {
+	/**
+	 * The '<em><b>Static</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STATIC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	STATIC(0, "static", "static"),
+
+	/**
+	 * The '<em><b>Dynamic</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DYNAMIC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DYNAMIC(1, "dynamic", "dynamic");
+
+	/**
+	 * The '<em><b>Static</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Static</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #STATIC
+	 * @model name="static"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int STATIC_VALUE = 0;
+
+	/**
+	 * The '<em><b>Dynamic</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Dynamic</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DYNAMIC
+	 * @model name="dynamic"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DYNAMIC_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Policy</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final Policy[] VALUES_ARRAY =
+		new Policy[] {
+			STATIC,
+			DYNAMIC,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Policy</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<Policy> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Policy</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Policy get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Policy result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Policy</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Policy getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Policy result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Policy</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Policy get(int value) {
+		switch (value) {
+			case STATIC_VALUE: return STATIC;
+			case DYNAMIC_VALUE: return DYNAMIC;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private Policy(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //Policy
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Properties.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Properties.java
new file mode 100644
index 0000000..78f49ea
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Properties.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.Properties#getEntry <em>Entry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getProperties()
+ * @model
+ * @generated
+ */
+public interface Properties extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Entry</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Entry</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Entry</em>' attribute.
+	 * @see #setEntry(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getProperties_Entry()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getEntry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Properties#getEntry <em>Entry</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Entry</em>' attribute.
+	 * @see #getEntry()
+	 * @generated
+	 */
+	void setEntry(String value);
+
+} // Properties
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Property.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Property.java
new file mode 100644
index 0000000..e2c8178
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Property.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.Property#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Property#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Property#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getProperty()
+ * @model
+ * @generated
+ */
+public interface Property extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getProperty_Value()
+	 * @model
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Property#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getProperty_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Property#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The default value is <code>"java.lang.String"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #isSetType()
+	 * @see #unsetType()
+	 * @see #setType(Class)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getProperty_Type()
+	 * @model default="java.lang.String" unsettable="true"
+	 * @generated
+	 */
+	Class<?> getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Property#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see #isSetType()
+	 * @see #unsetType()
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(Class<?> value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.pde.ds.scr.Property#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetType()
+	 * @see #getType()
+	 * @see #setType(Class)
+	 * @generated
+	 */
+	void unsetType();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.pde.ds.scr.Property#getType <em>Type</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Type</em>' attribute is set.
+	 * @see #unsetType()
+	 * @see #getType()
+	 * @see #setType(Class)
+	 * @generated
+	 */
+	boolean isSetType();
+
+} // Property
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Provide.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Provide.java
new file mode 100644
index 0000000..c407e0d
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Provide.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Provide</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.Provide#getInterface <em>Interface</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getProvide()
+ * @model
+ * @generated
+ */
+public interface Provide extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Interface</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Interface</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Interface</em>' attribute.
+	 * @see #setInterface(Class)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getProvide_Interface()
+	 * @model required="true"
+	 * @generated
+	 */
+	Class<?> getInterface();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Provide#getInterface <em>Interface</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Interface</em>' attribute.
+	 * @see #getInterface()
+	 * @generated
+	 */
+	void setInterface(Class<?> value);
+
+} // Provide
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Reference.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Reference.java
new file mode 100644
index 0000000..d677465
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Reference.java
@@ -0,0 +1,284 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.Reference#getBind <em>Bind</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Reference#getCardinality <em>Cardinality</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Reference#getInterface <em>Interface</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Reference#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Reference#getPolicy <em>Policy</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Reference#getTarget <em>Target</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Reference#getUnbind <em>Unbind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getReference()
+ * @model
+ * @generated
+ */
+public interface Reference extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Bind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bind</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bind</em>' attribute.
+	 * @see #setBind(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getReference_Bind()
+	 * @model
+	 * @generated
+	 */
+	String getBind();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getBind <em>Bind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bind</em>' attribute.
+	 * @see #getBind()
+	 * @generated
+	 */
+	void setBind(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Cardinality</b></em>' attribute.
+	 * The default value is <code>"1..1"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.pde.ds.scr.Cardinality}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cardinality</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cardinality</em>' attribute.
+	 * @see org.eclipse.pde.ds.scr.Cardinality
+	 * @see #isSetCardinality()
+	 * @see #unsetCardinality()
+	 * @see #setCardinality(Cardinality)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getReference_Cardinality()
+	 * @model default="1..1" unsettable="true"
+	 * @generated
+	 */
+	Cardinality getCardinality();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getCardinality <em>Cardinality</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cardinality</em>' attribute.
+	 * @see org.eclipse.pde.ds.scr.Cardinality
+	 * @see #isSetCardinality()
+	 * @see #unsetCardinality()
+	 * @see #getCardinality()
+	 * @generated
+	 */
+	void setCardinality(Cardinality value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getCardinality <em>Cardinality</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetCardinality()
+	 * @see #getCardinality()
+	 * @see #setCardinality(Cardinality)
+	 * @generated
+	 */
+	void unsetCardinality();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.pde.ds.scr.Reference#getCardinality <em>Cardinality</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Cardinality</em>' attribute is set.
+	 * @see #unsetCardinality()
+	 * @see #getCardinality()
+	 * @see #setCardinality(Cardinality)
+	 * @generated
+	 */
+	boolean isSetCardinality();
+
+	/**
+	 * Returns the value of the '<em><b>Interface</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Interface</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Interface</em>' attribute.
+	 * @see #setInterface(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getReference_Interface()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getInterface();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getInterface <em>Interface</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Interface</em>' attribute.
+	 * @see #getInterface()
+	 * @generated
+	 */
+	void setInterface(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getReference_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Policy</b></em>' attribute.
+	 * The default value is <code>"static"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.pde.ds.scr.Policy}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Policy</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Policy</em>' attribute.
+	 * @see org.eclipse.pde.ds.scr.Policy
+	 * @see #isSetPolicy()
+	 * @see #unsetPolicy()
+	 * @see #setPolicy(Policy)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getReference_Policy()
+	 * @model default="static" unsettable="true"
+	 * @generated
+	 */
+	Policy getPolicy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getPolicy <em>Policy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Policy</em>' attribute.
+	 * @see org.eclipse.pde.ds.scr.Policy
+	 * @see #isSetPolicy()
+	 * @see #unsetPolicy()
+	 * @see #getPolicy()
+	 * @generated
+	 */
+	void setPolicy(Policy value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getPolicy <em>Policy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetPolicy()
+	 * @see #getPolicy()
+	 * @see #setPolicy(Policy)
+	 * @generated
+	 */
+	void unsetPolicy();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.pde.ds.scr.Reference#getPolicy <em>Policy</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Policy</em>' attribute is set.
+	 * @see #unsetPolicy()
+	 * @see #getPolicy()
+	 * @see #setPolicy(Policy)
+	 * @generated
+	 */
+	boolean isSetPolicy();
+
+	/**
+	 * Returns the value of the '<em><b>Target</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Target</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Target</em>' attribute.
+	 * @see #setTarget(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getReference_Target()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getTarget();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getTarget <em>Target</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Target</em>' attribute.
+	 * @see #getTarget()
+	 * @generated
+	 */
+	void setTarget(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Unbind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Unbind</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Unbind</em>' attribute.
+	 * @see #setUnbind(String)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getReference_Unbind()
+	 * @model
+	 * @generated
+	 */
+	String getUnbind();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Reference#getUnbind <em>Unbind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Unbind</em>' attribute.
+	 * @see #getUnbind()
+	 * @generated
+	 */
+	void setUnbind(String value);
+
+} // Reference
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ScrFactory.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ScrFactory.java
new file mode 100644
index 0000000..ca2273c
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ScrFactory.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.ScrPackage
+ * @generated
+ */
+public interface ScrFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ScrFactory eINSTANCE = org.eclipse.pde.ds.scr.impl.ScrFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Component</em>'.
+	 * @generated
+	 */
+	Component createComponent();
+
+	/**
+	 * Returns a new object of class '<em>Implementation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Implementation</em>'.
+	 * @generated
+	 */
+	Implementation createImplementation();
+
+	/**
+	 * Returns a new object of class '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property</em>'.
+	 * @generated
+	 */
+	Property createProperty();
+
+	/**
+	 * Returns a new object of class '<em>Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Properties</em>'.
+	 * @generated
+	 */
+	Properties createProperties();
+
+	/**
+	 * Returns a new object of class '<em>Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Service</em>'.
+	 * @generated
+	 */
+	Service createService();
+
+	/**
+	 * Returns a new object of class '<em>Provide</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Provide</em>'.
+	 * @generated
+	 */
+	Provide createProvide();
+
+	/**
+	 * Returns a new object of class '<em>Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Reference</em>'.
+	 * @generated
+	 */
+	Reference createReference();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ScrPackage getScrPackage();
+
+} //ScrFactory
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ScrPackage.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ScrPackage.java
new file mode 100644
index 0000000..104c056
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/ScrPackage.java
@@ -0,0 +1,1221 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.ScrFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ScrPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "scr";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.osgi.org/xmlns/scr/v1.1.0";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "scr";
+
+	/**
+	 * The package content type ID.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eCONTENT_TYPE = "org.eclipse.pde.ds.content-type";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ScrPackage eINSTANCE = org.eclipse.pde.ds.scr.impl.ScrPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.impl.ComponentImpl <em>Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.impl.ComponentImpl
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getComponent()
+	 * @generated
+	 */
+	int COMPONENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__ENABLED = 0;
+
+	/**
+	 * The feature id for the '<em><b>Factory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__FACTORY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Immediate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IMMEDIATE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__NAME = 3;
+
+	/**
+	 * The feature id for the '<em><b>Activate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__ACTIVATE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Deactivate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__DEACTIVATE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Configuration Policy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__CONFIGURATION_POLICY = 6;
+
+	/**
+	 * The feature id for the '<em><b>Implementation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IMPLEMENTATION = 7;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PROPERTY = 8;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PROPERTIES = 9;
+
+	/**
+	 * The feature id for the '<em><b>Service</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__SERVICE = 10;
+
+	/**
+	 * The feature id for the '<em><b>Reference</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__REFERENCE = 11;
+
+	/**
+	 * The number of structural features of the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT_FEATURE_COUNT = 12;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.impl.ImplementationImpl <em>Implementation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.impl.ImplementationImpl
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getImplementation()
+	 * @generated
+	 */
+	int IMPLEMENTATION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Class</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__CLASS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Implementation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.impl.PropertyImpl <em>Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.impl.PropertyImpl
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getProperty()
+	 * @generated
+	 */
+	int PROPERTY = 2;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__VALUE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__TYPE = 2;
+
+	/**
+	 * The number of structural features of the '<em>Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.impl.PropertiesImpl <em>Properties</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.impl.PropertiesImpl
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getProperties()
+	 * @generated
+	 */
+	int PROPERTIES = 3;
+
+	/**
+	 * The feature id for the '<em><b>Entry</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTIES__ENTRY = 0;
+
+	/**
+	 * The number of structural features of the '<em>Properties</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTIES_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.impl.ServiceImpl <em>Service</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.impl.ServiceImpl
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getService()
+	 * @generated
+	 */
+	int SERVICE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Provide</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE__PROVIDE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Servicefactory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE__SERVICEFACTORY = 1;
+
+	/**
+	 * The number of structural features of the '<em>Service</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.impl.ProvideImpl <em>Provide</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.impl.ProvideImpl
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getProvide()
+	 * @generated
+	 */
+	int PROVIDE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Interface</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROVIDE__INTERFACE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Provide</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROVIDE_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl <em>Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.impl.ReferenceImpl
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getReference()
+	 * @generated
+	 */
+	int REFERENCE = 6;
+
+	/**
+	 * The feature id for the '<em><b>Bind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE__BIND = 0;
+
+	/**
+	 * The feature id for the '<em><b>Cardinality</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE__CARDINALITY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Interface</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE__INTERFACE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE__NAME = 3;
+
+	/**
+	 * The feature id for the '<em><b>Policy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE__POLICY = 4;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE__TARGET = 5;
+
+	/**
+	 * The feature id for the '<em><b>Unbind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE__UNBIND = 6;
+
+	/**
+	 * The number of structural features of the '<em>Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFERENCE_FEATURE_COUNT = 7;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.Policy <em>Policy</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.Policy
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getPolicy()
+	 * @generated
+	 */
+	int POLICY = 7;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.Cardinality <em>Cardinality</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.Cardinality
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getCardinality()
+	 * @generated
+	 */
+	int CARDINALITY = 8;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.pde.ds.scr.ConfigurationPolicy <em>Configuration Policy</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.pde.ds.scr.ConfigurationPolicy
+	 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getConfigurationPolicy()
+	 * @generated
+	 */
+	int CONFIGURATION_POLICY = 9;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.pde.ds.scr.Component <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Component</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component
+	 * @generated
+	 */
+	EClass getComponent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Component#isEnabled <em>Enabled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Enabled</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#isEnabled()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EAttribute getComponent_Enabled();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Component#getFactory <em>Factory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Factory</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getFactory()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EAttribute getComponent_Factory();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Component#isImmediate <em>Immediate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Immediate</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#isImmediate()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EAttribute getComponent_Immediate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Component#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getName()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EAttribute getComponent_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Component#getActivate <em>Activate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Activate</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getActivate()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EAttribute getComponent_Activate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Component#getDeactivate <em>Deactivate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Deactivate</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getDeactivate()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EAttribute getComponent_Deactivate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Component#getConfigurationPolicy <em>Configuration Policy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Configuration Policy</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getConfigurationPolicy()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EAttribute getComponent_ConfigurationPolicy();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.pde.ds.scr.Component#getImplementation <em>Implementation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Implementation</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getImplementation()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Implementation();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.pde.ds.scr.Component#getProperty <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Property</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getProperty()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Property();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.pde.ds.scr.Component#getProperties <em>Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Properties</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getProperties()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Properties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.pde.ds.scr.Component#getService <em>Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Service</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getService()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Service();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.pde.ds.scr.Component#getReference <em>Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Reference</em>'.
+	 * @see org.eclipse.pde.ds.scr.Component#getReference()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Reference();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.pde.ds.scr.Implementation <em>Implementation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Implementation</em>'.
+	 * @see org.eclipse.pde.ds.scr.Implementation
+	 * @generated
+	 */
+	EClass getImplementation();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Implementation#getClass_ <em>Class</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Class</em>'.
+	 * @see org.eclipse.pde.ds.scr.Implementation#getClass_()
+	 * @see #getImplementation()
+	 * @generated
+	 */
+	EAttribute getImplementation_Class();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.pde.ds.scr.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property</em>'.
+	 * @see org.eclipse.pde.ds.scr.Property
+	 * @generated
+	 */
+	EClass getProperty();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Property#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.pde.ds.scr.Property#getValue()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Property#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.pde.ds.scr.Property#getName()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Property#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.pde.ds.scr.Property#getType()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Type();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.pde.ds.scr.Properties <em>Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Properties</em>'.
+	 * @see org.eclipse.pde.ds.scr.Properties
+	 * @generated
+	 */
+	EClass getProperties();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Properties#getEntry <em>Entry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Entry</em>'.
+	 * @see org.eclipse.pde.ds.scr.Properties#getEntry()
+	 * @see #getProperties()
+	 * @generated
+	 */
+	EAttribute getProperties_Entry();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.pde.ds.scr.Service <em>Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Service</em>'.
+	 * @see org.eclipse.pde.ds.scr.Service
+	 * @generated
+	 */
+	EClass getService();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.pde.ds.scr.Service#getProvide <em>Provide</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Provide</em>'.
+	 * @see org.eclipse.pde.ds.scr.Service#getProvide()
+	 * @see #getService()
+	 * @generated
+	 */
+	EReference getService_Provide();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Service#isServicefactory <em>Servicefactory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Servicefactory</em>'.
+	 * @see org.eclipse.pde.ds.scr.Service#isServicefactory()
+	 * @see #getService()
+	 * @generated
+	 */
+	EAttribute getService_Servicefactory();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.pde.ds.scr.Provide <em>Provide</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Provide</em>'.
+	 * @see org.eclipse.pde.ds.scr.Provide
+	 * @generated
+	 */
+	EClass getProvide();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Provide#getInterface <em>Interface</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Interface</em>'.
+	 * @see org.eclipse.pde.ds.scr.Provide#getInterface()
+	 * @see #getProvide()
+	 * @generated
+	 */
+	EAttribute getProvide_Interface();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.pde.ds.scr.Reference <em>Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Reference</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference
+	 * @generated
+	 */
+	EClass getReference();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Reference#getBind <em>Bind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bind</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference#getBind()
+	 * @see #getReference()
+	 * @generated
+	 */
+	EAttribute getReference_Bind();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Reference#getCardinality <em>Cardinality</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cardinality</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference#getCardinality()
+	 * @see #getReference()
+	 * @generated
+	 */
+	EAttribute getReference_Cardinality();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Reference#getInterface <em>Interface</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Interface</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference#getInterface()
+	 * @see #getReference()
+	 * @generated
+	 */
+	EAttribute getReference_Interface();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Reference#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference#getName()
+	 * @see #getReference()
+	 * @generated
+	 */
+	EAttribute getReference_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Reference#getPolicy <em>Policy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Policy</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference#getPolicy()
+	 * @see #getReference()
+	 * @generated
+	 */
+	EAttribute getReference_Policy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Reference#getTarget <em>Target</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Target</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference#getTarget()
+	 * @see #getReference()
+	 * @generated
+	 */
+	EAttribute getReference_Target();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.pde.ds.scr.Reference#getUnbind <em>Unbind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Unbind</em>'.
+	 * @see org.eclipse.pde.ds.scr.Reference#getUnbind()
+	 * @see #getReference()
+	 * @generated
+	 */
+	EAttribute getReference_Unbind();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.pde.ds.scr.Policy <em>Policy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Policy</em>'.
+	 * @see org.eclipse.pde.ds.scr.Policy
+	 * @generated
+	 */
+	EEnum getPolicy();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.pde.ds.scr.Cardinality <em>Cardinality</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Cardinality</em>'.
+	 * @see org.eclipse.pde.ds.scr.Cardinality
+	 * @generated
+	 */
+	EEnum getCardinality();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.pde.ds.scr.ConfigurationPolicy <em>Configuration Policy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Configuration Policy</em>'.
+	 * @see org.eclipse.pde.ds.scr.ConfigurationPolicy
+	 * @generated
+	 */
+	EEnum getConfigurationPolicy();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ScrFactory getScrFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.impl.ComponentImpl <em>Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.impl.ComponentImpl
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getComponent()
+		 * @generated
+		 */
+		EClass COMPONENT = eINSTANCE.getComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Enabled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT__ENABLED = eINSTANCE.getComponent_Enabled();
+
+		/**
+		 * The meta object literal for the '<em><b>Factory</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT__FACTORY = eINSTANCE.getComponent_Factory();
+
+		/**
+		 * The meta object literal for the '<em><b>Immediate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT__IMMEDIATE = eINSTANCE.getComponent_Immediate();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT__NAME = eINSTANCE.getComponent_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Activate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT__ACTIVATE = eINSTANCE.getComponent_Activate();
+
+		/**
+		 * The meta object literal for the '<em><b>Deactivate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT__DEACTIVATE = eINSTANCE.getComponent_Deactivate();
+
+		/**
+		 * The meta object literal for the '<em><b>Configuration Policy</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT__CONFIGURATION_POLICY = eINSTANCE.getComponent_ConfigurationPolicy();
+
+		/**
+		 * The meta object literal for the '<em><b>Implementation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENT__IMPLEMENTATION = eINSTANCE.getComponent_Implementation();
+
+		/**
+		 * The meta object literal for the '<em><b>Property</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENT__PROPERTY = eINSTANCE.getComponent_Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENT__PROPERTIES = eINSTANCE.getComponent_Properties();
+
+		/**
+		 * The meta object literal for the '<em><b>Service</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENT__SERVICE = eINSTANCE.getComponent_Service();
+
+		/**
+		 * The meta object literal for the '<em><b>Reference</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENT__REFERENCE = eINSTANCE.getComponent_Reference();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.impl.ImplementationImpl <em>Implementation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.impl.ImplementationImpl
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getImplementation()
+		 * @generated
+		 */
+		EClass IMPLEMENTATION = eINSTANCE.getImplementation();
+
+		/**
+		 * The meta object literal for the '<em><b>Class</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IMPLEMENTATION__CLASS = eINSTANCE.getImplementation_Class();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.impl.PropertyImpl <em>Property</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.impl.PropertyImpl
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getProperty()
+		 * @generated
+		 */
+		EClass PROPERTY = eINSTANCE.getProperty();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY__VALUE = eINSTANCE.getProperty_Value();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY__NAME = eINSTANCE.getProperty_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY__TYPE = eINSTANCE.getProperty_Type();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.impl.PropertiesImpl <em>Properties</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.impl.PropertiesImpl
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getProperties()
+		 * @generated
+		 */
+		EClass PROPERTIES = eINSTANCE.getProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Entry</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTIES__ENTRY = eINSTANCE.getProperties_Entry();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.impl.ServiceImpl <em>Service</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.impl.ServiceImpl
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getService()
+		 * @generated
+		 */
+		EClass SERVICE = eINSTANCE.getService();
+
+		/**
+		 * The meta object literal for the '<em><b>Provide</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SERVICE__PROVIDE = eINSTANCE.getService_Provide();
+
+		/**
+		 * The meta object literal for the '<em><b>Servicefactory</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SERVICE__SERVICEFACTORY = eINSTANCE.getService_Servicefactory();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.impl.ProvideImpl <em>Provide</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.impl.ProvideImpl
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getProvide()
+		 * @generated
+		 */
+		EClass PROVIDE = eINSTANCE.getProvide();
+
+		/**
+		 * The meta object literal for the '<em><b>Interface</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROVIDE__INTERFACE = eINSTANCE.getProvide_Interface();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl <em>Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.impl.ReferenceImpl
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getReference()
+		 * @generated
+		 */
+		EClass REFERENCE = eINSTANCE.getReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Bind</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REFERENCE__BIND = eINSTANCE.getReference_Bind();
+
+		/**
+		 * The meta object literal for the '<em><b>Cardinality</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REFERENCE__CARDINALITY = eINSTANCE.getReference_Cardinality();
+
+		/**
+		 * The meta object literal for the '<em><b>Interface</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REFERENCE__INTERFACE = eINSTANCE.getReference_Interface();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REFERENCE__NAME = eINSTANCE.getReference_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Policy</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REFERENCE__POLICY = eINSTANCE.getReference_Policy();
+
+		/**
+		 * The meta object literal for the '<em><b>Target</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REFERENCE__TARGET = eINSTANCE.getReference_Target();
+
+		/**
+		 * The meta object literal for the '<em><b>Unbind</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REFERENCE__UNBIND = eINSTANCE.getReference_Unbind();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.Policy <em>Policy</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.Policy
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getPolicy()
+		 * @generated
+		 */
+		EEnum POLICY = eINSTANCE.getPolicy();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.Cardinality <em>Cardinality</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.Cardinality
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getCardinality()
+		 * @generated
+		 */
+		EEnum CARDINALITY = eINSTANCE.getCardinality();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.pde.ds.scr.ConfigurationPolicy <em>Configuration Policy</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.pde.ds.scr.ConfigurationPolicy
+		 * @see org.eclipse.pde.ds.scr.impl.ScrPackageImpl#getConfigurationPolicy()
+		 * @generated
+		 */
+		EEnum CONFIGURATION_POLICY = eINSTANCE.getConfigurationPolicy();
+
+	}
+
+} //ScrPackage
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Service.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Service.java
new file mode 100644
index 0000000..b9d232b
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/Service.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Service</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.Service#getProvide <em>Provide</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.Service#isServicefactory <em>Servicefactory</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.pde.ds.scr.ScrPackage#getService()
+ * @model
+ * @generated
+ */
+public interface Service extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Provide</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.pde.ds.scr.Provide}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Provide</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Provide</em>' containment reference list.
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getService_Provide()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='provide'"
+	 * @generated
+	 */
+	EList<Provide> getProvide();
+
+	/**
+	 * Returns the value of the '<em><b>Servicefactory</b></em>' attribute.
+	 * The default value is <code>"false"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Servicefactory</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Servicefactory</em>' attribute.
+	 * @see #isSetServicefactory()
+	 * @see #unsetServicefactory()
+	 * @see #setServicefactory(boolean)
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#getService_Servicefactory()
+	 * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+	 * @generated
+	 */
+	boolean isServicefactory();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.pde.ds.scr.Service#isServicefactory <em>Servicefactory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Servicefactory</em>' attribute.
+	 * @see #isSetServicefactory()
+	 * @see #unsetServicefactory()
+	 * @see #isServicefactory()
+	 * @generated
+	 */
+	void setServicefactory(boolean value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.pde.ds.scr.Service#isServicefactory <em>Servicefactory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetServicefactory()
+	 * @see #isServicefactory()
+	 * @see #setServicefactory(boolean)
+	 * @generated
+	 */
+	void unsetServicefactory();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.pde.ds.scr.Service#isServicefactory <em>Servicefactory</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Servicefactory</em>' attribute is set.
+	 * @see #unsetServicefactory()
+	 * @see #isServicefactory()
+	 * @see #setServicefactory(boolean)
+	 * @generated
+	 */
+	boolean isSetServicefactory();
+
+} // Service
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ComponentImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ComponentImpl.java
new file mode 100644
index 0000000..1e589f5
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ComponentImpl.java
@@ -0,0 +1,833 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.pde.ds.scr.Component;
+import org.eclipse.pde.ds.scr.ConfigurationPolicy;
+import org.eclipse.pde.ds.scr.Implementation;
+import org.eclipse.pde.ds.scr.Properties;
+import org.eclipse.pde.ds.scr.Property;
+import org.eclipse.pde.ds.scr.Reference;
+import org.eclipse.pde.ds.scr.ScrPackage;
+import org.eclipse.pde.ds.scr.Service;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#isEnabled <em>Enabled</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getFactory <em>Factory</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#isImmediate <em>Immediate</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getActivate <em>Activate</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getDeactivate <em>Deactivate</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getConfigurationPolicy <em>Configuration Policy</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getImplementation <em>Implementation</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getProperty <em>Property</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getService <em>Service</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ComponentImpl#getReference <em>Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ComponentImpl extends EObjectImpl implements Component {
+	/**
+	 * The default value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnabled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ENABLED_EDEFAULT = true;
+
+	/**
+	 * The cached value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEnabled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enabled = ENABLED_EDEFAULT;
+
+	/**
+	 * This is true if the Enabled attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean enabledESet;
+
+	/**
+	 * The default value of the '{@link #getFactory() <em>Factory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFactory()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FACTORY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFactory() <em>Factory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFactory()
+	 * @generated
+	 * @ordered
+	 */
+	protected String factory = FACTORY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isImmediate() <em>Immediate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isImmediate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IMMEDIATE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isImmediate() <em>Immediate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isImmediate()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean immediate = IMMEDIATE_EDEFAULT;
+
+	/**
+	 * This is true if the Immediate attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean immediateESet;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getActivate() <em>Activate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ACTIVATE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getActivate() <em>Activate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivate()
+	 * @generated
+	 * @ordered
+	 */
+	protected String activate = ACTIVATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDeactivate() <em>Deactivate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDeactivate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEACTIVATE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDeactivate() <em>Deactivate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDeactivate()
+	 * @generated
+	 * @ordered
+	 */
+	protected String deactivate = DEACTIVATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getConfigurationPolicy() <em>Configuration Policy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConfigurationPolicy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ConfigurationPolicy CONFIGURATION_POLICY_EDEFAULT = ConfigurationPolicy.OPTIONAL;
+
+	/**
+	 * The cached value of the '{@link #getConfigurationPolicy() <em>Configuration Policy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConfigurationPolicy()
+	 * @generated
+	 * @ordered
+	 */
+	protected ConfigurationPolicy configurationPolicy = CONFIGURATION_POLICY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getImplementation() <em>Implementation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImplementation()
+	 * @generated
+	 * @ordered
+	 */
+	protected Implementation implementation;
+
+	/**
+	 * The cached value of the '{@link #getProperty() <em>Property</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperty()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Property> property;
+
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Properties> properties;
+
+	/**
+	 * The cached value of the '{@link #getService() <em>Service</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getService()
+	 * @generated
+	 * @ordered
+	 */
+	protected Service service;
+
+	/**
+	 * The cached value of the '{@link #getReference() <em>Reference</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Reference> reference;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ScrPackage.Literals.COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isEnabled() {
+		return enabled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEnabled(boolean newEnabled) {
+		boolean oldEnabled = enabled;
+		enabled = newEnabled;
+		boolean oldEnabledESet = enabledESet;
+		enabledESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__ENABLED, oldEnabled, enabled, !oldEnabledESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetEnabled() {
+		boolean oldEnabled = enabled;
+		boolean oldEnabledESet = enabledESet;
+		enabled = ENABLED_EDEFAULT;
+		enabledESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ScrPackage.COMPONENT__ENABLED, oldEnabled, ENABLED_EDEFAULT, oldEnabledESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetEnabled() {
+		return enabledESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFactory() {
+		return factory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFactory(String newFactory) {
+		String oldFactory = factory;
+		factory = newFactory;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__FACTORY, oldFactory, factory));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isImmediate() {
+		return immediate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImmediate(boolean newImmediate) {
+		boolean oldImmediate = immediate;
+		immediate = newImmediate;
+		boolean oldImmediateESet = immediateESet;
+		immediateESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__IMMEDIATE, oldImmediate, immediate, !oldImmediateESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetImmediate() {
+		boolean oldImmediate = immediate;
+		boolean oldImmediateESet = immediateESet;
+		immediate = IMMEDIATE_EDEFAULT;
+		immediateESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ScrPackage.COMPONENT__IMMEDIATE, oldImmediate, IMMEDIATE_EDEFAULT, oldImmediateESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetImmediate() {
+		return immediateESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getActivate() {
+		return activate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setActivate(String newActivate) {
+		String oldActivate = activate;
+		activate = newActivate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__ACTIVATE, oldActivate, activate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDeactivate() {
+		return deactivate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDeactivate(String newDeactivate) {
+		String oldDeactivate = deactivate;
+		deactivate = newDeactivate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__DEACTIVATE, oldDeactivate, deactivate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConfigurationPolicy getConfigurationPolicy() {
+		return configurationPolicy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConfigurationPolicy(ConfigurationPolicy newConfigurationPolicy) {
+		ConfigurationPolicy oldConfigurationPolicy = configurationPolicy;
+		configurationPolicy = newConfigurationPolicy == null ? CONFIGURATION_POLICY_EDEFAULT : newConfigurationPolicy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__CONFIGURATION_POLICY, oldConfigurationPolicy, configurationPolicy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Implementation getImplementation() {
+		return implementation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetImplementation(Implementation newImplementation, NotificationChain msgs) {
+		Implementation oldImplementation = implementation;
+		implementation = newImplementation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__IMPLEMENTATION, oldImplementation, newImplementation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImplementation(Implementation newImplementation) {
+		if (newImplementation != implementation) {
+			NotificationChain msgs = null;
+			if (implementation != null)
+				msgs = ((InternalEObject)implementation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ScrPackage.COMPONENT__IMPLEMENTATION, null, msgs);
+			if (newImplementation != null)
+				msgs = ((InternalEObject)newImplementation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ScrPackage.COMPONENT__IMPLEMENTATION, null, msgs);
+			msgs = basicSetImplementation(newImplementation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__IMPLEMENTATION, newImplementation, newImplementation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Property> getProperty() {
+		if (property == null) {
+			property = new EObjectContainmentEList<Property>(Property.class, this, ScrPackage.COMPONENT__PROPERTY);
+		}
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Properties> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<Properties>(Properties.class, this, ScrPackage.COMPONENT__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Service getService() {
+		return service;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetService(Service newService, NotificationChain msgs) {
+		Service oldService = service;
+		service = newService;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__SERVICE, oldService, newService);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setService(Service newService) {
+		if (newService != service) {
+			NotificationChain msgs = null;
+			if (service != null)
+				msgs = ((InternalEObject)service).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ScrPackage.COMPONENT__SERVICE, null, msgs);
+			if (newService != null)
+				msgs = ((InternalEObject)newService).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ScrPackage.COMPONENT__SERVICE, null, msgs);
+			msgs = basicSetService(newService, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.COMPONENT__SERVICE, newService, newService));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Reference> getReference() {
+		if (reference == null) {
+			reference = new EObjectContainmentEList<Reference>(Reference.class, this, ScrPackage.COMPONENT__REFERENCE);
+		}
+		return reference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ScrPackage.COMPONENT__IMPLEMENTATION:
+				return basicSetImplementation(null, msgs);
+			case ScrPackage.COMPONENT__PROPERTY:
+				return ((InternalEList<?>)getProperty()).basicRemove(otherEnd, msgs);
+			case ScrPackage.COMPONENT__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case ScrPackage.COMPONENT__SERVICE:
+				return basicSetService(null, msgs);
+			case ScrPackage.COMPONENT__REFERENCE:
+				return ((InternalEList<?>)getReference()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ScrPackage.COMPONENT__ENABLED:
+				return isEnabled();
+			case ScrPackage.COMPONENT__FACTORY:
+				return getFactory();
+			case ScrPackage.COMPONENT__IMMEDIATE:
+				return isImmediate();
+			case ScrPackage.COMPONENT__NAME:
+				return getName();
+			case ScrPackage.COMPONENT__ACTIVATE:
+				return getActivate();
+			case ScrPackage.COMPONENT__DEACTIVATE:
+				return getDeactivate();
+			case ScrPackage.COMPONENT__CONFIGURATION_POLICY:
+				return getConfigurationPolicy();
+			case ScrPackage.COMPONENT__IMPLEMENTATION:
+				return getImplementation();
+			case ScrPackage.COMPONENT__PROPERTY:
+				return getProperty();
+			case ScrPackage.COMPONENT__PROPERTIES:
+				return getProperties();
+			case ScrPackage.COMPONENT__SERVICE:
+				return getService();
+			case ScrPackage.COMPONENT__REFERENCE:
+				return getReference();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ScrPackage.COMPONENT__ENABLED:
+				setEnabled((Boolean)newValue);
+				return;
+			case ScrPackage.COMPONENT__FACTORY:
+				setFactory((String)newValue);
+				return;
+			case ScrPackage.COMPONENT__IMMEDIATE:
+				setImmediate((Boolean)newValue);
+				return;
+			case ScrPackage.COMPONENT__NAME:
+				setName((String)newValue);
+				return;
+			case ScrPackage.COMPONENT__ACTIVATE:
+				setActivate((String)newValue);
+				return;
+			case ScrPackage.COMPONENT__DEACTIVATE:
+				setDeactivate((String)newValue);
+				return;
+			case ScrPackage.COMPONENT__CONFIGURATION_POLICY:
+				setConfigurationPolicy((ConfigurationPolicy)newValue);
+				return;
+			case ScrPackage.COMPONENT__IMPLEMENTATION:
+				setImplementation((Implementation)newValue);
+				return;
+			case ScrPackage.COMPONENT__PROPERTY:
+				getProperty().clear();
+				getProperty().addAll((Collection<? extends Property>)newValue);
+				return;
+			case ScrPackage.COMPONENT__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends Properties>)newValue);
+				return;
+			case ScrPackage.COMPONENT__SERVICE:
+				setService((Service)newValue);
+				return;
+			case ScrPackage.COMPONENT__REFERENCE:
+				getReference().clear();
+				getReference().addAll((Collection<? extends Reference>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ScrPackage.COMPONENT__ENABLED:
+				unsetEnabled();
+				return;
+			case ScrPackage.COMPONENT__FACTORY:
+				setFactory(FACTORY_EDEFAULT);
+				return;
+			case ScrPackage.COMPONENT__IMMEDIATE:
+				unsetImmediate();
+				return;
+			case ScrPackage.COMPONENT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case ScrPackage.COMPONENT__ACTIVATE:
+				setActivate(ACTIVATE_EDEFAULT);
+				return;
+			case ScrPackage.COMPONENT__DEACTIVATE:
+				setDeactivate(DEACTIVATE_EDEFAULT);
+				return;
+			case ScrPackage.COMPONENT__CONFIGURATION_POLICY:
+				setConfigurationPolicy(CONFIGURATION_POLICY_EDEFAULT);
+				return;
+			case ScrPackage.COMPONENT__IMPLEMENTATION:
+				setImplementation((Implementation)null);
+				return;
+			case ScrPackage.COMPONENT__PROPERTY:
+				getProperty().clear();
+				return;
+			case ScrPackage.COMPONENT__PROPERTIES:
+				getProperties().clear();
+				return;
+			case ScrPackage.COMPONENT__SERVICE:
+				setService((Service)null);
+				return;
+			case ScrPackage.COMPONENT__REFERENCE:
+				getReference().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ScrPackage.COMPONENT__ENABLED:
+				return isSetEnabled();
+			case ScrPackage.COMPONENT__FACTORY:
+				return FACTORY_EDEFAULT == null ? factory != null : !FACTORY_EDEFAULT.equals(factory);
+			case ScrPackage.COMPONENT__IMMEDIATE:
+				return isSetImmediate();
+			case ScrPackage.COMPONENT__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case ScrPackage.COMPONENT__ACTIVATE:
+				return ACTIVATE_EDEFAULT == null ? activate != null : !ACTIVATE_EDEFAULT.equals(activate);
+			case ScrPackage.COMPONENT__DEACTIVATE:
+				return DEACTIVATE_EDEFAULT == null ? deactivate != null : !DEACTIVATE_EDEFAULT.equals(deactivate);
+			case ScrPackage.COMPONENT__CONFIGURATION_POLICY:
+				return configurationPolicy != CONFIGURATION_POLICY_EDEFAULT;
+			case ScrPackage.COMPONENT__IMPLEMENTATION:
+				return implementation != null;
+			case ScrPackage.COMPONENT__PROPERTY:
+				return property != null && !property.isEmpty();
+			case ScrPackage.COMPONENT__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case ScrPackage.COMPONENT__SERVICE:
+				return service != null;
+			case ScrPackage.COMPONENT__REFERENCE:
+				return reference != null && !reference.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (enabled: ");
+		if (enabledESet) result.append(enabled); else result.append("<unset>");
+		result.append(", factory: ");
+		result.append(factory);
+		result.append(", immediate: ");
+		if (immediateESet) result.append(immediate); else result.append("<unset>");
+		result.append(", name: ");
+		result.append(name);
+		result.append(", activate: ");
+		result.append(activate);
+		result.append(", deactivate: ");
+		result.append(deactivate);
+		result.append(", configurationPolicy: ");
+		result.append(configurationPolicy);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ComponentImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ImplementationImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ImplementationImpl.java
new file mode 100644
index 0000000..0c8d607
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ImplementationImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.pde.ds.scr.Implementation;
+import org.eclipse.pde.ds.scr.ScrPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Implementation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ImplementationImpl#getClass_ <em>Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ImplementationImpl extends EObjectImpl implements Implementation {
+	/**
+	 * The default value of the '{@link #getClass_() <em>Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClass_()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASS_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClass_() <em>Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClass_()
+	 * @generated
+	 * @ordered
+	 */
+	protected String class_ = CLASS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ImplementationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ScrPackage.Literals.IMPLEMENTATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getClass_() {
+		return class_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setClass(String newClass) {
+		String oldClass = class_;
+		class_ = newClass;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.IMPLEMENTATION__CLASS, oldClass, class_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ScrPackage.IMPLEMENTATION__CLASS:
+				return getClass_();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ScrPackage.IMPLEMENTATION__CLASS:
+				setClass((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ScrPackage.IMPLEMENTATION__CLASS:
+				setClass(CLASS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ScrPackage.IMPLEMENTATION__CLASS:
+				return CLASS_EDEFAULT == null ? class_ != null : !CLASS_EDEFAULT.equals(class_);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (class: ");
+		result.append(class_);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ImplementationImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/PropertiesImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/PropertiesImpl.java
new file mode 100644
index 0000000..df01c48
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/PropertiesImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.pde.ds.scr.Properties;
+import org.eclipse.pde.ds.scr.ScrPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.PropertiesImpl#getEntry <em>Entry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertiesImpl extends EObjectImpl implements Properties {
+	/**
+	 * The default value of the '{@link #getEntry() <em>Entry</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEntry()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ENTRY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getEntry() <em>Entry</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEntry()
+	 * @generated
+	 * @ordered
+	 */
+	protected String entry = ENTRY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertiesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ScrPackage.Literals.PROPERTIES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getEntry() {
+		return entry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEntry(String newEntry) {
+		String oldEntry = entry;
+		entry = newEntry;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.PROPERTIES__ENTRY, oldEntry, entry));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ScrPackage.PROPERTIES__ENTRY:
+				return getEntry();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ScrPackage.PROPERTIES__ENTRY:
+				setEntry((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ScrPackage.PROPERTIES__ENTRY:
+				setEntry(ENTRY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ScrPackage.PROPERTIES__ENTRY:
+				return ENTRY_EDEFAULT == null ? entry != null : !ENTRY_EDEFAULT.equals(entry);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (entry: ");
+		result.append(entry);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertiesImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/PropertyImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/PropertyImpl.java
new file mode 100644
index 0000000..3bc82ca
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/PropertyImpl.java
@@ -0,0 +1,305 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.pde.ds.scr.Property;
+import org.eclipse.pde.ds.scr.ScrPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.PropertyImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.PropertyImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.PropertyImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyImpl extends EObjectImpl implements Property {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected Class<?> type;
+
+	/**
+	 * This is true if the Type attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean typeESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ScrPackage.Literals.PROPERTY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.PROPERTY__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.PROPERTY__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Class<?> getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(Class<?> newType) {
+		Class<?> oldType = type;
+		type = newType;
+		boolean oldTypeESet = typeESet;
+		typeESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.PROPERTY__TYPE, oldType, type, !oldTypeESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetType() {
+		Class<?> oldType = type;
+		boolean oldTypeESet = typeESet;
+		type = null;
+		typeESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ScrPackage.PROPERTY__TYPE, oldType, null, oldTypeESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetType() {
+		return typeESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ScrPackage.PROPERTY__VALUE:
+				return getValue();
+			case ScrPackage.PROPERTY__NAME:
+				return getName();
+			case ScrPackage.PROPERTY__TYPE:
+				return getType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ScrPackage.PROPERTY__VALUE:
+				setValue((String)newValue);
+				return;
+			case ScrPackage.PROPERTY__NAME:
+				setName((String)newValue);
+				return;
+			case ScrPackage.PROPERTY__TYPE:
+				setType((Class<?>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ScrPackage.PROPERTY__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+			case ScrPackage.PROPERTY__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case ScrPackage.PROPERTY__TYPE:
+				unsetType();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ScrPackage.PROPERTY__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+			case ScrPackage.PROPERTY__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case ScrPackage.PROPERTY__TYPE:
+				return isSetType();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (value: ");
+		result.append(value);
+		result.append(", name: ");
+		result.append(name);
+		result.append(", type: ");
+		if (typeESet) result.append(type); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ProvideImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ProvideImpl.java
new file mode 100644
index 0000000..6e7eda0
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ProvideImpl.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.pde.ds.scr.Provide;
+import org.eclipse.pde.ds.scr.ScrPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Provide</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ProvideImpl#getInterface <em>Interface</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProvideImpl extends EObjectImpl implements Provide {
+	/**
+	 * The cached value of the '{@link #getInterface() <em>Interface</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterface()
+	 * @generated
+	 * @ordered
+	 */
+	protected Class<?> interface_;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProvideImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ScrPackage.Literals.PROVIDE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Class<?> getInterface() {
+		return interface_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInterface(Class<?> newInterface) {
+		Class<?> oldInterface = interface_;
+		interface_ = newInterface;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.PROVIDE__INTERFACE, oldInterface, interface_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ScrPackage.PROVIDE__INTERFACE:
+				return getInterface();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ScrPackage.PROVIDE__INTERFACE:
+				setInterface((Class<?>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ScrPackage.PROVIDE__INTERFACE:
+				setInterface((Class<?>)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ScrPackage.PROVIDE__INTERFACE:
+				return interface_ != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (interface: ");
+		result.append(interface_);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ProvideImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ReferenceImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ReferenceImpl.java
new file mode 100644
index 0000000..430eb9b
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ReferenceImpl.java
@@ -0,0 +1,567 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.pde.ds.scr.Cardinality;
+import org.eclipse.pde.ds.scr.Policy;
+import org.eclipse.pde.ds.scr.Reference;
+import org.eclipse.pde.ds.scr.ScrPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl#getBind <em>Bind</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl#getCardinality <em>Cardinality</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl#getInterface <em>Interface</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl#getPolicy <em>Policy</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl#getTarget <em>Target</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ReferenceImpl#getUnbind <em>Unbind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ReferenceImpl extends EObjectImpl implements Reference {
+	/**
+	 * The default value of the '{@link #getBind() <em>Bind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBind()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BIND_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBind() <em>Bind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBind()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bind = BIND_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getCardinality() <em>Cardinality</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCardinality()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Cardinality CARDINALITY_EDEFAULT = Cardinality._01;
+
+	/**
+	 * The cached value of the '{@link #getCardinality() <em>Cardinality</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCardinality()
+	 * @generated
+	 * @ordered
+	 */
+	protected Cardinality cardinality = CARDINALITY_EDEFAULT;
+
+	/**
+	 * This is true if the Cardinality attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cardinalityESet;
+
+	/**
+	 * The default value of the '{@link #getInterface() <em>Interface</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterface()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String INTERFACE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getInterface() <em>Interface</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterface()
+	 * @generated
+	 * @ordered
+	 */
+	protected String interface_ = INTERFACE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPolicy() <em>Policy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPolicy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Policy POLICY_EDEFAULT = Policy.STATIC;
+
+	/**
+	 * The cached value of the '{@link #getPolicy() <em>Policy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPolicy()
+	 * @generated
+	 * @ordered
+	 */
+	protected Policy policy = POLICY_EDEFAULT;
+
+	/**
+	 * This is true if the Policy attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean policyESet;
+
+	/**
+	 * The default value of the '{@link #getTarget() <em>Target</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTarget()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TARGET_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTarget() <em>Target</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTarget()
+	 * @generated
+	 * @ordered
+	 */
+	protected String target = TARGET_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getUnbind() <em>Unbind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnbind()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UNBIND_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUnbind() <em>Unbind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUnbind()
+	 * @generated
+	 * @ordered
+	 */
+	protected String unbind = UNBIND_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ScrPackage.Literals.REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getBind() {
+		return bind;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBind(String newBind) {
+		String oldBind = bind;
+		bind = newBind;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.REFERENCE__BIND, oldBind, bind));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Cardinality getCardinality() {
+		return cardinality;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCardinality(Cardinality newCardinality) {
+		Cardinality oldCardinality = cardinality;
+		cardinality = newCardinality == null ? CARDINALITY_EDEFAULT : newCardinality;
+		boolean oldCardinalityESet = cardinalityESet;
+		cardinalityESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.REFERENCE__CARDINALITY, oldCardinality, cardinality, !oldCardinalityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetCardinality() {
+		Cardinality oldCardinality = cardinality;
+		boolean oldCardinalityESet = cardinalityESet;
+		cardinality = CARDINALITY_EDEFAULT;
+		cardinalityESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ScrPackage.REFERENCE__CARDINALITY, oldCardinality, CARDINALITY_EDEFAULT, oldCardinalityESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetCardinality() {
+		return cardinalityESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getInterface() {
+		return interface_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInterface(String newInterface) {
+		String oldInterface = interface_;
+		interface_ = newInterface;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.REFERENCE__INTERFACE, oldInterface, interface_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.REFERENCE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Policy getPolicy() {
+		return policy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPolicy(Policy newPolicy) {
+		Policy oldPolicy = policy;
+		policy = newPolicy == null ? POLICY_EDEFAULT : newPolicy;
+		boolean oldPolicyESet = policyESet;
+		policyESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.REFERENCE__POLICY, oldPolicy, policy, !oldPolicyESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetPolicy() {
+		Policy oldPolicy = policy;
+		boolean oldPolicyESet = policyESet;
+		policy = POLICY_EDEFAULT;
+		policyESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ScrPackage.REFERENCE__POLICY, oldPolicy, POLICY_EDEFAULT, oldPolicyESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetPolicy() {
+		return policyESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTarget() {
+		return target;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTarget(String newTarget) {
+		String oldTarget = target;
+		target = newTarget;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.REFERENCE__TARGET, oldTarget, target));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUnbind() {
+		return unbind;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUnbind(String newUnbind) {
+		String oldUnbind = unbind;
+		unbind = newUnbind;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.REFERENCE__UNBIND, oldUnbind, unbind));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ScrPackage.REFERENCE__BIND:
+				return getBind();
+			case ScrPackage.REFERENCE__CARDINALITY:
+				return getCardinality();
+			case ScrPackage.REFERENCE__INTERFACE:
+				return getInterface();
+			case ScrPackage.REFERENCE__NAME:
+				return getName();
+			case ScrPackage.REFERENCE__POLICY:
+				return getPolicy();
+			case ScrPackage.REFERENCE__TARGET:
+				return getTarget();
+			case ScrPackage.REFERENCE__UNBIND:
+				return getUnbind();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ScrPackage.REFERENCE__BIND:
+				setBind((String)newValue);
+				return;
+			case ScrPackage.REFERENCE__CARDINALITY:
+				setCardinality((Cardinality)newValue);
+				return;
+			case ScrPackage.REFERENCE__INTERFACE:
+				setInterface((String)newValue);
+				return;
+			case ScrPackage.REFERENCE__NAME:
+				setName((String)newValue);
+				return;
+			case ScrPackage.REFERENCE__POLICY:
+				setPolicy((Policy)newValue);
+				return;
+			case ScrPackage.REFERENCE__TARGET:
+				setTarget((String)newValue);
+				return;
+			case ScrPackage.REFERENCE__UNBIND:
+				setUnbind((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ScrPackage.REFERENCE__BIND:
+				setBind(BIND_EDEFAULT);
+				return;
+			case ScrPackage.REFERENCE__CARDINALITY:
+				unsetCardinality();
+				return;
+			case ScrPackage.REFERENCE__INTERFACE:
+				setInterface(INTERFACE_EDEFAULT);
+				return;
+			case ScrPackage.REFERENCE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case ScrPackage.REFERENCE__POLICY:
+				unsetPolicy();
+				return;
+			case ScrPackage.REFERENCE__TARGET:
+				setTarget(TARGET_EDEFAULT);
+				return;
+			case ScrPackage.REFERENCE__UNBIND:
+				setUnbind(UNBIND_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ScrPackage.REFERENCE__BIND:
+				return BIND_EDEFAULT == null ? bind != null : !BIND_EDEFAULT.equals(bind);
+			case ScrPackage.REFERENCE__CARDINALITY:
+				return isSetCardinality();
+			case ScrPackage.REFERENCE__INTERFACE:
+				return INTERFACE_EDEFAULT == null ? interface_ != null : !INTERFACE_EDEFAULT.equals(interface_);
+			case ScrPackage.REFERENCE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case ScrPackage.REFERENCE__POLICY:
+				return isSetPolicy();
+			case ScrPackage.REFERENCE__TARGET:
+				return TARGET_EDEFAULT == null ? target != null : !TARGET_EDEFAULT.equals(target);
+			case ScrPackage.REFERENCE__UNBIND:
+				return UNBIND_EDEFAULT == null ? unbind != null : !UNBIND_EDEFAULT.equals(unbind);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (bind: ");
+		result.append(bind);
+		result.append(", cardinality: ");
+		if (cardinalityESet) result.append(cardinality); else result.append("<unset>");
+		result.append(", interface: ");
+		result.append(interface_);
+		result.append(", name: ");
+		result.append(name);
+		result.append(", policy: ");
+		if (policyESet) result.append(policy); else result.append("<unset>");
+		result.append(", target: ");
+		result.append(target);
+		result.append(", unbind: ");
+		result.append(unbind);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ReferenceImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ScrFactoryImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ScrFactoryImpl.java
new file mode 100644
index 0000000..11e9aa7
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ScrFactoryImpl.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.pde.ds.scr.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScrFactoryImpl extends EFactoryImpl implements ScrFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ScrFactory init() {
+		try {
+			ScrFactory theScrFactory = (ScrFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.osgi.org/xmlns/scr/v1.1.0"); 
+			if (theScrFactory != null) {
+				return theScrFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ScrFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScrFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case ScrPackage.COMPONENT: return createComponent();
+			case ScrPackage.IMPLEMENTATION: return createImplementation();
+			case ScrPackage.PROPERTY: return createProperty();
+			case ScrPackage.PROPERTIES: return createProperties();
+			case ScrPackage.SERVICE: return createService();
+			case ScrPackage.PROVIDE: return createProvide();
+			case ScrPackage.REFERENCE: return createReference();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case ScrPackage.POLICY:
+				return createPolicyFromString(eDataType, initialValue);
+			case ScrPackage.CARDINALITY:
+				return createCardinalityFromString(eDataType, initialValue);
+			case ScrPackage.CONFIGURATION_POLICY:
+				return createConfigurationPolicyFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case ScrPackage.POLICY:
+				return convertPolicyToString(eDataType, instanceValue);
+			case ScrPackage.CARDINALITY:
+				return convertCardinalityToString(eDataType, instanceValue);
+			case ScrPackage.CONFIGURATION_POLICY:
+				return convertConfigurationPolicyToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component createComponent() {
+		ComponentImpl component = new ComponentImpl();
+		return component;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Implementation createImplementation() {
+		ImplementationImpl implementation = new ImplementationImpl();
+		return implementation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property createProperty() {
+		PropertyImpl property = new PropertyImpl();
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Properties createProperties() {
+		PropertiesImpl properties = new PropertiesImpl();
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Service createService() {
+		ServiceImpl service = new ServiceImpl();
+		return service;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Provide createProvide() {
+		ProvideImpl provide = new ProvideImpl();
+		return provide;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Reference createReference() {
+		ReferenceImpl reference = new ReferenceImpl();
+		return reference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Policy createPolicyFromString(EDataType eDataType, String initialValue) {
+		Policy result = Policy.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertPolicyToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Cardinality createCardinalityFromString(EDataType eDataType, String initialValue) {
+		Cardinality result = Cardinality.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertCardinalityToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConfigurationPolicy createConfigurationPolicyFromString(EDataType eDataType, String initialValue) {
+		ConfigurationPolicy result = ConfigurationPolicy.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertConfigurationPolicyToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScrPackage getScrPackage() {
+		return (ScrPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ScrPackage getPackage() {
+		return ScrPackage.eINSTANCE;
+	}
+
+} //ScrFactoryImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ScrPackageImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ScrPackageImpl.java
new file mode 100644
index 0000000..aa35726
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ScrPackageImpl.java
@@ -0,0 +1,737 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.pde.ds.scr.Cardinality;
+import org.eclipse.pde.ds.scr.Component;
+import org.eclipse.pde.ds.scr.ConfigurationPolicy;
+import org.eclipse.pde.ds.scr.Implementation;
+import org.eclipse.pde.ds.scr.Policy;
+import org.eclipse.pde.ds.scr.Properties;
+import org.eclipse.pde.ds.scr.Property;
+import org.eclipse.pde.ds.scr.Provide;
+import org.eclipse.pde.ds.scr.Reference;
+import org.eclipse.pde.ds.scr.ScrFactory;
+import org.eclipse.pde.ds.scr.ScrPackage;
+import org.eclipse.pde.ds.scr.Service;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScrPackageImpl extends EPackageImpl implements ScrPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass componentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass implementationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertiesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass serviceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass provideEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass referenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum policyEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum cardinalityEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum configurationPolicyEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.pde.ds.scr.ScrPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ScrPackageImpl() {
+		super(eNS_URI, ScrFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this
+	 * model, and for any others upon which it depends.  Simple
+	 * dependencies are satisfied by calling this method on all
+	 * dependent packages before doing anything else.  This method drives
+	 * initialization for interdependent packages directly, in parallel
+	 * with this package, itself.
+	 * <p>Of this package and its interdependencies, all packages which
+	 * have not yet been registered by their URI values are first created
+	 * and registered.  The packages are then initialized in two steps:
+	 * meta-model objects for all of the packages are created before any
+	 * are initialized, since one package's meta-model objects may refer to
+	 * those of another.
+	 * <p>Invocation of this method will not affect any packages that have
+	 * already been initialized.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static ScrPackage init() {
+		if (isInited) return (ScrPackage)EPackage.Registry.INSTANCE.getEPackage(ScrPackage.eNS_URI);
+
+		// Obtain or create and register package
+		ScrPackageImpl theScrPackage = (ScrPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof ScrPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new ScrPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		XMLTypePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theScrPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theScrPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theScrPackage.freeze();
+
+		return theScrPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getComponent() {
+		return componentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getComponent_Enabled() {
+		return (EAttribute)componentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getComponent_Factory() {
+		return (EAttribute)componentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getComponent_Immediate() {
+		return (EAttribute)componentEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getComponent_Name() {
+		return (EAttribute)componentEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getComponent_Activate() {
+		return (EAttribute)componentEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getComponent_Deactivate() {
+		return (EAttribute)componentEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getComponent_ConfigurationPolicy() {
+		return (EAttribute)componentEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponent_Implementation() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponent_Property() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponent_Properties() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponent_Service() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponent_Reference() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getImplementation() {
+		return implementationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getImplementation_Class() {
+		return (EAttribute)implementationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProperty() {
+		return propertyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Value() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Name() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Type() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProperties() {
+		return propertiesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperties_Entry() {
+		return (EAttribute)propertiesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getService() {
+		return serviceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getService_Provide() {
+		return (EReference)serviceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getService_Servicefactory() {
+		return (EAttribute)serviceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProvide() {
+		return provideEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProvide_Interface() {
+		return (EAttribute)provideEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getReference() {
+		return referenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getReference_Bind() {
+		return (EAttribute)referenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getReference_Cardinality() {
+		return (EAttribute)referenceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getReference_Interface() {
+		return (EAttribute)referenceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getReference_Name() {
+		return (EAttribute)referenceEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getReference_Policy() {
+		return (EAttribute)referenceEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getReference_Target() {
+		return (EAttribute)referenceEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getReference_Unbind() {
+		return (EAttribute)referenceEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getPolicy() {
+		return policyEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getCardinality() {
+		return cardinalityEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getConfigurationPolicy() {
+		return configurationPolicyEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScrFactory getScrFactory() {
+		return (ScrFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		componentEClass = createEClass(COMPONENT);
+		createEAttribute(componentEClass, COMPONENT__ENABLED);
+		createEAttribute(componentEClass, COMPONENT__FACTORY);
+		createEAttribute(componentEClass, COMPONENT__IMMEDIATE);
+		createEAttribute(componentEClass, COMPONENT__NAME);
+		createEAttribute(componentEClass, COMPONENT__ACTIVATE);
+		createEAttribute(componentEClass, COMPONENT__DEACTIVATE);
+		createEAttribute(componentEClass, COMPONENT__CONFIGURATION_POLICY);
+		createEReference(componentEClass, COMPONENT__IMPLEMENTATION);
+		createEReference(componentEClass, COMPONENT__PROPERTY);
+		createEReference(componentEClass, COMPONENT__PROPERTIES);
+		createEReference(componentEClass, COMPONENT__SERVICE);
+		createEReference(componentEClass, COMPONENT__REFERENCE);
+
+		implementationEClass = createEClass(IMPLEMENTATION);
+		createEAttribute(implementationEClass, IMPLEMENTATION__CLASS);
+
+		propertyEClass = createEClass(PROPERTY);
+		createEAttribute(propertyEClass, PROPERTY__VALUE);
+		createEAttribute(propertyEClass, PROPERTY__NAME);
+		createEAttribute(propertyEClass, PROPERTY__TYPE);
+
+		propertiesEClass = createEClass(PROPERTIES);
+		createEAttribute(propertiesEClass, PROPERTIES__ENTRY);
+
+		serviceEClass = createEClass(SERVICE);
+		createEReference(serviceEClass, SERVICE__PROVIDE);
+		createEAttribute(serviceEClass, SERVICE__SERVICEFACTORY);
+
+		provideEClass = createEClass(PROVIDE);
+		createEAttribute(provideEClass, PROVIDE__INTERFACE);
+
+		referenceEClass = createEClass(REFERENCE);
+		createEAttribute(referenceEClass, REFERENCE__BIND);
+		createEAttribute(referenceEClass, REFERENCE__CARDINALITY);
+		createEAttribute(referenceEClass, REFERENCE__INTERFACE);
+		createEAttribute(referenceEClass, REFERENCE__NAME);
+		createEAttribute(referenceEClass, REFERENCE__POLICY);
+		createEAttribute(referenceEClass, REFERENCE__TARGET);
+		createEAttribute(referenceEClass, REFERENCE__UNBIND);
+
+		// Create enums
+		policyEEnum = createEEnum(POLICY);
+		cardinalityEEnum = createEEnum(CARDINALITY);
+		configurationPolicyEEnum = createEEnum(CONFIGURATION_POLICY);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(componentEClass, Component.class, "Component", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getComponent_Enabled(), ecorePackage.getEBoolean(), "enabled", "true", 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getComponent_Factory(), ecorePackage.getEString(), "factory", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getComponent_Immediate(), ecorePackage.getEBoolean(), "immediate", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getComponent_Name(), ecorePackage.getEString(), "name", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getComponent_Activate(), ecorePackage.getEString(), "activate", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getComponent_Deactivate(), ecorePackage.getEString(), "deactivate", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getComponent_ConfigurationPolicy(), this.getConfigurationPolicy(), "configurationPolicy", "optional", 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Implementation(), this.getImplementation(), null, "implementation", null, 1, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Property(), this.getProperty(), null, "property", null, 0, -1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Properties(), this.getProperties(), null, "properties", null, 0, -1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Service(), this.getService(), null, "service", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Reference(), this.getReference(), null, "reference", null, 0, -1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(implementationEClass, Implementation.class, "Implementation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getImplementation_Class(), ecorePackage.getEString(), "class", null, 1, 1, Implementation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getProperty_Value(), ecorePackage.getEString(), "value", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProperty_Name(), ecorePackage.getEString(), "name", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		EGenericType g1 = createEGenericType(ecorePackage.getEJavaClass());
+		EGenericType g2 = createEGenericType();
+		g1.getETypeArguments().add(g2);
+		initEAttribute(getProperty_Type(), g1, "type", "java.lang.String", 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertiesEClass, Properties.class, "Properties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getProperties_Entry(), ecorePackage.getEString(), "entry", null, 1, 1, Properties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(serviceEClass, Service.class, "Service", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getService_Provide(), this.getProvide(), null, "provide", null, 1, -1, Service.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getService_Servicefactory(), theXMLTypePackage.getBoolean(), "servicefactory", "false", 0, 1, Service.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(provideEClass, Provide.class, "Provide", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		g1 = createEGenericType(ecorePackage.getEJavaClass());
+		g2 = createEGenericType();
+		g1.getETypeArguments().add(g2);
+		initEAttribute(getProvide_Interface(), g1, "interface", null, 1, 1, Provide.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(referenceEClass, Reference.class, "Reference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getReference_Bind(), ecorePackage.getEString(), "bind", null, 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getReference_Cardinality(), this.getCardinality(), "cardinality", "1..1", 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getReference_Interface(), ecorePackage.getEString(), "interface", null, 1, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getReference_Name(), ecorePackage.getEString(), "name", null, 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getReference_Policy(), this.getPolicy(), "policy", "static", 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getReference_Target(), theXMLTypePackage.getString(), "target", null, 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getReference_Unbind(), ecorePackage.getEString(), "unbind", null, 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(policyEEnum, Policy.class, "Policy");
+		addEEnumLiteral(policyEEnum, Policy.STATIC);
+		addEEnumLiteral(policyEEnum, Policy.DYNAMIC);
+
+		initEEnum(cardinalityEEnum, Cardinality.class, "Cardinality");
+		addEEnumLiteral(cardinalityEEnum, Cardinality._01);
+		addEEnumLiteral(cardinalityEEnum, Cardinality._0N);
+		addEEnumLiteral(cardinalityEEnum, Cardinality._11);
+		addEEnumLiteral(cardinalityEEnum, Cardinality._1N);
+
+		initEEnum(configurationPolicyEEnum, ConfigurationPolicy.class, "ConfigurationPolicy");
+		addEEnumLiteral(configurationPolicyEEnum, ConfigurationPolicy.OPTIONAL);
+		addEEnumLiteral(configurationPolicyEEnum, ConfigurationPolicy.REQUIRE);
+		addEEnumLiteral(configurationPolicyEEnum, ConfigurationPolicy.IGNORE);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		createExtendedMetaDataAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createExtendedMetaDataAnnotations() {
+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";		
+		addAnnotation
+		  (getComponent_ConfigurationPolicy(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "configuration-policy"
+		   });		
+		addAnnotation
+		  (getComponent_Service(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "service"
+		   });		
+		addAnnotation
+		  (getComponent_Reference(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "reference"
+		   });		
+		addAnnotation
+		  (getService_Provide(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "provide"
+		   });
+	}
+
+} //ScrPackageImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ServiceImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ServiceImpl.java
new file mode 100644
index 0000000..a9f7999
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/impl/ServiceImpl.java
@@ -0,0 +1,266 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.pde.ds.scr.Provide;
+import org.eclipse.pde.ds.scr.ScrPackage;
+import org.eclipse.pde.ds.scr.Service;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Service</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ServiceImpl#getProvide <em>Provide</em>}</li>
+ *   <li>{@link org.eclipse.pde.ds.scr.impl.ServiceImpl#isServicefactory <em>Servicefactory</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ServiceImpl extends EObjectImpl implements Service {
+	/**
+	 * The cached value of the '{@link #getProvide() <em>Provide</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProvide()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Provide> provide;
+
+	/**
+	 * The default value of the '{@link #isServicefactory() <em>Servicefactory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isServicefactory()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SERVICEFACTORY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isServicefactory() <em>Servicefactory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isServicefactory()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean servicefactory = SERVICEFACTORY_EDEFAULT;
+
+	/**
+	 * This is true if the Servicefactory attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean servicefactoryESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ScrPackage.Literals.SERVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Provide> getProvide() {
+		if (provide == null) {
+			provide = new EObjectContainmentEList<Provide>(Provide.class, this, ScrPackage.SERVICE__PROVIDE);
+		}
+		return provide;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isServicefactory() {
+		return servicefactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setServicefactory(boolean newServicefactory) {
+		boolean oldServicefactory = servicefactory;
+		servicefactory = newServicefactory;
+		boolean oldServicefactoryESet = servicefactoryESet;
+		servicefactoryESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ScrPackage.SERVICE__SERVICEFACTORY, oldServicefactory, servicefactory, !oldServicefactoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetServicefactory() {
+		boolean oldServicefactory = servicefactory;
+		boolean oldServicefactoryESet = servicefactoryESet;
+		servicefactory = SERVICEFACTORY_EDEFAULT;
+		servicefactoryESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ScrPackage.SERVICE__SERVICEFACTORY, oldServicefactory, SERVICEFACTORY_EDEFAULT, oldServicefactoryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetServicefactory() {
+		return servicefactoryESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ScrPackage.SERVICE__PROVIDE:
+				return ((InternalEList<?>)getProvide()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ScrPackage.SERVICE__PROVIDE:
+				return getProvide();
+			case ScrPackage.SERVICE__SERVICEFACTORY:
+				return isServicefactory();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ScrPackage.SERVICE__PROVIDE:
+				getProvide().clear();
+				getProvide().addAll((Collection<? extends Provide>)newValue);
+				return;
+			case ScrPackage.SERVICE__SERVICEFACTORY:
+				setServicefactory((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ScrPackage.SERVICE__PROVIDE:
+				getProvide().clear();
+				return;
+			case ScrPackage.SERVICE__SERVICEFACTORY:
+				unsetServicefactory();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ScrPackage.SERVICE__PROVIDE:
+				return provide != null && !provide.isEmpty();
+			case ScrPackage.SERVICE__SERVICEFACTORY:
+				return isSetServicefactory();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (servicefactory: ");
+		if (servicefactoryESet) result.append(servicefactory); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //ServiceImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrAdapterFactory.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrAdapterFactory.java
new file mode 100644
index 0000000..9cffd6c
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrAdapterFactory.java
@@ -0,0 +1,238 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.pde.ds.scr.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.ScrPackage
+ * @generated
+ */
+public class ScrAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ScrPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScrAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ScrPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ScrSwitch<Adapter> modelSwitch =
+		new ScrSwitch<Adapter>() {
+			@Override
+			public Adapter caseComponent(Component object) {
+				return createComponentAdapter();
+			}
+			@Override
+			public Adapter caseImplementation(Implementation object) {
+				return createImplementationAdapter();
+			}
+			@Override
+			public Adapter caseProperty(Property object) {
+				return createPropertyAdapter();
+			}
+			@Override
+			public Adapter caseProperties(Properties object) {
+				return createPropertiesAdapter();
+			}
+			@Override
+			public Adapter caseService(Service object) {
+				return createServiceAdapter();
+			}
+			@Override
+			public Adapter caseProvide(Provide object) {
+				return createProvideAdapter();
+			}
+			@Override
+			public Adapter caseReference(Reference object) {
+				return createReferenceAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.pde.ds.scr.Component <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.pde.ds.scr.Component
+	 * @generated
+	 */
+	public Adapter createComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.pde.ds.scr.Implementation <em>Implementation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.pde.ds.scr.Implementation
+	 * @generated
+	 */
+	public Adapter createImplementationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.pde.ds.scr.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.pde.ds.scr.Property
+	 * @generated
+	 */
+	public Adapter createPropertyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.pde.ds.scr.Properties <em>Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.pde.ds.scr.Properties
+	 * @generated
+	 */
+	public Adapter createPropertiesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.pde.ds.scr.Service <em>Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.pde.ds.scr.Service
+	 * @generated
+	 */
+	public Adapter createServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.pde.ds.scr.Provide <em>Provide</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.pde.ds.scr.Provide
+	 * @generated
+	 */
+	public Adapter createProvideAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.pde.ds.scr.Reference <em>Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.pde.ds.scr.Reference
+	 * @generated
+	 */
+	public Adapter createReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ScrAdapterFactory
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrResourceFactoryImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrResourceFactoryImpl.java
new file mode 100644
index 0000000..cf174ad
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrResourceFactoryImpl.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.util.ScrResourceImpl
+ * @generated
+ */
+public class ScrResourceFactoryImpl extends ResourceFactoryImpl {
+	/**
+	 * Creates an instance of the resource factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScrResourceFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Resource createResource(URI uri) {
+		XMLResource result = new ScrResourceImpl(uri);
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+		return result;
+	}
+
+} //ScrResourceFactoryImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrResourceImpl.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrResourceImpl.java
new file mode 100644
index 0000000..2c8cd5b
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrResourceImpl.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.util.ScrResourceFactoryImpl
+ * @generated
+ */
+public class ScrResourceImpl extends XMLResourceImpl {
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param uri the URI of the new resource.
+	 * @generated
+	 */
+	public ScrResourceImpl(URI uri) {
+		super(uri);
+	}
+
+} //ScrResourceImpl
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrSwitch.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrSwitch.java
new file mode 100644
index 0000000..db7c58e
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrSwitch.java
@@ -0,0 +1,262 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.pde.ds.scr.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.pde.ds.scr.ScrPackage
+ * @generated
+ */
+public class ScrSwitch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ScrPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScrSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ScrPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	public T doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch(eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case ScrPackage.COMPONENT: {
+				Component component = (Component)theEObject;
+				T result = caseComponent(component);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ScrPackage.IMPLEMENTATION: {
+				Implementation implementation = (Implementation)theEObject;
+				T result = caseImplementation(implementation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ScrPackage.PROPERTY: {
+				Property property = (Property)theEObject;
+				T result = caseProperty(property);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ScrPackage.PROPERTIES: {
+				Properties properties = (Properties)theEObject;
+				T result = caseProperties(properties);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ScrPackage.SERVICE: {
+				Service service = (Service)theEObject;
+				T result = caseService(service);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ScrPackage.PROVIDE: {
+				Provide provide = (Provide)theEObject;
+				T result = caseProvide(provide);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ScrPackage.REFERENCE: {
+				Reference reference = (Reference)theEObject;
+				T result = caseReference(reference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseComponent(Component object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Implementation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Implementation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseImplementation(Implementation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProperty(Property object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Properties</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Properties</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProperties(Properties object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Service</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseService(Service object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Provide</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Provide</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProvide(Provide object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReference(Reference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //ScrSwitch
diff --git a/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrXMLProcessor.java b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrXMLProcessor.java
new file mode 100644
index 0000000..69d1db7
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds/src/org/eclipse/pde/ds/scr/util/ScrXMLProcessor.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2009 Anyware Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Anyware Technologies - initial API and implementation
+ *
+ * $Id$
+ */
+package org.eclipse.pde.ds.scr.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+
+import org.eclipse.pde.ds.scr.ScrPackage;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScrXMLProcessor extends XMLProcessor {
+
+	/**
+	 * Public constructor to instantiate the helper.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScrXMLProcessor() {
+		super((EPackage.Registry.INSTANCE));
+		ScrPackage.eINSTANCE.eClass();
+	}
+	
+	/**
+	 * Register for "*" and "xml" file extensions the ScrResourceFactoryImpl factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected Map<String, Resource.Factory> getRegistrations() {
+		if (registrations == null) {
+			super.getRegistrations();
+			registrations.put(XML_EXTENSION, new ScrResourceFactoryImpl());
+			registrations.put(STAR_EXTENSION, new ScrResourceFactoryImpl());
+		}
+		return registrations;
+	}
+
+} //ScrXMLProcessor