parallel ip - initial checkin
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.artifactVersions b/.artifactVersions
new file mode 100644
index 0000000..9774cde
--- /dev/null
+++ b/.artifactVersions
@@ -0,0 +1,4 @@
+version=0.9.1-SNAPSHOT
+relengVersion=0.12.5-SNAPSHOT
+relengGroupId=org.lunifera.releng.maven
+relengP2Version=0.12.5-SNAPSHOT
diff --git a/.depVersions b/.depVersions
new file mode 100644
index 0000000..7f083e3
--- /dev/null
+++ b/.depVersions
@@ -0,0 +1,6 @@
+org.eclipse.xtend;min=2.7.3;max=2.8.0
+org.eclipse.xtext;min=2.7.3;max=2.8.0
+org.semanticsoft;min=2.7.3;max=3.0.0
+org.lunifera.dsl;min=0.9.0;max=0.10.0
+org.lunifera;min=0.9.0;max=0.10.0
+com.google.guava;min=10.0.0;max=19.0.0
\ No newline at end of file
diff --git a/.osbp.releng.root b/.osbp.releng.root
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.osbp.releng.root
diff --git a/.project b/.project
new file mode 100644
index 0000000..ddbfc5a
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.aggregator</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1cf83a2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+lunifera-runtime
+================
+
+Runtime components for lunifera.org. Like persistence, server integration, OSGi services for BPM, Rules,...
\ No newline at end of file
diff --git a/about.html b/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..36d599d
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job -->
+<!--#======================================================================= -->
+
+<jenkins>
+
+ <!-- DO NOT EDIT BELOW THIS LINE -->
+ <jenkins.build.dependencies>
+ <jenkins.build.dependency>org.eclipse.osbp.technologystack</jenkins.build.dependency>
+ </jenkins.build.dependencies>
+</jenkins>
diff --git a/launchers/lunifera-runtime - P2 Kepler - Build Skiping Tests.launch b/launchers/lunifera-runtime - P2 Kepler - Build Skiping Tests.launch
new file mode 100644
index 0000000..89ef1bd
--- /dev/null
+++ b/launchers/lunifera-runtime - P2 Kepler - Build Skiping Tests.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify -fn -Dlunifera.build.skip.license"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="lunifera.build.p2"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<stringAttribute key="M2_USER_SETTINGS" value=""/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:/org.eclipse.osbp.runtime}"/>
+</launchConfiguration>
diff --git a/launchers/lunifera-runtime - P2 Kepler - Build and Deploy.launch b/launchers/lunifera-runtime - P2 Kepler - Build and Deploy.launch
new file mode 100644
index 0000000..ed7d4d6
--- /dev/null
+++ b/launchers/lunifera-runtime - P2 Kepler - Build and Deploy.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify -Dlunifera.deploy.to.local.composite.p2 -Dlunifera.build.skip.license"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="lunifera.build.p2"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<stringAttribute key="M2_USER_SETTINGS" value=""/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:/org.eclipse.osbp.runtime}"/>
+</launchConfiguration>
diff --git a/launchers/lunifera-runtime - P2 Kepler - Build.launch b/launchers/lunifera-runtime - P2 Kepler - Build.launch
new file mode 100644
index 0000000..70950b0
--- /dev/null
+++ b/launchers/lunifera-runtime - P2 Kepler - Build.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify -Dlunifera.build.skip.license"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="lunifera.build.p2"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<stringAttribute key="M2_USER_SETTINGS" value=""/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc:/org.eclipse.osbp.runtime}"/>
+</launchConfiguration>
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.runtime.common.tests/.project b/org.eclipse.osbp.runtime.common.tests/.project
new file mode 100644
index 0000000..3063fcc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.common.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.common.tests/LICENSE.txt b/org.eclipse.osbp.runtime.common.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fc612f6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.common.tests
+Bundle-SymbolicName: org.eclipse.osbp.runtime.common.tests
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.junit,
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+Bundle-ActivationPolicy: lazy
+Import-Package: org.knowhowlab.osgi.testing.assertions;version="1.3.0",
+ org.knowhowlab.osgi.testing.utils;version="1.1.0",
+ org.osgi.framework;version="1.7.0"
diff --git a/org.eclipse.osbp.runtime.common.tests/build.properties b/org.eclipse.osbp.runtime.common.tests/build.properties
new file mode 100644
index 0000000..56d7765
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = META-INF/,\
+ .
diff --git a/org.eclipse.osbp.runtime.common.tests/pom.xml b/org.eclipse.osbp.runtime.common.tests/pom.xml
new file mode 100644
index 0000000..41795d3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/pom.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.common.tests</artifactId>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <properties>
+ <local-p2-site>file:/${basedir}/../behave-osgi-equinox-repository/target/repository</local-p2-site>
+ <ui.test.vmargs>-Xmx512m -XX:MaxPermSize=256m</ui.test.vmargs>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>org.eclipse.osbp.runtime.component.configuration.manager.test.conf</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/*Test.class</include>
+ </includes>
+ <failIfNoTests>false</failIfNoTests>
+ <showEclipseLog>true</showEclipseLog>
+ <!-- <argLine>${ui.test.vmargs}</argLine> -->
+ <bundleStartLevel>
+ <bundle>
+ <id>org.eclipse.osgi</id>
+ <level>-1</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.eclipse.equinox.common</id>
+ <level>1</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.eclipse.equinox.ds</id>
+ <level>2</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.eclipse.equinox.cm</id>
+ <level>1</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.eclipse.equinox.log</id>
+ <level>1</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.eclipse.osgi.services</id>
+ <level>1</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.eclipse.osbp.runtime.component.configuration.manager.tests</id>
+ <level>4</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.eclipse.osbp.runtime.component.configuration.manager</id>
+ <level>2</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.knowhowlab.osgi.testing.assertions</id>
+ <level>2</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ <bundle>
+ <id>org.knowhowlab.osgi.testing.utils</id>
+ <level>2</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ </bundleStartLevel>
+
+ <dependencies>
+ <!-- Plugins -->
+ <dependency>
+ <type>eclipse-plugin</type>
+ <artifactId>org.eclipse.osbp.runtime.component.configuration.manager.test.conf</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <useUIHarness>false</useUIHarness>
+ <useUIThread>false</useUIThread>
+ </configuration>
+ </plugin>
+ </plugins>
+
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/dispose/tests/AbstractDisposableTest.java b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/dispose/tests/AbstractDisposableTest.java
new file mode 100644
index 0000000..6f967e2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/dispose/tests/AbstractDisposableTest.java
@@ -0,0 +1,215 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2015 Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Cristiano Gavião - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.runtime.common.dispose.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.knowhowlab.osgi.testing.assertions.BundleAssert.assertBundleAvailable;
+
+import java.util.List;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.knowhowlab.osgi.testing.assertions.BundleAssert;
+import org.knowhowlab.osgi.testing.assertions.ServiceAssert;
+import org.eclipse.osbp.runtime.common.dispose.AbstractDisposable;
+import org.eclipse.osbp.runtime.common.dispose.IDisposable;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+
+public class AbstractDisposableTest {
+
+ private static BundleContext bc;
+
+ @BeforeClass
+ public static void init() {
+ bc = FrameworkUtil.getBundle(AbstractDisposableTest.class)
+ .getBundleContext();
+ ServiceAssert.setDefaultBundleContext(bc);
+ BundleAssert.setDefaultBundleContext(bc);
+ }
+
+ public void ensureNeedBundlesWasInstalled() {
+ assertBundleAvailable("Runtime-Common bundle is not available",
+ "org.eclipse.osbp.runtime.common");
+ }
+
+ @Test
+ public void test_isDisposed() {
+ Disposable d = new Disposable();
+ assertFalse(d.isDisposed());
+
+ d.dispose();
+ assertTrue(d.isDisposed());
+ }
+
+ @Test
+ public void test_isDisposing() {
+ final Disposable d = new Disposable(500);
+ assertFalse(d.isDisposing());
+
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ d.dispose();
+ }
+ });
+ thread.start();
+
+ try {
+ Thread.sleep(150);
+ } catch (InterruptedException e) {
+ }
+ assertTrue(d.isDisposing());
+
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ }
+ assertTrue(d.isDisposed());
+ }
+
+ @Test
+ public void test_internalDispose() {
+ Disposable d = new Disposable();
+ assertEquals(0, d.counter);
+
+ d.dispose();
+ assertEquals(1, d.counter);
+
+ // only dipose once!
+ d.dispose();
+ assertEquals(1, d.counter);
+ }
+
+ @Test
+ public void test_checkDisposed() {
+ Disposable d = new Disposable();
+ d.dispose();
+
+ // unchecked calls
+ d.isDisposed();
+ d.isDisposing();
+ d.dispose();
+
+ // checked calls
+ Listener listener = new Listener();
+ try {
+ d.addDisposeListener(listener);
+ fail("Exception expected");
+ } catch (Exception e) {
+ // expected
+ }
+
+ try {
+ d.removeDisposeListener(listener);
+ fail("Exception expected");
+ } catch (Exception e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void test_DisposeListener() {
+ Disposable d = new Disposable();
+ Listener listener1 = new Listener();
+ Listener listener2 = new Listener();
+ Listener listener3 = new Listener();
+
+ d.addDisposeListener(listener1);
+ d.addDisposeListener(listener2);
+ d.addDisposeListener(listener3);
+ assertEquals(3, d.getDisposeListeners().size());
+
+ // remove listener3 again
+ d.removeDisposeListener(listener3);
+ assertEquals(2, d.getDisposeListeners().size());
+
+ d.dispose();
+ assertEquals(1, listener1.counter);
+ assertEquals(1, listener2.counter);
+ assertEquals(0, listener3.counter);
+ assertEquals(0, d.getDisposeListeners().size());
+
+ // dispose twice
+ d.dispose();
+ assertEquals(1, listener1.counter);
+ assertEquals(1, listener2.counter);
+ assertEquals(0, listener3.counter);
+ }
+
+ @Test
+ public void test_DisposeListener_disposing() {
+ final Disposable d = new Disposable(500);
+ Listener listener = new Listener();
+ d.addDisposeListener(listener);
+
+ for (int i = 0; i < 10; i++) {
+ try {
+ Thread.sleep(70);
+ } catch (InterruptedException e) {
+ }
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ d.dispose();
+ }
+ });
+ thread.start();
+ }
+
+ assertEquals(1, listener.counter);
+ }
+
+ private static class Disposable extends AbstractDisposable {
+
+ private int counter;
+ private int delay;
+
+ private Disposable() {
+
+ }
+
+ private Disposable(int delay) {
+ this.delay = delay;
+ }
+
+ @Override
+ protected void internalDispose() {
+ counter++;
+ if (delay > 0) {
+ try {
+ Thread.sleep(delay);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+
+ @Override
+ public List<IDisposable.Listener> getDisposeListeners() {
+ return super.getDisposeListeners();
+ }
+
+ }
+
+ private static class Listener implements IDisposable.Listener {
+
+ private int counter;
+
+ @Override
+ public void notifyDisposed(IDisposable notifier) {
+ counter++;
+ }
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/.project b/org.eclipse.osbp.runtime.common/.project
new file mode 100644
index 0000000..b9e2639
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.common</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.common/LICENSE.txt b/org.eclipse.osbp.runtime.common/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..959d8d9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
@@ -0,0 +1,43 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.common
+Bundle-Localization: OSGI-INF/l10n/bundle
+Bundle-SymbolicName: org.eclipse.osbp.runtime.common
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.runtime.common.annotations;version="0.9.0",
+ org.eclipse.osbp.runtime.common.coordination;version="0.9.0";uses:="org.osgi.service.coordinator",
+ org.eclipse.osbp.runtime.common.datasource;version="0.9.0";uses:="org.eclipse.osbp.runtime.common.datasource.config",
+ org.eclipse.osbp.runtime.common.datasource.config;version="0.9.0",
+ org.eclipse.osbp.runtime.common.dispose;version="0.9.0",
+ org.eclipse.osbp.runtime.common.event;version="0.9.0";uses:="org.osgi.service.event",
+ org.eclipse.osbp.runtime.common.extender;version="0.9.0",
+ org.eclipse.osbp.runtime.common.hash;version="0.9.0",
+ org.eclipse.osbp.runtime.common.help;version="0.9.0",
+ org.eclipse.osbp.runtime.common.i18n;version="0.9.0";uses:="org.eclipse.osbp.runtime.common.dispose",
+ org.eclipse.osbp.runtime.common.keystroke;version="0.9.0",
+ org.eclipse.osbp.runtime.common.memento;version="0.9.0";uses:="org.eclipse.osbp.runtime.common.validation",
+ org.eclipse.osbp.runtime.common.metric;version="0.9.0",
+ org.eclipse.osbp.runtime.common.shell;version="0.9.0",
+ org.eclipse.osbp.runtime.common.state;version="0.9.0",
+ org.eclipse.osbp.runtime.common.state.impl;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.runtime.common.types;version="0.9.0",
+ org.eclipse.osbp.runtime.common.user;version="0.9.0";uses:="org.osgi.service.prefs",
+ org.eclipse.osbp.runtime.common.util;version="0.9.0",
+ org.eclipse.osbp.runtime.common.validation;version="0.9.0"
+Import-Package: javax.persistence;version="2.1.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.coordinator;version="1.0.1",
+ org.osgi.service.event;version="1.3.0",
+ org.osgi.service.prefs,
+ org.osgi.util.tracker;version="1.5.1"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Service-Component: OSGI-INF/*
+Require-Bundle: com.google.guava,
+ org.apache.commons.lang;bundle-version="2.6.0",
+ org.apache.commons.collections;bundle-version="3.2.0",
+ org.eclipse.core.runtime;bundle-version="3.10.0",
+ org.slf4j.api;bundle-version="1.7.2"
diff --git a/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider.xml b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider.xml
new file mode 100644
index 0000000..44d894d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider">
+ <implementation class="org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider"/>
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.common.state.ISharedStateContextProvider"/>
+ </service>
+ <property name="service.ranking" value="100"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/about.html b/org.eclipse.osbp.runtime.common/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/about.ini b/org.eclipse.osbp.runtime.common/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.common/about.mappings b/org.eclipse.osbp.runtime.common/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.common/about.properties b/org.eclipse.osbp.runtime.common/about.properties
new file mode 100644
index 0000000..80bf6ad
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.common
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.common/build.properties b/org.eclipse.osbp.runtime.common/build.properties
new file mode 100644
index 0000000..e79b84a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ OSGI-INF/,\
+ .project,\
+ .classpath,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.common/pom.xml b/org.eclipse.osbp.runtime.common/pom.xml
new file mode 100644
index 0000000..12b4141
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.common</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/CompareType.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/CompareType.java
new file mode 100644
index 0000000..3765c4d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/CompareType.java
@@ -0,0 +1,319 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * The Enum CompareType.
+ */
+public enum CompareType {
+ /**
+ * The '<em><b>EQUALS</b></em>' literal object. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #EQUALS_VALUE
+ * @generated
+ * @ordered
+ */
+ EQUALS(0, "EQUALS", "=="),
+
+ /**
+ * The '<em><b>GREATER</b></em>' literal object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #GREATER_VALUE
+ * @generated
+ * @ordered
+ */
+ GREATER(0, "GREATER", ">"),
+
+ /**
+ * The '<em><b>LOWER</b></em>' literal object. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #LOWER_VALUE
+ * @generated
+ * @ordered
+ */
+ LOWER(0, "LOWER", "<"),
+
+ /**
+ * The '<em><b>GREATER EQ</b></em>' literal object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #GREATER_EQ_VALUE
+ * @generated
+ * @ordered
+ */
+ GREATER_EQ(0, "GREATER_EQ", ">="),
+
+ /**
+ * The '<em><b>LOWER EQ</b></em>' literal object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #LOWER_EQ_VALUE
+ * @generated
+ * @ordered
+ */
+ LOWER_EQ(0, "LOWER_EQ", "<="),
+
+ /**
+ * The '<em><b>NOT EQ</b></em>' literal object. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #NOT_EQ_VALUE
+ * @generated
+ * @ordered
+ */
+ NOT_EQ(0, "NOT_EQ", "<>");
+
+ /**
+ * The '<em><b>EQUALS</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>EQUALS</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ *
+ * <!-- end-user-doc -->
+ *
+ * @see #EQUALS
+ * @generated
+ * @ordered
+ * @model literal="=="
+ */
+ public static final int EQUALS_VALUE = 0;
+
+ /**
+ * The '<em><b>GREATER</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>GREATER</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ *
+ * <!-- end-user-doc -->
+ *
+ * @see #GREATER
+ * @model literal=">"
+ * @generated
+ * @ordered
+ */
+ public static final int GREATER_VALUE = 0;
+
+ /**
+ * The '<em><b>LOWER</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>LOWER</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ *
+ * <!-- end-user-doc -->
+ * @see #LOWER
+ * @model literal="<"
+ * @generated
+ * @ordered
+ */
+ public static final int LOWER_VALUE = 0;
+
+ /**
+ * The '<em><b>GREATER EQ</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>GREATER EQ</b></em>' literal object isn't
+ * clear, there really should be more of a description here...
+ *
+ * <!-- end-user-doc -->
+ *
+ * @see #GREATER_EQ
+ * @model literal=">="
+ * @generated
+ * @ordered
+ */
+ public static final int GREATER_EQ_VALUE = 0;
+
+ /**
+ * The '<em><b>LOWER EQ</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>LOWER EQ</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ *
+ * <!-- end-user-doc -->
+ *
+ * @see #LOWER_EQ
+ * @model literal="<="
+ * @generated
+ * @ordered
+ */
+ public static final int LOWER_EQ_VALUE = 0;
+
+ /**
+ * The '<em><b>NOT EQ</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>NOT EQ</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ *
+ * <!-- end-user-doc -->
+ *
+ * @see #NOT_EQ
+ * @model literal="<>"
+ * @generated
+ * @ordered
+ */
+ public static final int NOT_EQ_VALUE = 0;
+
+ /**
+ * An array of all the '<em><b>LComparator Type</b></em>' enumerators. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static final CompareType[] VALUES_ARRAY = new CompareType[] {
+ EQUALS, GREATER, LOWER, GREATER_EQ, LOWER_EQ, NOT_EQ, };
+
+ /**
+ * A public read-only list of all the '<em><b>LComparator Type</b></em>'
+ * enumerators. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final List<CompareType> VALUES = Collections
+ .unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>LComparator Type</b></em>' literal with the specified
+ * literal value. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param literal the literal
+ * @return the compare type
+ * @generated
+ */
+ public static CompareType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ CompareType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>LComparator Type</b></em>' literal with the specified
+ * name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param name the name
+ * @return the by name
+ * @generated
+ */
+ public static CompareType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ CompareType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>LComparator Type</b></em>' literal with the specified
+ * integer value. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value the value
+ * @return the compare type
+ * @generated
+ */
+ public static CompareType get(int value) {
+ switch (value) {
+ case EQUALS_VALUE:
+ return EQUALS;
+ }
+ 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 -->
+ *
+ * @param value the value
+ * @param name the name
+ * @param literal the literal
+ * @generated
+ */
+ private CompareType(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->.
+ *
+ * @return the value
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->.
+ *
+ * @return the name
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->.
+ *
+ * @return the literal
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string
+ * representation. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the string
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} // CompareType
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Constraint.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Constraint.java
new file mode 100644
index 0000000..804d7e8
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Constraint.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation adds a constraint on a relation. Only references to objects
+ * are allowed, that match the constraint.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface Constraint {
+
+ /**
+ * The property of the target type of the reference that must match the enum
+ * literal.
+ *
+ * @return the target enum constraint[]
+ */
+ TargetEnumConstraint[] constraints();
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Dirty.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Dirty.java
new file mode 100644
index 0000000..48b92e2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Dirty.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+
+/**
+ * This annotation marks fields in DTOs, that it is a dirty-indicator boolean
+ * field. If the annotation is present for a DTO, then it is automatically
+ * managed by the {@link ISharedStateContext}.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface Dirty {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DirtyStateAdapter.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DirtyStateAdapter.java
new file mode 100644
index 0000000..a8170e8
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DirtyStateAdapter.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A property change listener which may be added to several dto instances. It
+ * sets the dirty flag on a dto and keeps an additional dirty flag for the whole
+ * structure, where the adapter was added.
+ */
+public class DirtyStateAdapter implements PropertyChangeListener, Serializable {
+
+ private static final long serialVersionUID = 3286204198033608643L;
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DirtyStateAdapter.class);
+
+ /** The dirty. */
+ private boolean dirty;
+
+ /** The active. */
+ private boolean active;
+
+ /* (non-Javadoc)
+ * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+ */
+ @Override
+ public void propertyChange(PropertyChangeEvent event) {
+ if (!active) {
+ return;
+ }
+ Object object = event.getSource();
+ Class<?> objClass = object.getClass();
+ try {
+ if (DtoUtils.isDisposeField(objClass, event.getPropertyName())) {
+ return;
+ }
+ // dirty field not forwarded to handle dirty
+ if (DtoUtils.isDirtyField(objClass, event.getPropertyName())) {
+ return;
+ }
+ } catch (SecurityException ignoreIt) {
+ LOGGER.error("{}", ignoreIt);
+ }
+
+ handleDirty(event);
+ }
+
+ /**
+ * True, if the adapter handles notifications.
+ *
+ * @return true, if is active
+ */
+ public boolean isActive() {
+ return active;
+ }
+
+ /**
+ * True, if the adapter handles notifications.
+ *
+ * @param active the new active
+ */
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ /**
+ * Sets the dirty flag.
+ *
+ * @param event the event
+ */
+ protected void handleDirty(PropertyChangeEvent event) {
+ Object object = event.getSource();
+ // set the dirty flag to true if available
+ DtoUtils.invokeDirtySetter(object, true);
+
+ dirty = true;
+ }
+
+ /**
+ * Returns true, if the dto structure became dirty.
+ *
+ * @return true, if is dirty
+ */
+ public boolean isDirty() {
+ return dirty;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Dispose.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Dispose.java
new file mode 100644
index 0000000..f31b5bc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Dispose.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in JPA entities and DTOs, that the field is the
+ * "disposal" indicator. If that value changed to true, the object can be
+ * removed from any internal caches.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface Dispose {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainDescription.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainDescription.java
new file mode 100644
index 0000000..f93c7c5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainDescription.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in JPA entities and DTOs, that the content is a
+ * human readable domain description. For instance the description of a product.<br>
+ * Since descriptions may be based on many field values, this annotation can
+ * also be used for getter-methods. If a getter is annotated with
+ *
+ * #DomainDescription, the getter is used to access the description for that
+ * instance.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface DomainDescription {
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainEmbedded.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainEmbedded.java
new file mode 100644
index 0000000..964415d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainEmbedded.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in JPA entities and DTOs, that the content is
+ * embedded. So UIs do not have to provide search fields for it, but need to
+ * inline its fields into a form.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface DomainEmbedded {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainKey.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainKey.java
new file mode 100644
index 0000000..1c53bd1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainKey.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in JPA entities and DTOs, that the content is a
+ * human readable domain key. For instance the number of a product.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface DomainKey {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainReference.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainReference.java
new file mode 100644
index 0000000..8d8ad84
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DomainReference.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in JPA entities and DTOs, that the content is
+ * reference to another Bean. So UIs may provide a search dialog for it.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface DomainReference {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DtoUtils.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DtoUtils.java
new file mode 100644
index 0000000..39c6e12
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DtoUtils.java
@@ -0,0 +1,611 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang.reflect.MethodUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Class DtoUtils.
+ */
+public class DtoUtils {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory.getLogger(DtoUtils.class);
+
+ /** The infos. */
+ private static Map<Class<?>, Info> INFOS = Collections.synchronizedMap(new HashMap<Class<?>, DtoUtils.Info>());
+
+ /**
+ * Returns the dispose field. Field annotated with {@link Dispose}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the dispose field
+ */
+ public static Field getDisposeField(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getDisposeField();
+ }
+
+ /**
+ * Returns the dispose field. Field annotated with {@link Dirty}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the dirty field
+ */
+ public static Field getDirtyField(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getDirtyField();
+ }
+
+ /**
+ * Returns the domain key field. Field annotated with {@link DomainKey}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the domain key field
+ */
+ public static Field getDomainKeyField(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getDomainKeyField();
+ }
+
+ /**
+ * Returns the id field. Field annotated with {@link Id}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the id field
+ */
+ public static Field getIdField(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getIdField();
+ }
+
+ /**
+ * Returns the id key field. Field annotated with {@link Id}.
+ *
+ * @param instance
+ * the instance
+ * @param idProperty
+ * the id property
+ * @return the value
+ */
+ public static Object getValue(Object instance, String idProperty) {
+ try {
+ BeanInfo beanInfo = Introspector.getBeanInfo(instance.getClass());
+ for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+ if (pd.getName().equals(idProperty)) {
+ Method idMethod = pd.getReadMethod();
+ return idMethod.invoke(instance);
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error("{}", e);
+ }
+ return null;
+ }
+
+ /**
+ * Returns the domain description field. Field annotated with
+ * #DomainDescription.
+ *
+ * @param clazz
+ * the clazz
+ * @return the domain description field
+ */
+ public static Field getDomainDescriptionField(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getDomainDescriptionField();
+ }
+
+ /**
+ * Returns the dispose field. Field annotated with {@link Dirty}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the dirty getter
+ */
+ public static Method getDirtyGetter(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getDirtyGetter();
+ }
+
+ /**
+ * Returns the dispose field. Field annotated with {@link Dirty}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the dirty setter
+ */
+ public static Method getDirtySetter(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getDirtySetter();
+ }
+
+ /**
+ * Returns the dispose method. Method annotated with {@link Dispose}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the dispose method
+ */
+ public static Method getDisposeMethod(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getDisposeMethod();
+ }
+
+ /**
+ * Returns true, if the given field is a dispose field.
+ *
+ * @param clazz
+ * the clazz
+ * @param fieldName
+ * the field name
+ * @return true, if is dispose field
+ */
+ public static boolean isDisposeField(Class<?> clazz, String fieldName) {
+ Info info = getInfo(clazz);
+ return info.getDisposeField() != null ? info.getDisposeField().getName().equals(fieldName) : false;
+ }
+
+ /**
+ * Returns true, if the given field is a dirty field. Dirty fields indicate
+ * that the dto is dirty.
+ *
+ * @param clazz
+ * the clazz
+ * @param fieldName
+ * the field name
+ * @return true, if is dirty field
+ */
+ public static boolean isDirtyField(Class<?> clazz, String fieldName) {
+ Info info = getInfo(clazz);
+ return info.getDirtyField() != null ? info.getDirtyField().getName().equals(fieldName) : false;
+ }
+
+ /**
+ * Returns true, if the given method is a dispose method.
+ *
+ * @param clazz
+ * the clazz
+ * @param methodName
+ * the method name
+ * @return true, if is dispose method
+ */
+ public static boolean isDisposeMethod(Class<?> clazz, String methodName) {
+ Info info = getInfo(clazz);
+ return info.getDisposeField() != null ? info.getDisposeMethod().getName().equals(methodName) : false;
+ }
+
+ /**
+ * Tries to invoke the dispose method.
+ *
+ * @param obj
+ * the obj
+ * @return true, if the method could be invoked. False otherwise.
+ */
+ public static boolean invokeDisposeMethod(Object obj) {
+ Info info = getInfo(obj.getClass());
+ if (info != null && info.getDisposeMethod() != null) {
+ try {
+ info.getDisposeMethod().invoke(obj, new Object[0]);
+ } catch (IllegalAccessException e) {
+ return false;
+ } catch (IllegalArgumentException e) {
+ return false;
+ } catch (InvocationTargetException e) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Tries to invoke the setDirty method.
+ *
+ * @param obj
+ * the obj
+ * @param value
+ * the value
+ * @return true, if the method could be invoked. False otherwise.
+ */
+ public static boolean invokeDirtySetter(Object obj, boolean value) {
+ Info info = getInfo(obj.getClass());
+ if (info != null && info.getDirtySetter() != null) {
+ try {
+ info.getDirtySetter().invoke(obj, new Object[] { value });
+ } catch (IllegalAccessException e) {
+ return false;
+ } catch (IllegalArgumentException e) {
+ return false;
+ } catch (InvocationTargetException e) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Tries to invoke the dirty getter. If there is no dirty getter available,
+ * the method throws an {@link IllegalAccessException}.
+ *
+ * @param obj
+ * the obj
+ * @return true, if is dirty
+ * @throws IllegalAccessException
+ * the illegal access exception
+ */
+ public static boolean isDirty(Object obj) throws IllegalAccessException {
+ return invokeDirtyGetter(obj);
+ }
+
+ /**
+ * Tries to invoke the isDirty method.
+ *
+ * @param obj
+ * the obj
+ * @return true, if the method could be invoked. False otherwise.
+ * @throws IllegalAccessException
+ * the illegal access exception
+ */
+ public static boolean invokeDirtyGetter(Object obj) throws IllegalAccessException {
+ Info info = getInfo(obj.getClass());
+ if (info != null && info.getDirtySetter() != null) {
+ try {
+ return (Boolean) info.getDirtyGetter().invoke(obj, new Object[0]);
+ } catch (IllegalAccessException e) {
+ } catch (IllegalArgumentException e) {
+ } catch (InvocationTargetException e) {
+ }
+ }
+ throw new IllegalAccessException("Not a valid call");
+ }
+
+ /**
+ * Returns the info for the given class.
+ *
+ * @param clazz
+ * the clazz
+ * @return the info
+ */
+ protected static Info getInfo(Class<?> clazz) {
+ Info info = INFOS.get(clazz);
+ if (info == null) {
+ info = createInfo(clazz);
+ }
+ return info;
+ }
+
+ /**
+ * Creates a new info.
+ *
+ * @param clazz
+ * the clazz
+ * @return info
+ */
+ private static Info createInfo(Class<?> clazz) {
+ Info info = new Info();
+ applyFieldInfo(clazz, info);
+ applyMethodInfo(clazz, info);
+
+ INFOS.put(clazz, info);
+
+ return info;
+ }
+
+ /**
+ * Returns the adapter which has proper type from the given dto. Or
+ * <code>null</code> if no adapter is available.
+ *
+ * @param <A>
+ * the generic type
+ * @param type
+ * the type
+ * @param dto
+ * the dto
+ * @return the adapter
+ */
+ @SuppressWarnings("unchecked")
+ public static <A> A getAdapter(Class<A> type, Object dto) {
+ if (type == null || dto == null) {
+ return null;
+ }
+ Info info = getInfo(dto.getClass());
+ if (info.getPropertyChangeSupportField() == null) {
+ return null;
+ }
+
+ try {
+ info.getPropertyChangeSupportField().setAccessible(true);
+ PropertyChangeSupport changeSupport = (PropertyChangeSupport) info.getPropertyChangeSupportField().get(dto);
+ if (changeSupport == null) {
+ return null;
+ }
+
+ for (PropertyChangeListener listener : changeSupport.getPropertyChangeListeners()) {
+ if (type.isAssignableFrom(listener.getClass())) {
+ return (A) listener;
+ }
+ }
+ } catch (IllegalArgumentException e) {
+ LOGGER.error("{}", e);
+ } catch (IllegalAccessException e) {
+ LOGGER.error("{}", e);
+ }
+ return null;
+ }
+
+ /**
+ * Registers the adapter as a property changed listener.
+ *
+ * @param adapter
+ * the adapter
+ * @param dto
+ * the dto
+ */
+ public static void registerAdapter(PropertyChangeListener adapter, Object dto) {
+ if (adapter == null || dto == null) {
+ return;
+ }
+
+ try {
+ MethodUtils.invokeMethod(dto, "addPropertyChangeListener", adapter);
+ } catch (SecurityException e) {
+ LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+ } catch (IllegalAccessException e) {
+ LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+ } catch (IllegalArgumentException e) {
+ LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+ } catch (InvocationTargetException e) {
+ LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+ } catch (NoSuchMethodException e) {
+ LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+ }
+ }
+
+ /**
+ * Applies all required field infos to the info object.
+ *
+ * @param clazz
+ * the clazz
+ * @param info
+ * the info
+ */
+ private static void applyFieldInfo(Class<?> clazz, Info info) {
+ try {
+ for (Field field : clazz.getDeclaredFields()) {
+ if (field.getAnnotation(Dispose.class) != null) {
+ info.disposeField = field;
+ }
+ if (field.getAnnotation(DomainKey.class) != null) {
+ info.domainKeyField = field;
+ }
+ if (field.getAnnotation(DomainDescription.class) != null) {
+ info.domainDescriptionField = field;
+ }
+ if (field.getAnnotation(Id.class) != null) {
+ info.idField = field;
+ }
+
+ if (field.getType() == PropertyChangeSupport.class) {
+ info.propertyChangeSupportField = field;
+ }
+
+ if (field.getAnnotation(Dirty.class) != null) {
+ info.dirtyField = field;
+
+ try {
+ BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
+ for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+ if (pd.getName().equals(info.dirtyField.getName())) {
+ info.dirtyPropertyDescriptor = pd;
+ break;
+ }
+ }
+ } catch (IntrospectionException e) {
+ LOGGER.error("{}", e);
+ }
+ }
+ if (info.disposeField != null && info.dirtyField != null && info.domainKeyField != null
+ && info.domainDescriptionField != null && info.idField != null) {
+ break;
+ }
+ }
+
+ if (info.disposeField == null || info.domainKeyField == null || info.domainDescriptionField == null
+ || info.idField == null) {
+ Class<?> superClass = clazz.getSuperclass();
+ if (superClass != null) {
+ applyFieldInfo(superClass, info);
+ }
+ }
+ } catch (SecurityException e) {
+ LOGGER.error("{}", e);
+ }
+ }
+
+ /**
+ * Applies all required field infos to the info object.
+ *
+ * @param clazz
+ * the clazz
+ * @param info
+ * the info
+ */
+ private static void applyMethodInfo(Class<?> clazz, Info info) {
+ try {
+ for (Method method : clazz.getDeclaredMethods()) {
+ if (method.getAnnotation(Dispose.class) != null) {
+ info.disposeMethod = method;
+ break;
+ }
+ }
+
+ if (info.disposeMethod == null) {
+ Class<?> superClass = clazz.getSuperclass();
+ if (superClass != null) {
+ applyMethodInfo(superClass, info);
+ }
+ }
+ } catch (SecurityException e) {
+ LOGGER.error("{}", e);
+ }
+ }
+
+ /**
+ * Find field.
+ *
+ * @param clazz
+ * the clazz
+ * @param name
+ * the name
+ * @return the field
+ */
+ protected Field findField(Class<?> clazz, String name) {
+ try {
+ Field field = clazz.getDeclaredField(name);
+ return field;
+ } catch (NoSuchFieldException e) {
+ Class<?> superClass = clazz.getSuperclass();
+ if (superClass != null) {
+ return findField(superClass, name);
+ }
+ } catch (SecurityException e) {
+ LOGGER.error("{}", e);
+ }
+ return null;
+ }
+
+ /**
+ * The Class Info.
+ */
+ private static class Info {
+
+ /** The property change support field. */
+ private Field propertyChangeSupportField;
+
+ /** The dispose field. */
+ private Field disposeField;
+
+ /** The dispose method. */
+ private Method disposeMethod;
+
+ /** The id field. */
+ private Field idField;
+
+ /** The dirty field. */
+ private Field dirtyField;
+
+ /** The dirty property descriptor. */
+ private PropertyDescriptor dirtyPropertyDescriptor;
+
+ /** The domain key field. */
+ private Field domainKeyField;
+
+ /** The domain description field. */
+ private Field domainDescriptionField;
+
+ /**
+ * Gets the dispose field.
+ *
+ * @return the dispose field
+ */
+ public Field getDisposeField() {
+ return disposeField;
+ }
+
+ /**
+ * Gets the dirty field.
+ *
+ * @return the dirty field
+ */
+ public Field getDirtyField() {
+ return dirtyField;
+ }
+
+ /**
+ * Gets the dirty getter.
+ *
+ * @return the dirty getter
+ */
+ public Method getDirtyGetter() {
+ return dirtyPropertyDescriptor != null ? dirtyPropertyDescriptor.getReadMethod() : null;
+ }
+
+ /**
+ * Gets the dirty setter.
+ *
+ * @return the dirty setter
+ */
+ public Method getDirtySetter() {
+ return dirtyPropertyDescriptor != null ? dirtyPropertyDescriptor.getWriteMethod() : null;
+ }
+
+ /**
+ * Gets the dispose method.
+ *
+ * @return the dispose method
+ */
+ public Method getDisposeMethod() {
+ return disposeMethod;
+ }
+
+ /**
+ * Gets the domain key field.
+ *
+ * @return the domain key field
+ */
+ public Field getDomainKeyField() {
+ return domainKeyField;
+ }
+
+ /**
+ * Gets the domain description field.
+ *
+ * @return the domain description field
+ */
+ public Field getDomainDescriptionField() {
+ return domainDescriptionField;
+ }
+
+ /**
+ * Gets the property change support field.
+ *
+ * @return the property change support field
+ */
+ public Field getPropertyChangeSupportField() {
+ return propertyChangeSupportField;
+ }
+
+ public Field getIdField() {
+ return idField;
+ }
+
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Id.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Id.java
new file mode 100644
index 0000000..2f6f1de
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Id.java
@@ -0,0 +1,29 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in DTOs, that the content is a
+ * primary key.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface Id {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Properties.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Properties.java
new file mode 100644
index 0000000..c83510b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Properties.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation combines many {@link Property} into a compound
+ * one.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface Properties {
+
+ /**
+ * An array of properties.
+ *
+ * @return the property[]
+ */
+ Property[] properties();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/PropertiesUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/PropertiesUtil.java
new file mode 100644
index 0000000..8a2fde7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/PropertiesUtil.java
@@ -0,0 +1,180 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang.reflect.FieldUtils;
+
+/**
+ * The Class PropertiesUtil.
+ */
+public class PropertiesUtil {
+
+ /**
+ * Returns true, if the property in object contains a @Property with the
+ * given key.
+ *
+ * @param object
+ * the object
+ * @param property
+ * the property may be nested
+ * @param key
+ * the key
+ * @return true, if successful
+ */
+ public static boolean hasKey(Object object, String property, String key) {
+ return hasKey(object.getClass(), property, key);
+ }
+
+ /**
+ * Returns true, if the property in clazz contains a @Property with the
+ * given key.
+ *
+ * @param clazz
+ * the clazz
+ * @param property
+ * the property may be nested
+ * @param key
+ * the key
+ * @return true, if successful
+ */
+ public static boolean hasKey(Class<?> clazz, String property, String key) {
+ return getValue(clazz, property, key) != null;
+ }
+
+ /**
+ * Returns the value of @Property, from the property in object containing a @Property
+ * with the given key.
+ *
+ * @param object
+ * the object
+ * @param property
+ * the property may be nested
+ * @param key
+ * the key
+ * @return the value
+ */
+ public static String getValue(Object object, String property, String key) {
+ return getValue(object.getClass(), property, key);
+ }
+
+ /**
+ * Returns the value of @Property, from the property in clazz containing a @Property
+ * with the given key.
+ *
+ * @param clazz
+ * the clazz
+ * @param property
+ * the property may be nested
+ * @param key
+ * the key
+ * @return the value
+ */
+ public static String getValue(Class<?> clazz, String property, String key) {
+ Field f = getFieldWithNested(clazz, property);
+ if (f == null) {
+ return null;
+ }
+
+ Properties props = f.getAnnotation(Properties.class);
+ if (props == null) {
+ return null;
+ }
+
+ for (Property prop : props.properties()) {
+ if (prop.key().equals(key)) {
+ return prop.value();
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the field, based on the property. Properties may be nested.
+ *
+ * @param clazz
+ * @param property
+ * @return
+ */
+ protected static Field getFieldWithNested(Class<?> clazz, String property) {
+ Field result = null;
+ if (property.contains(".")) {
+ // first top-level property, then go deeper in a loop
+ Class<?> propertyClass = clazz;
+ String[] tokens = property.split("\\.");
+ for (int i = 0; i < tokens.length; i++) {
+ String token = tokens[i].trim();
+ result = FieldUtils.getField(propertyClass, token, true);
+ if (result == null) {
+ throw new IllegalStateException(String.format(
+ "Can not access %s for %s", property,
+ clazz.getName()));
+ }
+ propertyClass = result.getType();
+ }
+ } else {
+ result = FieldUtils.getField(clazz, property, true);
+ }
+ return result;
+ }
+
+ /**
+ * Returns a map with all key value pairs contained in @Properties.
+ *
+ * @param object
+ * the object
+ * @param property
+ * the property may be nested
+ * @param key
+ * the key
+ * @return the properties
+ */
+ public static Map<String, String> getProperties(Object object,
+ String property, String key) {
+ return getProperties(object.getClass(), property, key);
+ }
+
+ /**
+ * Returns a map with all key value pairs contained in @Properties.
+ *
+ * @param clazz
+ * the clazz
+ * @param property
+ * the property may be nested
+ * @param key
+ * the key
+ * @return the properties
+ */
+ public static Map<String, String> getProperties(Class<?> clazz,
+ String property, String key) {
+ Field f = getFieldWithNested(clazz, property);
+ if (f == null) {
+ return null;
+ }
+
+ Properties props = f.getAnnotation(Properties.class);
+ if (props == null) {
+ return null;
+ }
+
+ Map<String, String> result = new HashMap<String, String>();
+ for (Property prop : props.properties()) {
+ result.put(prop.key(), prop.value());
+ }
+
+ return result;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Property.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Property.java
new file mode 100644
index 0000000..79be768
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Property.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation adds a key value pair for further processing.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface Property {
+
+ /**
+ * The key of the property.
+ *
+ * @return the string
+ */
+ String key();
+
+ /**
+ * The value of the property.
+ *
+ * @return the string
+ */
+ String value();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/TargetEnumConstraint.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/TargetEnumConstraint.java
new file mode 100644
index 0000000..3918830
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/TargetEnumConstraint.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This annotation adds a constraint on a relation. Only references to objects
+ * are allowed, that match the constraint.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface TargetEnumConstraint {
+
+ /**
+ * The property of the target type of the reference that must match the enum
+ * literal.
+ *
+ * @return the string
+ */
+ String targetProperty();
+
+ /**
+ * The enum class used to get the enum literal.
+ *
+ * @return the class
+ */
+ Class<?> enumClass();
+
+ /**
+ * The name of the enum literal that is used as a filter.
+ *
+ * @return the string
+ */
+ String enumLiteral();
+
+ /**
+ * The compareType used to execute the filter.
+ *
+ * @return the compare type
+ */
+ CompareType compareType() default CompareType.EQUALS;
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/TargetEnumConstraints.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/TargetEnumConstraints.java
new file mode 100644
index 0000000..03b89eb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/TargetEnumConstraints.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This annotation combines many {@link TargetEnumConstraint} into a compound
+ * one.
+ */
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface TargetEnumConstraints {
+
+ /**
+ * An array of constraints.
+ *
+ * @return the target enum constraint[]
+ */
+ TargetEnumConstraint[] constraints();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/coordination/CoordinationManager.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/coordination/CoordinationManager.java
new file mode 100644
index 0000000..7651d68
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/coordination/CoordinationManager.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.coordination;
+
+import java.util.Map;
+import java.util.UUID;
+
+import org.eclipse.osbp.runtime.common.state.SharedStateUnitOfWork;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.service.coordinator.Coordination;
+import org.osgi.service.coordinator.Coordinator;
+import org.osgi.util.tracker.ServiceTracker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Helper methods for OSGi coordination.
+ */
+public class CoordinationManager {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(CoordinationManager.class);
+
+ /** The tracker. */
+ private ServiceTracker<Coordinator, Coordinator> tracker;
+
+ /**
+ * Instantiates a new coordination manager.
+ */
+ public CoordinationManager() {
+
+ }
+
+ /**
+ * Returns the current coordination or <code>null</code> if no current
+ * coordination is available.
+ *
+ * @return the current coordination
+ */
+ public static Coordination getCurrentCoordination() {
+ ServiceTracker<Coordinator, Coordinator> tracker = null;
+ try {
+ tracker = new ServiceTracker<Coordinator, Coordinator>(
+ FrameworkUtil.getBundle(CoordinationManager.class)
+ .getBundleContext(), Coordinator.class, null);
+ tracker.open();
+ Coordinator coordinator = tracker.waitForService(10);
+ if (coordinator != null) {
+ return coordinator.peek();
+ } else {
+ LOGGER.error("No coordination service available!");
+ }
+ } catch (InterruptedException e) {
+ } finally {
+ if (tracker != null) {
+ tracker.close();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns a new implicit coordination and makes it the current
+ * coordination. Returns <code>null</code> if no {@link Coordinator} is
+ * available.
+ * <p>
+ * <b>Attention:</b> Do not forget to release the manager! This will release
+ * the CoordinatorService. Pending coordinations will be ended abnormally in
+ * case that no other manager will hold a reference to the
+ * CoordinationService.
+ *
+ * @param properties the properties
+ * @return the coordination
+ */
+ public Coordination createCurrentCoordination(
+ Map<Class<?>, Object> properties) {
+ try {
+ tracker = new ServiceTracker<Coordinator, Coordinator>(
+ FrameworkUtil.getBundle(SharedStateUnitOfWork.class)
+ .getBundleContext(), Coordinator.class, null);
+ tracker.open();
+ Coordinator coordinator = tracker.waitForService(10);
+ if (coordinator != null) {
+ Coordination peek = coordinator.begin(UUID.randomUUID()
+ .toString(), 0);
+ peek.getVariables().putAll(properties);
+ return peek;
+ } else {
+ LOGGER.error("No coordination service available!");
+ }
+ } catch (InterruptedException e) {
+ } finally {
+ }
+
+ return null;
+ }
+
+ /**
+ * Releases the {@link Coordinator} service.
+ */
+ public void release() {
+ if (tracker != null) {
+ tracker.close();
+ tracker = null;
+ }
+ }
+
+ /**
+ * Returns the property with the given key from the current
+ * "implicit Coordination". Or <code>null</code> if property is not
+ * available.
+ *
+ * @param key the key
+ * @return the property from current coordination
+ */
+ public static Object getPropertyFromCurrentCoordination(Class<?> key) {
+ Coordination current = getCurrentCoordination();
+ if (current != null) {
+ return current.getVariables().get(key);
+ }
+ return null;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/IDataSourceService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/IDataSourceService.java
new file mode 100644
index 0000000..04ceb4d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/IDataSourceService.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.datasource;
+
+import java.util.HashMap;
+import java.util.List;
+
+import javax.sql.DataSource;
+
+import org.eclipse.osbp.runtime.common.datasource.config.CommonDatasourceConfig;
+
+public interface IDataSourceService {
+
+ List<DataSourceInfo> getDataSourcInfos(String filter);
+
+ List<DataSource> getDataSources(String filter);
+
+ void createDataSource(CommonDatasourceConfig config);
+
+ public static class DataSourceInfo {
+ private HashMap<String, String> properties;
+
+ private String pid;
+
+ private String url;
+
+ private String databaseName;
+
+ public DataSourceInfo() {
+ properties = new HashMap<String, String>();
+ }
+
+ public HashMap<String, String> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(HashMap<String, String> properties) {
+ this.properties = properties;
+ }
+
+ /**
+ * @return the pid
+ */
+ public String getPid() {
+ return pid;
+ }
+
+ /**
+ * @return the url
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * @return the databaseName
+ */
+ public String getDatabaseName() {
+ return databaseName;
+ }
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/ClientDerbyDatasourceConfig.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/ClientDerbyDatasourceConfig.java
new file mode 100644
index 0000000..b1f7c98
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/ClientDerbyDatasourceConfig.java
@@ -0,0 +1,278 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.datasource.config;
+
+import java.util.HashMap;
+
+import org.eclipse.osbp.runtime.common.util.OSGiUtil;
+
+public class ClientDerbyDatasourceConfig extends CommonDatasourceConfig {
+
+ public ClientDerbyDatasourceConfig() {
+ super();
+ DRIVER_NAME = "org.apache.derby.jdbc.ClientDriver";
+ properties.put(OSGI_DRIVER_NAME, DRIVER_NAME);
+ }
+
+ public enum Keys {
+ CONNECTION_ATTRIBUTES {
+ public String toString() {
+ return "connectionAttributes";
+ }
+ },
+ CREATE_DATABASE {
+ public String toString() {
+ return "createDatabase";
+ }
+ },
+ DATASOURCE_NAME {
+ public String toString() {
+ return "dataSourceName";
+ }
+ },
+ DATABASE_NAME {
+ public String toString() {
+ return "databaseName";
+ }
+ },
+ DESCRIPTION {
+ public String toString() {
+ return "description";
+ }
+ },
+ LOG_WRITER {
+ public String toString() {
+ return "logWriter";
+ }
+ },
+ LOGIN_TIMEOUT {
+ public String toString() {
+ return "loginTimeout";
+ }
+ },
+ PASSWORD {
+ public String toString() {
+ return "password";
+ }
+ },
+ PORT_NUMBER {
+ public String toString() {
+ return "portNumber";
+ }
+ },
+ RETRIEVE_MESSAGE_TEXT {
+ public String toString() {
+ return "retrieveMessageText";
+ }
+ },
+ SECURITY_MECHANISM {
+ public String toString() {
+ return "securityMechanism";
+ }
+ },
+ SERVER_NAME {
+ public String toString() {
+ return "serverName";
+ }
+ },
+ SHUTDOWN_DATABASE {
+ public String toString() {
+ return "shutdownDatabase";
+ }
+ },
+ SSL {
+ public String toString() {
+ return "ssl";
+ }
+ },
+ TRACE_DIRECTORY {
+ public String toString() {
+ return "traceDirectory";
+ }
+ },
+ TRACE_FILE {
+ public String toString() {
+ return "traceFile";
+ }
+ },
+ TRACE_FILE_APPEND {
+ public String toString() {
+ return "traceFileAppend";
+ }
+ },
+ TRACE_LEVEL {
+ public String toString() {
+ return "traceLevel";
+ }
+ },
+ USER {
+ public String toString() {
+ return "user";
+ }
+ }
+ }
+
+ public void setConnectionAttributes(String input) {
+ setValue(Keys.CONNECTION_ATTRIBUTES.toString(), input);
+ }
+
+ public String getConnectionAttributes() {
+ return getValue(Keys.CONNECTION_ATTRIBUTES.toString());
+ }
+
+ public void setCreateDatabase(String input) {
+ setValue(Keys.CREATE_DATABASE.toString(), input);
+ }
+
+ public String getCreateDatabase() {
+ return getValue(Keys.CREATE_DATABASE.toString());
+ }
+
+ public void setDataBaseName(String input) {
+ setValue(Keys.DATABASE_NAME.toString(), input);
+ }
+
+ public String getDataBaseName() {
+ return getValue(Keys.DATABASE_NAME.toString());
+ }
+
+ public void setDataSourceName(String input) {
+ setValue(Keys.DATASOURCE_NAME.toString(), input);
+ }
+
+ public String getDataSourceName() {
+ return getValue(Keys.DATASOURCE_NAME.toString());
+ }
+
+ public void setDescription(String input) {
+ setValue(Keys.DESCRIPTION.toString(), input);
+ }
+
+ public String getDescription() {
+ return getValue(Keys.DESCRIPTION.toString());
+ }
+
+ public void setLogWriter(String input) {
+ setValue(Keys.LOG_WRITER.toString(), input);
+ }
+
+ public String getLogWriter() {
+ return getValue(Keys.LOG_WRITER.toString());
+ }
+
+ public void setLoginTimeout(String input) {
+ setValue(Keys.LOGIN_TIMEOUT.toString(), input);
+ }
+
+ public String getLoginTimeout() {
+ return getValue(Keys.LOGIN_TIMEOUT.toString());
+ }
+
+ public void setPassword(String input) {
+ setValue(Keys.PASSWORD.toString(), input);
+ }
+
+ public String getPassword() {
+ return getValue(Keys.PASSWORD.toString());
+ }
+
+ public void setPortNumber(String input) {
+ setValue(Keys.PORT_NUMBER.toString(), input);
+ }
+
+ public String getPortNumber() {
+ return getValue(Keys.PORT_NUMBER.toString());
+ }
+
+ public void setRetrieveMessageText(String input) {
+ setValue(Keys.RETRIEVE_MESSAGE_TEXT.toString(), input);
+ }
+
+ public String getRetrieveMessageText() {
+ return getValue(Keys.RETRIEVE_MESSAGE_TEXT.toString());
+ }
+
+ public void setSecurityMechanism(String input) {
+ setValue(Keys.SECURITY_MECHANISM.toString(), input);
+ }
+
+ public String getSecurityMechanism() {
+ return getValue(Keys.SECURITY_MECHANISM.toString());
+ }
+
+ public void setServerName(String input) {
+ setValue(Keys.SERVER_NAME.toString(), input);
+ }
+
+ public String getServerName() {
+ return getValue(Keys.SERVER_NAME.toString());
+ }
+
+ public void setShutdownDatabase(String input) {
+ setValue(Keys.SHUTDOWN_DATABASE.toString(), input);
+ }
+
+ public String getShutdownDatabase() {
+ return getValue(Keys.SHUTDOWN_DATABASE.toString());
+ }
+
+ public void setSsl(String input) {
+ setValue(Keys.SSL.toString(), input);
+ }
+
+ public String getSsl() {
+ return getValue(Keys.SSL.toString());
+ }
+
+ public void setTraceDirectory(String input) {
+ setValue(Keys.TRACE_DIRECTORY.toString(), input);
+ }
+
+ public String getTraceDirectory() {
+ return getValue(Keys.TRACE_DIRECTORY.toString());
+ }
+
+ public void setTraceFile(String input) {
+ setValue(Keys.TRACE_FILE.toString(), input);
+ }
+
+ public String getTraceFile() {
+ return getValue(Keys.TRACE_FILE.toString());
+ }
+
+ public void setTraceFileAppend(String input) {
+ setValue(Keys.TRACE_FILE_APPEND.toString(), input);
+ }
+
+ public String getTraceFileAppend() {
+ return getValue(Keys.TRACE_FILE_APPEND.toString());
+ }
+
+ public void setTraceLevel(String input) {
+ setValue(Keys.TRACE_LEVEL.toString(), input);
+ }
+
+ public String getTraceLevel() {
+ return getValue(Keys.TRACE_LEVEL.toString());
+ }
+
+ public void setUser(String input) {
+ setValue(Keys.USER.toString(), input);
+ }
+
+ public String getUser() {
+ return getValue(Keys.USER.toString());
+ }
+
+ public HashMap<String, String> filterProperties() {
+ return filterProperties(OSGiUtil.getEnumValues(Keys.class));
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/CommonDatasourceConfig.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/CommonDatasourceConfig.java
new file mode 100644
index 0000000..bf5b303
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/CommonDatasourceConfig.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.datasource.config;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+import org.eclipse.osbp.runtime.common.util.OSGiUtil;
+
+public abstract class CommonDatasourceConfig {
+ public static String DRIVER_NAME = "";
+ private static String EMPTY_STRING = "";
+ protected static String OSGI_DRIVER_NAME = "osgi.jdbc.driver.name";
+
+ protected HashMap<String, String> properties;
+
+ public CommonDatasourceConfig() {
+ properties = new HashMap<String, String>();
+ }
+
+ public HashMap<String, String> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(HashMap<String, String> properties) {
+ this.properties = properties;
+ }
+
+ protected void setValue(String key, String value) {
+ if (properties.containsKey(key)) {
+ properties.remove(key);
+ properties.put(key, value);
+ } else {
+ properties.put(key, value);
+ }
+ }
+
+ protected String getValue(String key) {
+ return properties.containsKey(key) ? properties.get(key) : EMPTY_STRING;
+ }
+
+ protected HashMap<String, String> filterProperties(String[] keySet) {
+ for (String key : properties.keySet()) {
+ if (!Arrays.asList(keySet).contains(key)) {
+ properties.remove(key);
+ }
+ }
+ return properties;
+ };
+
+ public static String[] getPropertyKeysForDriver(String driverName) {
+ if (EmbeddedDerbyDatasourceConfig.DRIVER_NAME.equals(driverName)) {
+ return OSGiUtil
+ .getEnumValues(EmbeddedDerbyDatasourceConfig.Keys.class);
+ } else if (ClientDerbyDatasourceConfig.DRIVER_NAME.equals(driverName)) {
+ return OSGiUtil
+ .getEnumValues(ClientDerbyDatasourceConfig.Keys.class);
+ } else if (MySQLDatasourceConfig.DRIVER_NAME.equals(driverName)) {
+ return OSGiUtil
+ .getEnumValues(MySQLDatasourceConfig.Keys.class);
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/EmbeddedDerbyDatasourceConfig.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/EmbeddedDerbyDatasourceConfig.java
new file mode 100644
index 0000000..88a109e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/EmbeddedDerbyDatasourceConfig.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.datasource.config;
+
+import java.util.HashMap;
+
+import org.eclipse.osbp.runtime.common.util.OSGiUtil;
+
+public class EmbeddedDerbyDatasourceConfig extends CommonDatasourceConfig {
+
+ public EmbeddedDerbyDatasourceConfig() {
+ super();
+ DRIVER_NAME = "org.apache.derby.jdbc.EmbeddedDriver";
+ properties.put(OSGI_DRIVER_NAME, DRIVER_NAME);
+ }
+
+ public enum Keys {
+ ATTRIBUTES_AS_PASSWORD {
+ public String toString() {
+ return "attributesAsPassword";
+ }
+ },
+ CONNECTION_ATTRIBUTES {
+ public String toString() {
+ return "connectionAttributes";
+ }
+ },
+ CREATE_DATABASE {
+ public String toString() {
+ return "createDatabase";
+ }
+ },
+ DATABASE_NAME {
+ public String toString() {
+ return "databaseName";
+ }
+ },
+ DATASOURCE_NAME {
+ public String toString() {
+ return "dataSourceName";
+ }
+ },
+ DESCRIPTION {
+ public String toString() {
+ return "description";
+ }
+ },
+ LOG_WRITER {
+ public String toString() {
+ return "logWriter";
+ }
+ },
+ LOGIN_TIMEOUT {
+ public String toString() {
+ return "loginTimeout";
+ }
+ },
+ PASSWORD {
+ public String toString() {
+ return "password";
+ }
+ },
+ SHUTDOWN_DATABASE {
+ public String toString() {
+ return "shutdownDatabase";
+ }
+ },
+ USER {
+ public String toString() {
+ return "user";
+ }
+ }
+ }
+
+ public void setAttributesAsPassword(String input) {
+ setValue(Keys.ATTRIBUTES_AS_PASSWORD.toString(), input);
+ }
+
+ public String getAttributesAsPassword() {
+ return getValue(Keys.ATTRIBUTES_AS_PASSWORD.toString());
+ }
+
+ public void setConnectionAttributes(String input) {
+ setValue(Keys.CONNECTION_ATTRIBUTES.toString(), input);
+ }
+
+ public String getConnectionAttributes() {
+ return getValue(Keys.CONNECTION_ATTRIBUTES.toString());
+ }
+
+ public void setCreateDatabase(String input) {
+ setValue(Keys.CREATE_DATABASE.toString(), input);
+ }
+
+ public String getCreateDatabase() {
+ return getValue(Keys.CREATE_DATABASE.toString());
+ }
+
+ public void setDataBaseName(String input) {
+ setValue(Keys.DATABASE_NAME.toString(), input);
+ }
+
+ public String getDataBaseName() {
+ return getValue(Keys.DATABASE_NAME.toString());
+ }
+
+ public void setDataSourceName(String input) {
+ setValue(Keys.DATASOURCE_NAME.toString(), input);
+ }
+
+ public String getDataSourceName() {
+ return getValue(Keys.DATASOURCE_NAME.toString());
+ }
+
+ public void setDescription(String input) {
+ setValue(Keys.DESCRIPTION.toString(), input);
+ }
+
+ public String getDescription() {
+ return getValue(Keys.DESCRIPTION.toString());
+ }
+
+ public void setLogWriter(String input) {
+ setValue(Keys.LOG_WRITER.toString(), input);
+ }
+
+ public String getLogWriter() {
+ return getValue(Keys.LOG_WRITER.toString());
+ }
+
+ public void setLoginTimeout(String input) {
+ setValue(Keys.LOGIN_TIMEOUT.toString(), input);
+ }
+
+ public String getLoginTimeout() {
+ return getValue(Keys.LOGIN_TIMEOUT.toString());
+ }
+
+ public void setPassword(String input) {
+ setValue(Keys.PASSWORD.toString(), input);
+ }
+
+ public String getPassword() {
+ return getValue(Keys.PASSWORD.toString());
+ }
+
+ public void setShutdownDatabase(String input) {
+ setValue(Keys.SHUTDOWN_DATABASE.toString(), input);
+ }
+
+ public String getShutdownDatabase() {
+ return getValue(Keys.SHUTDOWN_DATABASE.toString());
+ }
+
+ public void setUser(String input) {
+ setValue(Keys.USER.toString(), input);
+ }
+
+ public String getUser() {
+ return getValue(Keys.USER.toString());
+ }
+
+ public HashMap<String, String> filterProperties() {
+ return filterProperties(OSGiUtil.getEnumValues(Keys.class));
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/MySQLDatasourceConfig.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/MySQLDatasourceConfig.java
new file mode 100644
index 0000000..b57808f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/datasource/config/MySQLDatasourceConfig.java
@@ -0,0 +1,2830 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.datasource.config;
+
+import java.util.HashMap;
+
+import org.eclipse.osbp.runtime.common.util.OSGiUtil;
+
+public class MySQLDatasourceConfig extends CommonDatasourceConfig {
+
+ public MySQLDatasourceConfig() {
+ super();
+ DRIVER_NAME = "com.mysql.jdbc.Driver";
+ properties.put(OSGI_DRIVER_NAME, DRIVER_NAME);
+ }
+
+ public enum Keys {
+ ALLOW_LOAD_LOCAL_INFILE {
+ public String toString() {
+ return "allowLoadLocalInfile";
+ }
+ },
+
+ ALLOW_MASTER_DOWN_CONNECTIONS {
+ public String toString() {
+ return "allowMasterDownConnections";
+ }
+ },
+
+ ALLOW_MULTI_QUERIES {
+ public String toString() {
+ return "allowMultiQueries";
+ }
+ },
+
+ ALLOW_NAN_AND_INF {
+ public String toString() {
+ return "allowNanAndInf";
+ }
+ },
+
+ ALLOW_PUBLIC_KEY_RETRIEVAL {
+ public String toString() {
+ return "allowPublicKeyRetrieval";
+ }
+ },
+
+ ALLOW_URL_IN_LOCAL_INFILE {
+ public String toString() {
+ return "allowUrlInLocalInfile";
+ }
+ },
+
+ ALWAYS_SEND_SET_ISOLATION {
+ public String toString() {
+ return "alwaysSendSetIsolation";
+ }
+ },
+
+ AUTHENTICATION_PLUGINS {
+ public String toString() {
+ return "authenticationPlugins";
+ }
+ },
+
+ AUTO_CLOSE_P_STMT_STREAMS {
+ public String toString() {
+ return "autoClosePStmtStreams";
+ }
+ },
+
+ AUTO_DESERIALIZE {
+ public String toString() {
+ return "autoDeserialize";
+ }
+ },
+
+ AUTO_GENERATE_TESTCASE_SCRIPT {
+ public String toString() {
+ return "autoGenerateTestcaseScript";
+ }
+ },
+
+ AUTO_RECONNECT {
+ public String toString() {
+ return "autoReconnect";
+ }
+ },
+
+ AUTO_RECONNECT_FOR_POOLS {
+ public String toString() {
+ return "autoReconnectForPools";
+ }
+ },
+
+ AUTO_SLOW_LOG {
+ public String toString() {
+ return "autoSlowLog";
+ }
+ },
+
+ BLOB_SEND_CHUNK_SIZE {
+ public String toString() {
+ return "blobSendChunkSize";
+ }
+ },
+
+ BLOBS_ARE_STRINGS {
+ public String toString() {
+ return "blobsAreStrings";
+ }
+ },
+
+ CACHE_CALLABLE_STMTS {
+ public String toString() {
+ return "cacheCallableStmts";
+ }
+ },
+
+ CACHE_DEFAULT_TIMEZONE {
+ public String toString() {
+ return "cacheDefaultTimezone";
+ }
+ },
+
+ CACHE_PREP_STMTS {
+ public String toString() {
+ return "cachePrepStmts";
+ }
+ },
+
+ CACHE_RESULT_SET_METADATA {
+ public String toString() {
+ return "cacheResultSetMetadata";
+ }
+ },
+
+ CACHE_SERVER_CONFIGURATION {
+ public String toString() {
+ return "cacheServerConfiguration";
+ }
+ },
+
+ CALLABLE_STMT_CACHE_SIZE {
+ public String toString() {
+ return "callableStmtCacheSize";
+ }
+ },
+
+ CAPITALIZE_TYPE_NAMES {
+ public String toString() {
+ return "capitalizeTypeNames";
+ }
+ },
+
+ CHARACTER_ENCODING {
+ public String toString() {
+ return "characterEncoding";
+ }
+ },
+
+ CHARACTER_SET_RESULTS {
+ public String toString() {
+ return "characterSetResults";
+ }
+ },
+
+ CLIENT_CERTIFICATE_KEY_STORE_PASSWORD {
+ public String toString() {
+ return "clientCertificateKeyStorePassword";
+ }
+ },
+
+ CLIENT_CERTIFICATE_KEY_STORE_TYPE {
+ public String toString() {
+ return "clientCertificateKeyStoreType";
+ }
+ },
+
+ CLIENT_CERTIFICATE_KEY_STORE_URL {
+ public String toString() {
+ return "clientCertificateKeyStoreUrl";
+ }
+ },
+
+ CLIENT_INFO_PROVIDER {
+ public String toString() {
+ return "clientInfoProvider";
+ }
+ },
+
+ CLOB_CHARACTER_ENCODING {
+ public String toString() {
+ return "clobCharacterEncoding";
+ }
+ },
+
+ CLOBBER_STREAMING_RESULTS {
+ public String toString() {
+ return "clobberStreamingResults";
+ }
+ },
+
+ COMPENSATE_ON_DUPLICATE_KEY_UPDATE_COUNTS {
+ public String toString() {
+ return "compensateOnDuplicateKeyUpdateCounts";
+ }
+ },
+
+ CONNECT_TIMEOUT {
+ public String toString() {
+ return "connectTimeout";
+ }
+ },
+
+ CONNECTION_ATTRIBUTES {
+ public String toString() {
+ return "connectionAttributes";
+ }
+ },
+
+ CONNECTION_COLLATION {
+ public String toString() {
+ return "connectionCollation";
+ }
+ },
+
+ CONNECTION_LIFECYCLE_INTERCEPTORS {
+ public String toString() {
+ return "connectionLifecycleInterceptors";
+ }
+ },
+
+ CONTINUE_BATCH_ON_ERROR {
+ public String toString() {
+ return "continueBatchOnError";
+ }
+ },
+
+ CREATE_DATABASE_IF_NOT_EXIST {
+ public String toString() {
+ return "createDatabaseIfNotExist";
+ }
+ },
+
+ DEFAULT_AUTHENTICATION_PLUGIN {
+ public String toString() {
+ return "defaultAuthenticationPlugin";
+ }
+ },
+
+ DEFAULT_FETCH_SIZE {
+ public String toString() {
+ return "defaultFetchSize";
+ }
+ },
+
+ DETECT_CUSTOM_COLLATIONS {
+ public String toString() {
+ return "detectCustomCollations";
+ }
+ },
+
+ DISABLED_AUTHENTICATION_PLUGINS {
+ public String toString() {
+ return "disabledAuthenticationPlugins";
+ }
+ },
+
+ DISCONNECT_ON_EXPIRED_PASSWORDS {
+ public String toString() {
+ return "disconnectOnExpiredPasswords";
+ }
+ },
+
+ DONT_CHECK_ON_DUPLICATE_KEY_UPDATE_IN_S_Q_L {
+ public String toString() {
+ return "dontCheckOnDuplicateKeyUpdateInSQL";
+ }
+ },
+
+ DONT_TRACK_OPEN_RESOURCES {
+ public String toString() {
+ return "dontTrackOpenResources";
+ }
+ },
+
+ DUMP_METADATA_ON_COLUMN_NOT_FOUND {
+ public String toString() {
+ return "dumpMetadataOnColumnNotFound";
+ }
+ },
+
+ DUMP_QUERIES_ON_EXCEPTION {
+ public String toString() {
+ return "dumpQueriesOnException";
+ }
+ },
+
+ DYNAMIC_CALENDARS {
+ public String toString() {
+ return "dynamicCalendars";
+ }
+ },
+
+ ELIDE_SET_AUTO_COMMITS {
+ public String toString() {
+ return "elideSetAutoCommits";
+ }
+ },
+
+ EMPTY_STRINGS_CONVERT_TO_ZERO {
+ public String toString() {
+ return "emptyStringsConvertToZero";
+ }
+ },
+
+ EMULATE_LOCATORS {
+ public String toString() {
+ return "emulateLocators";
+ }
+ },
+
+ EMULATE_UNSUPPORTED_PSTMTS {
+ public String toString() {
+ return "emulateUnsupportedPstmts";
+ }
+ },
+
+ ENABLE_PACKET_DEBUG {
+ public String toString() {
+ return "enablePacketDebug";
+ }
+ },
+
+ ENABLE_QUERY_TIMEOUTS {
+ public String toString() {
+ return "enableQueryTimeouts";
+ }
+ },
+
+ EXCEPTION_INTERCEPTORS {
+ public String toString() {
+ return "exceptionInterceptors";
+ }
+ },
+
+ EXPLAIN_SLOW_QUERIES {
+ public String toString() {
+ return "explainSlowQueries";
+ }
+ },
+
+ FAIL_OVER_READ_ONLY {
+ public String toString() {
+ return "failOverReadOnly";
+ }
+ },
+
+ FUNCTIONS_NEVER_RETURN_BLOBS {
+ public String toString() {
+ return "functionsNeverReturnBlobs";
+ }
+ },
+
+ GATHER_PERF_METRICS {
+ public String toString() {
+ return "gatherPerfMetrics";
+ }
+ },
+
+ GENERATE_SIMPLE_PARAMETER_METADATA {
+ public String toString() {
+ return "generateSimpleParameterMetadata";
+ }
+ },
+
+ GET_PROCEDURES_RETURNS_FUNCTIONS {
+ public String toString() {
+ return "getProceduresReturnsFunctions";
+ }
+ },
+
+ HOLD_RESULTS_OPEN_OVER_STATEMENT_CLOSE {
+ public String toString() {
+ return "holdResultsOpenOverStatementClose";
+ }
+ },
+
+ IGNORE_NON_TX_TABLES {
+ public String toString() {
+ return "ignoreNonTxTables";
+ }
+ },
+
+ INCLUDE_INNODB_STATUS_IN_DEADLOCK_EXCEPTIONS {
+ public String toString() {
+ return "includeInnodbStatusInDeadlockExceptions";
+ }
+ },
+
+ INCLUDE_THREAD_DUMP_IN_DEADLOCK_EXCEPTIONS {
+ public String toString() {
+ return "includeThreadDumpInDeadlockExceptions";
+ }
+ },
+
+ INCLUDE_THREAD_NAMES_AS_STATEMENT_COMMENT {
+ public String toString() {
+ return "includeThreadNamesAsStatementComment";
+ }
+ },
+
+ INITIAL_TIMEOUT {
+ public String toString() {
+ return "initialTimeout";
+ }
+ },
+
+ INTERACTIVE_CLIENT {
+ public String toString() {
+ return "interactiveClient";
+ }
+ },
+
+ JDBC_COMPLIANT_TRUNCATION {
+ public String toString() {
+ return "jdbcCompliantTruncation";
+ }
+ },
+
+ LARGE_ROW_SIZE_THRESHOLD {
+ public String toString() {
+ return "largeRowSizeThreshold";
+ }
+ },
+
+ LOAD_BALANCE_AUTO_COMMIT_STATEMENT_REGEX {
+ public String toString() {
+ return "loadBalanceAutoCommitStatementRegex";
+ }
+ },
+
+ LOAD_BALANCE_AUTO_COMMIT_STATEMENT_THRESHOLD {
+ public String toString() {
+ return "loadBalanceAutoCommitStatementThreshold";
+ }
+ },
+
+ LOAD_BALANCE_BLACKLIST_TIMEOUT {
+ public String toString() {
+ return "loadBalanceBlacklistTimeout";
+ }
+ },
+
+ LOAD_BALANCE_CONNECTION_GROUP {
+ public String toString() {
+ return "loadBalanceConnectionGroup";
+ }
+ },
+
+ LOAD_BALANCE_ENABLE_J_M_X {
+ public String toString() {
+ return "loadBalanceEnableJMX";
+ }
+ },
+
+ LOAD_BALANCE_EXCEPTION_CHECKER {
+ public String toString() {
+ return "loadBalanceExceptionChecker";
+ }
+ },
+
+ LOAD_BALANCE_PING_TIMEOUT {
+ public String toString() {
+ return "loadBalancePingTimeout";
+ }
+ },
+
+ LOAD_BALANCE_S_Q_L_EXCEPTION_SUBCLASS_FAILOVER {
+ public String toString() {
+ return "loadBalanceSQLExceptionSubclassFailover";
+ }
+ },
+
+ LOAD_BALANCE_S_Q_L_STATE_FAILOVER {
+ public String toString() {
+ return "loadBalanceSQLStateFailover";
+ }
+ },
+
+ LOAD_BALANCE_STRATEGY {
+ public String toString() {
+ return "loadBalanceStrategy";
+ }
+ },
+
+ LOAD_BALANCE_VALIDATE_CONNECTION_ON_SWAP_SERVER {
+ public String toString() {
+ return "loadBalanceValidateConnectionOnSwapServer";
+ }
+ },
+
+ LOCAL_SOCKET_ADDRESS {
+ public String toString() {
+ return "localSocketAddress";
+ }
+ },
+
+ LOCATOR_FETCH_BUFFER_SIZE {
+ public String toString() {
+ return "locatorFetchBufferSize";
+ }
+ },
+
+ LOG_SLOW_QUERIES {
+ public String toString() {
+ return "logSlowQueries";
+ }
+ },
+
+ LOG_XA_COMMANDS {
+ public String toString() {
+ return "logXaCommands";
+ }
+ },
+
+ LOGGER {
+ public String toString() {
+ return "logger";
+ }
+ },
+
+ MAINTAIN_TIME_STATS {
+ public String toString() {
+ return "maintainTimeStats";
+ }
+ },
+
+ MAX_ALLOWED_PACKET {
+ public String toString() {
+ return "maxAllowedPacket";
+ }
+ },
+
+ MAX_QUERY_SIZE_TO_LOG {
+ public String toString() {
+ return "maxQuerySizeToLog";
+ }
+ },
+
+ MAX_RECONNECTS {
+ public String toString() {
+ return "maxReconnects";
+ }
+ },
+
+ MAX_ROWS {
+ public String toString() {
+ return "maxRows";
+ }
+ },
+
+ METADATA_CACHE_SIZE {
+ public String toString() {
+ return "metadataCacheSize";
+ }
+ },
+
+ NET_TIMEOUT_FOR_STREAMING_RESULTS {
+ public String toString() {
+ return "netTimeoutForStreamingResults";
+ }
+ },
+
+ NO_ACCESS_TO_PROCEDURE_BODIES {
+ public String toString() {
+ return "noAccessToProcedureBodies";
+ }
+ },
+
+ NO_DATETIME_STRING_SYNC {
+ public String toString() {
+ return "noDatetimeStringSync";
+ }
+ },
+
+ NO_TIMEZONE_CONVERSION_FOR_DATE_TYPE {
+ public String toString() {
+ return "noTimezoneConversionForDateType";
+ }
+ },
+
+ NO_TIMEZONE_CONVERSION_FOR_TIME_TYPE {
+ public String toString() {
+ return "noTimezoneConversionForTimeType";
+ }
+ },
+
+ NULL_CATALOG_MEANS_CURRENT {
+ public String toString() {
+ return "nullCatalogMeansCurrent";
+ }
+ },
+
+ NULL_NAME_PATTERN_MATCHES_ALL {
+ public String toString() {
+ return "nullNamePatternMatchesAll";
+ }
+ },
+
+ OVERRIDE_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY {
+ public String toString() {
+ return "overrideSupportsIntegrityEnhancementFacility";
+ }
+ },
+
+ PACKET_DEBUG_BUFFER_SIZE {
+ public String toString() {
+ return "packetDebugBufferSize";
+ }
+ },
+
+ PAD_CHARS_WITH_SPACE {
+ public String toString() {
+ return "padCharsWithSpace";
+ }
+ },
+
+ PARANOID {
+ public String toString() {
+ return "paranoid";
+ }
+ },
+
+ PARSE_INFO_CACHE_FACTORY {
+ public String toString() {
+ return "parseInfoCacheFactory";
+ }
+ },
+
+ PASSWORD {
+ public String toString() {
+ return "password";
+ }
+ },
+
+ PASSWORD_CHARACTER_ENCODING {
+ public String toString() {
+ return "passwordCharacterEncoding";
+ }
+ },
+
+ PEDANTIC {
+ public String toString() {
+ return "pedantic";
+ }
+ },
+
+ PIN_GLOBAL_TX_TO_PHYSICAL_CONNECTION {
+ public String toString() {
+ return "pinGlobalTxToPhysicalConnection";
+ }
+ },
+
+ POPULATE_INSERT_ROW_WITH_DEFAULT_VALUES {
+ public String toString() {
+ return "populateInsertRowWithDefaultValues";
+ }
+ },
+
+ PREP_STMT_CACHE_SIZE {
+ public String toString() {
+ return "prepStmtCacheSize";
+ }
+ },
+
+ PREP_STMT_CACHE_SQL_LIMIT {
+ public String toString() {
+ return "prepStmtCacheSqlLimit";
+ }
+ },
+
+ PROCESS_ESCAPE_CODES_FOR_PREP_STMTS {
+ public String toString() {
+ return "processEscapeCodesForPrepStmts";
+ }
+ },
+
+ PROFILE_S_Q_L {
+ public String toString() {
+ return "profileSQL";
+ }
+ },
+
+ PROFILE_SQL {
+ public String toString() {
+ return "profileSql";
+ }
+ },
+
+ PROFILER_EVENT_HANDLER {
+ public String toString() {
+ return "profilerEventHandler";
+ }
+ },
+
+ PROPERTIES_TRANSFORM {
+ public String toString() {
+ return "propertiesTransform";
+ }
+ },
+
+ QUERIES_BEFORE_RETRY_MASTER {
+ public String toString() {
+ return "queriesBeforeRetryMaster";
+ }
+ },
+
+ QUERY_TIMEOUT_KILLS_CONNECTION {
+ public String toString() {
+ return "queryTimeoutKillsConnection";
+ }
+ },
+
+ READ_ONLY_PROPAGATES_TO_SERVER {
+ public String toString() {
+ return "readOnlyPropagatesToServer";
+ }
+ },
+
+ RECONNECT_AT_TX_END {
+ public String toString() {
+ return "reconnectAtTxEnd";
+ }
+ },
+
+ RELAX_AUTO_COMMIT {
+ public String toString() {
+ return "relaxAutoCommit";
+ }
+ },
+
+ REPLICATION_ENABLE_J_M_X {
+ public String toString() {
+ return "replicationEnableJMX";
+ }
+ },
+
+ REPORT_METRICS_INTERVAL_MILLIS {
+ public String toString() {
+ return "reportMetricsIntervalMillis";
+ }
+ },
+
+ REQUIRE_S_S_L {
+ public String toString() {
+ return "requireSSL";
+ }
+ },
+
+ RESOURCE_ID {
+ public String toString() {
+ return "resourceId";
+ }
+ },
+
+ RESULT_SET_SIZE_THRESHOLD {
+ public String toString() {
+ return "resultSetSizeThreshold";
+ }
+ },
+
+ RETAIN_STATEMENT_AFTER_RESULT_SET_CLOSE {
+ public String toString() {
+ return "retainStatementAfterResultSetClose";
+ }
+ },
+
+ RETRIES_ALL_DOWN {
+ public String toString() {
+ return "retriesAllDown";
+ }
+ },
+
+ REWRITE_BATCHED_STATEMENTS {
+ public String toString() {
+ return "rewriteBatchedStatements";
+ }
+ },
+
+ ROLLBACK_ON_POOLED_CLOSE {
+ public String toString() {
+ return "rollbackOnPooledClose";
+ }
+ },
+
+ ROUND_ROBIN_LOAD_BALANCE {
+ public String toString() {
+ return "roundRobinLoadBalance";
+ }
+ },
+
+ RUNNING_C_T_S13 {
+ public String toString() {
+ return "runningCTS13";
+ }
+ },
+
+ SECONDS_BEFORE_RETRY_MASTER {
+ public String toString() {
+ return "secondsBeforeRetryMaster";
+ }
+ },
+
+ SELF_DESTRUCT_ON_PING_MAX_OPERATIONS {
+ public String toString() {
+ return "selfDestructOnPingMaxOperations";
+ }
+ },
+
+ SELF_DESTRUCT_ON_PING_SECONDS_LIFETIME {
+ public String toString() {
+ return "selfDestructOnPingSecondsLifetime";
+ }
+ },
+
+ SERVER_CONFIG_CACHE_FACTORY {
+ public String toString() {
+ return "serverConfigCacheFactory";
+ }
+ },
+
+ SERVER_R_S_A_PUBLIC_KEY_FILE {
+ public String toString() {
+ return "serverRSAPublicKeyFile";
+ }
+ },
+
+ SERVER_TIMEZONE {
+ public String toString() {
+ return "serverTimezone";
+ }
+ },
+
+ SESSION_VARIABLES {
+ public String toString() {
+ return "sessionVariables";
+ }
+ },
+
+ SLOW_QUERY_THRESHOLD_MILLIS {
+ public String toString() {
+ return "slowQueryThresholdMillis";
+ }
+ },
+
+ SLOW_QUERY_THRESHOLD_NANOS {
+ public String toString() {
+ return "slowQueryThresholdNanos";
+ }
+ },
+
+ SOCKET_FACTORY {
+ public String toString() {
+ return "socketFactory";
+ }
+ },
+
+ SOCKET_TIMEOUT {
+ public String toString() {
+ return "socketTimeout";
+ }
+ },
+
+ SOCKS_PROXY_HOST {
+ public String toString() {
+ return "socksProxyHost";
+ }
+ },
+
+ SOCKS_PROXY_PORT {
+ public String toString() {
+ return "socksProxyPort";
+ }
+ },
+
+ STATEMENT_INTERCEPTORS {
+ public String toString() {
+ return "statementInterceptors";
+ }
+ },
+
+ STRICT_FLOATING_POINT {
+ public String toString() {
+ return "strictFloatingPoint";
+ }
+ },
+
+ STRICT_UPDATES {
+ public String toString() {
+ return "strictUpdates";
+ }
+ },
+
+ TCP_KEEP_ALIVE {
+ public String toString() {
+ return "tcpKeepAlive";
+ }
+ },
+
+ TCP_NO_DELAY {
+ public String toString() {
+ return "tcpNoDelay";
+ }
+ },
+
+ TCP_RCV_BUF {
+ public String toString() {
+ return "tcpRcvBuf";
+ }
+ },
+
+ TCP_SND_BUF {
+ public String toString() {
+ return "tcpSndBuf";
+ }
+ },
+
+ TCP_TRAFFIC_CLASS {
+ public String toString() {
+ return "tcpTrafficClass";
+ }
+ },
+
+ TINY_INT1IS_BIT {
+ public String toString() {
+ return "tinyInt1isBit";
+ }
+ },
+
+ TRACE_PROTOCOL {
+ public String toString() {
+ return "traceProtocol";
+ }
+ },
+
+ TRANSFORMED_BIT_IS_BOOLEAN {
+ public String toString() {
+ return "transformedBitIsBoolean";
+ }
+ },
+
+ TREAT_UTIL_DATE_AS_TIMESTAMP {
+ public String toString() {
+ return "treatUtilDateAsTimestamp";
+ }
+ },
+
+ TRUST_CERTIFICATE_KEY_STORE_PASSWORD {
+ public String toString() {
+ return "trustCertificateKeyStorePassword";
+ }
+ },
+
+ TRUST_CERTIFICATE_KEY_STORE_TYPE {
+ public String toString() {
+ return "trustCertificateKeyStoreType";
+ }
+ },
+
+ TRUST_CERTIFICATE_KEY_STORE_URL {
+ public String toString() {
+ return "trustCertificateKeyStoreUrl";
+ }
+ },
+
+ ULTRA_DEV_HACK {
+ public String toString() {
+ return "ultraDevHack";
+ }
+ },
+
+ USE_AFFECTED_ROWS {
+ public String toString() {
+ return "useAffectedRows";
+ }
+ },
+
+ USE_BLOB_TO_STORE_U_T_F8_OUTSIDE_B_M_P {
+ public String toString() {
+ return "useBlobToStoreUTF8OutsideBMP";
+ }
+ },
+
+ USE_COLUMN_NAMES_IN_FIND_COLUMN {
+ public String toString() {
+ return "useColumnNamesInFindColumn";
+ }
+ },
+
+ USE_COMPRESSION {
+ public String toString() {
+ return "useCompression";
+ }
+ },
+
+ USE_CONFIGS {
+ public String toString() {
+ return "useConfigs";
+ }
+ },
+
+ USE_CURSOR_FETCH {
+ public String toString() {
+ return "useCursorFetch";
+ }
+ },
+
+ USE_DIRECT_ROW_UNPACK {
+ public String toString() {
+ return "useDirectRowUnpack";
+ }
+ },
+
+ USE_DYNAMIC_CHARSET_INFO {
+ public String toString() {
+ return "useDynamicCharsetInfo";
+ }
+ },
+
+ USE_FAST_DATE_PARSING {
+ public String toString() {
+ return "useFastDateParsing";
+ }
+ },
+
+ USE_FAST_INT_PARSING {
+ public String toString() {
+ return "useFastIntParsing";
+ }
+ },
+
+ USE_GMT_MILLIS_FOR_DATETIMES {
+ public String toString() {
+ return "useGmtMillisForDatetimes";
+ }
+ },
+
+ USE_HOSTS_IN_PRIVILEGES {
+ public String toString() {
+ return "useHostsInPrivileges";
+ }
+ },
+
+ USE_INFORMATION_SCHEMA {
+ public String toString() {
+ return "useInformationSchema";
+ }
+ },
+
+ USE_J_D_B_C_COMPLIANT_TIMEZONE_SHIFT {
+ public String toString() {
+ return "useJDBCCompliantTimezoneShift";
+ }
+ },
+
+ USE_JVM_CHARSET_CONVERTERS {
+ public String toString() {
+ return "useJvmCharsetConverters";
+ }
+ },
+
+ USE_LEGACY_DATETIME_CODE {
+ public String toString() {
+ return "useLegacyDatetimeCode";
+ }
+ },
+
+ USE_LOCAL_SESSION_STATE {
+ public String toString() {
+ return "useLocalSessionState";
+ }
+ },
+
+ USE_LOCAL_TRANSACTION_STATE {
+ public String toString() {
+ return "useLocalTransactionState";
+ }
+ },
+
+ USE_NANOS_FOR_ELAPSED_TIME {
+ public String toString() {
+ return "useNanosForElapsedTime";
+ }
+ },
+
+ USE_OLD_ALIAS_METADATA_BEHAVIOR {
+ public String toString() {
+ return "useOldAliasMetadataBehavior";
+ }
+ },
+
+ USE_OLD_U_T_F8_BEHAVIOR {
+ public String toString() {
+ return "useOldUTF8Behavior";
+ }
+ },
+
+ USE_ONLY_SERVER_ERROR_MESSAGES {
+ public String toString() {
+ return "useOnlyServerErrorMessages";
+ }
+ },
+
+ USE_READ_AHEAD_INPUT {
+ public String toString() {
+ return "useReadAheadInput";
+ }
+ },
+
+ USE_S_S_L {
+ public String toString() {
+ return "useSSL";
+ }
+ },
+
+ USE_S_S_P_S_COMPATIBLE_TIMEZONE_SHIFT {
+ public String toString() {
+ return "useSSPSCompatibleTimezoneShift";
+ }
+ },
+
+ USE_SERVER_PREP_STMTS {
+ public String toString() {
+ return "useServerPrepStmts";
+ }
+ },
+
+ USE_SQL_STATE_CODES {
+ public String toString() {
+ return "useSqlStateCodes";
+ }
+ },
+
+ USE_STREAM_LENGTHS_IN_PREP_STMTS {
+ public String toString() {
+ return "useStreamLengthsInPrepStmts";
+ }
+ },
+
+ USE_TIMEZONE {
+ public String toString() {
+ return "useTimezone";
+ }
+ },
+
+ USE_UNBUFFERED_INPUT {
+ public String toString() {
+ return "useUnbufferedInput";
+ }
+ },
+
+ USE_UNICODE {
+ public String toString() {
+ return "useUnicode";
+ }
+ },
+
+ USE_USAGE_ADVISOR {
+ public String toString() {
+ return "useUsageAdvisor";
+ }
+ },
+
+ USER {
+ public String toString() {
+ return "user";
+ }
+ },
+
+ UTF8_OUTSIDE_BMP_EXCLUDED_COLUMN_NAME_PATTERN {
+ public String toString() {
+ return "utf8OutsideBmpExcludedColumnNamePattern";
+ }
+ },
+
+ UTF8_OUTSIDE_BMP_INCLUDED_COLUMN_NAME_PATTERN {
+ public String toString() {
+ return "utf8OutsideBmpIncludedColumnNamePattern";
+ }
+ },
+
+ VERIFY_SERVER_CERTIFICATE {
+ public String toString() {
+ return "verifyServerCertificate";
+ }
+ },
+
+ ZERO_DATE_TIME_BEHAVIOR {
+ public String toString() {
+ return "zeroDateTimeBehavior";
+ }
+ }
+ }
+
+ public void setAllowLoadLocalInfile(String input) {
+ setValue(Keys.ALLOW_LOAD_LOCAL_INFILE.toString(), input);
+ }
+
+ public String getAllowLoadLocalInfile() {
+ return getValue(Keys.ALLOW_LOAD_LOCAL_INFILE.toString());
+ };
+
+ public void setAllowMasterDownConnections(String input) {
+ setValue(Keys.ALLOW_MASTER_DOWN_CONNECTIONS.toString(), input);
+ }
+
+ public String getAllowMasterDownConnections() {
+ return getValue(Keys.ALLOW_MASTER_DOWN_CONNECTIONS.toString());
+ };
+
+ public void setAllowMultiQueries(String input) {
+ setValue(Keys.ALLOW_MULTI_QUERIES.toString(), input);
+ }
+
+ public String getAllowMultiQueries() {
+ return getValue(Keys.ALLOW_MULTI_QUERIES.toString());
+ };
+
+ public void setAllowNanAndInf(String input) {
+ setValue(Keys.ALLOW_NAN_AND_INF.toString(), input);
+ }
+
+ public String getAllowNanAndInf() {
+ return getValue(Keys.ALLOW_NAN_AND_INF.toString());
+ };
+
+ public void setAllowPublicKeyRetrieval(String input) {
+ setValue(Keys.ALLOW_PUBLIC_KEY_RETRIEVAL.toString(), input);
+ }
+
+ public String getAllowPublicKeyRetrieval() {
+ return getValue(Keys.ALLOW_PUBLIC_KEY_RETRIEVAL.toString());
+ };
+
+ public void setAllowUrlInLocalInfile(String input) {
+ setValue(Keys.ALLOW_URL_IN_LOCAL_INFILE.toString(), input);
+ }
+
+ public String getAllowUrlInLocalInfile() {
+ return getValue(Keys.ALLOW_URL_IN_LOCAL_INFILE.toString());
+ };
+
+ public void setAlwaysSendSetIsolation(String input) {
+ setValue(Keys.ALWAYS_SEND_SET_ISOLATION.toString(), input);
+ }
+
+ public String getAlwaysSendSetIsolation() {
+ return getValue(Keys.ALWAYS_SEND_SET_ISOLATION.toString());
+ };
+
+ public void setAuthenticationPlugins(String input) {
+ setValue(Keys.AUTHENTICATION_PLUGINS.toString(), input);
+ }
+
+ public String getAuthenticationPlugins() {
+ return getValue(Keys.AUTHENTICATION_PLUGINS.toString());
+ };
+
+ public void setAutoClosePStmtStreams(String input) {
+ setValue(Keys.AUTO_CLOSE_P_STMT_STREAMS.toString(), input);
+ }
+
+ public String getAutoClosePStmtStreams() {
+ return getValue(Keys.AUTO_CLOSE_P_STMT_STREAMS.toString());
+ };
+
+ public void setAutoDeserialize(String input) {
+ setValue(Keys.AUTO_DESERIALIZE.toString(), input);
+ }
+
+ public String getAutoDeserialize() {
+ return getValue(Keys.AUTO_DESERIALIZE.toString());
+ };
+
+ public void setAutoGenerateTestcaseScript(String input) {
+ setValue(Keys.AUTO_GENERATE_TESTCASE_SCRIPT.toString(), input);
+ }
+
+ public String getAutoGenerateTestcaseScript() {
+ return getValue(Keys.AUTO_GENERATE_TESTCASE_SCRIPT.toString());
+ };
+
+ public void setAutoReconnect(String input) {
+ setValue(Keys.AUTO_RECONNECT.toString(), input);
+ }
+
+ public String getAutoReconnect() {
+ return getValue(Keys.AUTO_RECONNECT.toString());
+ };
+
+ public void setAutoReconnectForPools(String input) {
+ setValue(Keys.AUTO_RECONNECT_FOR_POOLS.toString(), input);
+ }
+
+ public String getAutoReconnectForPools() {
+ return getValue(Keys.AUTO_RECONNECT_FOR_POOLS.toString());
+ };
+
+ public void setAutoSlowLog(String input) {
+ setValue(Keys.AUTO_SLOW_LOG.toString(), input);
+ }
+
+ public String getAutoSlowLog() {
+ return getValue(Keys.AUTO_SLOW_LOG.toString());
+ };
+
+ public void setBlobSendChunkSize(String input) {
+ setValue(Keys.BLOB_SEND_CHUNK_SIZE.toString(), input);
+ }
+
+ public String getBlobSendChunkSize() {
+ return getValue(Keys.BLOB_SEND_CHUNK_SIZE.toString());
+ };
+
+ public void setBlobsAreStrings(String input) {
+ setValue(Keys.BLOBS_ARE_STRINGS.toString(), input);
+ }
+
+ public String getBlobsAreStrings() {
+ return getValue(Keys.BLOBS_ARE_STRINGS.toString());
+ };
+
+ public void setCacheCallableStmts(String input) {
+ setValue(Keys.CACHE_CALLABLE_STMTS.toString(), input);
+ }
+
+ public String getCacheCallableStmts() {
+ return getValue(Keys.CACHE_CALLABLE_STMTS.toString());
+ };
+
+ public void setCacheDefaultTimezone(String input) {
+ setValue(Keys.CACHE_DEFAULT_TIMEZONE.toString(), input);
+ }
+
+ public String getCacheDefaultTimezone() {
+ return getValue(Keys.CACHE_DEFAULT_TIMEZONE.toString());
+ };
+
+ public void setCachePrepStmts(String input) {
+ setValue(Keys.CACHE_PREP_STMTS.toString(), input);
+ }
+
+ public String getCachePrepStmts() {
+ return getValue(Keys.CACHE_PREP_STMTS.toString());
+ };
+
+ public void setCacheResultSetMetadata(String input) {
+ setValue(Keys.CACHE_RESULT_SET_METADATA.toString(), input);
+ }
+
+ public String getCacheResultSetMetadata() {
+ return getValue(Keys.CACHE_RESULT_SET_METADATA.toString());
+ };
+
+ public void setCacheServerConfiguration(String input) {
+ setValue(Keys.CACHE_SERVER_CONFIGURATION.toString(), input);
+ }
+
+ public String getCacheServerConfiguration() {
+ return getValue(Keys.CACHE_SERVER_CONFIGURATION.toString());
+ };
+
+ public void setCallableStmtCacheSize(String input) {
+ setValue(Keys.CALLABLE_STMT_CACHE_SIZE.toString(), input);
+ }
+
+ public String getCallableStmtCacheSize() {
+ return getValue(Keys.CALLABLE_STMT_CACHE_SIZE.toString());
+ };
+
+ public void setCapitalizeTypeNames(String input) {
+ setValue(Keys.CAPITALIZE_TYPE_NAMES.toString(), input);
+ }
+
+ public String getCapitalizeTypeNames() {
+ return getValue(Keys.CAPITALIZE_TYPE_NAMES.toString());
+ };
+
+ public void setCharacterEncoding(String input) {
+ setValue(Keys.CHARACTER_ENCODING.toString(), input);
+ }
+
+ public String getCharacterEncoding() {
+ return getValue(Keys.CHARACTER_ENCODING.toString());
+ };
+
+ public void setCharacterSetResults(String input) {
+ setValue(Keys.CHARACTER_SET_RESULTS.toString(), input);
+ }
+
+ public String getCharacterSetResults() {
+ return getValue(Keys.CHARACTER_SET_RESULTS.toString());
+ };
+
+ public void setClientCertificateKeyStorePassword(String input) {
+ setValue(Keys.CLIENT_CERTIFICATE_KEY_STORE_PASSWORD.toString(), input);
+ }
+
+ public String getClientCertificateKeyStorePassword() {
+ return getValue(Keys.CLIENT_CERTIFICATE_KEY_STORE_PASSWORD.toString());
+ };
+
+ public void setClientCertificateKeyStoreType(String input) {
+ setValue(Keys.CLIENT_CERTIFICATE_KEY_STORE_TYPE.toString(), input);
+ }
+
+ public String getClientCertificateKeyStoreType() {
+ return getValue(Keys.CLIENT_CERTIFICATE_KEY_STORE_TYPE.toString());
+ };
+
+ public void setClientCertificateKeyStoreUrl(String input) {
+ setValue(Keys.CLIENT_CERTIFICATE_KEY_STORE_URL.toString(), input);
+ }
+
+ public String getClientCertificateKeyStoreUrl() {
+ return getValue(Keys.CLIENT_CERTIFICATE_KEY_STORE_URL.toString());
+ };
+
+ public void setClientInfoProvider(String input) {
+ setValue(Keys.CLIENT_INFO_PROVIDER.toString(), input);
+ }
+
+ public String getClientInfoProvider() {
+ return getValue(Keys.CLIENT_INFO_PROVIDER.toString());
+ };
+
+ public void setClobCharacterEncoding(String input) {
+ setValue(Keys.CLOB_CHARACTER_ENCODING.toString(), input);
+ }
+
+ public String getClobCharacterEncoding() {
+ return getValue(Keys.CLOB_CHARACTER_ENCODING.toString());
+ };
+
+ public void setClobberStreamingResults(String input) {
+ setValue(Keys.CLOBBER_STREAMING_RESULTS.toString(), input);
+ }
+
+ public String getClobberStreamingResults() {
+ return getValue(Keys.CLOBBER_STREAMING_RESULTS.toString());
+ };
+
+ public void setCompensateOnDuplicateKeyUpdateCounts(String input) {
+ setValue(Keys.COMPENSATE_ON_DUPLICATE_KEY_UPDATE_COUNTS.toString(),
+ input);
+ }
+
+ public String getCompensateOnDuplicateKeyUpdateCounts() {
+ return getValue(Keys.COMPENSATE_ON_DUPLICATE_KEY_UPDATE_COUNTS
+ .toString());
+ };
+
+ public void setConnectTimeout(String input) {
+ setValue(Keys.CONNECT_TIMEOUT.toString(), input);
+ }
+
+ public String getConnectTimeout() {
+ return getValue(Keys.CONNECT_TIMEOUT.toString());
+ };
+
+ public void setConnectionAttributes(String input) {
+ setValue(Keys.CONNECTION_ATTRIBUTES.toString(), input);
+ }
+
+ public String getConnectionAttributes() {
+ return getValue(Keys.CONNECTION_ATTRIBUTES.toString());
+ };
+
+ public void setConnectionCollation(String input) {
+ setValue(Keys.CONNECTION_COLLATION.toString(), input);
+ }
+
+ public String getConnectionCollation() {
+ return getValue(Keys.CONNECTION_COLLATION.toString());
+ };
+
+ public void setConnectionLifecycleInterceptors(String input) {
+ setValue(Keys.CONNECTION_LIFECYCLE_INTERCEPTORS.toString(), input);
+ }
+
+ public String getConnectionLifecycleInterceptors() {
+ return getValue(Keys.CONNECTION_LIFECYCLE_INTERCEPTORS.toString());
+ };
+
+ public void setContinueBatchOnError(String input) {
+ setValue(Keys.CONTINUE_BATCH_ON_ERROR.toString(), input);
+ }
+
+ public String getContinueBatchOnError() {
+ return getValue(Keys.CONTINUE_BATCH_ON_ERROR.toString());
+ };
+
+ public void setCreateDatabaseIfNotExist(String input) {
+ setValue(Keys.CREATE_DATABASE_IF_NOT_EXIST.toString(), input);
+ }
+
+ public String getCreateDatabaseIfNotExist() {
+ return getValue(Keys.CREATE_DATABASE_IF_NOT_EXIST.toString());
+ };
+
+ public void setDefaultAuthenticationPlugin(String input) {
+ setValue(Keys.DEFAULT_AUTHENTICATION_PLUGIN.toString(), input);
+ }
+
+ public String getDefaultAuthenticationPlugin() {
+ return getValue(Keys.DEFAULT_AUTHENTICATION_PLUGIN.toString());
+ };
+
+ public void setDefaultFetchSize(String input) {
+ setValue(Keys.DEFAULT_FETCH_SIZE.toString(), input);
+ }
+
+ public String getDefaultFetchSize() {
+ return getValue(Keys.DEFAULT_FETCH_SIZE.toString());
+ };
+
+ public void setDetectCustomCollations(String input) {
+ setValue(Keys.DETECT_CUSTOM_COLLATIONS.toString(), input);
+ }
+
+ public String getDetectCustomCollations() {
+ return getValue(Keys.DETECT_CUSTOM_COLLATIONS.toString());
+ };
+
+ public void setDisabledAuthenticationPlugins(String input) {
+ setValue(Keys.DISABLED_AUTHENTICATION_PLUGINS.toString(), input);
+ }
+
+ public String getDisabledAuthenticationPlugins() {
+ return getValue(Keys.DISABLED_AUTHENTICATION_PLUGINS.toString());
+ };
+
+ public void setDisconnectOnExpiredPasswords(String input) {
+ setValue(Keys.DISCONNECT_ON_EXPIRED_PASSWORDS.toString(), input);
+ }
+
+ public String getDisconnectOnExpiredPasswords() {
+ return getValue(Keys.DISCONNECT_ON_EXPIRED_PASSWORDS.toString());
+ };
+
+ public void setDontCheckOnDuplicateKeyUpdateInSQL(String input) {
+ setValue(Keys.DONT_CHECK_ON_DUPLICATE_KEY_UPDATE_IN_S_Q_L.toString(),
+ input);
+ }
+
+ public String getDontCheckOnDuplicateKeyUpdateInSQL() {
+ return getValue(Keys.DONT_CHECK_ON_DUPLICATE_KEY_UPDATE_IN_S_Q_L
+ .toString());
+ };
+
+ public void setDontTrackOpenResources(String input) {
+ setValue(Keys.DONT_TRACK_OPEN_RESOURCES.toString(), input);
+ }
+
+ public String getDontTrackOpenResources() {
+ return getValue(Keys.DONT_TRACK_OPEN_RESOURCES.toString());
+ };
+
+ public void setDumpMetadataOnColumnNotFound(String input) {
+ setValue(Keys.DUMP_METADATA_ON_COLUMN_NOT_FOUND.toString(), input);
+ }
+
+ public String getDumpMetadataOnColumnNotFound() {
+ return getValue(Keys.DUMP_METADATA_ON_COLUMN_NOT_FOUND.toString());
+ };
+
+ public void setDumpQueriesOnException(String input) {
+ setValue(Keys.DUMP_QUERIES_ON_EXCEPTION.toString(), input);
+ }
+
+ public String getDumpQueriesOnException() {
+ return getValue(Keys.DUMP_QUERIES_ON_EXCEPTION.toString());
+ };
+
+ public void setDynamicCalendars(String input) {
+ setValue(Keys.DYNAMIC_CALENDARS.toString(), input);
+ }
+
+ public String getDynamicCalendars() {
+ return getValue(Keys.DYNAMIC_CALENDARS.toString());
+ };
+
+ public void setElideSetAutoCommits(String input) {
+ setValue(Keys.ELIDE_SET_AUTO_COMMITS.toString(), input);
+ }
+
+ public String getElideSetAutoCommits() {
+ return getValue(Keys.ELIDE_SET_AUTO_COMMITS.toString());
+ };
+
+ public void setEmptyStringsConvertToZero(String input) {
+ setValue(Keys.EMPTY_STRINGS_CONVERT_TO_ZERO.toString(), input);
+ }
+
+ public String getEmptyStringsConvertToZero() {
+ return getValue(Keys.EMPTY_STRINGS_CONVERT_TO_ZERO.toString());
+ };
+
+ public void setEmulateLocators(String input) {
+ setValue(Keys.EMULATE_LOCATORS.toString(), input);
+ }
+
+ public String getEmulateLocators() {
+ return getValue(Keys.EMULATE_LOCATORS.toString());
+ };
+
+ public void setEmulateUnsupportedPstmts(String input) {
+ setValue(Keys.EMULATE_UNSUPPORTED_PSTMTS.toString(), input);
+ }
+
+ public String getEmulateUnsupportedPstmts() {
+ return getValue(Keys.EMULATE_UNSUPPORTED_PSTMTS.toString());
+ };
+
+ public void setEnablePacketDebug(String input) {
+ setValue(Keys.ENABLE_PACKET_DEBUG.toString(), input);
+ }
+
+ public String getEnablePacketDebug() {
+ return getValue(Keys.ENABLE_PACKET_DEBUG.toString());
+ };
+
+ public void setEnableQueryTimeouts(String input) {
+ setValue(Keys.ENABLE_QUERY_TIMEOUTS.toString(), input);
+ }
+
+ public String getEnableQueryTimeouts() {
+ return getValue(Keys.ENABLE_QUERY_TIMEOUTS.toString());
+ };
+
+ public void setExceptionInterceptors(String input) {
+ setValue(Keys.EXCEPTION_INTERCEPTORS.toString(), input);
+ }
+
+ public String getExceptionInterceptors() {
+ return getValue(Keys.EXCEPTION_INTERCEPTORS.toString());
+ };
+
+ public void setExplainSlowQueries(String input) {
+ setValue(Keys.EXPLAIN_SLOW_QUERIES.toString(), input);
+ }
+
+ public String getExplainSlowQueries() {
+ return getValue(Keys.EXPLAIN_SLOW_QUERIES.toString());
+ };
+
+ public void setFailOverReadOnly(String input) {
+ setValue(Keys.FAIL_OVER_READ_ONLY.toString(), input);
+ }
+
+ public String getFailOverReadOnly() {
+ return getValue(Keys.FAIL_OVER_READ_ONLY.toString());
+ };
+
+ public void setFunctionsNeverReturnBlobs(String input) {
+ setValue(Keys.FUNCTIONS_NEVER_RETURN_BLOBS.toString(), input);
+ }
+
+ public String getFunctionsNeverReturnBlobs() {
+ return getValue(Keys.FUNCTIONS_NEVER_RETURN_BLOBS.toString());
+ };
+
+ public void setGatherPerfMetrics(String input) {
+ setValue(Keys.GATHER_PERF_METRICS.toString(), input);
+ }
+
+ public String getGatherPerfMetrics() {
+ return getValue(Keys.GATHER_PERF_METRICS.toString());
+ };
+
+ public void setGenerateSimpleParameterMetadata(String input) {
+ setValue(Keys.GENERATE_SIMPLE_PARAMETER_METADATA.toString(), input);
+ }
+
+ public String getGenerateSimpleParameterMetadata() {
+ return getValue(Keys.GENERATE_SIMPLE_PARAMETER_METADATA.toString());
+ };
+
+ public void setGetProceduresReturnsFunctions(String input) {
+ setValue(Keys.GET_PROCEDURES_RETURNS_FUNCTIONS.toString(), input);
+ }
+
+ public String getGetProceduresReturnsFunctions() {
+ return getValue(Keys.GET_PROCEDURES_RETURNS_FUNCTIONS.toString());
+ };
+
+ public void setHoldResultsOpenOverStatementClose(String input) {
+ setValue(Keys.HOLD_RESULTS_OPEN_OVER_STATEMENT_CLOSE.toString(), input);
+ }
+
+ public String getHoldResultsOpenOverStatementClose() {
+ return getValue(Keys.HOLD_RESULTS_OPEN_OVER_STATEMENT_CLOSE.toString());
+ };
+
+ public void setIgnoreNonTxTables(String input) {
+ setValue(Keys.IGNORE_NON_TX_TABLES.toString(), input);
+ }
+
+ public String getIgnoreNonTxTables() {
+ return getValue(Keys.IGNORE_NON_TX_TABLES.toString());
+ };
+
+ public void setIncludeInnodbStatusInDeadlockExceptions(String input) {
+ setValue(Keys.INCLUDE_INNODB_STATUS_IN_DEADLOCK_EXCEPTIONS.toString(),
+ input);
+ }
+
+ public String getIncludeInnodbStatusInDeadlockExceptions() {
+ return getValue(Keys.INCLUDE_INNODB_STATUS_IN_DEADLOCK_EXCEPTIONS
+ .toString());
+ };
+
+ public void setIncludeThreadDumpInDeadlockExceptions(String input) {
+ setValue(Keys.INCLUDE_THREAD_DUMP_IN_DEADLOCK_EXCEPTIONS.toString(),
+ input);
+ }
+
+ public String getIncludeThreadDumpInDeadlockExceptions() {
+ return getValue(Keys.INCLUDE_THREAD_DUMP_IN_DEADLOCK_EXCEPTIONS
+ .toString());
+ };
+
+ public void setIncludeThreadNamesAsStatementComment(String input) {
+ setValue(Keys.INCLUDE_THREAD_NAMES_AS_STATEMENT_COMMENT.toString(),
+ input);
+ }
+
+ public String getIncludeThreadNamesAsStatementComment() {
+ return getValue(Keys.INCLUDE_THREAD_NAMES_AS_STATEMENT_COMMENT
+ .toString());
+ };
+
+ public void setInitialTimeout(String input) {
+ setValue(Keys.INITIAL_TIMEOUT.toString(), input);
+ }
+
+ public String getInitialTimeout() {
+ return getValue(Keys.INITIAL_TIMEOUT.toString());
+ };
+
+ public void setInteractiveClient(String input) {
+ setValue(Keys.INTERACTIVE_CLIENT.toString(), input);
+ }
+
+ public String getInteractiveClient() {
+ return getValue(Keys.INTERACTIVE_CLIENT.toString());
+ };
+
+ public void setJdbcCompliantTruncation(String input) {
+ setValue(Keys.JDBC_COMPLIANT_TRUNCATION.toString(), input);
+ }
+
+ public String getJdbcCompliantTruncation() {
+ return getValue(Keys.JDBC_COMPLIANT_TRUNCATION.toString());
+ };
+
+ public void setLargeRowSizeThreshold(String input) {
+ setValue(Keys.LARGE_ROW_SIZE_THRESHOLD.toString(), input);
+ }
+
+ public String getLargeRowSizeThreshold() {
+ return getValue(Keys.LARGE_ROW_SIZE_THRESHOLD.toString());
+ };
+
+ public void setLoadBalanceAutoCommitStatementRegex(String input) {
+ setValue(Keys.LOAD_BALANCE_AUTO_COMMIT_STATEMENT_REGEX.toString(),
+ input);
+ }
+
+ public String getLoadBalanceAutoCommitStatementRegex() {
+ return getValue(Keys.LOAD_BALANCE_AUTO_COMMIT_STATEMENT_REGEX
+ .toString());
+ };
+
+ public void setLoadBalanceAutoCommitStatementThreshold(String input) {
+ setValue(Keys.LOAD_BALANCE_AUTO_COMMIT_STATEMENT_THRESHOLD.toString(),
+ input);
+ }
+
+ public String getLoadBalanceAutoCommitStatementThreshold() {
+ return getValue(Keys.LOAD_BALANCE_AUTO_COMMIT_STATEMENT_THRESHOLD
+ .toString());
+ };
+
+ public void setLoadBalanceBlacklistTimeout(String input) {
+ setValue(Keys.LOAD_BALANCE_BLACKLIST_TIMEOUT.toString(), input);
+ }
+
+ public String getLoadBalanceBlacklistTimeout() {
+ return getValue(Keys.LOAD_BALANCE_BLACKLIST_TIMEOUT.toString());
+ };
+
+ public void setLoadBalanceConnectionGroup(String input) {
+ setValue(Keys.LOAD_BALANCE_CONNECTION_GROUP.toString(), input);
+ }
+
+ public String getLoadBalanceConnectionGroup() {
+ return getValue(Keys.LOAD_BALANCE_CONNECTION_GROUP.toString());
+ };
+
+ public void setLoadBalanceEnableJMX(String input) {
+ setValue(Keys.LOAD_BALANCE_ENABLE_J_M_X.toString(), input);
+ }
+
+ public String getLoadBalanceEnableJMX() {
+ return getValue(Keys.LOAD_BALANCE_ENABLE_J_M_X.toString());
+ };
+
+ public void setLoadBalanceExceptionChecker(String input) {
+ setValue(Keys.LOAD_BALANCE_EXCEPTION_CHECKER.toString(), input);
+ }
+
+ public String getLoadBalanceExceptionChecker() {
+ return getValue(Keys.LOAD_BALANCE_EXCEPTION_CHECKER.toString());
+ };
+
+ public void setLoadBalancePingTimeout(String input) {
+ setValue(Keys.LOAD_BALANCE_PING_TIMEOUT.toString(), input);
+ }
+
+ public String getLoadBalancePingTimeout() {
+ return getValue(Keys.LOAD_BALANCE_PING_TIMEOUT.toString());
+ };
+
+ public void setLoadBalanceSQLExceptionSubclassFailover(String input) {
+ setValue(
+ Keys.LOAD_BALANCE_S_Q_L_EXCEPTION_SUBCLASS_FAILOVER.toString(),
+ input);
+ }
+
+ public String getLoadBalanceSQLExceptionSubclassFailover() {
+ return getValue(Keys.LOAD_BALANCE_S_Q_L_EXCEPTION_SUBCLASS_FAILOVER
+ .toString());
+ };
+
+ public void setLoadBalanceSQLStateFailover(String input) {
+ setValue(Keys.LOAD_BALANCE_S_Q_L_STATE_FAILOVER.toString(), input);
+ }
+
+ public String getLoadBalanceSQLStateFailover() {
+ return getValue(Keys.LOAD_BALANCE_S_Q_L_STATE_FAILOVER.toString());
+ };
+
+ public void setLoadBalanceStrategy(String input) {
+ setValue(Keys.LOAD_BALANCE_STRATEGY.toString(), input);
+ }
+
+ public String getLoadBalanceStrategy() {
+ return getValue(Keys.LOAD_BALANCE_STRATEGY.toString());
+ };
+
+ public void setLoadBalanceValidateConnectionOnSwapServer(String input) {
+ setValue(
+ Keys.LOAD_BALANCE_VALIDATE_CONNECTION_ON_SWAP_SERVER.toString(),
+ input);
+ }
+
+ public String getLoadBalanceValidateConnectionOnSwapServer() {
+ return getValue(Keys.LOAD_BALANCE_VALIDATE_CONNECTION_ON_SWAP_SERVER
+ .toString());
+ };
+
+ public void setLocalSocketAddress(String input) {
+ setValue(Keys.LOCAL_SOCKET_ADDRESS.toString(), input);
+ }
+
+ public String getLocalSocketAddress() {
+ return getValue(Keys.LOCAL_SOCKET_ADDRESS.toString());
+ };
+
+ public void setLocatorFetchBufferSize(String input) {
+ setValue(Keys.LOCATOR_FETCH_BUFFER_SIZE.toString(), input);
+ }
+
+ public String getLocatorFetchBufferSize() {
+ return getValue(Keys.LOCATOR_FETCH_BUFFER_SIZE.toString());
+ };
+
+ public void setLogSlowQueries(String input) {
+ setValue(Keys.LOG_SLOW_QUERIES.toString(), input);
+ }
+
+ public String getLogSlowQueries() {
+ return getValue(Keys.LOG_SLOW_QUERIES.toString());
+ };
+
+ public void setLogXaCommands(String input) {
+ setValue(Keys.LOG_XA_COMMANDS.toString(), input);
+ }
+
+ public String getLogXaCommands() {
+ return getValue(Keys.LOG_XA_COMMANDS.toString());
+ };
+
+ public void setLogger(String input) {
+ setValue(Keys.LOGGER.toString(), input);
+ }
+
+ public String getLogger() {
+ return getValue(Keys.LOGGER.toString());
+ };
+
+ public void setMaintainTimeStats(String input) {
+ setValue(Keys.MAINTAIN_TIME_STATS.toString(), input);
+ }
+
+ public String getMaintainTimeStats() {
+ return getValue(Keys.MAINTAIN_TIME_STATS.toString());
+ };
+
+ public void setMaxAllowedPacket(String input) {
+ setValue(Keys.MAX_ALLOWED_PACKET.toString(), input);
+ }
+
+ public String getMaxAllowedPacket() {
+ return getValue(Keys.MAX_ALLOWED_PACKET.toString());
+ };
+
+ public void setMaxQuerySizeToLog(String input) {
+ setValue(Keys.MAX_QUERY_SIZE_TO_LOG.toString(), input);
+ }
+
+ public String getMaxQuerySizeToLog() {
+ return getValue(Keys.MAX_QUERY_SIZE_TO_LOG.toString());
+ };
+
+ public void setMaxReconnects(String input) {
+ setValue(Keys.MAX_RECONNECTS.toString(), input);
+ }
+
+ public String getMaxReconnects() {
+ return getValue(Keys.MAX_RECONNECTS.toString());
+ };
+
+ public void setMaxRows(String input) {
+ setValue(Keys.MAX_ROWS.toString(), input);
+ }
+
+ public String getMaxRows() {
+ return getValue(Keys.MAX_ROWS.toString());
+ };
+
+ public void setMetadataCacheSize(String input) {
+ setValue(Keys.METADATA_CACHE_SIZE.toString(), input);
+ }
+
+ public String getMetadataCacheSize() {
+ return getValue(Keys.METADATA_CACHE_SIZE.toString());
+ };
+
+ public void setNetTimeoutForStreamingResults(String input) {
+ setValue(Keys.NET_TIMEOUT_FOR_STREAMING_RESULTS.toString(), input);
+ }
+
+ public String getNetTimeoutForStreamingResults() {
+ return getValue(Keys.NET_TIMEOUT_FOR_STREAMING_RESULTS.toString());
+ };
+
+ public void setNoAccessToProcedureBodies(String input) {
+ setValue(Keys.NO_ACCESS_TO_PROCEDURE_BODIES.toString(), input);
+ }
+
+ public String getNoAccessToProcedureBodies() {
+ return getValue(Keys.NO_ACCESS_TO_PROCEDURE_BODIES.toString());
+ };
+
+ public void setNoDatetimeStringSync(String input) {
+ setValue(Keys.NO_DATETIME_STRING_SYNC.toString(), input);
+ }
+
+ public String getNoDatetimeStringSync() {
+ return getValue(Keys.NO_DATETIME_STRING_SYNC.toString());
+ };
+
+ public void setNoTimezoneConversionForDateType(String input) {
+ setValue(Keys.NO_TIMEZONE_CONVERSION_FOR_DATE_TYPE.toString(), input);
+ }
+
+ public String getNoTimezoneConversionForDateType() {
+ return getValue(Keys.NO_TIMEZONE_CONVERSION_FOR_DATE_TYPE.toString());
+ };
+
+ public void setNoTimezoneConversionForTimeType(String input) {
+ setValue(Keys.NO_TIMEZONE_CONVERSION_FOR_TIME_TYPE.toString(), input);
+ }
+
+ public String getNoTimezoneConversionForTimeType() {
+ return getValue(Keys.NO_TIMEZONE_CONVERSION_FOR_TIME_TYPE.toString());
+ };
+
+ public void setNullCatalogMeansCurrent(String input) {
+ setValue(Keys.NULL_CATALOG_MEANS_CURRENT.toString(), input);
+ }
+
+ public String getNullCatalogMeansCurrent() {
+ return getValue(Keys.NULL_CATALOG_MEANS_CURRENT.toString());
+ };
+
+ public void setNullNamePatternMatchesAll(String input) {
+ setValue(Keys.NULL_NAME_PATTERN_MATCHES_ALL.toString(), input);
+ }
+
+ public String getNullNamePatternMatchesAll() {
+ return getValue(Keys.NULL_NAME_PATTERN_MATCHES_ALL.toString());
+ };
+
+ public void setOverrideSupportsIntegrityEnhancementFacility(String input) {
+ setValue(
+ Keys.OVERRIDE_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY
+ .toString(),
+ input);
+ }
+
+ public String getOverrideSupportsIntegrityEnhancementFacility() {
+ return getValue(Keys.OVERRIDE_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY
+ .toString());
+ };
+
+ public void setPacketDebugBufferSize(String input) {
+ setValue(Keys.PACKET_DEBUG_BUFFER_SIZE.toString(), input);
+ }
+
+ public String getPacketDebugBufferSize() {
+ return getValue(Keys.PACKET_DEBUG_BUFFER_SIZE.toString());
+ };
+
+ public void setPadCharsWithSpace(String input) {
+ setValue(Keys.PAD_CHARS_WITH_SPACE.toString(), input);
+ }
+
+ public String getPadCharsWithSpace() {
+ return getValue(Keys.PAD_CHARS_WITH_SPACE.toString());
+ };
+
+ public void setParanoid(String input) {
+ setValue(Keys.PARANOID.toString(), input);
+ }
+
+ public String getParanoid() {
+ return getValue(Keys.PARANOID.toString());
+ };
+
+ public void setParseInfoCacheFactory(String input) {
+ setValue(Keys.PARSE_INFO_CACHE_FACTORY.toString(), input);
+ }
+
+ public String getParseInfoCacheFactory() {
+ return getValue(Keys.PARSE_INFO_CACHE_FACTORY.toString());
+ };
+
+ public void setPassword(String input) {
+ setValue(Keys.PASSWORD.toString(), input);
+ }
+
+ public String getPassword() {
+ return getValue(Keys.PASSWORD.toString());
+ };
+
+ public void setPasswordCharacterEncoding(String input) {
+ setValue(Keys.PASSWORD_CHARACTER_ENCODING.toString(), input);
+ }
+
+ public String getPasswordCharacterEncoding() {
+ return getValue(Keys.PASSWORD_CHARACTER_ENCODING.toString());
+ };
+
+ public void setPedantic(String input) {
+ setValue(Keys.PEDANTIC.toString(), input);
+ }
+
+ public String getPedantic() {
+ return getValue(Keys.PEDANTIC.toString());
+ };
+
+ public void setPinGlobalTxToPhysicalConnection(String input) {
+ setValue(Keys.PIN_GLOBAL_TX_TO_PHYSICAL_CONNECTION.toString(), input);
+ }
+
+ public String getPinGlobalTxToPhysicalConnection() {
+ return getValue(Keys.PIN_GLOBAL_TX_TO_PHYSICAL_CONNECTION.toString());
+ };
+
+ public void setPopulateInsertRowWithDefaultValues(String input) {
+ setValue(Keys.POPULATE_INSERT_ROW_WITH_DEFAULT_VALUES.toString(), input);
+ }
+
+ public String getPopulateInsertRowWithDefaultValues() {
+ return getValue(Keys.POPULATE_INSERT_ROW_WITH_DEFAULT_VALUES.toString());
+ };
+
+ public void setPrepStmtCacheSize(String input) {
+ setValue(Keys.PREP_STMT_CACHE_SIZE.toString(), input);
+ }
+
+ public String getPrepStmtCacheSize() {
+ return getValue(Keys.PREP_STMT_CACHE_SIZE.toString());
+ };
+
+ public void setPrepStmtCacheSqlLimit(String input) {
+ setValue(Keys.PREP_STMT_CACHE_SQL_LIMIT.toString(), input);
+ }
+
+ public String getPrepStmtCacheSqlLimit() {
+ return getValue(Keys.PREP_STMT_CACHE_SQL_LIMIT.toString());
+ };
+
+ public void setProcessEscapeCodesForPrepStmts(String input) {
+ setValue(Keys.PROCESS_ESCAPE_CODES_FOR_PREP_STMTS.toString(), input);
+ }
+
+ public String getProcessEscapeCodesForPrepStmts() {
+ return getValue(Keys.PROCESS_ESCAPE_CODES_FOR_PREP_STMTS.toString());
+ };
+
+ public void setProfileSQL(String input) {
+ setValue(Keys.PROFILE_S_Q_L.toString(), input);
+ }
+
+ public String getProfileSQL() {
+ return getValue(Keys.PROFILE_S_Q_L.toString());
+ };
+
+ public void setProfileSql(String input) {
+ setValue(Keys.PROFILE_SQL.toString(), input);
+ }
+
+ public String getProfileSql() {
+ return getValue(Keys.PROFILE_SQL.toString());
+ };
+
+ public void setProfilerEventHandler(String input) {
+ setValue(Keys.PROFILER_EVENT_HANDLER.toString(), input);
+ }
+
+ public String getProfilerEventHandler() {
+ return getValue(Keys.PROFILER_EVENT_HANDLER.toString());
+ };
+
+ public void setPropertiesTransform(String input) {
+ setValue(Keys.PROPERTIES_TRANSFORM.toString(), input);
+ }
+
+ public String getPropertiesTransform() {
+ return getValue(Keys.PROPERTIES_TRANSFORM.toString());
+ };
+
+ public void setQueriesBeforeRetryMaster(String input) {
+ setValue(Keys.QUERIES_BEFORE_RETRY_MASTER.toString(), input);
+ }
+
+ public String getQueriesBeforeRetryMaster() {
+ return getValue(Keys.QUERIES_BEFORE_RETRY_MASTER.toString());
+ };
+
+ public void setQueryTimeoutKillsConnection(String input) {
+ setValue(Keys.QUERY_TIMEOUT_KILLS_CONNECTION.toString(), input);
+ }
+
+ public String getQueryTimeoutKillsConnection() {
+ return getValue(Keys.QUERY_TIMEOUT_KILLS_CONNECTION.toString());
+ };
+
+ public void setReadOnlyPropagatesToServer(String input) {
+ setValue(Keys.READ_ONLY_PROPAGATES_TO_SERVER.toString(), input);
+ }
+
+ public String getReadOnlyPropagatesToServer() {
+ return getValue(Keys.READ_ONLY_PROPAGATES_TO_SERVER.toString());
+ };
+
+ public void setReconnectAtTxEnd(String input) {
+ setValue(Keys.RECONNECT_AT_TX_END.toString(), input);
+ }
+
+ public String getReconnectAtTxEnd() {
+ return getValue(Keys.RECONNECT_AT_TX_END.toString());
+ };
+
+ public void setRelaxAutoCommit(String input) {
+ setValue(Keys.RELAX_AUTO_COMMIT.toString(), input);
+ }
+
+ public String getRelaxAutoCommit() {
+ return getValue(Keys.RELAX_AUTO_COMMIT.toString());
+ };
+
+ public void setReplicationEnableJMX(String input) {
+ setValue(Keys.REPLICATION_ENABLE_J_M_X.toString(), input);
+ }
+
+ public String getReplicationEnableJMX() {
+ return getValue(Keys.REPLICATION_ENABLE_J_M_X.toString());
+ };
+
+ public void setReportMetricsIntervalMillis(String input) {
+ setValue(Keys.REPORT_METRICS_INTERVAL_MILLIS.toString(), input);
+ }
+
+ public String getReportMetricsIntervalMillis() {
+ return getValue(Keys.REPORT_METRICS_INTERVAL_MILLIS.toString());
+ };
+
+ public void setRequireSSL(String input) {
+ setValue(Keys.REQUIRE_S_S_L.toString(), input);
+ }
+
+ public String getRequireSSL() {
+ return getValue(Keys.REQUIRE_S_S_L.toString());
+ };
+
+ public void setResourceId(String input) {
+ setValue(Keys.RESOURCE_ID.toString(), input);
+ }
+
+ public String getResourceId() {
+ return getValue(Keys.RESOURCE_ID.toString());
+ };
+
+ public void setResultSetSizeThreshold(String input) {
+ setValue(Keys.RESULT_SET_SIZE_THRESHOLD.toString(), input);
+ }
+
+ public String getResultSetSizeThreshold() {
+ return getValue(Keys.RESULT_SET_SIZE_THRESHOLD.toString());
+ };
+
+ public void setRetainStatementAfterResultSetClose(String input) {
+ setValue(Keys.RETAIN_STATEMENT_AFTER_RESULT_SET_CLOSE.toString(), input);
+ }
+
+ public String getRetainStatementAfterResultSetClose() {
+ return getValue(Keys.RETAIN_STATEMENT_AFTER_RESULT_SET_CLOSE.toString());
+ };
+
+ public void setRetriesAllDown(String input) {
+ setValue(Keys.RETRIES_ALL_DOWN.toString(), input);
+ }
+
+ public String getRetriesAllDown() {
+ return getValue(Keys.RETRIES_ALL_DOWN.toString());
+ };
+
+ public void setRewriteBatchedStatements(String input) {
+ setValue(Keys.REWRITE_BATCHED_STATEMENTS.toString(), input);
+ }
+
+ public String getRewriteBatchedStatements() {
+ return getValue(Keys.REWRITE_BATCHED_STATEMENTS.toString());
+ };
+
+ public void setRollbackOnPooledClose(String input) {
+ setValue(Keys.ROLLBACK_ON_POOLED_CLOSE.toString(), input);
+ }
+
+ public String getRollbackOnPooledClose() {
+ return getValue(Keys.ROLLBACK_ON_POOLED_CLOSE.toString());
+ };
+
+ public void setRoundRobinLoadBalance(String input) {
+ setValue(Keys.ROUND_ROBIN_LOAD_BALANCE.toString(), input);
+ }
+
+ public String getRoundRobinLoadBalance() {
+ return getValue(Keys.ROUND_ROBIN_LOAD_BALANCE.toString());
+ };
+
+ public void setRunningCTS13(String input) {
+ setValue(Keys.RUNNING_C_T_S13.toString(), input);
+ }
+
+ public String getRunningCTS13() {
+ return getValue(Keys.RUNNING_C_T_S13.toString());
+ };
+
+ public void setSecondsBeforeRetryMaster(String input) {
+ setValue(Keys.SECONDS_BEFORE_RETRY_MASTER.toString(), input);
+ }
+
+ public String getSecondsBeforeRetryMaster() {
+ return getValue(Keys.SECONDS_BEFORE_RETRY_MASTER.toString());
+ };
+
+ public void setSelfDestructOnPingMaxOperations(String input) {
+ setValue(Keys.SELF_DESTRUCT_ON_PING_MAX_OPERATIONS.toString(), input);
+ }
+
+ public String getSelfDestructOnPingMaxOperations() {
+ return getValue(Keys.SELF_DESTRUCT_ON_PING_MAX_OPERATIONS.toString());
+ };
+
+ public void setSelfDestructOnPingSecondsLifetime(String input) {
+ setValue(Keys.SELF_DESTRUCT_ON_PING_SECONDS_LIFETIME.toString(), input);
+ }
+
+ public String getSelfDestructOnPingSecondsLifetime() {
+ return getValue(Keys.SELF_DESTRUCT_ON_PING_SECONDS_LIFETIME.toString());
+ };
+
+ public void setServerConfigCacheFactory(String input) {
+ setValue(Keys.SERVER_CONFIG_CACHE_FACTORY.toString(), input);
+ }
+
+ public String getServerConfigCacheFactory() {
+ return getValue(Keys.SERVER_CONFIG_CACHE_FACTORY.toString());
+ };
+
+ public void setServerRSAPublicKeyFile(String input) {
+ setValue(Keys.SERVER_R_S_A_PUBLIC_KEY_FILE.toString(), input);
+ }
+
+ public String getServerRSAPublicKeyFile() {
+ return getValue(Keys.SERVER_R_S_A_PUBLIC_KEY_FILE.toString());
+ };
+
+ public void setServerTimezone(String input) {
+ setValue(Keys.SERVER_TIMEZONE.toString(), input);
+ }
+
+ public String getServerTimezone() {
+ return getValue(Keys.SERVER_TIMEZONE.toString());
+ };
+
+ public void setSessionVariables(String input) {
+ setValue(Keys.SESSION_VARIABLES.toString(), input);
+ }
+
+ public String getSessionVariables() {
+ return getValue(Keys.SESSION_VARIABLES.toString());
+ };
+
+ public void setSlowQueryThresholdMillis(String input) {
+ setValue(Keys.SLOW_QUERY_THRESHOLD_MILLIS.toString(), input);
+ }
+
+ public String getSlowQueryThresholdMillis() {
+ return getValue(Keys.SLOW_QUERY_THRESHOLD_MILLIS.toString());
+ };
+
+ public void setSlowQueryThresholdNanos(String input) {
+ setValue(Keys.SLOW_QUERY_THRESHOLD_NANOS.toString(), input);
+ }
+
+ public String getSlowQueryThresholdNanos() {
+ return getValue(Keys.SLOW_QUERY_THRESHOLD_NANOS.toString());
+ };
+
+ public void setSocketFactory(String input) {
+ setValue(Keys.SOCKET_FACTORY.toString(), input);
+ }
+
+ public String getSocketFactory() {
+ return getValue(Keys.SOCKET_FACTORY.toString());
+ };
+
+ public void setSocketTimeout(String input) {
+ setValue(Keys.SOCKET_TIMEOUT.toString(), input);
+ }
+
+ public String getSocketTimeout() {
+ return getValue(Keys.SOCKET_TIMEOUT.toString());
+ };
+
+ public void setSocksProxyHost(String input) {
+ setValue(Keys.SOCKS_PROXY_HOST.toString(), input);
+ }
+
+ public String getSocksProxyHost() {
+ return getValue(Keys.SOCKS_PROXY_HOST.toString());
+ };
+
+ public void setSocksProxyPort(String input) {
+ setValue(Keys.SOCKS_PROXY_PORT.toString(), input);
+ }
+
+ public String getSocksProxyPort() {
+ return getValue(Keys.SOCKS_PROXY_PORT.toString());
+ };
+
+ public void setStatementInterceptors(String input) {
+ setValue(Keys.STATEMENT_INTERCEPTORS.toString(), input);
+ }
+
+ public String getStatementInterceptors() {
+ return getValue(Keys.STATEMENT_INTERCEPTORS.toString());
+ };
+
+ public void setStrictFloatingPoint(String input) {
+ setValue(Keys.STRICT_FLOATING_POINT.toString(), input);
+ }
+
+ public String getStrictFloatingPoint() {
+ return getValue(Keys.STRICT_FLOATING_POINT.toString());
+ };
+
+ public void setStrictUpdates(String input) {
+ setValue(Keys.STRICT_UPDATES.toString(), input);
+ }
+
+ public String getStrictUpdates() {
+ return getValue(Keys.STRICT_UPDATES.toString());
+ };
+
+ public void setTcpKeepAlive(String input) {
+ setValue(Keys.TCP_KEEP_ALIVE.toString(), input);
+ }
+
+ public String getTcpKeepAlive() {
+ return getValue(Keys.TCP_KEEP_ALIVE.toString());
+ };
+
+ public void setTcpNoDelay(String input) {
+ setValue(Keys.TCP_NO_DELAY.toString(), input);
+ }
+
+ public String getTcpNoDelay() {
+ return getValue(Keys.TCP_NO_DELAY.toString());
+ };
+
+ public void setTcpRcvBuf(String input) {
+ setValue(Keys.TCP_RCV_BUF.toString(), input);
+ }
+
+ public String getTcpRcvBuf() {
+ return getValue(Keys.TCP_RCV_BUF.toString());
+ };
+
+ public void setTcpSndBuf(String input) {
+ setValue(Keys.TCP_SND_BUF.toString(), input);
+ }
+
+ public String getTcpSndBuf() {
+ return getValue(Keys.TCP_SND_BUF.toString());
+ };
+
+ public void setTcpTrafficClass(String input) {
+ setValue(Keys.TCP_TRAFFIC_CLASS.toString(), input);
+ }
+
+ public String getTcpTrafficClass() {
+ return getValue(Keys.TCP_TRAFFIC_CLASS.toString());
+ };
+
+ public void setTinyInt1isBit(String input) {
+ setValue(Keys.TINY_INT1IS_BIT.toString(), input);
+ }
+
+ public String getTinyInt1isBit() {
+ return getValue(Keys.TINY_INT1IS_BIT.toString());
+ };
+
+ public void setTraceProtocol(String input) {
+ setValue(Keys.TRACE_PROTOCOL.toString(), input);
+ }
+
+ public String getTraceProtocol() {
+ return getValue(Keys.TRACE_PROTOCOL.toString());
+ };
+
+ public void setTransformedBitIsBoolean(String input) {
+ setValue(Keys.TRANSFORMED_BIT_IS_BOOLEAN.toString(), input);
+ }
+
+ public String getTransformedBitIsBoolean() {
+ return getValue(Keys.TRANSFORMED_BIT_IS_BOOLEAN.toString());
+ };
+
+ public void setTreatUtilDateAsTimestamp(String input) {
+ setValue(Keys.TREAT_UTIL_DATE_AS_TIMESTAMP.toString(), input);
+ }
+
+ public String getTreatUtilDateAsTimestamp() {
+ return getValue(Keys.TREAT_UTIL_DATE_AS_TIMESTAMP.toString());
+ };
+
+ public void setTrustCertificateKeyStorePassword(String input) {
+ setValue(Keys.TRUST_CERTIFICATE_KEY_STORE_PASSWORD.toString(), input);
+ }
+
+ public String getTrustCertificateKeyStorePassword() {
+ return getValue(Keys.TRUST_CERTIFICATE_KEY_STORE_PASSWORD.toString());
+ };
+
+ public void setTrustCertificateKeyStoreType(String input) {
+ setValue(Keys.TRUST_CERTIFICATE_KEY_STORE_TYPE.toString(), input);
+ }
+
+ public String getTrustCertificateKeyStoreType() {
+ return getValue(Keys.TRUST_CERTIFICATE_KEY_STORE_TYPE.toString());
+ };
+
+ public void setTrustCertificateKeyStoreUrl(String input) {
+ setValue(Keys.TRUST_CERTIFICATE_KEY_STORE_URL.toString(), input);
+ }
+
+ public String getTrustCertificateKeyStoreUrl() {
+ return getValue(Keys.TRUST_CERTIFICATE_KEY_STORE_URL.toString());
+ };
+
+ public void setUltraDevHack(String input) {
+ setValue(Keys.ULTRA_DEV_HACK.toString(), input);
+ }
+
+ public String getUltraDevHack() {
+ return getValue(Keys.ULTRA_DEV_HACK.toString());
+ };
+
+ public void setUseAffectedRows(String input) {
+ setValue(Keys.USE_AFFECTED_ROWS.toString(), input);
+ }
+
+ public String getUseAffectedRows() {
+ return getValue(Keys.USE_AFFECTED_ROWS.toString());
+ };
+
+ public void setUseBlobToStoreUTF8OutsideBMP(String input) {
+ setValue(Keys.USE_BLOB_TO_STORE_U_T_F8_OUTSIDE_B_M_P.toString(), input);
+ }
+
+ public String getUseBlobToStoreUTF8OutsideBMP() {
+ return getValue(Keys.USE_BLOB_TO_STORE_U_T_F8_OUTSIDE_B_M_P.toString());
+ };
+
+ public void setUseColumnNamesInFindColumn(String input) {
+ setValue(Keys.USE_COLUMN_NAMES_IN_FIND_COLUMN.toString(), input);
+ }
+
+ public String getUseColumnNamesInFindColumn() {
+ return getValue(Keys.USE_COLUMN_NAMES_IN_FIND_COLUMN.toString());
+ };
+
+ public void setUseCompression(String input) {
+ setValue(Keys.USE_COMPRESSION.toString(), input);
+ }
+
+ public String getUseCompression() {
+ return getValue(Keys.USE_COMPRESSION.toString());
+ };
+
+ public void setUseConfigs(String input) {
+ setValue(Keys.USE_CONFIGS.toString(), input);
+ }
+
+ public String getUseConfigs() {
+ return getValue(Keys.USE_CONFIGS.toString());
+ };
+
+ public void setUseCursorFetch(String input) {
+ setValue(Keys.USE_CURSOR_FETCH.toString(), input);
+ }
+
+ public String getUseCursorFetch() {
+ return getValue(Keys.USE_CURSOR_FETCH.toString());
+ };
+
+ public void setUseDirectRowUnpack(String input) {
+ setValue(Keys.USE_DIRECT_ROW_UNPACK.toString(), input);
+ }
+
+ public String getUseDirectRowUnpack() {
+ return getValue(Keys.USE_DIRECT_ROW_UNPACK.toString());
+ };
+
+ public void setUseDynamicCharsetInfo(String input) {
+ setValue(Keys.USE_DYNAMIC_CHARSET_INFO.toString(), input);
+ }
+
+ public String getUseDynamicCharsetInfo() {
+ return getValue(Keys.USE_DYNAMIC_CHARSET_INFO.toString());
+ };
+
+ public void setUseFastDateParsing(String input) {
+ setValue(Keys.USE_FAST_DATE_PARSING.toString(), input);
+ }
+
+ public String getUseFastDateParsing() {
+ return getValue(Keys.USE_FAST_DATE_PARSING.toString());
+ };
+
+ public void setUseFastIntParsing(String input) {
+ setValue(Keys.USE_FAST_INT_PARSING.toString(), input);
+ }
+
+ public String getUseFastIntParsing() {
+ return getValue(Keys.USE_FAST_INT_PARSING.toString());
+ };
+
+ public void setUseGmtMillisForDatetimes(String input) {
+ setValue(Keys.USE_GMT_MILLIS_FOR_DATETIMES.toString(), input);
+ }
+
+ public String getUseGmtMillisForDatetimes() {
+ return getValue(Keys.USE_GMT_MILLIS_FOR_DATETIMES.toString());
+ };
+
+ public void setUseHostsInPrivileges(String input) {
+ setValue(Keys.USE_HOSTS_IN_PRIVILEGES.toString(), input);
+ }
+
+ public String getUseHostsInPrivileges() {
+ return getValue(Keys.USE_HOSTS_IN_PRIVILEGES.toString());
+ };
+
+ public void setUseInformationSchema(String input) {
+ setValue(Keys.USE_INFORMATION_SCHEMA.toString(), input);
+ }
+
+ public String getUseInformationSchema() {
+ return getValue(Keys.USE_INFORMATION_SCHEMA.toString());
+ };
+
+ public void setUseJDBCCompliantTimezoneShift(String input) {
+ setValue(Keys.USE_J_D_B_C_COMPLIANT_TIMEZONE_SHIFT.toString(), input);
+ }
+
+ public String getUseJDBCCompliantTimezoneShift() {
+ return getValue(Keys.USE_J_D_B_C_COMPLIANT_TIMEZONE_SHIFT.toString());
+ };
+
+ public void setUseJvmCharsetConverters(String input) {
+ setValue(Keys.USE_JVM_CHARSET_CONVERTERS.toString(), input);
+ }
+
+ public String getUseJvmCharsetConverters() {
+ return getValue(Keys.USE_JVM_CHARSET_CONVERTERS.toString());
+ };
+
+ public void setUseLegacyDatetimeCode(String input) {
+ setValue(Keys.USE_LEGACY_DATETIME_CODE.toString(), input);
+ }
+
+ public String getUseLegacyDatetimeCode() {
+ return getValue(Keys.USE_LEGACY_DATETIME_CODE.toString());
+ };
+
+ public void setUseLocalSessionState(String input) {
+ setValue(Keys.USE_LOCAL_SESSION_STATE.toString(), input);
+ }
+
+ public String getUseLocalSessionState() {
+ return getValue(Keys.USE_LOCAL_SESSION_STATE.toString());
+ };
+
+ public void setUseLocalTransactionState(String input) {
+ setValue(Keys.USE_LOCAL_TRANSACTION_STATE.toString(), input);
+ }
+
+ public String getUseLocalTransactionState() {
+ return getValue(Keys.USE_LOCAL_TRANSACTION_STATE.toString());
+ };
+
+ public void setUseNanosForElapsedTime(String input) {
+ setValue(Keys.USE_NANOS_FOR_ELAPSED_TIME.toString(), input);
+ }
+
+ public String getUseNanosForElapsedTime() {
+ return getValue(Keys.USE_NANOS_FOR_ELAPSED_TIME.toString());
+ };
+
+ public void setUseOldAliasMetadataBehavior(String input) {
+ setValue(Keys.USE_OLD_ALIAS_METADATA_BEHAVIOR.toString(), input);
+ }
+
+ public String getUseOldAliasMetadataBehavior() {
+ return getValue(Keys.USE_OLD_ALIAS_METADATA_BEHAVIOR.toString());
+ };
+
+ public void setUseOldUTF8Behavior(String input) {
+ setValue(Keys.USE_OLD_U_T_F8_BEHAVIOR.toString(), input);
+ }
+
+ public String getUseOldUTF8Behavior() {
+ return getValue(Keys.USE_OLD_U_T_F8_BEHAVIOR.toString());
+ };
+
+ public void setUseOnlyServerErrorMessages(String input) {
+ setValue(Keys.USE_ONLY_SERVER_ERROR_MESSAGES.toString(), input);
+ }
+
+ public String getUseOnlyServerErrorMessages() {
+ return getValue(Keys.USE_ONLY_SERVER_ERROR_MESSAGES.toString());
+ };
+
+ public void setUseReadAheadInput(String input) {
+ setValue(Keys.USE_READ_AHEAD_INPUT.toString(), input);
+ }
+
+ public String getUseReadAheadInput() {
+ return getValue(Keys.USE_READ_AHEAD_INPUT.toString());
+ };
+
+ public void setUseSSL(String input) {
+ setValue(Keys.USE_S_S_L.toString(), input);
+ }
+
+ public String getUseSSL() {
+ return getValue(Keys.USE_S_S_L.toString());
+ };
+
+ public void setUseSSPSCompatibleTimezoneShift(String input) {
+ setValue(Keys.USE_S_S_P_S_COMPATIBLE_TIMEZONE_SHIFT.toString(), input);
+ }
+
+ public String getUseSSPSCompatibleTimezoneShift() {
+ return getValue(Keys.USE_S_S_P_S_COMPATIBLE_TIMEZONE_SHIFT.toString());
+ };
+
+ public void setUseServerPrepStmts(String input) {
+ setValue(Keys.USE_SERVER_PREP_STMTS.toString(), input);
+ }
+
+ public String getUseServerPrepStmts() {
+ return getValue(Keys.USE_SERVER_PREP_STMTS.toString());
+ };
+
+ public void setUseSqlStateCodes(String input) {
+ setValue(Keys.USE_SQL_STATE_CODES.toString(), input);
+ }
+
+ public String getUseSqlStateCodes() {
+ return getValue(Keys.USE_SQL_STATE_CODES.toString());
+ };
+
+ public void setUseStreamLengthsInPrepStmts(String input) {
+ setValue(Keys.USE_STREAM_LENGTHS_IN_PREP_STMTS.toString(), input);
+ }
+
+ public String getUseStreamLengthsInPrepStmts() {
+ return getValue(Keys.USE_STREAM_LENGTHS_IN_PREP_STMTS.toString());
+ };
+
+ public void setUseTimezone(String input) {
+ setValue(Keys.USE_TIMEZONE.toString(), input);
+ }
+
+ public String getUseTimezone() {
+ return getValue(Keys.USE_TIMEZONE.toString());
+ };
+
+ public void setUseUnbufferedInput(String input) {
+ setValue(Keys.USE_UNBUFFERED_INPUT.toString(), input);
+ }
+
+ public String getUseUnbufferedInput() {
+ return getValue(Keys.USE_UNBUFFERED_INPUT.toString());
+ };
+
+ public void setUseUnicode(String input) {
+ setValue(Keys.USE_UNICODE.toString(), input);
+ }
+
+ public String getUseUnicode() {
+ return getValue(Keys.USE_UNICODE.toString());
+ };
+
+ public void setUseUsageAdvisor(String input) {
+ setValue(Keys.USE_USAGE_ADVISOR.toString(), input);
+ }
+
+ public String getUseUsageAdvisor() {
+ return getValue(Keys.USE_USAGE_ADVISOR.toString());
+ };
+
+ public void setUser(String input) {
+ setValue(Keys.USER.toString(), input);
+ }
+
+ public String getUser() {
+ return getValue(Keys.USER.toString());
+ };
+
+ public void setUtf8OutsideBmpExcludedColumnNamePattern(String input) {
+ setValue(Keys.UTF8_OUTSIDE_BMP_EXCLUDED_COLUMN_NAME_PATTERN.toString(),
+ input);
+ }
+
+ public String getUtf8OutsideBmpExcludedColumnNamePattern() {
+ return getValue(Keys.UTF8_OUTSIDE_BMP_EXCLUDED_COLUMN_NAME_PATTERN
+ .toString());
+ };
+
+ public void setUtf8OutsideBmpIncludedColumnNamePattern(String input) {
+ setValue(Keys.UTF8_OUTSIDE_BMP_INCLUDED_COLUMN_NAME_PATTERN.toString(),
+ input);
+ }
+
+ public String getUtf8OutsideBmpIncludedColumnNamePattern() {
+ return getValue(Keys.UTF8_OUTSIDE_BMP_INCLUDED_COLUMN_NAME_PATTERN
+ .toString());
+ };
+
+ public void setVerifyServerCertificate(String input) {
+ setValue(Keys.VERIFY_SERVER_CERTIFICATE.toString(), input);
+ }
+
+ public String getVerifyServerCertificate() {
+ return getValue(Keys.VERIFY_SERVER_CERTIFICATE.toString());
+ };
+
+ public void setZeroDateTimeBehavior(String input) {
+ setValue(Keys.ZERO_DATE_TIME_BEHAVIOR.toString(), input);
+ }
+
+ public String getZeroDateTimeBehavior() {
+ return getValue(Keys.ZERO_DATE_TIME_BEHAVIOR.toString());
+ };
+
+ public HashMap<String, String> filterProperties() {
+ return filterProperties(OSGiUtil.getEnumValues(Keys.class));
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/AbstractDisposable.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/AbstractDisposable.java
new file mode 100644
index 0000000..dfef3c5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/AbstractDisposable.java
@@ -0,0 +1,170 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.dispose;
+
+import java.util.ArrayList;
+import java.util.List;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Base implementation for {@link IDisposable}. Subclasses should override
+ * {@link #internalDispose()} to dispose their content.
+ */
+public abstract class AbstractDisposable implements IDisposable {
+
+ /** The disposed. */
+ private volatile boolean disposed;
+
+ /** The disposing. */
+ private volatile boolean disposing;
+
+ /** The dispose listeners. */
+ private List<IDisposable.Listener> disposeListeners;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isDisposed() {
+ return disposed;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isDisposing() {
+ return disposing;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void dispose() {
+ // check disposed first
+ if (!canDispose()) {
+ return;
+ }
+
+ synchronized (this) {
+ // check disposed again for threads that have been waiting in lock
+ if (!canDispose()) {
+ return;
+ }
+
+ try {
+ disposing = true;
+
+ if (!isDisposed()) {
+ internalDispose();
+ }
+
+ // first call the dispose listener and the set disposed=true
+ notifyDisposeListeners();
+
+ // clear the dispose listener
+ //
+ if (disposeListeners != null) {
+ disposeListeners.clear();
+ disposeListeners = null;
+ }
+
+ } finally {
+ disposed = true;
+ disposing = false;
+ }
+ }
+ }
+
+ /**
+ * Returns true if not disposing and not disposed.
+ *
+ * @return true, if successful
+ */
+ protected boolean canDispose() {
+ return !isDisposing() && !isDisposed();
+ }
+
+ /**
+ * Should be overridden by subclasses to dispose their content.
+ */
+ protected abstract void internalDispose();
+
+ /**
+ * Checks whether the element is disposed. Throws a DisposeException is the
+ * element is disposed.
+ *
+ * @throws DisposeException the dispose exception
+ */
+ protected void checkDisposed() {
+ IDisposable.DisposableUtil.checkDisposed(this);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.dispose.IDisposable#addDisposeListener(org.eclipse.osbp.runtime.common.dispose.IDisposable.Listener)
+ */
+ @Override
+ public void addDisposeListener(Listener listener) {
+ checkDisposed();
+
+ if (listener == null) {
+ return;
+ }
+
+ if (disposeListeners == null) {
+ disposeListeners = new ArrayList<IDisposable.Listener>();
+ }
+
+ if (!disposeListeners.contains(listener)) {
+ disposeListeners.add(listener);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.dispose.IDisposable#removeDisposeListener(org.eclipse.osbp.runtime.common.dispose.IDisposable.Listener)
+ */
+ @Override
+ public void removeDisposeListener(Listener listener) {
+ checkDisposed();
+
+ if (listener == null || disposeListeners == null) {
+ return;
+ }
+
+ disposeListeners.remove(listener);
+ }
+
+ /**
+ * Notifies all listeners about the disposal of that elemenyElement.
+ */
+ protected void notifyDisposeListeners() {
+ if (disposeListeners == null) {
+ return;
+ }
+
+ for (IDisposable.Listener listener : disposeListeners
+ .toArray(new IDisposable.Listener[disposeListeners.size()])) {
+ listener.notifyDisposed(this);
+ }
+ }
+
+ /**
+ * Returns a mutable list of dispose listener.
+ *
+ * @return the disposeListeners
+ */
+ protected List<IDisposable.Listener> getDisposeListeners() {
+ return disposeListeners != null ? new ArrayList<IDisposable.Listener>(
+ disposeListeners) : new ArrayList<IDisposable.Listener>();
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/IDisposable.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/IDisposable.java
new file mode 100644
index 0000000..c8125a1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/IDisposable.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.dispose;
+
+/**
+ * Disposable objects can be destroyed. Which means, that the state is invalid
+ * for further use and internal references are prepared for garbage collection.<br>
+ * Object that have been disposed once cannot be used anymore. The creation of a
+ * new object is required.
+ * <p>
+ * No implement by clients.
+ */
+public interface IDisposable {
+
+ /**
+ * Returns true, during the disposal process.
+ *
+ * @return disposing
+ */
+ boolean isDisposing();
+
+ /**
+ * Returns true, if this object was already disposed.
+ *
+ * @return disposed
+ */
+ boolean isDisposed();
+
+ /**
+ * If called, the element will be disposed. All created ui elements will be
+ * removed from its parent and this class will be prepared for garbage
+ * collection.<br>
+ * NO further use is possible. Creation of a new element required.
+ * <p>
+ * Calling this method twice is allowed.
+ */
+ void dispose();
+
+ /**
+ * Adds a listener which will be notified if the object was disposed.<br>
+ * Adding a listener twice has no effect.
+ *
+ * @param listener
+ * Listener to be added
+ */
+ void addDisposeListener(IDisposable.Listener listener);
+
+ /**
+ * Remove the dispose listener.
+ *
+ * @param listener
+ * Listener to be removed
+ */
+ void removeDisposeListener(IDisposable.Listener listener);
+
+ /**
+ * A public helper util that can be used to check the dispose state of an
+ * element.
+ */
+ public static class DisposableUtil {
+
+ /**
+ * Throws a {@link DisposeException} if the given object is disposed.
+ *
+ * @param disposable
+ * The disposable object
+ */
+ public static void checkDisposed(IDisposable disposable) {
+ if (disposable != null && disposable.isDisposed()) {
+ throw new DisposeException(disposable);
+ }
+ }
+ }
+
+ /**
+ * Will be thrown if disposed objects are accessed.
+ */
+ public static class DisposeException extends RuntimeException {
+
+ private static final long serialVersionUID = 23566849649196005L;
+
+ /**
+ * Constructor.
+ *
+ * @param o
+ * Any kind of object.
+ */
+ public DisposeException(Object o) {
+ super(o.toString());
+ }
+ }
+
+ /**
+ * A listener that is notified if the observed object was disposed.
+ */
+ public interface Listener {
+ /**
+ * Is called if the object was disposed.
+ *
+ * @param notifier
+ * The object sending the dispose event.
+ */
+ void notifyDisposed(IDisposable notifier);
+ }
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/IReferenceCountable.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/IReferenceCountable.java
new file mode 100644
index 0000000..22d557a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/dispose/IReferenceCountable.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.dispose;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Implementations need to hold an internal counter about references to the
+ * instance. If usage reaches zero, the instance must be disposed.
+ */
+public interface IReferenceCountable {
+
+ /**
+ * Returns the usage count.
+ *
+ * @return the usage count
+ */
+ int getUsageCount();
+
+ /**
+ * Increases the usage count.
+ */
+ void increaseUsageCount();
+
+ /**
+ * Decreases the usage count.
+ */
+ void decreaseUsageCount();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventBroker.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventBroker.java
new file mode 100644
index 0000000..f32b774
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventBroker.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2013 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Florian Pirchner - adjustments to osbp code
+ *******************************************************************************/
+package org.eclipse.osbp.runtime.common.event;
+
+import java.util.Dictionary;
+import java.util.Map;
+
+import org.osgi.service.event.EventHandler;
+
+// TODO: Auto-generated Javadoc
+/**
+ * To obtain an instance of the event broker service from the #IEclipseContext context, use
+ *
+ * <pre>
+ * (IEventBroker) context.get(IEventBroker.class.getName())
+ * </pre>
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IEventBroker {
+
+ /**
+ * The name of the default event attribute used to pass data.
+ */
+ public String DATA = "org.eclipse.osbp.data"; //$NON-NLS-1$
+
+ /**
+ * Publish event synchronously (the method does not return until the event is processed).
+ * <p>
+ * If data is a {@link Map} or a {@link Dictionary}, it is passed as is. Otherwise, a new Map is
+ * constructed and its {@link #DATA} attribute is populated with this value.
+ *
+ *
+ * @param topic
+ * topic of the event to be published
+ * @param data
+ * data to be published with the event
+ * @return <code>true</code> if this operation was performed successfully; <code>false</code>
+ * otherwise
+ */
+ public boolean send(String topic, Object data);
+
+ /**
+ * Publish event asynchronously (this method returns immediately).
+ * <p>
+ * If data is a {@link Map} or a {@link Dictionary}, it is passed as is. Otherwise, a new Map is
+ * constructed and its {@link #DATA} attribute is populated with this value.
+ *
+ *
+ * @param topic
+ * topic of the event to be published
+ * @param data
+ * data to be published with the event
+ * @return <code>true</code> if this operation was performed successfully; <code>false</code>
+ * otherwise
+ */
+ public boolean post(String topic, Object data);
+
+ /**
+ * Subscribe for events on the given topic.
+ * <p>
+ * The handler will be called on the UI thread.
+ *
+ *
+ * @param topic
+ * topic of interest
+ * @param eventHandler
+ * object to call when an event of interest arrives
+ * @return <code>true</code> if this operation was performed successfully; <code>false</code>
+ * otherwise
+ */
+ public boolean subscribe(String topic, EventHandler eventHandler);
+
+ /**
+ * Subscribe for events on the given topic.
+ * <p>
+ * The handler will be called on the UI thread if "headless" is set to <code>true</code>.
+ *
+ *
+ * @param topic
+ * topic of interest
+ * @param filter
+ * the LDAP event filter
+ * @param eventHandler
+ * object to call when an event of interest arrives
+ * @param headless
+ * <code>true</code> if handing of the events does not require UI; <code>false</code>
+ * otherwise
+ * @return <code>true</code> if this operation was performed successfully; <code>false</code>
+ * otherwise
+ */
+ public boolean subscribe(String topic, String filter, EventHandler eventHandler,
+ boolean headless);
+
+ /**
+ * Unsubscribe handler previously registered using {@link #subscribe(String, EventHandler)}.
+ *
+ * @param eventHandler
+ * previously registered event handler
+ * @return <code>true</code> if this operation was performed successfully; <code>false</code>
+ * otherwise
+ */
+ public boolean unsubscribe(EventHandler eventHandler);
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/extender/IExtenderConstants.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/extender/IExtenderConstants.java
new file mode 100644
index 0000000..dd4a661
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/extender/IExtenderConstants.java
@@ -0,0 +1,26 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.runtime.common.extender;
+
+/**
+ * The Interface IExtenderConstants.
+ */
+public interface IExtenderConstants {
+
+ /** This Constant to be used for identification of DSL instance bundles. */
+ public static final String FACTORY_MODEL_EXTENDER = "Factory-Model";
+ /** This Constant to be used for identification of necessary runtime bundles. */
+ public static final String FACTORY_BUNDLE_EXTENDER = "Factory-Bundle";
+ /** This Constant to be used for identification of bundles containing translations. */
+ public static final String FACTORY_TRANSLATIONS = "Factory-Translations";
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/hash/HashUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/hash/HashUtil.java
new file mode 100644
index 0000000..a016bf6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/hash/HashUtil.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.hash;
+
+import com.google.common.hash.Hashing;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Common HashUtil.
+ */
+public class HashUtil {
+
+ /**
+ * Creates a hash code for an object with the class name and objects
+ * hashCode.
+ * <p>
+ * <i>org.eclipse.osbp.dtos.ItemDTO(id=17):</i>
+ * <code>hash("org.eclipse.osbp.dtos.ItemDto({object.hashCode()})")</code>
+ *
+ * @param clazz the clazz
+ * @param object the object
+ * @return the string
+ */
+ public static String createObjectWithIdHash(Class<?> clazz, Object object) {
+ return createObjectWithIdHash(clazz.getCanonicalName(), object);
+ }
+
+ /**
+ * Creates a hash code for an object with the class name and objects
+ * hashCode.
+ * <p>
+ * <i>org.eclipse.osbp.dtos.ItemDTO(id=17):</i>
+ * <code>hash("org.eclipse.osbp.dtos.ItemDto({object.hashCode()})")</code>
+ *
+ * @param objectName the object name
+ * @param object the object
+ * @return the string
+ */
+ public static String createObjectWithIdHash(String objectName, Object object) {
+ return Hashing
+ .sha1()
+ .hashBytes(
+ String.format("%s(%s)", objectName,
+ String.valueOf(object.hashCode())).getBytes())
+ .toString();
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/help/HelpRequestBuilder.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/help/HelpRequestBuilder.java
new file mode 100644
index 0000000..ee99dd1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/help/HelpRequestBuilder.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.help;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class HelpRequestBuilder.
+ */
+public class HelpRequestBuilder {
+
+ /** The properties. */
+ private Map<String, Object> properties = new HashMap<String, Object>();
+
+ /**
+ * Instantiates a new help request builder.
+ */
+ private HelpRequestBuilder() {
+
+ }
+
+ /**
+ * New request.
+ *
+ * @return the help request builder
+ */
+ public static final HelpRequestBuilder newRequest() {
+ return new HelpRequestBuilder();
+ }
+
+ /**
+ * The type of the help.
+ *
+ * @param requestType
+ * the request type
+ * @return the help request builder
+ */
+ public HelpRequestBuilder type(String requestType) {
+ properties.put(IHelpService.TYPE__TASK, requestType);
+ return this;
+ }
+
+ /**
+ * An id which identifies the help for the requestType.
+ *
+ * @param id
+ * the id
+ * @return the help request builder
+ */
+ public HelpRequestBuilder id(Object id) {
+ properties.put(IHelpService.PROP__ID, id);
+ return this;
+ }
+
+ /**
+ * Any kind of data.
+ *
+ * @param data
+ * the data
+ * @return the help request builder
+ */
+ public HelpRequestBuilder data(Object data) {
+ properties.put(IHelpService.PROP__DATA, data);
+ return this;
+ }
+
+ /**
+ * Pass any property.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ * @return the help request builder
+ */
+ public HelpRequestBuilder property(String key, Object value) {
+ properties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Returns the resulting request parameters.
+ *
+ * @return the map
+ */
+ public Map<String, Object> toRequest() {
+ return new HashMap<String, Object>(properties);
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/help/IHelpService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/help/IHelpService.java
new file mode 100644
index 0000000..990f2db
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/help/IHelpService.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.help;
+
+import java.util.Map;
+
+/**
+ * The Interface IHelpService.
+ */
+public interface IHelpService {
+
+ /**
+ * Is used in the properties to define the helpType.
+ */
+ public static final String PROP__HELP_TYPE = "helpType";
+
+ /**
+ * Is used in the properties to pass any kind of data.
+ */
+ public static final String PROP__DATA = "data";
+
+ /**
+ * Is used in the properties to define the id of the given data. The
+ * implementation is responsible to provide a mechanism to convert the given
+ * id to the underlying logic.
+ */
+ public static final String PROP__ID = "id";
+
+ /**
+ * The type of the help is a task help.
+ */
+ public static final String TYPE__TASK = "task";
+
+ /**
+ * Returns the help content in html format.
+ *
+ * @param request
+ * The help content to be converted to html
+ * @return the html
+ */
+ String getHtml(Map<String, Object> request);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nAdapter.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nAdapter.java
new file mode 100644
index 0000000..72d9d7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nAdapter.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.i18n;
+
+import org.eclipse.osbp.runtime.common.dispose.AbstractDisposable;
+
+public abstract class I18nAdapter extends AbstractDisposable implements
+ II18nService {
+
+ @Override
+ protected void internalDispose() {
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nRegistry.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nRegistry.java
new file mode 100644
index 0000000..9b245c8
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nRegistry.java
@@ -0,0 +1,689 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.i18n;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.collections.map.LRUMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A registry that may be used to collect and access I18n translations based on
+ * URLs. The target of URLs need to be property files with the name pattern
+ * {file}_{language}-{country} (myI18n_de-DE). If no language and country are
+ * specified, the default locale is used.
+ */
+public class I18nRegistry {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(I18nRegistry.class);
+
+ /** The fast access. */
+ private final LRUMap fastAccess = new LRUMap(1000);
+
+ /** The cache. */
+ private final Map<Locale, List<ResourceDescription>> cache = new HashMap<Locale, List<ResourceDescription>>();
+
+ /**
+ * Instantiates a new i18n registry.
+ */
+ public I18nRegistry() {
+
+ }
+
+ /**
+ * Tries to find the translation for the given locale and key.
+ *
+ * @param locale
+ * the locale
+ * @param key
+ * the key
+ * @return the string
+ */
+ public String findTranslation(Locale locale, String key) {
+ String result = tryFastAccess(locale, key);
+ if (result != null) {
+ return result;
+ }
+
+ AccessPath accessPath = computeBestMatchAccessPath(locale, key);
+ Translation translation = accessPath.getTranslation();
+ if (translation == null) {
+ return "";
+ }
+
+ return putFastAccess(translation.getLocale(), translation.getI18nKey(),
+ translation.getI18nValue());
+ }
+
+ /**
+ * Try to find the translation in the fast access map.
+ *
+ * @param locale
+ * the locale
+ * @param key
+ * the key
+ * @return the string
+ */
+ private String tryFastAccess(Locale locale, String key) {
+ List<Locale> computedLocales = computeLocales(locale);
+ for (Locale temp : computedLocales) {
+ String fastAccessKey = createFastAccessKey(temp, key);
+ String result = (String) fastAccess.get(fastAccessKey);
+ if (result != null) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Try to find the translation in the fast access map.
+ *
+ * @param locale
+ * the locale
+ * @param key
+ * the key
+ * @param translation
+ * the translation
+ * @return the string
+ */
+ private String putFastAccess(Locale locale, String key, String translation) {
+ fastAccess.put(createFastAccessKey(locale, key), translation);
+ return translation;
+ }
+
+ /**
+ * Creates the key for the fast access map access.
+ *
+ * @param temp
+ * the temp
+ * @param key
+ * the key
+ * @return the string
+ */
+ private String createFastAccessKey(Locale temp, String key) {
+ return temp.toLanguageTag() + ":" + key;
+ }
+
+ /**
+ * Computes the access url.
+ * <p>
+ * Following order will be used:
+ * <ol>
+ * <li>Use given locale</li>
+ * <li>Create more specific locale and repeat until default locale is
+ * reached.</li>
+ * </ul> </li>
+ * </ol>
+ *
+ * @param locale
+ * the locale
+ * @param key
+ * the key
+ * @return the access path
+ */
+ private AccessPath computeAccessPath(Locale locale, String key) {
+
+ String temp = key;
+ Matcher valueMatcher = null;
+ if (temp != null && !"".equals(temp)) {
+ temp = Pattern.quote(temp);
+ Pattern valuePattern = Pattern.compile(temp);
+ valueMatcher = valuePattern.matcher("");
+ valueMatcher.reset();
+ }
+
+ AccessPath url = new AccessPath();
+ int prio = 0;
+
+ List<Locale> computedLocales = computeLocales(locale);
+
+ for (Locale computedLocale : computedLocales) {
+ Accessor accessor = new Accessor(computedLocale, ++prio, temp,
+ valueMatcher);
+ url.addAccessor(accessor);
+ }
+
+ return url;
+ }
+
+ /**
+ * Computes the access url to find the best matching element. See
+ * {@link #computeAccessPath(IProject, Locale, String, String)}.
+ *
+ * @param locale
+ * the locale
+ * @param key
+ * the key
+ * @return the access path
+ */
+ private AccessPath computeBestMatchAccessPath(Locale locale, String key) {
+ return computeAccessPath(locale, key);
+ }
+
+ /**
+ * Computes all locales that should be added to AccessPath.
+ *
+ * @param locale
+ * the locale
+ * @return the list
+ */
+ private List<Locale> computeLocales(Locale locale) {
+ List<Locale> locales = new LinkedList<Locale>();
+
+ // Add first locale
+ locales.add(locale);
+
+ Locale temp = locale;
+ while (true) {
+ String tag = temp.toLanguageTag();
+ String[] segments = tag.split("-");
+ if (segments.length > 1) {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < segments.length - 1; i++) {
+ if (builder.length() != 0) {
+ builder.append("-");
+ }
+ builder.append(segments[i]);
+ }
+ Locale moreGeneral = Locale.forLanguageTag(builder.toString());
+ locales.add(moreGeneral);
+ temp = moreGeneral;
+ } else {
+ break;
+ }
+ }
+
+ locales.add(new Locale(""));
+
+ return locales;
+ }
+
+ /**
+ * Checks if is valid.
+ *
+ * @param result
+ * the result
+ * @return true, if is valid
+ */
+ private boolean isValid(String result) {
+ return result != null && !"".equals(result);
+ }
+
+ /**
+ * Add a new resource to the cache.
+ *
+ * @param url
+ * the url
+ */
+ public void addResource(URL url) {
+
+ Properties properties = new Properties();
+ try {
+ properties.load(url.openStream());
+ } catch (IOException e) {
+ LOGGER.error("{}", e);
+ return;
+ }
+
+ Locale locale = getLocale(url);
+ if (locale == null) {
+ LOGGER.error("Could not determine locale for " + url.toString());
+ return;
+ }
+
+ ResourceDescription description = new ResourceDescription(locale, url,
+ properties);
+ addResource(description);
+ }
+
+ /**
+ * Gets the locale.
+ *
+ * @param url
+ * the url
+ * @return the locale
+ */
+ private Locale getLocale(URL url) {
+ String urlString = url.toString();
+ String file = urlString.substring(urlString.lastIndexOf("/") + 1);
+
+ String[] tokens = file.replace(".properties", "").split("_");
+ StringBuilder builder = new StringBuilder();
+ if (tokens.length >= 2) {
+ for (int i = 1; i < tokens.length; i++) {
+ if (builder.length() > 0) {
+ builder.append("-");
+ }
+ builder.append(tokens[i]);
+ }
+ }
+ Locale locale = Locale.forLanguageTag(builder.toString());
+ return locale;
+ }
+
+ /**
+ * Add a new resource to the cache.
+ *
+ * @param description
+ * the description
+ */
+ public void addResource(ResourceDescription description) {
+ synchronized (cache) {
+ if (!cache.containsKey(description.getLocale())) {
+ cache.put(description.getLocale(),
+ new ArrayList<ResourceDescription>());
+ }
+
+ List<ResourceDescription> descs = cache
+ .get(description.getLocale());
+ if (!descs.contains(description)) {
+ descs.add(description);
+ }
+ }
+
+ // clear the fast access cache
+ fastAccess.clear();
+ }
+
+ /**
+ * Gets the resource descriptions.
+ *
+ * @param locale
+ * the locale
+ * @return the resource descriptions
+ */
+ private List<ResourceDescription> getResourceDescriptions(Locale locale) {
+ if (cache.containsKey(locale)) {
+ return new ArrayList<I18nRegistry.ResourceDescription>(
+ cache.get(locale));
+ } else {
+ return Collections.emptyList();
+ }
+ }
+
+ /**
+ * Removes the given translations.
+ *
+ * @param locale
+ * the locale
+ * @param url
+ * the url
+ */
+ public void removeResource(Locale locale, URL url) {
+ if (!cache.containsKey(locale)) {
+ return;
+ }
+
+ // clear the fast access cache
+ fastAccess.clear();
+
+ // remove the resource from the builder
+ synchronized (cache) {
+ List<ResourceDescription> descs = cache.get(locale);
+ for (Iterator<ResourceDescription> iterator = descs.iterator(); iterator
+ .hasNext();) {
+ ResourceDescription desc = iterator.next();
+ try {
+ // avoid lookups ->
+ // http://michaelscharf.blogspot.co.at/2006/11/javaneturlequals-and-hashcode-make.html
+ URI uri = url.toURI();
+ URI descURI = desc.getURI();
+ if (descURI != null && descURI.equals(uri)) {
+ iterator.remove();
+ }
+ } catch (URISyntaxException e) {
+ LOGGER.error("{}", e);
+ }
+ }
+ }
+ }
+
+ /**
+ * Removes the translations with the given URL.
+ *
+ * @param url
+ * the url
+ */
+ public void removeResource(URL url) {
+ Locale locale = getLocale(url);
+ if (locale == null) {
+ LOGGER.error("Could not determine locale for " + url.toString());
+ return;
+ }
+ removeResource(locale, url);
+
+ }
+
+ /**
+ * Defines how the registry should be searched. For instance the ordering of
+ * locales...
+ */
+ private static class AccessPath {
+
+ /** The accessors. */
+ private List<Accessor> accessors = new LinkedList<I18nRegistry.Accessor>();
+
+ /**
+ * Instantiates a new access path.
+ */
+ public AccessPath() {
+ }
+
+ /**
+ * Adds the accessor.
+ *
+ * @param accessor
+ * the accessor
+ */
+ public void addAccessor(Accessor accessor) {
+ accessors.add(accessor);
+ }
+
+ /**
+ * Returns the translation. The key matches the entire key for an i18n
+ * record.
+ *
+ * @return the translation
+ */
+ public Translation getTranslation() {
+ for (Accessor accessor : accessors) {
+ Translation result = accessor.getTranslation();
+ if (result != null) {
+ return result;
+ }
+ }
+
+ return null;
+ }
+ }
+
+ /**
+ * This class will access the registry.
+ */
+ private class Accessor {
+
+ /** The locale. */
+ private final Locale locale;
+
+ /** The matcher. */
+ private final Matcher matcher;
+
+ /** The key. */
+ @SuppressWarnings("unused")
+ private final String key;
+
+ /** The prio. */
+ private final int prio;
+
+ /**
+ * Instantiates a new accessor.
+ *
+ * @param locale
+ * the locale
+ * @param prio
+ * the prio
+ * @param key
+ * the key
+ * @param matcher
+ * the matcher
+ */
+ public Accessor(Locale locale, int prio, String key, Matcher matcher) {
+ super();
+ this.locale = locale;
+ this.key = key;
+ this.matcher = matcher;
+ this.prio = prio;
+ }
+
+ /**
+ * Returns the first translation found. The matcher must match the given
+ * key.
+ *
+ * @return the translation
+ */
+ public Translation getTranslation() {
+ List<ResourceDescription> descs = getResourceDescriptions(locale);
+ for (ResourceDescription desc : descs) {
+ for (Map.Entry<Object, Object> entry : desc.getProperties()
+ .entrySet()) {
+ if (matcher.reset((String) entry.getKey()).matches()) {
+ if (isValid((String) entry.getValue())) {
+ return new Translation((String) entry.getKey(),
+ (String) entry.getValue(), desc, prio);
+ }
+ }
+ }
+ }
+ return null;
+ }
+ }
+
+ /**
+ * A resource is a file containing all translations for a file.
+ */
+ public static class ResourceDescription {
+
+ /** The locale. */
+ private final Locale locale;
+
+ /** The url. */
+ private final URL url;
+
+ /** The properties. */
+ private final Properties properties;
+
+ /**
+ * Instantiates a new resource description.
+ *
+ * @param locale
+ * the locale
+ * @param url
+ * the url
+ * @param properties
+ * the properties
+ */
+ public ResourceDescription(Locale locale, URL url, Properties properties) {
+ this.locale = locale;
+ this.url = url;
+ this.properties = properties;
+ }
+
+ /**
+ * Gets the locale.
+ *
+ * @return the locale
+ */
+ public Locale getLocale() {
+ return locale;
+ }
+
+ /**
+ * Gets the url.
+ *
+ * @return the url
+ */
+ public URL getURL() {
+ return url;
+ }
+
+ /**
+ * Gets the uri.
+ *
+ * @return the uri
+ * @throws URISyntaxException
+ * the URI syntax exception
+ */
+ public URI getURI() throws URISyntaxException {
+ return url != null ? url.toURI() : null;
+ }
+
+ /**
+ * Gets the properties.
+ *
+ * @return the properties
+ */
+ public Properties getProperties() {
+ return properties;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ try {
+ // try to use URI for performance issues
+ URI uri = getURI();
+ result = prime * result + ((uri == null) ? 0 : uri.hashCode());
+ } catch (URISyntaxException e) {
+ // otherwise fall back to url
+ result = prime * result + ((url == null) ? 0 : url.hashCode());
+ }
+
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+
+ ResourceDescription other = (ResourceDescription) obj;
+ try {
+ // try to use URI for performance issues
+ URI uri = getURI();
+ URI otherUri = other.getURI();
+ if (uri == null) {
+ if (otherUri != null)
+ return false;
+ } else if (!uri.equals(otherUri))
+ return false;
+ } catch (URISyntaxException e) {
+ // otherwise fall back to url
+ if (url == null) {
+ if (other.url != null)
+ return false;
+ } else if (!url.equals(other.url))
+ return false;
+ }
+ return true;
+ }
+ }
+
+ /**
+ * The Class Translation.
+ */
+ public static class Translation {
+
+ /** The i18n key. */
+ private final String i18nKey;
+
+ /** The i18n value. */
+ private final String i18nValue;
+
+ /** The resource description. */
+ private final ResourceDescription resourceDescription;
+
+ /** The priority. */
+ @SuppressWarnings("unused")
+ private final int priority;
+
+ /**
+ * Instantiates a new translation.
+ *
+ * @param i18nKey
+ * the i18n key
+ * @param i18nValue
+ * the i18n value
+ * @param resourceDescription
+ * the resource description
+ * @param priority
+ * the priority
+ */
+ public Translation(String i18nKey, String i18nValue,
+ ResourceDescription resourceDescription, int priority) {
+ super();
+ this.i18nKey = i18nKey;
+ this.i18nValue = i18nValue;
+ this.resourceDescription = resourceDescription;
+ this.priority = priority;
+ }
+
+ /**
+ * Returns the i18nKey.
+ *
+ * @return the i18n key
+ */
+ public String getI18nKey() {
+ return i18nKey;
+ }
+
+ /**
+ * Returns the i18nValue.
+ *
+ * @return the i18n value
+ */
+ public String getI18nValue() {
+ return i18nValue;
+ }
+
+ /**
+ * Returns the locale where key and value had been found.
+ *
+ * @return the locale
+ */
+ public Locale getLocale() {
+ return resourceDescription.getLocale();
+ }
+
+ /**
+ * Returns the resource description, where the i18n entry was contained.
+ *
+ * @return the resource description
+ */
+ public ResourceDescription getResourceDescription() {
+ return resourceDescription;
+ }
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nUtil.java
new file mode 100644
index 0000000..260da4c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/I18nUtil.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.i18n;
+
+import java.text.DecimalFormat;
+import java.util.Locale;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class I18nUtil.
+ */
+public class I18nUtil {
+
+ /**
+ * Formats the enum literal.
+ *
+ * @param i18nService the i18n service
+ * @param value the value
+ * @param locale the locale
+ * @return the string
+ */
+ public static String translateEnum(II18nService i18nService, Object value,
+ Locale locale) {
+ Enum<?> enumx = (Enum<?>) value;
+ String i18nKey = getI18nKey(enumx.getClass().getName(), enumx);
+ String result = null;
+ if (i18nService != null) {
+ result = i18nService.getValue(i18nKey, locale);
+ }
+
+ if (result == null || result.trim().equals("")) {
+ result = enumx.name();
+ }
+
+ return result;
+ }
+
+ /**
+ * Formats the boolean value.
+ *
+ * @param i18nService the i18n service
+ * @param value the value
+ * @param locale the locale
+ * @return the string
+ */
+ public static String translateBoolean(II18nService i18nService,
+ Boolean value, Locale locale) {
+ if (i18nService == null) {
+ return "";
+ }
+ String result = i18nService.getValue(Boolean.class.getName() + "."
+ + value.toString(), locale);
+
+ if (result == null || result.trim().equals("")) {
+ result = value.toString();
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the i18n key for the enum and its literal.
+ *
+ * @param enumName the enum name
+ * @param literal the literal
+ * @return the i18n key
+ */
+ public static String getI18nKey(String enumName, Enum<?> literal) {
+ return enumName + "." + literal.name();
+ }
+
+ /**
+ * Returns the i18n key for the enum and its literal.
+ *
+ * @param enumX the enum x
+ * @return the i18n key
+ */
+ public static String getI18nKey(Enum<?> enumX) {
+ return getI18nKey(enumX.getClass().getName(), enumX);
+ }
+
+ /**
+ * Returns the i18nImageKey for the Enum name and literal.
+ *
+ * @param enumName the enum name
+ * @param literal the literal
+ * @return the image i18n key
+ */
+ public static String getImageI18nKey(String enumName, Enum<?> literal) {
+ return enumName + "." + literal.name() + ".image";
+ }
+
+ /**
+ * Returns the image key for the given label key.
+ *
+ * @param i18nLabelKey the i18n label key
+ * @return the image key
+ */
+ public static String getImageKey(String i18nLabelKey) {
+ String iconKey = i18nLabelKey + ".image";
+ return iconKey;
+ }
+
+ /**
+ * Translates number values to their locale representation.
+ *
+ * @param i18nService the i18n service
+ * @param number the number
+ * @param locale the locale
+ * @return the string
+ */
+ public static String translateNumber(II18nService i18nService,
+ Number number, Locale locale) {
+
+ if (number instanceof Short || number instanceof Integer
+ || number instanceof Byte || number instanceof Long) {
+ return DecimalFormat.getIntegerInstance(locale).format(number);
+ } else {
+ return DecimalFormat.getNumberInstance(locale).format(number);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/II18nService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/II18nService.java
new file mode 100644
index 0000000..c286b58
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/II18nService.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2012, 2015 - Lunifera GmbH (Austria), Loetz GmbH&Co.KG 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:
+ * Florian Pirchner - initial API and implementation
+ */
+package org.eclipse.osbp.runtime.common.i18n;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.runtime.common.dispose.IDisposable;
+
+
+/**
+ * This service returns the string value for a given i18nKey and locale.
+ */
+public interface II18nService extends IDisposable {
+
+ /** The id. */
+ public static String ID = II18nService.class.getName();
+
+ /**
+ * Returns the i18nKey for the given key and locale.
+ *
+ * @param i18nKey
+ * the i18n key
+ * @param locale
+ * the locale
+ * @return the value
+ */
+ String getValue(String i18nKey, Locale locale);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/ITranslator.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/ITranslator.java
new file mode 100644
index 0000000..19293e5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/ITranslator.java
@@ -0,0 +1,23 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.common.i18n;
+
+import java.util.Locale;
+import java.util.Map;
+
+public interface ITranslator {
+ public void changeLocale(Locale locale);
+ public void mergeTranslations();
+ public Map<String,String> getTranslations();
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/URLI18nService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/URLI18nService.java
new file mode 100644
index 0000000..1ddcf4e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/i18n/URLI18nService.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.i18n;
+
+import java.net.URL;
+import java.util.Locale;
+
+import org.eclipse.osbp.runtime.common.dispose.AbstractDisposable;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The I18nService uses the given URLs to add property files.
+ * <p>
+ * See {@link I18nRegistry} for details about the file name pattern.
+ */
+public class URLI18nService extends AbstractDisposable implements II18nService {
+
+ /** The registry. */
+ private I18nRegistry registry = new I18nRegistry();
+
+ /**
+ * Append the translations.
+ *
+ * @param url
+ * the url
+ */
+ public void append(URL url) {
+ checkDisposed();
+ registry.addResource(url);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.i18n.II18nService#getValue(java.lang.String, java.util.Locale)
+ */
+ @Override
+ public String getValue(String i18nKey, Locale locale) {
+ checkDisposed();
+ return registry.findTranslation(locale, i18nKey);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.dispose.AbstractDisposable#internalDispose()
+ */
+ @Override
+ protected void internalDispose() {
+ registry = null;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCode.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCode.java
new file mode 100644
index 0000000..741494b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCode.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.eclipse.osbp.runtime.common.keystroke;
+
+import java.io.Serializable;
+
+/**
+ * From Vaadin ShortcutAction.
+ */
+public interface KeyCode extends Serializable {
+ public static final int ENTER = 13;
+
+ public static final int ESCAPE = 27;
+
+ public static final int PAGE_UP = 33;
+
+ public static final int PAGE_DOWN = 34;
+
+ public static final int TAB = 9;
+
+ public static final int ARROW_LEFT = 37;
+
+ public static final int ARROW_UP = 38;
+
+ public static final int ARROW_RIGHT = 39;
+
+ public static final int ARROW_DOWN = 40;
+
+ public static final int BACKSPACE = 8;
+
+ public static final int DELETE = 46;
+
+ public static final int INSERT = 45;
+
+ public static final int END = 35;
+
+ public static final int HOME = 36;
+
+ public static final int F1 = 112;
+
+ public static final int F2 = 113;
+
+ public static final int F3 = 114;
+
+ public static final int F4 = 115;
+
+ public static final int F5 = 116;
+
+ public static final int F6 = 117;
+
+ public static final int F7 = 118;
+
+ public static final int F8 = 119;
+
+ public static final int F9 = 120;
+
+ public static final int F10 = 121;
+
+ public static final int F11 = 122;
+
+ public static final int F12 = 123;
+
+ public static final int A = 65;
+
+ public static final int B = 66;
+
+ public static final int C = 67;
+
+ public static final int D = 68;
+
+ public static final int E = 69;
+
+ public static final int F = 70;
+
+ public static final int G = 71;
+
+ public static final int H = 72;
+
+ public static final int I = 73;
+
+ public static final int J = 74;
+
+ public static final int K = 75;
+
+ public static final int L = 76;
+
+ public static final int M = 77;
+
+ public static final int N = 78;
+
+ public static final int O = 79;
+
+ public static final int P = 80;
+
+ public static final int Q = 81;
+
+ public static final int R = 82;
+
+ public static final int S = 83;
+
+ public static final int T = 84;
+
+ public static final int U = 85;
+
+ public static final int V = 86;
+
+ public static final int W = 87;
+
+ public static final int X = 88;
+
+ public static final int Y = 89;
+
+ public static final int Z = 90;
+
+ public static final int NUM0 = 48;
+
+ public static final int NUM1 = 49;
+
+ public static final int NUM2 = 50;
+
+ public static final int NUM3 = 51;
+
+ public static final int NUM4 = 52;
+
+ public static final int NUM5 = 53;
+
+ public static final int NUM6 = 54;
+
+ public static final int NUM7 = 55;
+
+ public static final int NUM8 = 56;
+
+ public static final int NUM9 = 57;
+
+ public static final int SPACEBAR = 32;
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCodeUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCodeUtil.java
new file mode 100644
index 0000000..d93c3e6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCodeUtil.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.keystroke;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class KeyCodeUtil.
+ */
+public class KeyCodeUtil {
+
+ /** The Constant keyCodeMappings. */
+ private static final Map<String, Integer> keyCodeMappings = new HashMap<String, Integer>();
+
+ /** The Constant modifierMappings. */
+ private static final Map<String, Integer> modifierMappings = new HashMap<String, Integer>();
+
+ static {
+ keyCodeMappings.put("ENTER", KeyCode.ENTER);
+ keyCodeMappings.put("ESCAPE", KeyCode.ESCAPE);
+ keyCodeMappings.put("PAGE_UP", KeyCode.PAGE_UP);
+ keyCodeMappings.put("PAGE_DOWN", KeyCode.PAGE_DOWN);
+ keyCodeMappings.put("TAB", KeyCode.TAB);
+ keyCodeMappings.put("ARROW_LEFT", KeyCode.ARROW_LEFT);
+ keyCodeMappings.put("ARROW_UP", KeyCode.ARROW_UP);
+ keyCodeMappings.put("ARROW_RIGHT", KeyCode.ARROW_RIGHT);
+ keyCodeMappings.put("ARROW_DOWN", KeyCode.ARROW_DOWN);
+ keyCodeMappings.put("BACKSPACE", KeyCode.BACKSPACE);
+ keyCodeMappings.put("DELETE", KeyCode.DELETE);
+ keyCodeMappings.put("INSERT", KeyCode.INSERT);
+ keyCodeMappings.put("END", KeyCode.END);
+ keyCodeMappings.put("HOME", KeyCode.HOME);
+ keyCodeMappings.put("F1", KeyCode.F1);
+ keyCodeMappings.put("F2", KeyCode.F2);
+ keyCodeMappings.put("F3", KeyCode.F3);
+ keyCodeMappings.put("F4", KeyCode.F4);
+ keyCodeMappings.put("F5", KeyCode.F5);
+ keyCodeMappings.put("F6", KeyCode.F6);
+ keyCodeMappings.put("F7", KeyCode.F7);
+ keyCodeMappings.put("F8", KeyCode.F8);
+ keyCodeMappings.put("F9", KeyCode.F9);
+ keyCodeMappings.put("F10", KeyCode.F10);
+ keyCodeMappings.put("F11", KeyCode.F11);
+ keyCodeMappings.put("F12", KeyCode.F12);
+ keyCodeMappings.put("A", KeyCode.A);
+ keyCodeMappings.put("B", KeyCode.B);
+ keyCodeMappings.put("C", KeyCode.C);
+ keyCodeMappings.put("D", KeyCode.D);
+ keyCodeMappings.put("E", KeyCode.E);
+ keyCodeMappings.put("F", KeyCode.F);
+ keyCodeMappings.put("G", KeyCode.G);
+ keyCodeMappings.put("H", KeyCode.H);
+ keyCodeMappings.put("I", KeyCode.I);
+ keyCodeMappings.put("J", KeyCode.J);
+ keyCodeMappings.put("K", KeyCode.K);
+ keyCodeMappings.put("L", KeyCode.L);
+ keyCodeMappings.put("M", KeyCode.M);
+ keyCodeMappings.put("N", KeyCode.N);
+ keyCodeMappings.put("O", KeyCode.O);
+ keyCodeMappings.put("P", KeyCode.P);
+ keyCodeMappings.put("Q", KeyCode.Q);
+ keyCodeMappings.put("R", KeyCode.R);
+ keyCodeMappings.put("S", KeyCode.S);
+ keyCodeMappings.put("T", KeyCode.T);
+ keyCodeMappings.put("U", KeyCode.U);
+ keyCodeMappings.put("V", KeyCode.V);
+ keyCodeMappings.put("W", KeyCode.W);
+ keyCodeMappings.put("X", KeyCode.X);
+ keyCodeMappings.put("Y", KeyCode.Y);
+ keyCodeMappings.put("Z", KeyCode.Z);
+ keyCodeMappings.put("0", KeyCode.NUM0);
+ keyCodeMappings.put("1", KeyCode.NUM1);
+ keyCodeMappings.put("2", KeyCode.NUM2);
+ keyCodeMappings.put("3", KeyCode.NUM3);
+ keyCodeMappings.put("4", KeyCode.NUM4);
+ keyCodeMappings.put("5", KeyCode.NUM5);
+ keyCodeMappings.put("6", KeyCode.NUM6);
+ keyCodeMappings.put("7", KeyCode.NUM7);
+ keyCodeMappings.put("8", KeyCode.NUM8);
+ keyCodeMappings.put("9", KeyCode.NUM9);
+ keyCodeMappings.put("SPACEBAR", KeyCode.SPACEBAR);
+
+ modifierMappings.put("SHIFT", ModifierKey.SHIFT);
+ modifierMappings.put("CTRL", ModifierKey.CTRL);
+ modifierMappings.put("ALT", ModifierKey.ALT);
+ modifierMappings.put("META", ModifierKey.META);
+ }
+
+ /**
+ * Parses the keyCode to a key stroke definition.<br>
+ * KeyCode follows the pattern "CTRL+ALT+S". All reserved words are
+ * constants in the KeyCodeUtil.
+ *
+ * @param keyCode
+ * the key code
+ * @return the key stroke definition
+ */
+ public static KeyStrokeDefinition parse(String keyCode) {
+ int keyCodeInt = -1;
+ List<Integer> modifierInts = new ArrayList<Integer>();
+
+ String[] tokens = keyCode.split("\\+");
+ for (String t : tokens) {
+ String token = t.trim();
+ if (modifierMappings.containsKey(token)) {
+ modifierInts.add(modifierMappings.get(token));
+ } else if (keyCodeMappings.containsKey(token)) {
+ keyCodeInt = keyCodeMappings.get(token);
+ }
+ }
+
+ return new KeyStrokeDefinition(keyCode, keyCodeInt,
+ toModifierInts(modifierInts));
+ }
+
+ /**
+ * To modifier ints.
+ *
+ * @param modifierInts
+ * the modifier ints
+ * @return the int[]
+ */
+ private static int[] toModifierInts(List<Integer> modifierInts) {
+ int[] result = new int[modifierInts.size()];
+
+ for (int i = 0; i < modifierInts.size(); i++) {
+ int modifier = modifierInts.get(i);
+ result[i] = modifier;
+ }
+
+ return result;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyStrokeCallback.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyStrokeCallback.java
new file mode 100644
index 0000000..9c176f4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyStrokeCallback.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.keystroke;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A callback to handle key strokes.
+ */
+public interface KeyStrokeCallback {
+
+ /**
+ * Is called if the keystroke definition was activated.
+ *
+ * @param source
+ * the source
+ * @param target
+ * the target
+ */
+ void callback(Object source, Object target);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyStrokeDefinition.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyStrokeDefinition.java
new file mode 100644
index 0000000..82ddb5c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyStrokeDefinition.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.keystroke;
+
+import java.util.Arrays;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class KeyStrokeDefinition.
+ */
+public class KeyStrokeDefinition {
+
+ /** The caption. */
+ private final String caption;
+
+ /** The key code. */
+ private final int keyCode;
+
+ /** The modifier keys. */
+ private final int[] modifierKeys;
+
+ /**
+ * Instantiates a new key stroke definition.
+ *
+ * @param caption the caption
+ * @param keyCode the key code
+ * @param modifierKeys the modifier keys
+ */
+ public KeyStrokeDefinition(String caption, int keyCode, int[] modifierKeys) {
+ super();
+ this.caption = caption;
+ this.keyCode = keyCode;
+ this.modifierKeys = modifierKeys != null ? Arrays.copyOf(modifierKeys,
+ modifierKeys.length) : new int[0];
+ }
+
+ /**
+ * Returns the caption of the keystroke definition. Later it may use special
+ * characters to define keystrokes like <code>^&R</code> which may define
+ * CRTL+ALT+R. But this feature is not supported yet.
+ *
+ * @return the caption
+ */
+ public String getCaption() {
+ return caption;
+ }
+
+ /**
+ * Returns the key code. See See {@link KeyCode}.
+ *
+ * @return the key code
+ */
+ public int getKeyCode() {
+ return keyCode;
+ }
+
+ /**
+ * Returns the modifier keys. See See {@link ModifierKey}.
+ *
+ * @return the modifier keys
+ */
+ public int[] getModifierKeys() {
+ return Arrays.copyOf(modifierKeys, modifierKeys.length);
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/ModifierKey.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/ModifierKey.java
new file mode 100644
index 0000000..cbe0efc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/ModifierKey.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.eclipse.osbp.runtime.common.keystroke;
+
+import java.io.Serializable;
+
+/**
+ * From Vaadin ShortcutAction.
+ */
+public interface ModifierKey extends Serializable {
+ public static final int SHIFT = 16;
+
+ public static final int CTRL = 17;
+
+ public static final int ALT = 18;
+
+ public static final int META = 91;
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/memento/IMementoHandler.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/memento/IMementoHandler.java
new file mode 100644
index 0000000..d8d1712
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/memento/IMementoHandler.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.memento;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Implementors can apply and create mementos.
+ */
+public interface IMementoHandler {
+
+ /**
+ * Applies the given memento to the UI element.
+ *
+ * @param memento
+ * the memento
+ */
+ public void applyMemento(Object memento);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/memento/IMementoManager.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/memento/IMementoManager.java
new file mode 100644
index 0000000..3578686
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/memento/IMementoManager.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.memento;
+
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+
+/**
+ * A memento manager is responsible to load and save mementos.
+ */
+public interface IMementoManager {
+
+ /** The Constant EVENT_TOPIC. */
+ public static final String EVENT_TOPIC = "runtime/memento";
+
+ /** The Constant PROP_PERSIST_POLICY. */
+ public static final String PROP_PERSIST_POLICY = "persisting.policy";
+
+ /**
+ * Loads the memento for the given memento id.
+ *
+ * @param userId
+ * the user id
+ * @param mementoId
+ * the memento id
+ * @return the object
+ */
+ Object loadMemento(String userId, String mementoId);
+
+ /**
+ * Saves the memento by the given mementoId.
+ *
+ * @param userId
+ * the user id
+ * @param mementoId
+ * the memento id
+ * @param memento
+ * the memento
+ * @return status containing exceptions or IStatus.OK
+ */
+ IStatus saveMemento(String userId, String mementoId, Object memento);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/metric/TimeLogger.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/metric/TimeLogger.java
new file mode 100644
index 0000000..18a1db0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/metric/TimeLogger.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.metric;
+
+import java.util.Date;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Class TimeLogger.
+ */
+public class TimeLogger {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(TimeLogger.class);
+
+ /** The clazz. */
+ private final Class<?> clazz;
+
+ /** The start. */
+ private final long start;
+
+ /**
+ * Start.
+ *
+ * @param clazz
+ * the clazz
+ * @return the time logger
+ */
+ public static TimeLogger start(Class<?> clazz) {
+ return new TimeLogger(clazz);
+ }
+
+ /**
+ * Instantiates a new time logger.
+ *
+ * @param clazz
+ * the clazz
+ */
+ private TimeLogger(Class<?> clazz) {
+ this.clazz = clazz;
+ start = new Date().getTime();
+ }
+
+ /**
+ * Stop.
+ *
+ * @param message
+ * the message
+ */
+ public void stop(String message) {
+ long stop = new Date().getTime();
+// LOGGER.info(clazz.getName() + ": " + message + " " + (stop - start)
+// + "ms");
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/shell/ICommandConstants.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/shell/ICommandConstants.java
new file mode 100644
index 0000000..c96f765
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/shell/ICommandConstants.java
@@ -0,0 +1,19 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.common.shell;
+
+public interface ICommandConstants {
+ String COMMAND_SCOPE = "osgi.command.scope";
+ String COMMAND_FUNCTION = "osgi.command.function";
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/IDataState.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/IDataState.java
new file mode 100644
index 0000000..988768c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/IDataState.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state;
+
+import java.util.Collection;
+
+/**
+ * Different versions of objects may be available. For instance a changed and an
+ * unchanged version of a bean. This class is responsible to handle beans and
+ * offer them in a common context. It caches registered beans in a GC-aware
+ * manner.
+ */
+public interface IDataState {
+
+ /**
+ * Returns the size of the cached objects.
+ *
+ * @return the size
+ */
+ long size();
+
+ /**
+ * Returns true if the cache is empty.
+ *
+ * @return true, if successful
+ */
+ boolean empty();
+
+ /**
+ * Returns true, if a dirty version of the given object is available.
+ *
+ * @param key
+ * the key
+ * @return true, if successful
+ */
+ boolean contains(Object key);
+
+ /**
+ * Returns the dirty version of the object if available.
+ *
+ * @param key
+ * the key
+ * @return the object
+ */
+ Object get(Object key);
+
+ /**
+ * Registers the given object by the passed key.
+ *
+ * @param key
+ * the key
+ * @param object
+ * the object
+ */
+ void register(Object key, Object object);
+
+ /**
+ * Registers all objects provided by the collection. The hasher is used, to
+ * calculate proper keys for the map.
+ *
+ * @param objects
+ * the objects
+ * @param hasher
+ * the hasher
+ */
+ void registerAll(Collection<Object> objects, Hashing hasher);
+
+ /**
+ * Invalidates the object with the given key.
+ *
+ * @param key
+ * the key
+ */
+ void invalidate(Object key);
+
+ /**
+ * Returns the hash code or key for the given object.
+ */
+ public interface Hashing {
+
+ /**
+ * Returns the hashcode for the given object.
+ *
+ * @param object
+ * the object
+ * @return the hash code
+ */
+ Object getHashCode(Object object);
+
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/ISharedStateContext.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/ISharedStateContext.java
new file mode 100644
index 0000000..85b2dd3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/ISharedStateContext.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state;
+
+import org.eclipse.osbp.runtime.common.hash.HashUtil;
+
+/**
+ * Different participants may share data.
+ * <p>
+ * For instance an {@link IDataState}. In a business application groups of views
+ * may share the same data like beans. And other groups of views will share
+ * their own data. A shared environment is an abstraction above this group.
+ * Views may share the {@link ISharedStateContext} and will also share their
+ * properties and data.
+ *
+ */
+public interface ISharedStateContext {
+
+ /**
+ * Returns the unique id of the environment.
+ *
+ * @return the id
+ */
+ String getId();
+
+ /**
+ * Set and key value pair to be shared in the environment.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ void setProperty(Object key, Object value);
+
+ /**
+ * Returns the value for the key or <code>null</code> if no value
+ * registered.
+ *
+ * @param key
+ * the key
+ * @return the property
+ */
+ Object getProperty(Object key);
+
+ /**
+ * Returns all keys that are registered in the environment.
+ *
+ * @return the property keys
+ */
+ Object[] getPropertyKeys();
+
+ /**
+ * Returns the dirty state that contains all dirty objects for the shared
+ * state.
+ *
+ * @return the dirty state
+ */
+ IDataState getDirtyState();
+
+ /**
+ * Returns the "used state" that contains all objects that are currently
+ * used for the shared state.
+ *
+ * @return the global data state
+ */
+ IDataState getGlobalDataState();
+
+ /**
+ * Returns an immutable compound state that handles the global and dirty
+ * state.
+ *
+ * @return the dirty aware global state
+ */
+ IDataState getDirtyAwareGlobalState();
+
+ /**
+ * Makes the given dto undirty.
+ *
+ * @param key
+ * the key
+ * @param dto
+ * the dto
+ */
+ void makeUndirty(Object key, Object dto);
+
+ /**
+ * Adds a new "not persistent" entry. The key will be calculated using the
+ * {@link HashUtil}.
+ * <p>
+ * The object will be put into the dirtyState but not the global state.
+ *
+ * @param newEntry
+ * the new entry
+ */
+ void addNewTransient(Object newEntry);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/ISharedStateContextProvider.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/ISharedStateContextProvider.java
new file mode 100644
index 0000000..c0c0b15
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/ISharedStateContextProvider.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state;
+
+import java.util.Map;
+
+
+/**
+ * The {@link ISharedStateContextProvider} is responsible to create shared state
+ * context, to dispose them and to provide active instances of them.
+ * <p>
+ * The provider is counting references to the shared state context objects
+ * returned. A call to {@link #getContext(String, Map)} will increase the
+ * counter of references. A call to {@link #unget(ISharedStateContext)}
+ * will decrease the counter. If the counter for a {@link ISharedStateContext}
+ * decreased to 0, it will become disposed.
+ */
+public interface ISharedStateContextProvider {
+
+ /**
+ * Returns the {@link ISharedStateContext} for the given id. If no shared
+ * state context is available, a new instance will be created and registered
+ * as an OSGi service.
+ * <p>
+ * The internal usage counter will be increased. Do not miss to
+ * {@link #unget(ISharedStateContext)} the context if it is not needed
+ * anymore.
+ *
+ * @param id
+ * the id
+ * @param properties
+ * - will be added to the OSGi service
+ * @return the context
+ */
+ ISharedStateContext getContext(String id, Map<String, Object> properties);
+
+ /**
+ * If an {@link ISharedStateContext} is not used anymore, that method must
+ * be called.
+ * <p>
+ * The internal usage counter will be decreased. If usage counter reaches
+ * zero, the context will be disposed.
+ *
+ * @param context
+ * the context
+ */
+ void unget(ISharedStateContext context);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/SharedStateUnitOfWork.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/SharedStateUnitOfWork.java
new file mode 100644
index 0000000..d2387d0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/SharedStateUnitOfWork.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.osbp.runtime.common.coordination.CoordinationManager;
+import org.osgi.service.coordinator.Coordination;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class SharedStateUnitOfWork.
+ *
+ * @param <R>
+ * the generic type
+ */
+public abstract class SharedStateUnitOfWork<R> {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(SharedStateUnitOfWork.class);
+
+ /**
+ * Instantiates a new shared state unit of work.
+ */
+ public SharedStateUnitOfWork() {
+
+ }
+
+ /**
+ * Executes the unit of work creating an implicit {@link Coordination} and
+ * passing the env as variables.
+ *
+ * @param context
+ * the context
+ * @return the data returned by {@link #doExecute()}
+ */
+ public R execute(final ISharedStateContext context) {
+ if (context != null) {
+ Coordination peek = null;
+ CoordinationManager coordinationManager = new CoordinationManager();
+ try {
+ Map<Class<?>, Object> props = new HashMap<Class<?>, Object>();
+ props.put(ISharedStateContext.class, context);
+ peek = coordinationManager.createCurrentCoordination(props);
+ if (peek != null) {
+ return doExecute();
+ } else {
+ LOGGER.error("No coordination service available!");
+ }
+ } finally {
+ if (peek != null) {
+ peek.end();
+ }
+ // release the coordination manager
+ coordinationManager.release();
+ }
+ } else {
+ return doExecute();
+ }
+ return null;
+ }
+
+ /**
+ * The unit of work to do.
+ *
+ * @return any kind of data. May also be <code>null</code>.
+ */
+ protected abstract R doExecute();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DataState.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DataState.java
new file mode 100644
index 0000000..2ee7652
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DataState.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state.impl;
+
+import java.util.Collection;
+
+import org.eclipse.osbp.runtime.common.dispose.AbstractDisposable;
+import org.eclipse.osbp.runtime.common.state.IDataState;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+
+/**
+ * Responsible to cache data by a cache implementation.
+ */
+public class DataState extends AbstractDisposable implements IDataState {
+
+ protected Cache<Object, Object> cache;
+ protected final SharedStateContext sharedStateContext;
+
+ public DataState(SharedStateContext sharedStateContext) {
+ this.sharedStateContext = sharedStateContext;
+ }
+
+ @Override
+ public boolean contains(Object key) {
+ checkDisposed();
+
+ if (cache == null) {
+ return false;
+ }
+ return cache.getIfPresent(key) != null;
+ }
+
+ @Override
+ public Object get(Object key) {
+ checkDisposed();
+
+ if (cache == null) {
+ return null;
+ }
+
+ return cache.getIfPresent(key);
+ }
+
+ @Override
+ public void register(Object key, Object object) {
+ checkDisposed();
+
+ if (contains(key)) {
+ // already contained
+ return;
+ }
+
+ ensureCache();
+ cache.put(key, object);
+ }
+
+ protected void ensureCache() {
+ if (cache == null) {
+ cache = CacheBuilder.newBuilder().initialCapacity(250).weakValues()
+ .build();
+ }
+ }
+
+ @Override
+ public void registerAll(Collection<Object> objects, Hashing hasher) {
+ checkDisposed();
+ for (Object object : objects) {
+ register(hasher.getHashCode(object), object);
+ }
+ }
+
+ @Override
+ public void invalidate(Object key) {
+ checkDisposed();
+ if (cache != null) {
+ cache.invalidate(key);
+ }
+ }
+
+ @Override
+ protected void internalDispose() {
+ if (cache != null) {
+ cache.invalidateAll();
+ cache = null;
+ }
+ }
+
+ @Override
+ public long size() {
+ if (cache == null) {
+ return 0;
+ }
+ cache.cleanUp();
+ return cache.size();
+ }
+
+ @Override
+ public boolean empty() {
+ return size() <= 0;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DirtyDataAwareGlobalState.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DirtyDataAwareGlobalState.java
new file mode 100644
index 0000000..dad7671
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DirtyDataAwareGlobalState.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state.impl;
+
+import java.util.Collection;
+
+import org.eclipse.osbp.runtime.common.state.IDataState;
+
+/**
+ * Combines the global data state and the dirty data state.
+ */
+public class DirtyDataAwareGlobalState implements IDataState {
+
+ private final IDataState dataState;
+ private final IDataState dirtyState;
+
+ public DirtyDataAwareGlobalState(IDataState dataState, IDataState dirtyState) {
+ this.dataState = dataState;
+ this.dirtyState = dirtyState;
+ }
+
+ @Override
+ public boolean contains(Object key) {
+ return dirtyState.contains(key) || dataState.contains(key);
+ }
+
+ @Override
+ public Object get(Object key) {
+ Object result = dirtyState.get(key);
+ if (result == null) {
+ result = dataState.get(key);
+ }
+
+ return result;
+ }
+
+ @Override
+ public void register(Object key, Object object) {
+ throw new UnsupportedOperationException("Not a valid call");
+ }
+
+ @Override
+ public void registerAll(Collection<Object> objects, Hashing hasher) {
+ throw new UnsupportedOperationException("Not a valid call");
+ }
+
+ @Override
+ public void invalidate(Object key) {
+ throw new UnsupportedOperationException("Not a valid call");
+ }
+
+ @Override
+ public long size() {
+ throw new UnsupportedOperationException("Not a valid call");
+ }
+
+ @Override
+ public boolean empty() {
+ throw new UnsupportedOperationException("Not a valid call");
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DirtyDataState.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DirtyDataState.java
new file mode 100644
index 0000000..7f035a0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/DirtyDataState.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state.impl;
+
+import com.google.common.cache.CacheBuilder;
+
+/**
+ * Responsible to cache changed objects.
+ */
+public class DirtyDataState extends DataState {
+
+ public DirtyDataState(SharedStateContext sharedStateContext) {
+ super(sharedStateContext);
+ }
+
+ protected void ensureCache() {
+ if (cache == null) {
+ cache = CacheBuilder.newBuilder().initialCapacity(20).weakValues()
+ .build();
+ }
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/GlobalDataState.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/GlobalDataState.java
new file mode 100644
index 0000000..5ad1cd9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/GlobalDataState.java
@@ -0,0 +1,134 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state.impl;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.commons.lang.reflect.MethodUtils;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.hash.HashUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Responsible to cache changed objects.
+ */
+public class GlobalDataState extends DataState implements
+ PropertyChangeListener {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(GlobalDataState.class);
+
+ /**
+ * Instantiates a new global data state.
+ *
+ * @param sharedStateContext
+ * the shared state context
+ */
+ public GlobalDataState(SharedStateContext sharedStateContext) {
+ super(sharedStateContext);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.impl.DataState#register(java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void register(Object key, Object object) {
+ checkDisposed();
+
+ if (contains(key)) {
+ // already contained
+ return;
+ }
+
+ super.register(key, object);
+
+ if (object != null) {
+ try {
+ MethodUtils.invokeMethod(object, "addPropertyChangeListener",
+ this);
+ } catch (SecurityException e) {
+ LOGGER.warn("Observer for dirtyState handling could not be added for "
+ + object.getClass().getName());
+ } catch (IllegalAccessException e) {
+ LOGGER.warn("Observer for dirtyState handling could not be added for "
+ + object.getClass().getName());
+ } catch (IllegalArgumentException e) {
+ LOGGER.warn("Observer for dirtyState handling could not be added for "
+ + object.getClass().getName());
+ } catch (InvocationTargetException e) {
+ LOGGER.warn("Observer for dirtyState handling could not be added for "
+ + object.getClass().getName());
+ } catch (NoSuchMethodException e) {
+ LOGGER.warn("Observer for dirtyState handling could not be added for "
+ + object.getClass().getName());
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+ */
+ @Override
+ public void propertyChange(PropertyChangeEvent event) {
+ Object object = event.getSource();
+ Class<?> objClass = object.getClass();
+ try {
+ if (DtoUtils.isDisposeField(objClass, event.getPropertyName())) {
+ handleDispose(event);
+ return;
+ }
+ // dirty field not forwarded to handle dirty
+ if (DtoUtils.isDirtyField(objClass, event.getPropertyName())) {
+ return;
+ }
+ } catch (SecurityException ignoreIt) {
+ LOGGER.error("{}", ignoreIt);
+ }
+
+ handleDirty(event);
+ }
+
+ /**
+ * Puts the object into the dirty state.
+ *
+ * @param event
+ * the event
+ */
+ protected void handleDirty(PropertyChangeEvent event) {
+ Object object = event.getSource();
+ Class<?> objClass = object.getClass();
+
+ // set the dirty flag to true if available
+ DtoUtils.invokeDirtySetter(object, true);
+
+ sharedStateContext.handleDirty(
+ HashUtil.createObjectWithIdHash(objClass, object), object);
+ }
+
+ /**
+ * Invalidates the object in the cache.
+ *
+ * @param event
+ * the event
+ */
+ protected void handleDispose(PropertyChangeEvent event) {
+ Object object = event.getSource();
+ Class<?> objClass = object.getClass();
+
+ sharedStateContext.invalidate(
+ HashUtil.createObjectWithIdHash(objClass, object), object);
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/SharedStateContext.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/SharedStateContext.java
new file mode 100644
index 0000000..850fd4d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/SharedStateContext.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.dispose.AbstractDisposable;
+import org.eclipse.osbp.runtime.common.dispose.IReferenceCountable;
+import org.eclipse.osbp.runtime.common.hash.HashUtil;
+import org.eclipse.osbp.runtime.common.state.IDataState;
+import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class SharedStateContext.
+ */
+public class SharedStateContext extends AbstractDisposable implements
+ ISharedStateContext, IReferenceCountable {
+
+ /** The data. */
+ private Map<Object, Object> data;
+
+ /** The id. */
+ private final String id;
+
+ /** The dirty state. */
+ private DirtyDataState dirtyState;
+
+ /** The global state. */
+ private DataState globalState;
+
+ /** The usage count. */
+ private int usageCount;
+
+ /**
+ * Instantiates a new shared state context.
+ *
+ * @param id
+ * the id
+ */
+ public SharedStateContext(String id) {
+ this.id = id;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#getId()
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#setProperty(java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void setProperty(Object key, Object value) {
+ checkDisposed();
+
+ if (data == null) {
+ data = new HashMap<Object, Object>();
+ }
+ data.put(key, value);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#getProperty(java.lang.Object)
+ */
+ @Override
+ public Object getProperty(Object key) {
+ checkDisposed();
+
+ if (data == null) {
+ return null;
+ }
+ return data.get(key);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#getPropertyKeys()
+ */
+ @Override
+ public Object[] getPropertyKeys() {
+ checkDisposed();
+
+ if (data == null) {
+ return new Object[0];
+ }
+ return data.keySet().toArray();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#getDirtyState()
+ */
+ @Override
+ public IDataState getDirtyState() {
+ checkDisposed();
+
+ if (dirtyState == null) {
+ dirtyState = new DirtyDataState(this);
+ }
+ return dirtyState;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#getGlobalDataState()
+ */
+ @Override
+ public IDataState getGlobalDataState() {
+ checkDisposed();
+
+ if (globalState == null) {
+ globalState = new GlobalDataState(this);
+ }
+ return globalState;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#getDirtyAwareGlobalState()
+ */
+ @Override
+ public IDataState getDirtyAwareGlobalState() {
+ return new DirtyDataAwareGlobalState(getGlobalDataState(),
+ getDirtyState());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.dispose.AbstractDisposable#internalDispose()
+ */
+ @Override
+ protected void internalDispose() {
+ if (data != null) {
+ data.clear();
+ data = null;
+ }
+
+ if (dirtyState != null) {
+ dirtyState.dispose();
+ dirtyState = null;
+ }
+
+ if (globalState != null) {
+ globalState.dispose();
+ globalState = null;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.dispose.IReferenceCountable#getUsageCount()
+ */
+ @Override
+ public int getUsageCount() {
+ return usageCount;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.dispose.IReferenceCountable#increaseUsageCount()
+ */
+ @Override
+ public void increaseUsageCount() {
+ usageCount++;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.dispose.IReferenceCountable#decreaseUsageCount()
+ */
+ @Override
+ public void decreaseUsageCount() {
+ usageCount--;
+ }
+
+ /**
+ * Invalidate.
+ *
+ * @param key
+ * the key
+ * @param object
+ * the object
+ */
+ public void invalidate(String key, Object object) {
+ if (dirtyState != null) {
+ dirtyState.invalidate(key);
+ }
+ if (globalState != null) {
+ globalState.invalidate(key);
+ }
+ }
+
+ /**
+ * Handle dirty.
+ *
+ * @param key
+ * the key
+ * @param object
+ * the object
+ */
+ public void handleDirty(String key, Object object) {
+ if (dirtyState != null) {
+ dirtyState.register(key, object);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#makeUndirty(java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public void makeUndirty(Object key, Object dto) {
+ getDirtyState().invalidate(key);
+
+ // set the dirty flag if available to false
+ DtoUtils.invokeDirtySetter(dto, false);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContext#addNewTransient(java.lang.Object)
+ */
+ @Override
+ public void addNewTransient(Object newEntry) {
+ // set the dirty flag if available to false
+ DtoUtils.invokeDirtySetter(newEntry, true);
+ getDirtyState().register(
+ HashUtil.createObjectWithIdHash(newEntry.getClass(), newEntry),
+ newEntry);
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/SharedStateContextProvider.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/SharedStateContextProvider.java
new file mode 100644
index 0000000..6dd3af0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/state/impl/SharedStateContextProvider.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.state.impl;
+
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.eclipse.osbp.runtime.common.dispose.IDisposable;
+import org.eclipse.osbp.runtime.common.dispose.IReferenceCountable;
+import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.state.ISharedStateContextProvider;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class SharedStateContextProvider.
+ */
+@Component(property = { "service.ranking=100" }, immediate = true)
+public class SharedStateContextProvider implements ISharedStateContextProvider {
+
+ /** The Constant OSGI_PROP__ENV_ID. */
+ private static final String OSGI_PROP__ENV_ID = "sharedState.id";
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(SharedStateContextProvider.class);
+
+ /** The component context. */
+ private ComponentContext componentContext;
+
+ /** The registrations. */
+ private Map<String, ServiceRegistration<ISharedStateContext>> registrations = new HashMap<String, ServiceRegistration<ISharedStateContext>>();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContextProvider#getContext(java.lang.String, java.util.Map)
+ */
+ @Override
+ public ISharedStateContext getContext(String id,
+ Map<String, Object> properties) {
+ ISharedStateContext context = find(id);
+ if (context == null) {
+ context = createContext(id, properties);
+ }
+
+ ((IReferenceCountable) context).increaseUsageCount();
+
+ return context;
+ }
+
+ /**
+ * Creates the context.
+ *
+ * @param id
+ * the id
+ * @param inProperties
+ * the in properties
+ * @return the i shared state context
+ */
+ protected ISharedStateContext createContext(String id,
+ Map<String, Object> inProperties) {
+ SharedStateContext context = new SharedStateContext(id);
+
+ // register as service
+ Dictionary<String, Object> properties = new Hashtable<String, Object>();
+ properties.put(OSGI_PROP__ENV_ID, id);
+ // add input properties
+ if (inProperties != null) {
+ for (Map.Entry<String, Object> entry : inProperties.entrySet()) {
+ properties.put(entry.getKey(), entry.getValue());
+ }
+ }
+ ServiceRegistration<ISharedStateContext> reg = componentContext
+ .getBundleContext().registerService(ISharedStateContext.class,
+ context, properties);
+ registrations.put(id, reg);
+ return context;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.state.ISharedStateContextProvider#unget(org.eclipse.osbp.runtime.common.state.ISharedStateContext)
+ */
+ @Override
+ public void unget(ISharedStateContext context) {
+ IReferenceCountable countable = (IReferenceCountable) context;
+ countable.decreaseUsageCount();
+
+ if (countable.getUsageCount() <= 0) {
+ ServiceRegistration<ISharedStateContext> reg = registrations
+ .remove(context.getId());
+ if (reg != null) {
+ ISharedStateContext service = componentContext
+ .getBundleContext().getService(reg.getReference());
+ if (service instanceof IDisposable) {
+ ((IDisposable) service).dispose();
+ }
+ reg.unregister();
+ }
+ }
+ }
+
+ /**
+ * Activate.
+ *
+ * @param context
+ * the context
+ */
+ @Activate
+ protected void activate(ComponentContext context) {
+ this.componentContext = context;
+ }
+
+ /**
+ * Deactivate.
+ *
+ * @param context
+ * the context
+ */
+ @Deactivate
+ protected void deactivate(ComponentContext context) {
+
+ for (ServiceRegistration<ISharedStateContext> reg : registrations
+ .values()) {
+ ISharedStateContext service = context.getBundleContext()
+ .getService(reg.getReference());
+ if (service instanceof IDisposable) {
+ ((IDisposable) service).dispose();
+ }
+ reg.unregister();
+ }
+
+ this.componentContext = null;
+ }
+
+ /**
+ * Find.
+ *
+ * @param id
+ * the id
+ * @return the i shared state context
+ */
+ protected ISharedStateContext find(String id) {
+ try {
+ BundleContext bc = componentContext.getBundleContext();
+ Collection<ServiceReference<ISharedStateContext>> references = bc
+ .getServiceReferences(ISharedStateContext.class,
+ createFilter(id));
+ if (!references.isEmpty()) {
+ ISharedStateContext sharedStateContext = bc
+ .getService(references.iterator().next());
+ return sharedStateContext;
+ }
+ } catch (InvalidSyntaxException e) {
+ LOGGER.error("{}", e);
+ }
+
+ return null;
+ }
+
+ /**
+ * Creates the filter.
+ *
+ * @param id
+ * the id
+ * @return the string
+ * @throws InvalidSyntaxException
+ * the invalid syntax exception
+ */
+ protected String createFilter(String id) throws InvalidSyntaxException {
+ return String.format("(%s=%s)", OSGI_PROP__ENV_ID, id);
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/types/IBundleSpace.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/types/IBundleSpace.java
new file mode 100644
index 0000000..64339c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/types/IBundleSpace.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.types;
+
+import org.osgi.framework.Bundle;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A bundle space is a collection of bundles that expose their classes. Bundles
+ * with the bundle header <code>"OSBP-RuntimeBuilder-BundleSpace"</code> will be
+ * automatically added using the extender pattern.
+ */
+public interface IBundleSpace {
+
+ /**
+ * Tries to find a class for the given class name using the bundles
+ * registered in the bundle space.
+ *
+ * @param name
+ * the name
+ * @return the class
+ * @throws ClassNotFoundException
+ * the class not found exception
+ */
+ Class<?> forName(String name) throws ClassNotFoundException;
+ /**
+ * Adds a new bundle to the bundle space. The bundle will be used to find
+ * classes.
+ *
+ * @param bundle
+ */
+ void add(Bundle bundle);
+ /**
+ * Removes the bundle from the bundle space.
+ *
+ * @param bundle
+ */
+ void remove(Bundle bundle);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/types/ITypeProviderService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/types/ITypeProviderService.java
new file mode 100644
index 0000000..00ff5b1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/types/ITypeProviderService.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.types;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This service is responsible to load classes which are visible for the domain.
+ * For instance jpa entities, dtos,...
+ * <p>
+ * Different concepts may be used. The default way to provide an implementation
+ * is the use of the BundleSpace. A bundleSpace is a selected quantity of
+ * bundles, that expose their classes. Bundles with the bundle header
+ * <code>"OSBP-RuntimeBuilder-BundleSpace"</code> will be automatically added
+ * using the extender pattern. The default implementation of this service will
+ * use the bundle space and tries to load classes by the registered bundles.
+ */
+public interface ITypeProviderService {
+
+ /**
+ * Returns the class for the given qualified name and type. For emf pass the
+ * EClass as clazz.
+ *
+ * @param clazz
+ * the clazz
+ * @param qualifiedName
+ * the qualified name
+ * @return the class
+ */
+ Class<?> forName(Object clazz, String qualifiedName);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/user/IUserInfo.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/user/IUserInfo.java
new file mode 100644
index 0000000..0a256e1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/user/IUserInfo.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.user;
+
+import org.osgi.service.prefs.Preferences;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Provides information about the current user.
+ */
+public interface IUserInfo {
+
+ /**
+ * Returns the id of the user.
+ *
+ * @return the id
+ */
+ String getId();
+
+ // /**
+ // * Returns the location where all user specific settings are stored. If no
+ // * location is available, empty string will be returned.
+ // *
+ // * @return
+ // */
+ // String getLocation();
+
+ /**
+ * Returns the user preferences. If no user preferences are available then
+ * <code>null</code> is returned.
+ *
+ * @param qualifier
+ * The qualifier to access the preference node.
+ *
+ * @return The preferences for the given qualifier or <code>null</code> if
+ * no proper preferences could be found.
+ */
+ Preferences getPreferences(String qualifier);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/OSGiUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/OSGiUtil.java
new file mode 100644
index 0000000..12cca2c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/OSGiUtil.java
@@ -0,0 +1,145 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.util;
+
+import java.util.Arrays;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Properties;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class OSGiUtil.
+ */
+@SuppressWarnings("all")
+public class OSGiUtil {
+
+ /**
+ * Convert hash map to dictionary.
+ *
+ * @param input
+ * the input
+ * @return the dictionary
+ */
+ public static Dictionary<String, Object> convertHashMapToDictionary(
+ HashMap<?, ?> input) {
+ Dictionary<String, Object> dict = new Hashtable<String, Object>();
+ for (Object key : input.keySet()) {
+ dict.put(key.toString(), input.get(key));
+ }
+ return dict;
+ }
+
+ /**
+ * Convert hash map to properties.
+ *
+ * @param input
+ * the input
+ * @return the properties
+ */
+ public static Properties convertHashMapToProperties(HashMap<?, ?> input) {
+ Properties props = new Properties();
+ for (Object key : input.keySet()) {
+ props.put(key, input.get(key));
+ }
+ return props;
+ }
+
+ /**
+ * Convert dictionary to hash map.
+ *
+ * @param input
+ * the input
+ * @return the hash map
+ */
+ public static HashMap<String, String> convertDictionaryToHashMap(
+ Dictionary<?, ?> input) {
+ HashMap<String, String> map = new HashMap<String, String>();
+ Enumeration<String> iter = (Enumeration<String>) input.keys();
+ while (iter.hasMoreElements()) {
+ String key = (String) iter.nextElement();
+ map.put(key, input.get(key).toString());
+ }
+ return map;
+ }
+
+ /**
+ * Convert dictionary to properties.
+ *
+ * @param input
+ * the input
+ * @return the properties
+ */
+ public static Properties convertDictionaryToProperties(
+ Dictionary<?, ?> input) {
+ Properties props = new Properties();
+ Enumeration<String> iter = (Enumeration<String>) input.keys();
+ while (iter.hasMoreElements()) {
+ String key = (String) iter.nextElement();
+ props.setProperty(key, input.get(key).toString());
+ }
+ return props;
+ }
+
+ /**
+ * Gets the enum values.
+ *
+ * @param e
+ * the e
+ * @return the enum values
+ */
+ public static String[] getEnumValues(Class<? extends Enum<?>> e) {
+ return Arrays.toString(e.getEnumConstants()).replaceAll("^.|.$", "")
+ .split(", ");
+ }
+
+ /**
+ * Filter properties.
+ *
+ * @param properties
+ * the properties
+ * @param keySet
+ * the key set
+ * @return the hash map
+ */
+ public static HashMap<String, String> filterProperties(
+ HashMap<String, String> properties, String[] keySet) {
+ for (String key : properties.keySet()) {
+ if (!Arrays.asList(keySet).contains(key)) {
+ properties.remove(key);
+ }
+ }
+ return properties;
+ };
+
+ /**
+ * Filter properties.
+ *
+ * @param properties
+ * the properties
+ * @param keySet
+ * the key set
+ * @return the properties
+ */
+ public static Properties filterProperties(Properties properties,
+ String[] keySet) {
+ Enumeration<Object> iter = (Enumeration<Object>) properties.keys();
+ while (iter.hasMoreElements()) {
+ String key = (String) iter.nextElement();
+ if (!Arrays.asList(keySet).contains(key)) {
+ properties.remove(key);
+ }
+ }
+ return properties;
+ };
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/IStatus.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/IStatus.java
new file mode 100644
index 0000000..bf9fdc1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/IStatus.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.validation;
+
+/**
+ * The status defines the current state of a process. It may be used for
+ * different usecases. For instance for validations, to determine veto before
+ * calling a process, to visualize thrown exceptions,... It is a general
+ * implementation.
+ */
+public interface IStatus {
+
+ /**
+ * A constant for ok status.
+ */
+ public static final IStatus OK = Status.createOKStatus();
+
+ /**
+ * A constant for cancel status.
+ */
+ public static final IStatus CANCEL = Status.createCancelStatus();
+
+ /**
+ * A constant for error status.
+ */
+ public static final IStatus ERROR = Status.createErrorStatus();
+
+ /**
+ * The id of the affected application.
+ */
+ public static final String PROP_UI_APPLICATION_ID = "application.id";
+
+ /**
+ * The id of the field.
+ */
+ public static final String PROP_FIELD_ID = "field.id";
+
+ /**
+ * I18nKey of the field.
+ */
+ public static final String PROP_FIELD_I18N_KEY = "field.i18nKey";
+
+ /**
+ * javax constraint if created by bean validation.
+ */
+ public static final String PROP_JAVAX_CONSTRAINT = "javax.validation.constraint";
+
+ /**
+ * leaf bean if created by bean validation.
+ */
+ public static final String PROP_JAVAX_LEAF_BEAN = "javax.validation.leafbean";
+
+ /**
+ * property path if created by bean validation.
+ */
+ public static final String PROP_JAVAX_PROPERTY_PATH = "javax.validation.propertypath";
+
+ /**
+ * Class that created the message.
+ */
+ public static final String PROP_CREATOR = "creator";
+
+ /**
+ * Returns the id of the status. It is prepared by the pattern
+ * <code>{bundleSymbolicName}.{code}</code>. So every bundle may specify its own codes.
+ *
+ * @return the id
+ */
+ String getId();
+
+ /**
+ * Returns the status code. The code specifies the unique id of a status
+ * message in a bundle.
+ *
+ * @return the code
+ */
+ String getCode();
+
+ /**
+ * Returns symbolic name of the bundle that has created the status.
+ *
+ * @return the bundle symblic name
+ */
+ String getBundleSymblicName();
+
+ /**
+ * Returns the severity of the status.
+ *
+ * @return the severity
+ */
+ Severity getSeverity();
+
+ /**
+ * Returns the message of the status. May be <code>null</code>.
+ *
+ * @return the message
+ */
+ String getMessage();
+
+ /**
+ * Returns the exception of the status. May be <code>null</code>.
+ *
+ * @return the exception
+ */
+ Exception getException();
+
+ /**
+ * Returns true, if the status is {@link Severity#OK} or
+ * {@link Severity#INFO}.
+ *
+ * @return true, if is ok
+ */
+ boolean isOK();
+
+ /**
+ * Returns true, if the status is {@link Severity#INFO}.
+ *
+ * @return true, if is info
+ */
+ boolean isInfo();
+
+ /**
+ * Returns true, if the status is {@link Severity#WARNING}.
+ *
+ * @return true, if is warning
+ */
+ boolean isWarning();
+
+ /**
+ * Returns true, if the status is {@link Severity#ERROR}.
+ *
+ * @return true, if is error
+ */
+ boolean isError();
+
+ /**
+ * Returns true, if the status is {@link Severity#CANCEL}. May be used to
+ * detect a "veto" for a process.
+ *
+ * @return true, if is cancel
+ */
+ boolean isCancel();
+
+ /**
+ * Puts a property into the status.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ void putProperty(String key, Object value);
+
+ /**
+ * Returns true, if a property exists.
+ *
+ * @param key
+ * the key
+ * @return true, if successful
+ */
+ boolean containsProperty(String key);
+
+ /**
+ * Returns the value of the property.
+ *
+ * @param key
+ * the key
+ * @return the property
+ */
+ Object getProperty(String key);
+
+ /**
+ * The severity of the status.
+ */
+ enum Severity {
+
+ /** The ok. */
+ OK,
+ /** The info. */
+ INFO,
+ /** The warning. */
+ WARNING,
+ /** The error. */
+ ERROR,
+ /** The cancel. */
+ CANCEL,
+ /** The critical. */
+ CRITICAL,
+ /** The systemerror. */
+ SYSTEMERROR;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/IValidationParticipant.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/IValidationParticipant.java
new file mode 100644
index 0000000..a9a69ca
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/IValidationParticipant.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.validation;
+
+import java.util.Map;
+import java.util.Set;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A validation participant is used by the dto service, to validate complex
+ * rules.
+ */
+public interface IValidationParticipant {
+
+ /**
+ * Validates the given object and returns status objects in case of warning
+ * or error.
+ *
+ * @param object
+ * The object to be validated
+ * @param kind
+ * The kind of validation to be performed
+ * @param properties
+ * Any kind of key-value pairs
+ * @return the sets the
+ */
+ public Set<IStatus> validate(Object object, ValidationKind kind,
+ Map<String, Object> properties);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/Status.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/Status.java
new file mode 100644
index 0000000..f2f51d3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/Status.java
@@ -0,0 +1,307 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.runtime.common.validation;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osgi.framework.FrameworkUtil;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class Status.
+ */
+public class Status implements IStatus {
+
+ /** The code. */
+ private String code = "";
+
+ /** The bundle symbolic name. */
+ private String bundleSymbolicName = "";
+
+ /** The severity. */
+ private Severity severity;
+
+ /** The message. */
+ private String message = "";
+
+ /** The exception. */
+ private Exception exception;
+
+ /** The properties. */
+ private Map<String, Object> properties;
+
+ /**
+ * Instantiates a new status.
+ */
+ public Status() {
+
+ }
+
+ /**
+ * Creates an OK status.
+ *
+ * @return the i status
+ */
+ public static IStatus createOKStatus() {
+ Status status = new Status();
+ status.severity = Severity.OK;
+ return status;
+ }
+
+ /**
+ * Creates an CANCEL status.
+ *
+ * @return the i status
+ */
+ public static IStatus createCancelStatus() {
+ Status status = new Status();
+ status.severity = Severity.CANCEL;
+ return status;
+ }
+
+ /**
+ * Creates an ERROR status.
+ *
+ * @return the i status
+ */
+ public static IStatus createErrorStatus() {
+ Status status = new Status();
+ status.severity = Severity.ERROR;
+ return status;
+ }
+
+ /**
+ * Creates an ERROR status.
+ *
+ * @param e
+ * - the exception
+ * @return the i status
+ */
+ public static IStatus createErrorStatus(Exception e) {
+ Status status = new Status();
+ status.severity = Severity.ERROR;
+ status.exception = e;
+ return status;
+ }
+
+ /**
+ * Creates a status for the given parameters.
+ *
+ * @param code
+ * - the unique message code (is unique in a bundle)
+ * @param clazz
+ * - the class that is contained in the bundle, that specifies
+ * the code
+ * @param severity
+ * - the serverity of the status
+ * @param message
+ * - the message of the status
+ * @return the i status
+ */
+ public static IStatus createStatus(String code, Class<?> clazz,
+ Severity severity, String message) {
+ Status status = new Status();
+ status.code = code;
+ status.bundleSymbolicName = getBundleSymbolicName(clazz);
+ status.severity = severity;
+ status.message = message;
+ return status;
+ }
+
+ /**
+ * Creates the status.
+ *
+ * @param code
+ * - the unique message code (is unique in a bundle)
+ * @param clazz
+ * - the class that is contained in the bundle, that specifies
+ * the code
+ * @param severity
+ * - the serverity of the status
+ * @param message
+ * - the message of the status
+ * @param exception
+ * - the thrown exception
+ * @return the i status
+ */
+ public static IStatus createStatus(String code, Class<?> clazz,
+ Severity severity, String message, Exception exception) {
+ Status status = new Status();
+ status.code = code;
+ status.bundleSymbolicName = getBundleSymbolicName(clazz);
+ status.severity = severity;
+ status.message = message;
+ status.exception = exception;
+ return status;
+ }
+
+ /**
+ * Creates the status.
+ *
+ * @param code
+ * - the unique message code (is unique in a bundle)
+ * @param clazz
+ * - the class that is contained in the bundle, that specifies
+ * the code
+ * @param severity
+ * - the serverity of the status
+ * @param exception
+ * - the thrown exception
+ * @return the i status
+ */
+ public static IStatus createStatus(String code, Class<?> clazz,
+ Severity severity, Exception exception) {
+ Status status = new Status();
+ status.code = code;
+ status.bundleSymbolicName = getBundleSymbolicName(clazz);
+ status.severity = severity;
+ status.exception = exception;
+ return status;
+ }
+
+ /**
+ * Returns the bundle symbolic name for the given class.
+ *
+ * @param clazz
+ * the clazz
+ * @return the bundle symbolic name
+ */
+ private static String getBundleSymbolicName(Class<?> clazz) {
+ if (clazz == null || FrameworkUtil.getBundle(clazz) == null) {
+ return "no bundle available";
+ }
+ return FrameworkUtil.getBundle(clazz).getSymbolicName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#getId()
+ */
+ @Override
+ public String getId() {
+ return String.format("%s.%s", getBundleSymblicName(), getCode());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#getCode()
+ */
+ @Override
+ public String getCode() {
+ return code;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#getBundleSymblicName()
+ */
+ @Override
+ public String getBundleSymblicName() {
+ return bundleSymbolicName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#getSeverity()
+ */
+ @Override
+ public Severity getSeverity() {
+ return severity;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#getMessage()
+ */
+ @Override
+ public String getMessage() {
+ return message;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#getException()
+ */
+ @Override
+ public Exception getException() {
+ return exception;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#isOK()
+ */
+ @Override
+ public boolean isOK() {
+ return severity == Severity.OK || severity == Severity.INFO;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#isInfo()
+ */
+ @Override
+ public boolean isInfo() {
+ return severity == Severity.INFO;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#isWarning()
+ */
+ @Override
+ public boolean isWarning() {
+ return severity == Severity.WARNING;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#isError()
+ */
+ @Override
+ public boolean isError() {
+ return severity == Severity.ERROR;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#isCancel()
+ */
+ @Override
+ public boolean isCancel() {
+ return severity == Severity.CANCEL;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#putProperty(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public void putProperty(String key, Object value) {
+ if (properties == null) {
+ properties = new HashMap<String, Object>();
+ }
+ properties.put(key, value);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#containsProperty(java.lang.String)
+ */
+ @Override
+ public boolean containsProperty(String key) {
+ if (properties == null) {
+ return false;
+ }
+ return properties.containsKey(key);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.common.validation.IStatus#getProperty(java.lang.String)
+ */
+ @Override
+ public Object getProperty(String key) {
+ if (properties == null) {
+ return null;
+ }
+ return properties.get(key);
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/ValidationKind.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/ValidationKind.java
new file mode 100644
index 0000000..94ca123
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/validation/ValidationKind.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.validation;
+
+/**
+ * The kind of validation to be performed.
+ */
+public enum ValidationKind {
+
+ /** Validates "create new". */
+ CREATE,
+
+ /** Validates "update". */
+ UPDATE,
+
+ /** Validates "delete existing". */
+ DELETE,
+
+ /** Any other kind of validation. */
+ OTHER;
+}
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.project b/org.eclipse.osbp.runtime.datasource.provider/.project
new file mode 100644
index 0000000..b615579
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.datasource.provider</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.datasource.provider/LICENSE.txt b/org.eclipse.osbp.runtime.datasource.provider/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ab4b857
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.datasource.provider
+Bundle-SymbolicName: org.eclipse.osbp.runtime.datasource.provider
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Import-Package: javax.transaction;version="1.1.0",
+ javax.transaction.xa;version="1.1.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.cm;version="1.5.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.jdbc,
+ org.osgi.service.jndi;version="1.0.0",
+ org.osgi.util.tracker;version="1.4.0",
+ org.slf4j;version="1.7.2"
+Require-Bundle: org.eclipse.gemini.dbaccess.derby;bundle-version="1.1.0",
+ org.apache.derby;bundle-version="10.8.2",
+ org.eclipse.osbp.fork.gemini.naming;bundle-version="[1.1.0,1.1.1)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+Service-Component: OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.xml,
+ OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.DatasourceService.xml
+Export-Package: org.eclipse.osbp.runtime.datasource.provider;version="0.9.0"
diff --git a/org.eclipse.osbp.runtime.datasource.provider/OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.DatasourceService.xml b/org.eclipse.osbp.runtime.datasource.provider/OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.DatasourceService.xml
new file mode 100644
index 0000000..4f283bc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.DatasourceService.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" name="org.eclipse.osbp.runtime.datasource.provider.DatasourceService">
+ <implementation class="org.eclipse.osbp.runtime.datasource.provider.DatasourceService"/>
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.common.datasource.IDataSourceService"/>
+ </service>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.datasource.provider/OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.xml b/org.eclipse.osbp.runtime.datasource.provider/OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.xml
new file mode 100644
index 0000000..c588713
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" configuration-policy="require" deactivate="deactivate" modified="update" name="org.eclipse.osbp.runtime.datasource.provider">
+ <implementation class="org.eclipse.osbp.runtime.datasource.provider.DatasourceComponent"/>
+ <service>
+ <provide interface="org.osgi.util.tracker.ServiceTrackerCustomizer"/>
+ <provide interface="org.osgi.service.cm.ManagedService"/>
+ </service>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.datasource.provider/about.html b/org.eclipse.osbp.runtime.datasource.provider/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.datasource.provider/about.ini b/org.eclipse.osbp.runtime.datasource.provider/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.datasource.provider/about.mappings b/org.eclipse.osbp.runtime.datasource.provider/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.datasource.provider/about.properties b/org.eclipse.osbp.runtime.datasource.provider/about.properties
new file mode 100644
index 0000000..6698453
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.datasource.provider
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.datasource.provider/build.properties b/org.eclipse.osbp.runtime.datasource.provider/build.properties
new file mode 100644
index 0000000..145b8c9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/build.properties
@@ -0,0 +1,7 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ OSGI-INF/,\
+ LICENSE.txt
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.datasource.provider/pom.xml b/org.eclipse.osbp.runtime.datasource.provider/pom.xml
new file mode 100644
index 0000000..7a4062f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/pom.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.datasource.provider</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/Activator.java b/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/Activator.java
new file mode 100644
index 0000000..056718c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/Activator.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.datasource.provider;
+
+import java.util.Properties;
+
+import org.apache.derby.jdbc.EmbeddedDriver;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+@SuppressWarnings(value = { "all" })
+public class Activator implements BundleActivator {
+
+ public static final String OSGI_JNDI_SERVICE_NAME = "osgi.jndi.service.name";
+ public static final String OSGI_JNDI_URL_PREFIX = "osgi:service/";
+ public static final String OSGI_UNIT_NAME = "osgi.unit.name";
+
+ public static final String DS_DRIVER_NAME = EmbeddedDriver.class.getName();
+
+ private static BundleContext ctx;
+ private static Activator plugin;
+ private Properties dataSourceProperties;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
+ * )
+ */
+ public void start(BundleContext context) throws Exception {
+ ctx = context;
+ plugin = this;
+ // // PostgreSQL Properties
+ // // !!! on PostgreSQL, the server configuration property
+ // "maxPreparedConnections"
+ // // must be set to a value > 0
+ // props.setProperty("user", "jppf");
+ // props.setProperty("password", "jppf");
+ // props.setProperty("databaseName", "jppf_samples");
+ // props.setProperty("serverName", "localhost");
+ // props.setProperty("portNumber", "5432");
+ // // MySQL Properties
+ // props.setProperty("user", "jppf");
+ // props.setProperty("password", "jppf");
+ // props.setProperty("serverName", "localhost");
+ // props.setProperty("port", "3306");
+ // props.setProperty("databaseName", "jppf_samples");
+ // props.setProperty("pinGlobalTxToPhysicalConnection", "true");
+ //
+ // // H2 Properties
+ // props.setProperty("user", "jppf");
+ // props.setProperty("password", "jppf");
+ // props.setProperty("URL",
+ // "jdbc:h2:tcp://localhost:9092/./jppf_samples;SCHEMA=PUBLIC");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
+ * )
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ ctx = null;
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+// private synchronized DataSource createDataSource(String jndiDatasource)
+// throws SQLException, InvalidSyntaxException {
+// DataSourceFactory dsf = lookupDsf(DS_DRIVER_NAME);
+// DataSource ds = dsf.createDataSource(dataSourceProperties);
+// Hashtable<String, String> ht = new Hashtable<String, String>();
+// ht.put(OSGI_JNDI_SERVICE_NAME, jndiDatasource);
+// ctx.registerService(DataSource.class, ds, ht);
+// return ds;
+// }
+//
+// private synchronized XADataSource createXADataSource(String jndiDatasource)
+// throws SQLException, InvalidSyntaxException {
+// DataSourceFactory dsf = lookupDsf(DS_DRIVER_NAME);
+// XADataSource ds = dsf.createXADataSource(dataSourceProperties);
+// Hashtable<String, String> ht = new Hashtable<String, String>();
+// ht.put(OSGI_JNDI_SERVICE_NAME, "XA" + jndiDatasource);
+// ctx.registerService(XADataSource.class, ds, ht);
+// return ds;
+// }
+//
+// private DataSourceFactory lookupDsf(String clientDriverName)
+// throws InvalidSyntaxException {
+// String filter = "(&(" + DataSourceFactory.OSGI_JDBC_DRIVER_CLASS + "="
+// + clientDriverName + "))";
+// return getDsf(filter);
+// }
+//
+// private DataSourceFactory getDsf(String filter)
+// throws InvalidSyntaxException {
+// ServiceReference[] refs = null;
+// refs = ctx.getServiceReferences(DataSourceFactory.class.getName(),
+// filter);
+// return (refs == null) ? null : (DataSourceFactory) ctx
+// .getService(refs[0]);
+// }
+}
diff --git a/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/DatasourceComponent.java b/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/DatasourceComponent.java
new file mode 100644
index 0000000..54fb43f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/DatasourceComponent.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.datasource.provider;
+
+import java.sql.SQLException;
+import java.util.Dictionary;
+import java.util.Properties;
+
+import javax.sql.DataSource;
+import javax.sql.XADataSource;
+
+import org.eclipse.osbp.runtime.common.datasource.config.CommonDatasourceConfig;
+import org.eclipse.osbp.runtime.common.util.OSGiUtil;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.cm.ConfigurationException;
+import org.osgi.service.cm.ManagedService;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.jdbc.DataSourceFactory;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+@Component(name = "org.eclipse.osbp.runtime.datasource.provider", configurationPolicy = ConfigurationPolicy.REQUIRE)
+public class DatasourceComponent implements
+ ServiceTrackerCustomizer<DataSourceFactory, DataSourceFactory>,
+ ManagedService {
+
+ private static final String DSFACTORY_FILTER = "(&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.class=%s))";
+ private ComponentContext context;
+ private DataSource ds;
+ private XADataSource xaDs;
+ private ServiceRegistration<DataSource> dsRegister;
+ private ServiceRegistration<XADataSource> xaDsRegister;
+ private ServiceTracker<DataSourceFactory, DataSourceFactory> dsFactoryTracker;
+ private DataSourceFactory dataSourceFactory;
+
+ @Activate
+ protected void activate(ComponentContext context) {
+ this.context = context;
+
+ }
+
+ private Filter createFilter() throws InvalidSyntaxException {
+ Filter f = context.getBundleContext().createFilter(
+ String.format(
+ DSFACTORY_FILTER,
+ context.getProperties().get(
+ DataSourceFactory.OSGI_JDBC_DRIVER_NAME)));
+ return f;
+ }
+
+ @Modified
+ protected void update(ComponentContext context) {
+ killCurrent();
+ if (dataSourceFactory != null) {
+ createNewDatasource(context.getProperties());
+ }
+ }
+
+ private void killCurrent() {
+ if (dsRegister != null) {
+ ds = null;
+ dsRegister.unregister();
+ dsRegister = null;
+ }
+
+ if (xaDsRegister != null) {
+ xaDs = null;
+ xaDsRegister.unregister();
+ xaDsRegister = null;
+ }
+ }
+
+ private void createNewDatasource(Dictionary<?, ?> input) {
+ try {
+ String driverName = (String) input
+ .get(DataSourceFactory.OSGI_JDBC_DRIVER_NAME);
+
+ Properties properties = OSGiUtil
+ .filterProperties(OSGiUtil
+ .convertDictionaryToProperties(input),
+ CommonDatasourceConfig
+ .getPropertyKeysForDriver(driverName));
+
+ ds = dataSourceFactory.createDataSource(properties);
+ xaDs = dataSourceFactory.createXADataSource(properties);
+
+ // Hashtable<String, Object> props = new Hashtable<String,
+ // Object>();
+ // props.put(JNDIConstants.JNDI_SERVICENAME, "");
+ // TODO - please put props to registry
+ // 1) datasourceName from DatasourceFactory#OSGI_JDBC_DRIVER_CLASS,
+ // #OSGI_JDBC_DRIVER_NAME, #OSGI_JDBC_DRIVER_VERSION,
+ // #JDBC_DATABASE_NAME, #JDBC_DATASOURCE_NAME
+ //
+ // And please register the #JDBC_DATASOURCE_NAME with
+ // JNDIConstants.JNDI_SERVICENAME too.
+ dsRegister = context.getBundleContext().registerService(
+ DataSource.class, ds, null);
+ xaDsRegister = context.getBundleContext().registerService(
+ XADataSource.class, xaDs, null);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ } catch (NullPointerException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Deactivate
+ protected void deactivate(ComponentContext context) {
+ this.context = null;
+
+ killCurrent();
+
+ if (dsFactoryTracker != null) {
+ dsFactoryTracker.close();
+ dsFactoryTracker = null;
+ }
+
+ }
+
+ @Override
+ public DataSourceFactory addingService(
+ ServiceReference<DataSourceFactory> reference) {
+ if (dataSourceFactory == null) {
+ dataSourceFactory = context.getBundleContext()
+ .getService(reference);
+ createNewDatasource(context.getProperties());
+ return dataSourceFactory;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void modifiedService(ServiceReference<DataSourceFactory> reference,
+ DataSourceFactory service) {
+
+ }
+
+ @Override
+ public void removedService(ServiceReference<DataSourceFactory> reference,
+ DataSourceFactory service) {
+ if (service == dataSourceFactory) {
+ killCurrent();
+ dataSourceFactory = null;
+ }
+ }
+
+ @Override
+ public void updated(Dictionary<String, ?> properties)
+ throws ConfigurationException {
+ try {
+ dsFactoryTracker = new ServiceTracker<DataSourceFactory, DataSourceFactory>(
+ context.getBundleContext(), createFilter(), this);
+ dsFactoryTracker.open();
+ dataSourceFactory = dsFactoryTracker.waitForService(1000);
+ } catch (InvalidSyntaxException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if (properties != null) {
+ killCurrent();
+ createNewDatasource(properties);
+ }
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/DatasourceService.java b/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/DatasourceService.java
new file mode 100644
index 0000000..3052e3f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/src/org/eclipse/osbp/runtime/datasource/provider/DatasourceService.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2011, 2015 - Bernhard Edler (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ * 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:
+ * Bernhard Edler - Initial implementation
+ */
+package org.eclipse.osbp.runtime.datasource.provider;
+
+import java.io.IOException;
+import java.sql.DatabaseMetaData;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.sql.DataSource;
+import javax.sql.XADataSource;
+
+import org.eclipse.osbp.runtime.common.datasource.IDataSourceService;
+import org.eclipse.osbp.runtime.common.datasource.config.CommonDatasourceConfig;
+import org.eclipse.osbp.runtime.common.util.OSGiUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.util.tracker.ServiceTracker;
+
+@SuppressWarnings("unused")
+@Component
+public class DatasourceService implements IDataSourceService {
+ private static final String ORG_LUNIFERA_EXAMPLES_DATASOURCE = "org.eclipse.osbp.runtime.datasource.provider";
+ private ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> cfgAdminTracker;
+ private ConfigurationAdmin configAdmin;
+ private ComponentContext context;
+
+ private Collection<ServiceReference<XADataSource>> xADataSources;
+ private Collection<ServiceReference<DataSource>> dataSources;
+
+ @Activate
+ protected void activate(ComponentContext context) {
+ this.context = context;
+
+ try {
+ cfgAdminTracker = new ServiceTracker<ConfigurationAdmin, ConfigurationAdmin>(
+ context.getBundleContext(), ConfigurationAdmin.class, null);
+ cfgAdminTracker.open();
+ configAdmin = cfgAdminTracker.waitForService(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public List<DataSourceInfo> getDataSourcInfos(String filter) {
+ try {
+ dataSources = context.getBundleContext().getServiceReferences(
+ DataSource.class, filter);
+ xADataSources = context.getBundleContext().getServiceReferences(
+ XADataSource.class, filter);
+ } catch (InvalidSyntaxException e) {
+ }
+
+ ArrayList<DataSourceInfo> dsInfos = new ArrayList<DataSourceInfo>();
+ dataSources
+ .stream()
+ .map(serviceRef -> context.getBundleContext().getService(
+ serviceRef)).collect(Collectors.toList()).stream()
+ .forEach(dataSource -> {
+ try {
+ DataSourceInfo dI = new DataSourceInfo();
+// dI.getProperties().put("Url", c.getURL().toString());
+ dsInfos.add(dI);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ });
+
+ return dsInfos;
+ }
+
+ @Override
+ public List<DataSource> getDataSources(String filter) {
+ try {
+ dataSources = context.getBundleContext().getServiceReferences(
+ DataSource.class, filter);
+ xADataSources = context.getBundleContext().getServiceReferences(
+ XADataSource.class, filter);
+ } catch (InvalidSyntaxException e) {
+ }
+
+ ArrayList<DataSource> dataSourcelist = new ArrayList<DataSource>();
+ dataSourcelist = (ArrayList<DataSource>) dataSources
+ .stream()
+ .map(serviceRef -> context.getBundleContext().getService(
+ serviceRef)).collect(Collectors.toList());
+
+ return dataSourcelist;
+ }
+
+ // @Override
+ // public void createDataSource(DataSourceConfig config) {
+ // try {
+ // // try {
+ // // if (configAdmin.listConfigurations(null) != null) {
+ // // List<Configuration> configurations = Arrays
+ // // .asList(configAdmin.listConfigurations(null));
+ // // for (Configuration c : configurations) {
+ // // c.delete();
+ // // }
+ // // }
+ // // } catch (NullPointerException e) {
+ // // e.printStackTrace();
+ // // }
+ // String pid = configAdmin.createFactoryConfiguration(
+ // ORG_LUNIFERA_EXAMPLES_DATASOURCE, null).getPid();
+ // configAdmin.getConfiguration(pid, null).update(
+ // config.getProperties());
+ // } catch (IOException e) {
+ // e.printStackTrace();
+ // // } catch (InvalidSyntaxException e) {
+ // // e.printStackTrace();
+ // }
+ // }
+
+ @Override
+ public void createDataSource(CommonDatasourceConfig config) {
+ try {
+ String pid = configAdmin.createFactoryConfiguration(
+ ORG_LUNIFERA_EXAMPLES_DATASOURCE, null).getPid();
+ configAdmin.getConfiguration(pid, null)
+ .update(OSGiUtil.convertHashMapToDictionary(config
+ .getProperties()));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/org.eclipse.osbp.runtime.designer.api/.project b/org.eclipse.osbp.runtime.designer.api/.project
new file mode 100644
index 0000000..32ab2ef
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.designer.api</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.designer.api/LICENSE.txt b/org.eclipse.osbp.runtime.designer.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.designer.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.designer.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0f89957
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.designer.api
+Bundle-SymbolicName: org.eclipse.osbp.runtime.designer.api
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.runtime.designer.api
+Require-Bundle: org.eclipse.emf.ecore
diff --git a/org.eclipse.osbp.runtime.designer.api/about.html b/org.eclipse.osbp.runtime.designer.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.designer.api/about.ini b/org.eclipse.osbp.runtime.designer.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.designer.api/about.mappings b/org.eclipse.osbp.runtime.designer.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.designer.api/about.properties b/org.eclipse.osbp.runtime.designer.api/about.properties
new file mode 100644
index 0000000..c56dbb2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.designer.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.designer.api/build.properties b/org.eclipse.osbp.runtime.designer.api/build.properties
new file mode 100644
index 0000000..889ec21
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ .project,\
+ .classpath,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.designer.api/pom.xml b/org.eclipse.osbp.runtime.designer.api/pom.xml
new file mode 100644
index 0000000..089443c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.designer.api</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.designer.api/src/org/eclipse/osbp/runtime/designer/api/IDesignerService.java b/org.eclipse.osbp.runtime.designer.api/src/org/eclipse/osbp/runtime/designer/api/IDesignerService.java
new file mode 100644
index 0000000..4e99d0f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/src/org/eclipse/osbp/runtime/designer/api/IDesignerService.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.designer.api;
+
+/**
+ * This service is used by ECView components like layouts to deal with designer
+ * features. There is one instance per ECView context.
+ *
+ * <code>@Scope(Session-Scope)</code> If running in a web session, all ECViews in the session
+ * may share this instance.
+ * <code>@Scope(View-Scope)</code> But also each ECView-Context may use its own service.
+ * @NoImplementByClients use AbstractImplementation
+ */
+public interface IDesignerService {
+
+ /**
+ * Returns true, if the design mode is active.
+ *
+ * @return true, if is design mode
+ */
+ boolean isDesignMode();
+
+ /**
+ * If true, the design mode for the related ECView is activate. Deactivated
+ * otherwise.
+ *
+ * @param value
+ * the new design mode
+ */
+ void setDesignMode(boolean value);
+
+ /**
+ * Adds a design listener.
+ *
+ * @param listener
+ * the listener
+ */
+ void addListener(IDesignListener listener);
+
+ /**
+ * Removes the given design listener.
+ *
+ * @param listener
+ * the listener
+ */
+ void removeListener(IDesignListener listener);
+
+ /**
+ * Listeners may deal with design events.
+ *
+ * @see DesignEvent
+ */
+
+ public interface IDesignListener {
+
+ /**
+ * The design event to be processed.
+ *
+ * @param event
+ * the event
+ */
+ void notify(DesignEvent event);
+
+ }
+
+ /**
+ * The Class DesignEvent.
+ */
+ public class DesignEvent {
+
+ /** The type. */
+ private final EventType type;
+
+ /**
+ * Instantiates a new design event.
+ *
+ * @param type
+ * the type
+ */
+ public DesignEvent(EventType type) {
+ super();
+ this.type = type;
+ }
+
+ /**
+ * Gets the type.
+ *
+ * @return the type
+ */
+ public EventType getType() {
+ return type;
+ }
+
+ }
+
+ /**
+ * The Enum EventType.
+ */
+ public enum EventType {
+
+ /** The enabled. */
+ ENABLED,
+ /** The disabled. */
+ DISABLED
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.designer.api/src/org/eclipse/osbp/runtime/designer/api/IWidgetDesignConfigurator.java b/org.eclipse.osbp.runtime.designer.api/src/org/eclipse/osbp/runtime/designer/api/IWidgetDesignConfigurator.java
new file mode 100644
index 0000000..d410e54
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/src/org/eclipse/osbp/runtime/designer/api/IWidgetDesignConfigurator.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.designer.api;
+
+import org.eclipse.emf.ecore.EObject;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IWidgetDesignConfigurator.
+ */
+public interface IWidgetDesignConfigurator {
+
+ /**
+ * Is called to configure the given widget for designmode. Or to deconfig if
+ * designmode is off.
+ *
+ * @param widget
+ * the widget
+ * @param element
+ * the element
+ * @param designMode
+ * the design mode
+ */
+ void configure(Object widget, EObject element, boolean designMode);
+
+ /**
+ * Opens the edit dialog.
+ * @param widget
+ * @param model
+ */
+ void openEditDialog(Object widget, EObject model);
+
+}
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.project b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.project
new file mode 100644
index 0000000..e898a2a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.eclipselink.core.fragment</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/LICENSE.txt b/org.eclipse.osbp.runtime.eclipselink.core.fragment/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3df4750
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.eclipselink.core.fragment
+Bundle-SymbolicName: org.eclipse.osbp.runtime.eclipselink.core.fragment
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Fragment-Host: org.eclipse.persistence.core;bundle-version="2.6.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.runtime.eclipselink.core.fragment;version="0.9.0"
+Import-Package: javax.persistence.spi,
+ javax.transaction;version="1.1.0"
+Require-Bundle: org.apache.aries.transaction.manager
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.html b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.ini b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.mappings b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.properties b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.properties
new file mode 100644
index 0000000..c24bc71
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.eclipselink.core.fragment
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/build.properties b/org.eclipse.osbp.runtime.eclipselink.core.fragment/build.properties
new file mode 100644
index 0000000..fdca065
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ build.properties,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/pom.xml b/org.eclipse.osbp.runtime.eclipselink.core.fragment/pom.xml
new file mode 100644
index 0000000..03df75b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.eclipselink.core.fragment</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/src/org/eclipse/osbp/runtime/eclipselink/core/fragment/OSBPPlatform.java b/org.eclipse.osbp.runtime.eclipselink.core.fragment/src/org/eclipse/osbp/runtime/eclipselink/core/fragment/OSBPPlatform.java
new file mode 100644
index 0000000..732916c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/src/org/eclipse/osbp/runtime/eclipselink/core/fragment/OSBPPlatform.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 1998, 2014 Oracle and/or its affiliates. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation from Oracle TopLink
+ * 06/30/2010-2.1.1 Michael O'Brien
+ * - 316513: Enable JMX MBean functionality for JBoss, Glassfish and WebSphere in addition to WebLogic
+ * Move JMX MBean generic registration code up from specific platforms
+ * see <link>http://wiki.eclipse.org/EclipseLink/DesignDocs/316513</link>
+ ******************************************************************************/
+package org.eclipse.osbp.runtime.eclipselink.core.fragment;
+
+import org.eclipse.persistence.platform.server.ServerPlatformBase;
+import org.eclipse.persistence.sessions.DatabaseSession;
+
+/**
+ * PUBLIC:
+ *
+ * This is the concrete subclass responsible for representing JBoss-specific
+ * server behavior.
+ *
+ * This platform overrides:
+ *
+ * getExternalTransactionControllerClass(): to use an JBoss-specific controller
+ * class
+ */
+public class OSBPPlatform extends ServerPlatformBase {
+
+ /**
+ * INTERNAL: Default Constructor: All behavior for the default constructor
+ * is inherited
+ */
+ public OSBPPlatform(DatabaseSession newDatabaseSession) {
+ super(newDatabaseSession);
+ }
+
+ @Override
+ public boolean isRuntimeServicesEnabledDefault() {
+ return false;
+ }
+
+ /**
+ * INTERNAL: getExternalTransactionControllerClass(): Answer the class of
+ * external transaction controller to use for JBoss. This is read-only.
+ *
+ * @return Class externalTransactionControllerClass
+ *
+ * @see org.eclipse.persistence.transaction.JTATransactionController
+ * @see org.eclipse.persistence.platform.server.ServerPlatformBase#isJTAEnabled()
+ * @see org.eclipse.persistence.platform.server.ServerPlatformBase#disableJTA()
+ * @see org.eclipse.persistence.platform.server.ServerPlatformBase#initializeExternalTransactionController()
+ */
+ public Class<?> getExternalTransactionControllerClass() {
+ if (externalTransactionControllerClass == null) {
+ externalTransactionControllerClass = OSBPTransactionController.class;
+ }
+ return externalTransactionControllerClass;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/src/org/eclipse/osbp/runtime/eclipselink/core/fragment/OSBPTransactionController.java b/org.eclipse.osbp.runtime.eclipselink.core.fragment/src/org/eclipse/osbp/runtime/eclipselink/core/fragment/OSBPTransactionController.java
new file mode 100644
index 0000000..a394617
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/src/org/eclipse/osbp/runtime/eclipselink/core/fragment/OSBPTransactionController.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 1998, 2014 Oracle and/or its affiliates. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation from Oracle TopLink
+ ******************************************************************************/
+package org.eclipse.osbp.runtime.eclipselink.core.fragment;
+
+import javax.transaction.TransactionManager;
+
+import org.eclipse.persistence.transaction.JTATransactionController;
+
+/**
+ * <p>
+ * <b>Purpose</b>: TransactionController implementation for JBoss JTA
+ * <p>
+ * <b>Description</b>: Implements the required behavior for controlling JTA 1.0
+ * transactions in JBoss. The JTA TransactionManager must be set on the
+ * instance.
+ *
+ * @see org.eclipse.persistence.transaction.JTATransactionController
+ */
+public class OSBPTransactionController extends JTATransactionController {
+ public static final String JNDI_TRANSACTION_MANAGER = "osgi:service/javax.transaction.TransactionManager";
+
+ /**
+ * INTERNAL: Obtain and return the JTA TransactionManager on this platform
+ */
+ protected TransactionManager acquireTransactionManager() throws Exception {
+ return (TransactionManager) jndiLookup(JNDI_TRANSACTION_MANAGER);
+ }
+}
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.project b/org.eclipse.osbp.runtime.ecore.bundlespace/.project
new file mode 100644
index 0000000..09e6fca
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.ecore.bundlespace</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/LICENSE.txt b/org.eclipse.osbp.runtime.ecore.bundlespace/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2df7f33
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.ecore.bundlespace
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-SymbolicName: org.eclipse.osbp.runtime.ecore.bundlespace
+Bundle-Version: 0.9.0.qualifier
+Import-Package: org.osgi.framework;version="1.8.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/*.xml
+Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.ecore
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/OSGI-INF/org.eclipse.osbp.runtime.ecore.bundlespace.BundleSpaceAwareEcoreFactoryService.xml b/org.eclipse.osbp.runtime.ecore.bundlespace/OSGI-INF/org.eclipse.osbp.runtime.ecore.bundlespace.BundleSpaceAwareEcoreFactoryService.xml
new file mode 100644
index 0000000..125edf4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/OSGI-INF/org.eclipse.osbp.runtime.ecore.bundlespace.BundleSpaceAwareEcoreFactoryService.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.osbp.runtime.ecore.bundlespace.BundleSpaceAwareEcoreFactoryService">
+ <implementation class="org.eclipse.osbp.runtime.ecore.bundlespace.BundleSpaceAwareEcoreFactoryService"/>
+ <reference bind="bindBundleSpace" cardinality="1..1" interface="org.eclipse.osbp.runtime.common.types.IBundleSpace" name="BundleSpace" policy="static" unbind="unbindBundleSpace"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/about.html b/org.eclipse.osbp.runtime.ecore.bundlespace/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/about.ini b/org.eclipse.osbp.runtime.ecore.bundlespace/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/about.mappings b/org.eclipse.osbp.runtime.ecore.bundlespace/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/about.properties b/org.eclipse.osbp.runtime.ecore.bundlespace/about.properties
new file mode 100644
index 0000000..2dfc323
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.ecore.bundlespace
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/build.properties b/org.eclipse.osbp.runtime.ecore.bundlespace/build.properties
new file mode 100644
index 0000000..8f9717c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/build.properties
@@ -0,0 +1,10 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ .project,\
+ .classpath,\
+ OSGI-INF/,\
+ .settings/,\
+ LICENSE.txt
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/pom.xml b/org.eclipse.osbp.runtime.ecore.bundlespace/pom.xml
new file mode 100644
index 0000000..6ff7e83
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.ecore.bundlespace</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/src/org/eclipse/osbp/runtime/ecore/bundlespace/BundleSpaceAwareEcoreFactoryService.java b/org.eclipse.osbp.runtime.ecore.bundlespace/src/org/eclipse/osbp/runtime/ecore/bundlespace/BundleSpaceAwareEcoreFactoryService.java
new file mode 100644
index 0000000..9ed6f6a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/src/org/eclipse/osbp/runtime/ecore/bundlespace/BundleSpaceAwareEcoreFactoryService.java
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.ecore.bundlespace;
+
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EcoreFactoryImpl;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(immediate = true)
+public class BundleSpaceAwareEcoreFactoryService {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(BundleSpaceAwareEcoreFactoryService.class);
+
+ private IBundleSpace bundleSpace;
+
+ private EFactory oldFactory;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, unbind = "unbindBundleSpace")
+ protected void bindBundleSpace(IBundleSpace bundleSpace) {
+ this.bundleSpace = bundleSpace;
+ }
+
+ protected void unbindBundleSpace(IBundleSpace bundleSpace) {
+ this.bundleSpace = null;
+ }
+
+ @Activate
+ protected void activate() {
+ oldFactory = EcorePackage.eINSTANCE.getEFactoryInstance();
+ // ensure that ecore will load classes based on bundlespace
+ EcorePackage.eINSTANCE
+ .setEFactoryInstance(new ClassLoadingDelegatingEcoreFactory());
+
+ LOGGER.info("Bound BundleSpaceAware EcoreFactory.");
+ }
+
+ @Deactivate
+ protected void deactivate() {
+ EcorePackage.eINSTANCE.setEFactoryInstance(oldFactory);
+ oldFactory = null;
+ }
+
+ private class ClassLoadingDelegatingEcoreFactory extends EcoreFactoryImpl {
+ public Class<?> createEJavaClassFromString(EDataType metaObject,
+ String initialValue) {
+ try {
+ if (initialValue == null)
+ return null;
+ else if ("boolean".equals(initialValue))
+ return boolean.class;
+ else if ("byte".equals(initialValue))
+ return byte.class;
+ else if ("char".equals(initialValue))
+ return char.class;
+ else if ("double".equals(initialValue))
+ return double.class;
+ else if ("float".equals(initialValue))
+ return float.class;
+ else if ("int".equals(initialValue))
+ return int.class;
+ else if ("long".equals(initialValue))
+ return long.class;
+ else if ("short".equals(initialValue))
+ return short.class;
+ else
+ return bundleSpace.forName(initialValue);
+ } catch (ClassNotFoundException e) {
+ throw new WrappedException(e);
+ }
+ }
+ }
+}
diff --git a/org.eclipse.osbp.runtime.emf/.project b/org.eclipse.osbp.runtime.emf/.project
new file mode 100644
index 0000000..71ca391
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.emf</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.emf/LICENSE.txt b/org.eclipse.osbp.runtime.emf/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.emf/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.emf/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..814d16b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.emf
+Bundle-SymbolicName: org.eclipse.osbp.runtime.emf
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.emf.common,
+ org.eclipse.emf.ecore
+Export-Package: org.eclipse.osbp.runtime.emf.change,
+ org.eclipse.osbp.runtime.emf.edit.commands
diff --git a/org.eclipse.osbp.runtime.emf/about.html b/org.eclipse.osbp.runtime.emf/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.emf/about.ini b/org.eclipse.osbp.runtime.emf/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.emf/about.mappings b/org.eclipse.osbp.runtime.emf/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.emf/about.properties b/org.eclipse.osbp.runtime.emf/about.properties
new file mode 100644
index 0000000..d35ea48
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.emf
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.emf/build.properties b/org.eclipse.osbp.runtime.emf/build.properties
new file mode 100644
index 0000000..a8c17c3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.emf/pom.xml b/org.eclipse.osbp.runtime.emf/pom.xml
new file mode 100644
index 0000000..311ba1f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.emf</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/change/ChangedRecorder.java b/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/change/ChangedRecorder.java
new file mode 100644
index 0000000..6bd4b98
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/change/ChangedRecorder.java
@@ -0,0 +1,178 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.emf.change;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+
+/**
+ * Implementation of {@link EContentAdapter} that records all notifications. And
+ * implements logic to {@link #undo()} and {@link #redo()} the changes.
+ */
+public class ChangedRecorder extends EContentAdapter {
+
+ private final Notifier notifier;
+
+ private List<Notification> notifications = new ArrayList<Notification>();
+
+ public ChangedRecorder(Notifier notifier) {
+ super();
+ this.notifier = notifier;
+ }
+
+ /**
+ * Starts the recording.
+ */
+ public void start() {
+ setTarget(notifier);
+ }
+
+ /**
+ * Stops the recording.
+ */
+ public void stop() {
+ unsetTarget(notifier);
+ }
+
+ /**
+ * Returns all notifications recorded.
+ *
+ * @return
+ */
+ public List<Notification> getNotifications() {
+ return notifications;
+ }
+
+ @Override
+ public void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+
+ if (notification.isTouch()) {
+ return;
+ }
+
+ if (notification.getEventType() == Notification.REMOVING_ADAPTER) {
+ return;
+ }
+
+ if (notification.getEventType() == Notification.RESOLVE) {
+ return;
+ }
+
+ notifications.add(notification);
+ }
+
+ /**
+ * Undos all notifications.
+ */
+ public void undo() {
+ for (int i = notifications.size() - 1; i >= 0; i--) {
+ Notification change = notifications.get(i);
+ undo(change);
+ }
+ }
+
+ /**
+ * Redos all notifications.
+ */
+ public void redo() {
+ for (int i = 0; i < notifications.size(); i++) {
+ Notification change = notifications.get(i);
+ redo(change);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void undo(Notification change) {
+ EObject notifier = (EObject) change.getNotifier();
+ switch (change.getEventType()) {
+ case Notification.ADD: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ list.remove(change.getNewValue());
+ }
+ break;
+ case Notification.ADD_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.MOVE:
+ throw new IllegalStateException("Implement me");
+ case Notification.REMOVE: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ if (change.getPosition() > 0) {
+ list.add(change.getPosition(), change.getOldValue());
+ } else {
+ list.add(change.getOldValue());
+ }
+ }
+ break;
+ case Notification.REMOVE_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.SET: {
+ Object value = change.getOldValue();
+ notifier.eSet((EStructuralFeature) change.getFeature(), value);
+ }
+ break;
+ case Notification.UNSET: {
+ Object value = change.getOldValue();
+ notifier.eSet((EStructuralFeature) change.getFeature(), value);
+ }
+ break;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void redo(Notification change) {
+ EObject notifier = (EObject) change.getNotifier();
+ switch (change.getEventType()) {
+ case Notification.ADD: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ if (change.getPosition() > 0) {
+ list.add(change.getPosition(), change.getNewValue());
+ } else {
+ list.add(change.getNewValue());
+ }
+ }
+ break;
+ case Notification.ADD_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.MOVE:
+ throw new IllegalStateException("Implement me");
+ case Notification.REMOVE: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ list.remove(change.getOldValue());
+ }
+ break;
+ case Notification.REMOVE_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.SET: {
+ Object value = change.getNewValue();
+ notifier.eSet((EStructuralFeature) change.getFeature(), value);
+ }
+ break;
+ case Notification.UNSET: {
+ notifier.eUnset((EStructuralFeature) change.getFeature());
+ }
+ break;
+ }
+ }
+}
diff --git a/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/edit/commands/ChangeCommand.java b/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/edit/commands/ChangeCommand.java
new file mode 100644
index 0000000..5d260f1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/edit/commands/ChangeCommand.java
@@ -0,0 +1,68 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.emf.edit.commands;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.runtime.emf.change.ChangedRecorder;
+
+/**
+ * Uses the {@link ChangeCommand} to record notifications.
+ */
+public abstract class ChangeCommand extends AbstractCommand {
+
+ private Resource resource;
+ private ChangedRecorder recorder;
+
+ public ChangeCommand(String name, Resource resource) {
+ super(name);
+ this.resource = resource;
+ }
+
+ @Override
+ public void execute() {
+ recorder.start();
+
+ doExecute();
+
+ recorder.stop();
+ }
+
+ /**
+ * Execute your operations.
+ */
+ protected abstract void doExecute();
+
+ @Override
+ public void redo() {
+ recorder.redo();
+ }
+
+ @Override
+ protected boolean prepare() {
+ recorder = new ChangedRecorder(resource);
+ return true;
+ }
+
+ @Override
+ public void undo() {
+ recorder.undo();
+ }
+
+ @Override
+ public boolean canUndo() {
+ return super.canUndo();
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/edit/commands/SimpleCommand.java b/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/edit/commands/SimpleCommand.java
new file mode 100644
index 0000000..7008300
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/src/org/eclipse/osbp/runtime/emf/edit/commands/SimpleCommand.java
@@ -0,0 +1,63 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.emf.edit.commands;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+
+/**
+ * Uses the {@link SimpleCommand} to record notifications.
+ */
+public abstract class SimpleCommand extends AbstractCommand {
+
+ public SimpleCommand(String name) {
+ super(name);
+ }
+
+ @Override
+ public void execute() {
+ doExecute();
+ }
+
+ @Override
+ public void redo() {
+ doRedo();
+ }
+
+ @Override
+ protected boolean prepare() {
+ return true;
+ }
+
+ @Override
+ public void undo() {
+ doUndo();
+ }
+
+ @Override
+ public boolean canUndo() {
+ return true;
+ }
+
+ protected abstract void doExecute();
+
+ /**
+ * Override if required.
+ */
+ protected void doRedo() {
+ doExecute();
+ }
+
+ protected abstract void doUndo();
+
+}
diff --git a/org.eclipse.osbp.runtime.event/.project b/org.eclipse.osbp.runtime.event/.project
new file mode 100644
index 0000000..62be056
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.event</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.event/LICENSE.txt b/org.eclipse.osbp.runtime.event/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bcdeed9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.event
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-SymbolicName: org.eclipse.osbp.runtime.event
+Bundle-Version: 0.9.0.qualifier
+Import-Package: org.osgi.framework;version="1.8.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.event;version="1.3.0",
+ org.osgi.service.prefs,
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/org.eclipse.osbp.runtime.event.EventBroker.xml
+Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.runtime.event/OSGI-INF/org.eclipse.osbp.runtime.event.EventBroker.xml b/org.eclipse.osbp.runtime.event/OSGI-INF/org.eclipse.osbp.runtime.event.EventBroker.xml
new file mode 100644
index 0000000..102ea74
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/OSGI-INF/org.eclipse.osbp.runtime.event.EventBroker.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="org.eclipse.osbp.runtime.event.EventBroker">
+ <implementation class="org.eclipse.osbp.runtime.event.EventBroker"/>
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.common.event.IEventBroker"/>
+ </service>
+ <reference bind="bindEventAdmin" cardinality="1..1" interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="static" unbind="unbindEventAdmin"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.event/about.html b/org.eclipse.osbp.runtime.event/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.event/about.ini b/org.eclipse.osbp.runtime.event/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.event/about.mappings b/org.eclipse.osbp.runtime.event/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.event/about.properties b/org.eclipse.osbp.runtime.event/about.properties
new file mode 100644
index 0000000..a1e1d1c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.event
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.event/build.properties b/org.eclipse.osbp.runtime.event/build.properties
new file mode 100644
index 0000000..e79b84a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ OSGI-INF/,\
+ .project,\
+ .classpath,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.event/pom.xml b/org.eclipse.osbp.runtime.event/pom.xml
new file mode 100644
index 0000000..cf56cb7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.event</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.event/src/org/eclipse/osbp/runtime/event/EventBroker.java b/org.eclipse.osbp.runtime.event/src/org/eclipse/osbp/runtime/event/EventBroker.java
new file mode 100644
index 0000000..33ace05
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/src/org/eclipse/osbp/runtime/event/EventBroker.java
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2013 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Florian Pirchner - adjustments to osbp code
+ *******************************************************************************/
+package org.eclipse.osbp.runtime.event;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.eclipse.osbp.runtime.common.event.IEventBroker;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
+
+@Component
+public class EventBroker implements IEventBroker {
+
+ // private static final Logger LOGGER = LoggerFactory
+ // .getLogger(EventBroker.class);
+
+ // TBD synchronization
+ private Map<EventHandler, Collection<ServiceRegistration<?>>> registrations = new HashMap<EventHandler, Collection<ServiceRegistration<?>>>();
+
+ private EventAdmin eventAdmin;
+
+ private ComponentContext context;
+
+ public EventBroker() {
+ // placeholder
+ }
+
+ @Activate
+ protected void activate(ComponentContext context) {
+ this.context = context;
+ }
+
+ @Deactivate
+ protected void deactivate(ComponentContext context) {
+ Collection<Collection<ServiceRegistration<?>>> values = new ArrayList<Collection<ServiceRegistration<?>>>(
+ registrations.values());
+ registrations.clear();
+ for (Collection<ServiceRegistration<?>> handled : values) {
+ for (ServiceRegistration<?> registration : handled) {
+ registration.unregister();
+ }
+ }
+
+ this.context = null;
+ }
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, unbind = "unbindEventAdmin")
+ protected void bindEventAdmin(EventAdmin eventAdmin) {
+ this.eventAdmin = eventAdmin;
+ }
+
+ protected void unbindEventAdmin(EventAdmin eventAdmin) {
+ this.eventAdmin = null;
+ }
+
+ @Override
+ public boolean send(String topic, Object data) {
+ Event event = constructEvent(topic, data);
+ eventAdmin.sendEvent(event);
+ return true;
+ }
+
+ @Override
+ public boolean post(String topic, Object data) {
+ Event event = constructEvent(topic, data);
+ eventAdmin.postEvent(event);
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ private Event constructEvent(String topic, Object data) {
+ Event event;
+ if (data instanceof Dictionary<?, ?>) {
+ event = new Event(topic, (Dictionary<String, ?>) data);
+ } else if (data instanceof Map<?, ?>) {
+ event = new Event(topic, (Map<String, ?>) data);
+ } else {
+ Dictionary<String, Object> d = new Hashtable<String, Object>(2);
+ d.put(EventConstants.EVENT_TOPIC, topic);
+ if (data != null)
+ d.put(IEventBroker.DATA, data);
+ event = new Event(topic, d);
+ }
+ return event;
+ }
+
+ @Override
+ public boolean subscribe(String topic, EventHandler eventHandler) {
+ return subscribe(topic, null, eventHandler, false);
+ }
+
+ @Override
+ public boolean subscribe(String topic, String filter,
+ EventHandler eventHandler, boolean headless) {
+ BundleContext bundleContext = context.getBundleContext();
+ String[] topics = new String[] { topic };
+ Dictionary<String, Object> d = new Hashtable<String, Object>();
+ d.put(EventConstants.EVENT_TOPIC, topics);
+ if (filter != null) {
+ d.put(EventConstants.EVENT_FILTER, filter);
+ }
+ ServiceRegistration<?> registration = bundleContext.registerService(
+ EventHandler.class.getName(), eventHandler, d);
+ Collection<ServiceRegistration<?>> handled = registrations
+ .get(eventHandler);
+ if (handled == null) {
+ registrations.put(eventHandler,
+ handled = new ArrayList<ServiceRegistration<?>>());
+ }
+ handled.add(registration);
+ return true;
+ }
+
+ @Override
+ public boolean unsubscribe(EventHandler eventHandler) {
+ Collection<ServiceRegistration<?>> handled = registrations
+ .remove(eventHandler);
+ if (handled == null || handled.isEmpty())
+ return false;
+ for (ServiceRegistration<?> r : handled) {
+ r.unregister();
+ }
+ return true;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/.project b/org.eclipse.osbp.runtime.feature.allinone.testframework/.project
new file mode 100644
index 0000000..195c33d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.allinone.testframework</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/LICENSE.txt b/org.eclipse.osbp.runtime.feature.allinone.testframework/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/build.properties b/org.eclipse.osbp.runtime.feature.allinone.testframework/build.properties
new file mode 100644
index 0000000..9234d19
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/build.properties
@@ -0,0 +1,2 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/epl-v10.html b/org.eclipse.osbp.runtime.feature.allinone.testframework/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/feature.properties b/org.eclipse.osbp.runtime.feature.allinone.testframework/feature.properties
new file mode 100644
index 0000000..c5eaebd
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/feature.properties
@@ -0,0 +1,170 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSBP All-in-one test framework feature (not IDE!)
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Contains all required components for testing within the osbp runtime.\n\
+Do NOT install into IDE!
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/feature.xml b/org.eclipse.osbp.runtime.feature.allinone.testframework/feature.xml
new file mode 100644
index 0000000..4633e1e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/feature.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.allinone.testframework"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <includes id="org.eclipse.osbp.runtime.feature.allinone" version="0.9.1.qualifier"/>
+
+ <includes id="org.eclipse.osbp.dependencies.feature.assert-utilities" version="0.9.1.qualifier"/>
+
+ <plugin
+ id="org.junit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/license.html b/org.eclipse.osbp.runtime.feature.allinone.testframework/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/pom.xml b/org.eclipse.osbp.runtime.feature.allinone.testframework/pom.xml
new file mode 100644
index 0000000..a5d1c9b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.allinone.testframework</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ <excludes>
+ <feature id="org.eclipse.osbp.dependencies.feature.assert-utilities"/>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.feature.allinone</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.osbp.dependencies</groupId>
+ <artifactId>org.eclipse.osbp.dependencies.feature.assert-utilities</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </dependency>
+
+ </dependencies>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/src/main/javadoc/README.txt b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/src/overview.html b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/overview.html
new file mode 100644
index 0000000..bd17035
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP .... Feature</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP .... Feature</b> implements ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.common/.project b/org.eclipse.osbp.runtime.feature.common/.project
new file mode 100644
index 0000000..24dbbab
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.common</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.common/LICENSE.txt b/org.eclipse.osbp.runtime.feature.common/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.common/build.properties b/org.eclipse.osbp.runtime.feature.common/build.properties
new file mode 100644
index 0000000..9234d19
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/build.properties
@@ -0,0 +1,2 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties
diff --git a/org.eclipse.osbp.runtime.feature.common/epl-v10.html b/org.eclipse.osbp.runtime.feature.common/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.common/feature.properties b/org.eclipse.osbp.runtime.feature.common/feature.properties
new file mode 100644
index 0000000..7c7ad72
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Common runtime features
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Contains base features for the whole osbp runtime.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.common/feature.xml b/org.eclipse.osbp.runtime.feature.common/feature.xml
new file mode 100644
index 0000000..1b1e145
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/feature.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.common"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.common"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.emf"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.memento"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.designer.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.common/license.html b/org.eclipse.osbp.runtime.feature.common/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.common/pom.xml b/org.eclipse.osbp.runtime.feature.common/pom.xml
new file mode 100644
index 0000000..f5078e8
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.common</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.common/src/main/javadoc/README.txt b/org.eclipse.osbp.runtime.feature.common/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.common/src/overview.html b/org.eclipse.osbp.runtime.feature.common/src/overview.html
new file mode 100644
index 0000000..bd17035
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP .... Feature</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP .... Feature</b> implements ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.project b/org.eclipse.osbp.runtime.feature.datasource.provider/.project
new file mode 100644
index 0000000..a37971f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.datasource.provider</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/LICENSE.txt b/org.eclipse.osbp.runtime.feature.datasource.provider/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/build.properties b/org.eclipse.osbp.runtime.feature.datasource.provider/build.properties
new file mode 100644
index 0000000..9d5dedc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/build.properties
@@ -0,0 +1,4 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties,\
+ LICENSE.txt
+src.includes = license.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/epl-v10.html b/org.eclipse.osbp.runtime.feature.datasource.provider/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/feature.properties b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.properties
new file mode 100644
index 0000000..982035f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSBP runtime: Datasource Provider with Config Admin
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Provides a datasource based on Config Admin configurations. And provides a IDataSourceService for fast access.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
new file mode 100644
index 0000000..9a9ed70
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.datasource.provider"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.datasource.provider"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/license.html b/org.eclipse.osbp.runtime.feature.datasource.provider/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/pom.xml b/org.eclipse.osbp.runtime.feature.datasource.provider/pom.xml
new file mode 100644
index 0000000..4b40f3f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.datasource.provider</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/src/main/javadoc/README.txt b/org.eclipse.osbp.runtime.feature.datasource.provider/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/src/overview.html b/org.eclipse.osbp.runtime.feature.datasource.provider/src/overview.html
new file mode 100644
index 0000000..bd17035
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP .... Feature</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP .... Feature</b> implements ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.project b/org.eclipse.osbp.runtime.feature.e4eventmanager/.project
new file mode 100644
index 0000000..df6cf6c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.e4eventmanager</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/LICENSE.txt b/org.eclipse.osbp.runtime.feature.e4eventmanager/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/build.properties b/org.eclipse.osbp.runtime.feature.e4eventmanager/build.properties
new file mode 100644
index 0000000..9d5dedc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/build.properties
@@ -0,0 +1,4 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties,\
+ LICENSE.txt
+src.includes = license.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/epl-v10.html b/org.eclipse.osbp.runtime.feature.e4eventmanager/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.properties b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.properties
new file mode 100644
index 0000000..e61a607
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSBP runtime: e4 event manager
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Contains base features for the whole osbp runtime.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
new file mode 100644
index 0000000..cbd2795
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.e4eventmanager"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.event"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/license.html b/org.eclipse.osbp.runtime.feature.e4eventmanager/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/pom.xml b/org.eclipse.osbp.runtime.feature.e4eventmanager/pom.xml
new file mode 100644
index 0000000..7d689dd
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.e4eventmanager</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/src/main/javadoc/README.txt b/org.eclipse.osbp.runtime.feature.e4eventmanager/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/src/overview.html b/org.eclipse.osbp.runtime.feature.e4eventmanager/src/overview.html
new file mode 100644
index 0000000..bd17035
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP .... Feature</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP .... Feature</b> implements ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.project b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.project
new file mode 100644
index 0000000..99977e1
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.eclipselink.core.fragment</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/LICENSE.txt b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/build.properties b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/build.properties
new file mode 100644
index 0000000..9d5dedc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/build.properties
@@ -0,0 +1,4 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties,\
+ LICENSE.txt
+src.includes = license.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/epl-v10.html b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.properties b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.properties
new file mode 100644
index 0000000..a41564d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Feature for Eclipselink core fragment
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Contains base features for the whole osbp runtime.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
new file mode 100644
index 0000000..2382144
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.eclipselink.core.fragment"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.apache.aries.transaction.manager"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.eclipselink.core.fragment"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/license.html b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
new file mode 100644
index 0000000..eda9658
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.eclipselink.core.fragment</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ <excludes>
+ <plugin id="org.eclipse.persistence.core"/>
+ <plugin id="org.apache.aries.transaction.manager"/>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/src/main/javadoc/README.txt b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/src/overview.html b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/src/overview.html
new file mode 100644
index 0000000..bd17035
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP .... Feature</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP .... Feature</b> implements ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.project b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.project
new file mode 100644
index 0000000..49d1bcd
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.ecore.bundlespace</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/LICENSE.txt b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/build.properties b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/build.properties
new file mode 100644
index 0000000..9d5dedc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/build.properties
@@ -0,0 +1,4 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties,\
+ LICENSE.txt
+src.includes = license.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/epl-v10.html b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.properties b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.properties
new file mode 100644
index 0000000..a4a20a4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSBP runtime: Bundlespace aware EcoreFactory
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Bundlespace aware EcoreFactory
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
new file mode 100644
index 0000000..2523749
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.ecore.bundlespace"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.ecore.bundlespace"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/license.html b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/pom.xml b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/pom.xml
new file mode 100644
index 0000000..41d47f8
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.ecore.bundlespace</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/src/main/javadoc/README.txt b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/src/overview.html b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/src/overview.html
new file mode 100644
index 0000000..bd17035
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP .... Feature</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP .... Feature</b> implements ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.project b/org.eclipse.osbp.runtime.feature.jsr303.validation/.project
new file mode 100644
index 0000000..6a96cbf
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.jsr303.validation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/LICENSE.txt b/org.eclipse.osbp.runtime.feature.jsr303.validation/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/build.properties b/org.eclipse.osbp.runtime.feature.jsr303.validation/build.properties
new file mode 100644
index 0000000..9d5dedc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/build.properties
@@ -0,0 +1,4 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties,\
+ LICENSE.txt
+src.includes = license.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/epl-v10.html b/org.eclipse.osbp.runtime.feature.jsr303.validation/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.properties b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.properties
new file mode 100644
index 0000000..f1310d4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSBP runtime: javax.validation ValidationFactory provider.
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Provides an "Apache bean validation ValidationFactory" as an OSGi service
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
new file mode 100644
index 0000000..3a293eb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.jsr303.validation"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.jsr303.validation"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/license.html b/org.eclipse.osbp.runtime.feature.jsr303.validation/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/pom.xml b/org.eclipse.osbp.runtime.feature.jsr303.validation/pom.xml
new file mode 100644
index 0000000..f52a7f3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.jsr303.validation</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/src/main/javadoc/README.txt b/org.eclipse.osbp.runtime.feature.jsr303.validation/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/src/overview.html b/org.eclipse.osbp.runtime.feature.jsr303.validation/src/overview.html
new file mode 100644
index 0000000..bd17035
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP .... Feature</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP .... Feature</b> implements ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.project b/org.eclipse.osbp.runtime.feature.resolverhooks/.project
new file mode 100644
index 0000000..5704952
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.resolverhooks</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/LICENSE.txt b/org.eclipse.osbp.runtime.feature.resolverhooks/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/build.properties b/org.eclipse.osbp.runtime.feature.resolverhooks/build.properties
new file mode 100644
index 0000000..9d5dedc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/build.properties
@@ -0,0 +1,4 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties,\
+ LICENSE.txt
+src.includes = license.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/epl-v10.html b/org.eclipse.osbp.runtime.feature.resolverhooks/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/feature.properties b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.properties
new file mode 100644
index 0000000..b72ebb3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSGi resolver hooks for controlling bundle wiring
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Contains base features for the whole osbp runtime.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
new file mode 100644
index 0000000..0520982
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.resolverhooks"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.systemextension"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/license.html b/org.eclipse.osbp.runtime.feature.resolverhooks/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/p2.inf b/org.eclipse.osbp.runtime.feature.resolverhooks/p2.inf
new file mode 100644
index 0000000..99801bb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/p2.inf
@@ -0,0 +1,5 @@
+instructions.install = \
+addJvmArg(jvmArg:-Dosgi.framework.extensions=org.eclipse.osbp.runtime.systemextension);
+
+instructions.install.import= \
+org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg;
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/pom.xml b/org.eclipse.osbp.runtime.feature.resolverhooks/pom.xml
new file mode 100644
index 0000000..7b56a17
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.resolverhooks</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.project b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.project
new file mode 100644
index 0000000..6a96cbf
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.feature.jsr303.validation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/LICENSE.txt b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/build.properties b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/build.properties
new file mode 100644
index 0000000..9d5dedc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/build.properties
@@ -0,0 +1,4 @@
+bin.includes = license.html, feature.xml,\
+ feature.properties,\
+ LICENSE.txt
+src.includes = license.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/epl-v10.html b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.properties b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.properties
new file mode 100644
index 0000000..b9c6af5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+# 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:
+# Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSBP runtime: Implementation of ITypeProviderService
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=Provides an implementation of ITypeProviderService
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2012, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
new file mode 100644
index 0000000..7e0d31b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.runtime.feature.typeprovider.bundlespace"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.runtime.typeprovider.bundlespace"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/license.html b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/pom.xml b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/pom.xml
new file mode 100644
index 0000000..0b57acd
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.feature.typeprovider.bundlespace</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.project b/org.eclipse.osbp.runtime.jsr303.validation/.project
new file mode 100644
index 0000000..ccf7eb4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.jsr303.validation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/LICENSE.txt b/org.eclipse.osbp.runtime.jsr303.validation/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7ead445
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.jsr303.validation
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-SymbolicName: org.eclipse.osbp.runtime.jsr303.validation
+Bundle-Version: 0.9.0.qualifier
+Import-Package: javax.validation;version="1.1.0",
+ javax.validation.bootstrap;version="1.1.0",
+ javax.validation.constraints;version="1.1.0",
+ javax.validation.metadata;version="1.1.0",
+ javax.validation.spi;version="1.1.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.util.tracker;version="1.5.1",
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.EventBroker.xml,
+ OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant.xml
+Require-Bundle: org.apache.bval.org.apache.bval.bundle;bundle-version="0.5.0",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+Bundle-Activator: org.eclipse.osbp.runtime.jsr303.validation.Activator
+Export-Package: org.eclipse.osbp.runtime.jsr303.validation.common;version="0.9.0"
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant.xml b/org.eclipse.osbp.runtime.jsr303.validation/OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant.xml
new file mode 100644
index 0000000..f5248b9
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant">
+ <implementation class="org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant"/>
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.common.validation.IValidationParticipant"/>
+ </service>
+ <reference bind="bindValidatorFactory" cardinality="1..1" interface="javax.validation.ValidatorFactory" name="ValidatorFactory" policy="dynamic" unbind="unbindValidatorFactory"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/about.html b/org.eclipse.osbp.runtime.jsr303.validation/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/about.ini b/org.eclipse.osbp.runtime.jsr303.validation/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/about.mappings b/org.eclipse.osbp.runtime.jsr303.validation/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/about.properties b/org.eclipse.osbp.runtime.jsr303.validation/about.properties
new file mode 100644
index 0000000..35ed921
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.jsr303.validation
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/build.properties b/org.eclipse.osbp.runtime.jsr303.validation/build.properties
new file mode 100644
index 0000000..53ea953
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/build.properties
@@ -0,0 +1,9 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ .project,\
+ .classpath,\
+ OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant.xml,\
+ LICENSE.txt
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/pom.xml b/org.eclipse.osbp.runtime.jsr303.validation/pom.xml
new file mode 100644
index 0000000..93d386a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.jsr303.validation</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/Activator.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/Activator.java
new file mode 100644
index 0000000..18a0000
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/Activator.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.jsr303.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.validation.Validation;
+import javax.validation.ValidationProviderResolver;
+import javax.validation.ValidatorFactory;
+import javax.validation.spi.ValidationProvider;
+
+import org.apache.bval.jsr303.ApacheValidationProvider;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+public class Activator implements BundleActivator, ValidationProviderResolver {
+
+ private ServiceRegistration<ValidatorFactory> registry;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ // provide the bean validation factory
+ ValidatorFactory avf = Validation
+ .byProvider(ApacheValidationProvider.class)
+ .providerResolver(this).configure()
+ .messageInterpolator(new OSGiMessageInterpolator())
+ .buildValidatorFactory();
+
+ registry = context.registerService(ValidatorFactory.class, avf, null);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ if (registry != null) {
+ registry.unregister();
+ registry = null;
+ }
+ }
+
+ @Override
+ public List<ValidationProvider<?>> getValidationProviders() {
+ List<ValidationProvider<?>> result = new ArrayList<ValidationProvider<?>>();
+ result.add(new ApacheValidationProvider());
+ return result;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/OSGiMessageInterpolator.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/OSGiMessageInterpolator.java
new file mode 100644
index 0000000..23111f2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/OSGiMessageInterpolator.java
@@ -0,0 +1,106 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.jsr303.validation;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import org.apache.bval.jsr303.DefaultMessageInterpolator;
+import org.eclipse.osbp.runtime.common.i18n.II18nService;
+import org.eclipse.osbp.runtime.jsr303.validation.common.ValidationUtil;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+public class OSGiMessageInterpolator extends DefaultMessageInterpolator
+ implements ServiceTrackerCustomizer<II18nService, II18nService> {
+
+ private Locale locale;
+ private ServiceTracker<II18nService, II18nService> serviceTracker;
+ private BundleContext context;
+ private II18nService i18nService;
+
+ public OSGiMessageInterpolator() {
+ super();
+
+ setupI18nService();
+ }
+
+ public OSGiMessageInterpolator(ResourceBundle resourceBundle) {
+ super(resourceBundle);
+
+ setupI18nService();
+ }
+
+ @Override
+ public String interpolate(String message, Context context, Locale locale) {
+
+ String result = "";
+ if (i18nService != null) {
+ result = i18nService.getValue(
+ ValidationUtil.extractMessage(message), locale);
+ if (result != null && !result.trim().equals("")) {
+ result = ValidationUtil
+ .replaceMessageParameter(result, context);
+ return result;
+ }
+ }
+
+ return super.interpolate(message, context, locale);
+ }
+
+ @Override
+ public String interpolate(String message, Context context) {
+ return super.interpolate(message, context);
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ super.setLocale(locale);
+
+ this.locale = locale;
+ }
+
+ private void setupI18nService() {
+ context = FrameworkUtil.getBundle(getClass()).getBundleContext();
+ serviceTracker = new ServiceTracker<II18nService, II18nService>(
+ context, II18nService.class, this);
+ serviceTracker.open();
+ }
+
+ @Override
+ public II18nService addingService(ServiceReference<II18nService> reference) {
+ if (i18nService == null) {
+ i18nService = context.getService(reference);
+ }
+ return null;
+ }
+
+ @Override
+ public void modifiedService(ServiceReference<II18nService> reference,
+ II18nService service) {
+
+ }
+
+ @Override
+ public void removedService(ServiceReference<II18nService> reference,
+ II18nService service) {
+ if (this.i18nService == service) {
+ this.i18nService = null;
+ }
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ErrorSeverity.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ErrorSeverity.java
new file mode 100644
index 0000000..ae841d7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ErrorSeverity.java
@@ -0,0 +1,20 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.jsr303.validation.common;
+
+import javax.validation.Payload;
+
+public interface ErrorSeverity extends Payload {
+
+}
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/InfoSeverity.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/InfoSeverity.java
new file mode 100644
index 0000000..6f4a626
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/InfoSeverity.java
@@ -0,0 +1,20 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.jsr303.validation.common;
+
+import javax.validation.Payload;
+
+public interface InfoSeverity extends Payload {
+
+}
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/JSR303ValidationParticipant.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/JSR303ValidationParticipant.java
new file mode 100644
index 0000000..76ce2fe
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/JSR303ValidationParticipant.java
@@ -0,0 +1,78 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.jsr303.validation.common;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+import org.eclipse.osbp.runtime.common.validation.IValidationParticipant;
+import org.eclipse.osbp.runtime.common.validation.ValidationKind;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+
+@Component(immediate = true)
+public class JSR303ValidationParticipant implements IValidationParticipant {
+
+ private ValidatorFactory valFactory;
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Set<IStatus> validate(Object object, ValidationKind kind,
+ Map<String, Object> properties) {
+ if (valFactory == null) {
+ throw new IllegalArgumentException(
+ "No ValidatorFactory bound to service");
+ }
+
+ Validator validator = valFactory.getValidator();
+ Set<ConstraintViolation<Object>> tempResult = validator.validate(
+ object, new Class[0]);
+
+ Set<IStatus> result = ValidationUtil.getStatus(getClass(),
+ new HashSet<ConstraintViolation>(tempResult));
+
+ return result;
+ }
+
+ /**
+ * Binds the validator factory to validate contraints placed on the dto
+ * class.
+ *
+ * @param valFactory
+ * the service
+ */
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, unbind = "unbindValidatorFactory", policy = ReferencePolicy.DYNAMIC)
+ protected void bindValidatorFactory(final ValidatorFactory valFactory) {
+ this.valFactory = valFactory;
+ }
+
+ /**
+ * Unbinds the service from this component. <br>
+ *
+ * @param valFactory
+ * the service
+ */
+ protected void unbindValidatorFactory(final ValidatorFactory valFactory) {
+ this.valFactory = null;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ValidationUtil.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ValidationUtil.java
new file mode 100644
index 0000000..af1c654
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ValidationUtil.java
@@ -0,0 +1,122 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.jsr303.validation.common;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.MessageInterpolator.Context;
+import javax.validation.Payload;
+import javax.validation.metadata.ConstraintDescriptor;
+
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+import org.eclipse.osbp.runtime.common.validation.Status;
+
+public class ValidationUtil {
+
+ private ValidationUtil() {
+ super();
+ }
+
+ /**
+ * Maps the contraint violations to IStatus.
+ *
+ * @param originalViolations
+ * @return
+ */
+ public static Set<IStatus> getStatus(Class<?> creator,
+ @SuppressWarnings("rawtypes") Set<ConstraintViolation> originalViolations) {
+
+ Set<IStatus> result = new HashSet<IStatus>();
+ for (ConstraintViolation<?> violation : originalViolations) {
+
+ IStatus.Severity severity = getSeverity(violation);
+ String code = getMessageCode(violation);
+
+ Class<?> clazz = violation.getLeafBean() != null ? violation
+ .getLeafBean().getClass() : null;
+ IStatus status = Status.createStatus(code, clazz, severity,
+ violation.getMessage());
+ status.putProperty(IStatus.PROP_JAVAX_CONSTRAINT, violation);
+ status.putProperty(IStatus.PROP_JAVAX_PROPERTY_PATH, violation
+ .getPropertyPath().toString());
+ status.putProperty(IStatus.PROP_JAVAX_LEAF_BEAN,
+ violation.getLeafBean());
+
+ if (creator != null) {
+ status.putProperty(IStatus.PROP_CREATOR, creator.getName());
+ }
+
+ result.add(status);
+ }
+
+ return result;
+ }
+
+ protected static String getMessageCode(ConstraintViolation<?> violation) {
+ String message = violation.getMessageTemplate().substring(1,
+ violation.getMessageTemplate().length() - 1);
+ if (message.contains(":")) {
+ String[] tokens = message.split(":");
+ return tokens[1];
+ }
+
+ return violation.getPropertyPath().toString();
+ }
+
+ protected static IStatus.Severity getSeverity(
+ ConstraintViolation<?> violation) {
+ IStatus.Severity severity = IStatus.Severity.ERROR;
+ Set<Class<? extends Payload>> payloads = violation
+ .getConstraintDescriptor().getPayload();
+ if (payloads.size() > 0) {
+ Class<? extends Payload> payload = payloads.iterator().next();
+ if (payload == InfoSeverity.class) {
+ severity = IStatus.Severity.INFO;
+ } else if (payload == WarningSeverity.class) {
+ severity = IStatus.Severity.WARNING;
+ } else if (payload == ErrorSeverity.class) {
+ severity = IStatus.Severity.ERROR;
+ }
+ }
+ return severity;
+ }
+
+ public static String replaceMessageParameter(String message, Context context) {
+ ConstraintDescriptor<?> desc = context.getConstraintDescriptor();
+ Map<String, Object> props = desc.getAttributes();
+
+ for (Map.Entry<String, Object> entry : props.entrySet()) {
+ String replacement = "\\{" + entry.getKey() + "\\}";
+ message = message.replaceAll(replacement, entry.getValue()
+ .toString());
+ }
+
+ return message;
+ }
+
+ public static String extractMessage(String message) {
+ if (message.startsWith("{")) {
+ message = message.substring(1, message.length() - 1);
+ }
+ if (message.contains(":")) {
+ String[] i18nKey = message.split(":");
+ message = i18nKey[0];
+ }
+ return message;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/WarningSeverity.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/WarningSeverity.java
new file mode 100644
index 0000000..78f566a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/WarningSeverity.java
@@ -0,0 +1,20 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.jsr303.validation.common;
+
+import javax.validation.Payload;
+
+public interface WarningSeverity extends Payload {
+
+}
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.project b/org.eclipse.osbp.runtime.logback.fragment/.project
new file mode 100644
index 0000000..d871a45
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.logback.fragment</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.logback.fragment/LICENSE.txt b/org.eclipse.osbp.runtime.logback.fragment/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..889ce06
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.logback.fragment
+Bundle-SymbolicName: org.eclipse.osbp.runtime.logback.fragment
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Fragment-Host: ch.qos.logback.classic
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.osbp.runtime.logback.fragment/README.md b/org.eclipse.osbp.runtime.logback.fragment/README.md
new file mode 100644
index 0000000..db1e5bb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/README.md
@@ -0,0 +1,4 @@
+logback fragment
+================
+
+If this fragment is added to the OSGi environment, only Messages of Type INFO or higher (WARNING, ERROR,...) are shown.
diff --git a/org.eclipse.osbp.runtime.logback.fragment/about.html b/org.eclipse.osbp.runtime.logback.fragment/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.logback.fragment/about.ini b/org.eclipse.osbp.runtime.logback.fragment/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.logback.fragment/about.mappings b/org.eclipse.osbp.runtime.logback.fragment/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.logback.fragment/about.properties b/org.eclipse.osbp.runtime.logback.fragment/about.properties
new file mode 100644
index 0000000..e2ef932
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.logback.fragment
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.logback.fragment/build.properties b/org.eclipse.osbp.runtime.logback.fragment/build.properties
new file mode 100644
index 0000000..fdca065
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ build.properties,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.logback.fragment/logback.xml b/org.eclipse.osbp.runtime.logback.fragment/logback.xml
new file mode 100644
index 0000000..c426104
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/logback.xml
@@ -0,0 +1,13 @@
+<configuration>
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <root level="ERROR">
+ <appender-ref ref="STDOUT" />
+ </root>
+</configuration>
diff --git a/org.eclipse.osbp.runtime.logback.fragment/pom.xml b/org.eclipse.osbp.runtime.logback.fragment/pom.xml
new file mode 100644
index 0000000..52f2666
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.logback.fragment</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.logback.fragment/src/PLACEHOLDER b/org.eclipse.osbp.runtime.logback.fragment/src/PLACEHOLDER
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/src/PLACEHOLDER
diff --git a/org.eclipse.osbp.runtime.memento/.project b/org.eclipse.osbp.runtime.memento/.project
new file mode 100644
index 0000000..89f8e5a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.memento</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.memento/LICENSE.txt b/org.eclipse.osbp.runtime.memento/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f922205
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.memento
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-SymbolicName: org.eclipse.osbp.runtime.memento
+Bundle-Version: 0.9.0.qualifier
+Import-Package: org.osgi.framework;version="1.8.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.EventBroker.xml,
+ OSGI-INF/org.eclipse.osbp.runtime.memento.MementoManager.xml
+Bundle-ClassPath: .
+Require-Bundle: org.eclipse.emf.ecore,
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.runtime.memento;x-internal:=true;version="0.9.0"
diff --git a/org.eclipse.osbp.runtime.memento/OSGI-INF/org.eclipse.osbp.runtime.memento.MementoManager.xml b/org.eclipse.osbp.runtime.memento/OSGI-INF/org.eclipse.osbp.runtime.memento.MementoManager.xml
new file mode 100644
index 0000000..59a6a45
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/OSGI-INF/org.eclipse.osbp.runtime.memento.MementoManager.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.osbp.runtime.memento.MementoManager">
+ <implementation class="org.eclipse.osbp.runtime.memento.MementoManager"/>
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.common.memento.IMementoManager"/>
+ </service>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.memento/about.html b/org.eclipse.osbp.runtime.memento/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.memento/about.ini b/org.eclipse.osbp.runtime.memento/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.memento/about.mappings b/org.eclipse.osbp.runtime.memento/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.memento/about.properties b/org.eclipse.osbp.runtime.memento/about.properties
new file mode 100644
index 0000000..fd79688
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.memento
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.memento/build.properties b/org.eclipse.osbp.runtime.memento/build.properties
new file mode 100644
index 0000000..8f9717c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/build.properties
@@ -0,0 +1,10 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ .project,\
+ .classpath,\
+ OSGI-INF/,\
+ .settings/,\
+ LICENSE.txt
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.memento/pom.xml b/org.eclipse.osbp.runtime.memento/pom.xml
new file mode 100644
index 0000000..89ad26a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.memento</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.memento/src/org/eclipse/osbp/runtime/memento/MementoManager.java b/org.eclipse.osbp.runtime.memento/src/org/eclipse/osbp/runtime/memento/MementoManager.java
new file mode 100644
index 0000000..85fb8cf
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/src/org/eclipse/osbp/runtime/memento/MementoManager.java
@@ -0,0 +1,115 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * 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:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.runtime.memento;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.osbp.runtime.common.memento.IMementoManager;
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+import org.eclipse.osbp.runtime.common.validation.Status;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(immediate = true)
+public class MementoManager implements IMementoManager {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(MementoManager.class);
+
+ private ResourceSet rs;
+ private Path basePath;
+
+ @Override
+ public Object loadMemento(String userId, String mementoId) {
+
+ URI uri = createURI(userId, mementoId);
+ File file = new File(uri.toFileString());
+ if (!file.exists()) {
+ LOGGER.debug("Memento does not exists: " + uri.toFileString());
+ return null;
+ }
+
+ Resource resource = rs.getResource(createURI(userId, mementoId), true);
+ return resource.getContents().size() > 0 ? resource.getContents()
+ .get(0) : null;
+ }
+
+ @Override
+ public IStatus saveMemento(String userId, String mementoId, Object memento) {
+ try {
+ URI uri = createURI(userId, mementoId);
+
+ Resource resource = null;
+ try {
+ resource = rs.getResource(uri, true);
+ } catch (Exception ex) {
+ LOGGER.debug("Resource not available yet. A new one is created. URI = "
+ + uri);
+ }
+
+ if (resource == null) {
+ resource = rs.getResource(uri, false);
+ }
+
+ resource.getContents().clear();
+ resource.getContents().add((EObject) memento);
+ resource.save(null);
+ } catch (IOException e) {
+ return Status.createErrorStatus(e);
+ }
+
+ return IStatus.OK;
+ }
+
+ protected URI createURI(String userId, String mementoId) {
+ URI result = URI.createFileURI(basePath.toString());
+ result = result.appendSegment(userId);
+ result = result.appendSegment(mementoId);
+ result = result.appendFileExtension("memento");
+ return result;
+ }
+
+ @Activate
+ protected void activate(ComponentContext context) {
+ rs = new ResourceSetImpl();
+
+ File baseFolder = context.getBundleContext().getDataFile("");
+ basePath = baseFolder.toPath();
+ }
+
+ @Deactivate
+ protected void deactivate() {
+
+ // unload all resources
+ for (Resource resource : new ArrayList<Resource>(rs.getResources())) {
+ resource.unload();
+ }
+
+ rs = null;
+ basePath = null;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.security/.project b/org.eclipse.osbp.runtime.security/.project
new file mode 100644
index 0000000..50329a7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.security</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.security/LICENSE.txt b/org.eclipse.osbp.runtime.security/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.security/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.security/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6884709
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.security
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-SymbolicName: org.eclipse.osbp.runtime.security
+Bundle-Version: 0.9.0.qualifier
+Import-Package: org.osgi.framework;version="1.8.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.event;version="1.3.0",
+ org.osgi.service.prefs,
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/org.eclipse.osbp.runtime.security.impl.UserNotificationService.xml,
+ OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml,
+ OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml
+Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.apache.shiro.core;bundle-version="1.2.3"
+Export-Package: org.eclipse.osbp.runtime.security;version="0.9.0",
+ org.eclipse.osbp.runtime.security.impl;x-internal:=true;version="0.9.0"
diff --git a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml b/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml
new file mode 100644
index 0000000..fab37ab
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent">
+ <implementation class="org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent"/>
+ <reference bind="setDatasource" cardinality="1..1" interface="javax.sql.DataSource" name="Datasource" policy="static" target="(security.datasource=jdbc)" unbind="unsetDatasource"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml b/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml
new file mode 100644
index 0000000..99e251d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent">
+ <implementation class="org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent"/>
+ <reference bind="addRealm" cardinality="0..n" interface="org.apache.shiro.realm.Realm" name="Realm" policy="static" unbind="removeRealm"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.security/about.html b/org.eclipse.osbp.runtime.security/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.security/about.ini b/org.eclipse.osbp.runtime.security/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.security/about.mappings b/org.eclipse.osbp.runtime.security/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.security/about.properties b/org.eclipse.osbp.runtime.security/about.properties
new file mode 100644
index 0000000..706c165
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.security
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.security/build.properties b/org.eclipse.osbp.runtime.security/build.properties
new file mode 100644
index 0000000..e79b84a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ OSGI-INF/,\
+ .project,\
+ .classpath,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.security/pom.xml b/org.eclipse.osbp.runtime.security/pom.xml
new file mode 100644
index 0000000..d5b7204
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.security</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java
new file mode 100644
index 0000000..5ed5873
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java
@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.security;
+
+import org.apache.shiro.session.mgt.SessionManager;
+
+public interface ISessionManagerService extends SessionManager {
+
+}
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java
new file mode 100644
index 0000000..73edbed
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.security.impl;
+
+import javax.sql.DataSource;
+
+import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.jdbc.JdbcRealm;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+@Component(immediate=true)
+public class JdbcRealmComponent {
+
+ private ComponentContext context;
+ private ServiceRegistration<Realm> reg;
+ private DataSource ds;
+
+ protected void activate(ComponentContext context) {
+ this.context = context;
+
+ JdbcRealm realm = new JdbcRealm();
+ realm.setDataSource(ds);
+
+ reg = this.context.getBundleContext().registerService(Realm.class,
+ realm, null);
+ }
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, target = "(security.datasource=jdbc)", unbind = "unsetDatasource")
+ protected void setDatasource(DataSource ds) {
+ this.ds = ds;
+ }
+
+ protected void unsetDatasource(DataSource ds) {
+ this.ds = null;
+ }
+
+ protected void deactivate() {
+ reg.unregister();
+ reg = null;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/LdapRealmComponent.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/LdapRealmComponent.java
new file mode 100644
index 0000000..1660d1a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/LdapRealmComponent.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.security.impl;
+
+import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.ldap.JndiLdapContextFactory;
+import org.apache.shiro.realm.ldap.JndiLdapRealm;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * To use this realm, provide your own declarative OSGi service and pass in the
+ * properties requested.
+ */
+public class LdapRealmComponent {
+
+ private static final String LDAP_AUTHENTICATION_MECHANISM = "osbp.security.ldap.authenticationMechanism";
+ private static final String LDAP_URL = "osbp.security.ldap.url";
+ private ComponentContext context;
+ private ServiceRegistration<Realm> reg;
+
+ protected void activate(ComponentContext context) {
+ this.context = context;
+
+ JndiLdapRealm realm = new JndiLdapRealm();
+ realm.setUserDnTemplate((String) context.getProperties().get(
+ "osbp.security.ldap.userDnTemplate"));
+
+ JndiLdapContextFactory factory = new JndiLdapContextFactory();
+ factory.setUrl((String) context.getProperties().get(LDAP_URL));
+ factory.setAuthenticationMechanism((String) context.getProperties()
+ .get(LDAP_AUTHENTICATION_MECHANISM));
+ realm.setContextFactory(factory);
+
+ reg = this.context.getBundleContext().registerService(Realm.class,
+ realm, null);
+ }
+
+ protected void deactivate() {
+ reg.unregister();
+ reg = null;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/SecurityManagerComponent.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/SecurityManagerComponent.java
new file mode 100644
index 0000000..93a93e3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/SecurityManagerComponent.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.security.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.config.IniSecurityManagerFactory;
+import org.apache.shiro.mgt.DefaultSecurityManager;
+import org.apache.shiro.mgt.SecurityManager;
+import org.apache.shiro.realm.Realm;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+@Component(immediate=true)
+public class SecurityManagerComponent {
+
+ private IniSecurityManagerFactory factory;
+ private DefaultSecurityManager securityManager;
+ private ComponentContext context;
+ private ServiceRegistration<SecurityManager> reg;
+
+ protected void activate(ComponentContext context) {
+ this.context = context;
+ factory = new IniSecurityManagerFactory("classpath:shiro.ini");
+
+ securityManager = (DefaultSecurityManager) factory.getInstance();
+ SecurityUtils.setSecurityManager(securityManager);
+
+ reg = this.context.getBundleContext().registerService(
+ SecurityManager.class, securityManager, null);
+ }
+
+ @Reference(cardinality = ReferenceCardinality.MULTIPLE, unbind = "removeRealm")
+ protected void addRealm(Realm realm) {
+ List<Realm> realms = new ArrayList<Realm>(securityManager.getRealms());
+ realms.add(realm);
+ securityManager.setRealms(realms);
+ }
+
+ protected void removeRealm(Realm realm) {
+ // not supported by shiro
+ }
+
+ protected void deactivate() {
+ reg.unregister();
+ reg = null;
+
+ factory = null;
+ securityManager = null;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.systemextension/.project b/org.eclipse.osbp.runtime.systemextension/.project
new file mode 100644
index 0000000..653a8b5
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.systemextension</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.systemextension/LICENSE.txt b/org.eclipse.osbp.runtime.systemextension/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.systemextension/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.systemextension/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4f46589
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.systemextension
+Bundle-SymbolicName: org.eclipse.osbp.runtime.systemextension
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Fragment-Host: org.eclipse.osgi;bundle-version="3.10.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Service-Component: OSGI-INF/component.xml
diff --git a/org.eclipse.osbp.runtime.systemextension/about.html b/org.eclipse.osbp.runtime.systemextension/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.systemextension/about.ini b/org.eclipse.osbp.runtime.systemextension/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.systemextension/about.mappings b/org.eclipse.osbp.runtime.systemextension/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.systemextension/about.properties b/org.eclipse.osbp.runtime.systemextension/about.properties
new file mode 100644
index 0000000..380f50b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.systemextension
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.systemextension/build.properties b/org.eclipse.osbp.runtime.systemextension/build.properties
new file mode 100644
index 0000000..708601e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/build.properties
@@ -0,0 +1,10 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ hookconfigurators.properties,\
+ build.properties,\
+ .classpath,\
+ .project,\
+ LICENSE.txt
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.systemextension/hookconfigurators.properties b/org.eclipse.osbp.runtime.systemextension/hookconfigurators.properties
new file mode 100644
index 0000000..a098dfb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/hookconfigurators.properties
@@ -0,0 +1 @@
+hook.configurators=org.eclipse.osbp.runtime.systemextension.OSBPHookConfigurator
diff --git a/org.eclipse.osbp.runtime.systemextension/pom.xml b/org.eclipse.osbp.runtime.systemextension/pom.xml
new file mode 100644
index 0000000..29eaef7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.systemextension</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/Activator.java b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/Activator.java
new file mode 100644
index 0000000..aaf120e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/Activator.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.systemextension;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.framework.hooks.resolver.ResolverHookFactory;
+
+public class Activator implements BundleActivator {
+
+ private ServiceRegistration<ResolverHookFactory> reg;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ reg = context.registerService(ResolverHookFactory.class,
+ new ResolverHook(), null);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ if (reg != null) {
+ reg.unregister();
+ reg = null;
+ }
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/OSBPActivatorHookFactory.java b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/OSBPActivatorHookFactory.java
new file mode 100644
index 0000000..f51cd82
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/OSBPActivatorHookFactory.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.systemextension;
+
+import org.eclipse.osgi.internal.hookregistry.ActivatorHookFactory;
+import org.osgi.framework.BundleActivator;
+
+public class OSBPActivatorHookFactory implements ActivatorHookFactory {
+
+ @Override
+ public BundleActivator createActivator() {
+ return new Activator();
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/OSBPHookConfigurator.java b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/OSBPHookConfigurator.java
new file mode 100644
index 0000000..2ec5318
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/OSBPHookConfigurator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.systemextension;
+
+import org.eclipse.osgi.internal.hookregistry.HookConfigurator;
+import org.eclipse.osgi.internal.hookregistry.HookRegistry;
+
+public class OSBPHookConfigurator implements HookConfigurator {
+
+ @Override
+ public void addHooks(HookRegistry hookRegistry) {
+ hookRegistry
+ .addActivatorHookFactory(new OSBPActivatorHookFactory());
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/ResolverHook.java b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/ResolverHook.java
new file mode 100644
index 0000000..9470a68
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/src/org/eclipse/osbp/runtime/systemextension/ResolverHook.java
@@ -0,0 +1,155 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.systemextension;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.osgi.framework.hooks.resolver.ResolverHookFactory;
+import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleRequirement;
+import org.osgi.framework.wiring.BundleRevision;
+
+public class ResolverHook implements ResolverHookFactory {
+
+ @Override
+ public org.osgi.framework.hooks.resolver.ResolverHook begin(
+ final Collection<BundleRevision> triggers) {
+ return new org.osgi.framework.hooks.resolver.ResolverHook() {
+
+ @Override
+ public void filterSingletonCollisions(BundleCapability singleton,
+ Collection<BundleCapability> collisionCandidates) {
+ }
+
+ @Override
+ public void filterResolvable(Collection<BundleRevision> candidates) {
+
+ }
+
+ @Override
+ public void filterMatches(BundleRequirement requirement,
+ Collection<BundleCapability> candidates) {
+ if (requirement.getNamespace().equals("osgi.wiring.bundle")) {
+
+ if (candidates.size() > 1 && containsGuava(candidates)) {
+ filterHighestGuava(candidates);
+ }
+ }
+// if (requirement.getNamespace().equals("osgi.wiring.package")) {
+//
+// if (candidates.size() > 1
+// && containsJavaxAnnotation(candidates)) {
+// removeJavaxAnnotation120(candidates);
+// }
+// }
+ }
+
+ @Override
+ public void end() {
+
+ }
+ };
+ }
+
+ /**
+ * Returns true, if the candiates contain guava.
+ *
+ * @param candidates
+ * @return
+ */
+ protected boolean containsGuava(Collection<BundleCapability> candidates) {
+ for (BundleCapability cap : candidates) {
+ if (cap.getResource().getSymbolicName().equals("com.google.guava")) {
+ return true;
+
+ }
+ }
+ return false;
+ }
+
+// /**
+// * Returns true if the candiates contain javax.annotation.
+// *
+// * @param candidates
+// * @return
+// */
+// protected boolean containsJavaxAnnotation(
+// Collection<BundleCapability> candidates) {
+// for (BundleCapability cap : candidates) {
+// if (cap.getResource().getSymbolicName().equals("javax.annotation")) {
+// return true;
+//
+// }
+// }
+// return false;
+// }
+
+// /**
+// * Handle javax.annotation bundle. Do not use version 1.2.0.
+// *
+// * @param candidates
+// */
+// private void removeJavaxAnnotation120(
+// Collection<BundleCapability> candidates) {
+// for (Iterator<BundleCapability> iterator = candidates.iterator(); iterator
+// .hasNext();) {
+// BundleCapability cap = iterator.next();
+// if (cap.getResource().getVersion().toString().startsWith("1.2.0")) {
+// iterator.remove();
+// }
+// }
+// }
+
+ /**
+ * Handle guava bundle. Only use the highest supported version.
+ *
+ * @param candidates
+ */
+ private void filterHighestGuava(Collection<BundleCapability> candidates) {
+ BundleCapability highest = getHighestGuava(candidates);
+ if (highest != null) {
+ for (Iterator<BundleCapability> iterator = candidates.iterator(); iterator
+ .hasNext();) {
+ BundleCapability cap = iterator.next();
+ if (cap != highest) {
+ iterator.remove();
+ }
+ }
+ }
+ }
+
+ /**
+ * Filters the highest available guava from candidates.
+ *
+ * @param candidates
+ * @return
+ */
+ private BundleCapability getHighestGuava(
+ Collection<BundleCapability> candidates) {
+ BundleCapability highest = null;
+ for (BundleCapability cap : candidates) {
+ if (cap.getResource().getSymbolicName().equals("com.google.guava")) {
+ if (highest != null) {
+ if (highest.getResource().getVersion()
+ .compareTo(cap.getResource().getVersion()) < 1) {
+ highest = cap;
+ }
+ } else {
+ highest = cap;
+ }
+
+ }
+ }
+ return highest;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.target/luna.target b/org.eclipse.osbp.runtime.target/luna.target
new file mode 100644
index 0000000..a96f55e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.target/luna.target
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target includeMode="feature" name="org.eclipse.osbp.runtime.target.kepler" sequenceNumber="8">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="org.eclipse.equinox.sdk.feature.group" version="3.10.0.v20140606-1602"/>
+<repository location="http://download.eclipse.org/releases/luna"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+<unit id="ch.qos.logback.classic.source" version="1.0.0.v20111214-2030"/>
+<unit id="ch.qos.logback.slf4j.source" version="1.0.0.v20120123-1500"/>
+<unit id="ch.qos.logback.slf4j" version="1.0.0.v20120123-1500"/>
+<unit id="ch.qos.logback.core.source" version="1.0.0.v20111214-2030"/>
+<unit id="ch.qos.logback.classic" version="1.0.0.v20111214-2030"/>
+<unit id="ch.qos.logback.core" version="1.0.0.v20111214-2030"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+</locations>
+</target>
diff --git a/org.eclipse.osbp.runtime.target/pom.xml b/org.eclipse.osbp.runtime.target/pom.xml
new file mode 100644
index 0000000..ade29f3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.target/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.target</artifactId>
+ <packaging>eclipse-target-definition</packaging>
+
+ <version>0.9.0-SNAPSHOT</version>
+</project>
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.project b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.project
new file mode 100644
index 0000000..4503f4e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.typeprovider.bundlespace</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/LICENSE.txt b/org.eclipse.osbp.runtime.typeprovider.bundlespace/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..84d0800
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.typeprovider.bundlespace
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-SymbolicName: org.eclipse.osbp.runtime.typeprovider.bundlespace
+Bundle-Version: 0.9.0.qualifier
+Import-Package: org.osgi.framework;version="1.8.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.EventBroker.xml,
+ OSGI-INF/org.eclipse.osbp.runtime.typeprovider.bundlespace.BundleSpaceTypeProviderService.xml
+Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/OSGI-INF/org.eclipse.osbp.runtime.typeprovider.bundlespace.BundleSpaceTypeProviderService.xml b/org.eclipse.osbp.runtime.typeprovider.bundlespace/OSGI-INF/org.eclipse.osbp.runtime.typeprovider.bundlespace.BundleSpaceTypeProviderService.xml
new file mode 100644
index 0000000..e49b498
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/OSGI-INF/org.eclipse.osbp.runtime.typeprovider.bundlespace.BundleSpaceTypeProviderService.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.eclipse.osbp.runtime.typeprovider.bundlespace.BundleSpaceTypeProviderService">
+ <implementation class="org.eclipse.osbp.runtime.typeprovider.bundlespace.BundleSpaceTypeProviderService"/>
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.common.types.ITypeProviderService"/>
+ </service>
+ <reference bind="bindBundleSpace" cardinality="1..1" interface="org.eclipse.osbp.runtime.common.types.IBundleSpace" name="BundleSpace" policy="static" unbind="unbindBundleSpace"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.html b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.ini b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.mappings b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.properties b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.properties
new file mode 100644
index 0000000..240914e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.typeprovider.bundlespace
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/build.properties b/org.eclipse.osbp.runtime.typeprovider.bundlespace/build.properties
new file mode 100644
index 0000000..8f9717c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/build.properties
@@ -0,0 +1,10 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ .project,\
+ .classpath,\
+ OSGI-INF/,\
+ .settings/,\
+ LICENSE.txt
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/pom.xml b/org.eclipse.osbp.runtime.typeprovider.bundlespace/pom.xml
new file mode 100644
index 0000000..15a81a2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.typeprovider.bundlespace</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/src/org/eclipse/osbp/runtime/typeprovider/bundlespace/BundleSpaceTypeProviderService.java b/org.eclipse.osbp.runtime.typeprovider.bundlespace/src/org/eclipse/osbp/runtime/typeprovider/bundlespace/BundleSpaceTypeProviderService.java
new file mode 100644
index 0000000..e2b4da4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/src/org/eclipse/osbp/runtime/typeprovider/bundlespace/BundleSpaceTypeProviderService.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.typeprovider.bundlespace;
+
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+import org.eclipse.osbp.runtime.common.types.ITypeProviderService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(immediate=true)
+public class BundleSpaceTypeProviderService implements ITypeProviderService {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(BundleSpaceTypeProviderService.class);
+
+ private IBundleSpace bundleSpace;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY)
+ protected void bindBundleSpace(IBundleSpace bundleSpace) {
+ this.bundleSpace = bundleSpace;
+ }
+
+ protected void unbindBundleSpace(IBundleSpace bundleSpace) {
+ this.bundleSpace = null;
+ }
+
+ @Override
+ public Class<?> forName(Object clazz, String qualifiedName) {
+ try {
+ return bundleSpace.forName(qualifiedName);
+ } catch (ClassNotFoundException e) {
+ LOGGER.warn("{}", e.getMessage());
+ }
+
+ return null;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.usernotification/.project b/org.eclipse.osbp.runtime.usernotification/.project
new file mode 100644
index 0000000..1721a57
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.runtime.usernotification</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <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>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.runtime.usernotification/LICENSE.txt b/org.eclipse.osbp.runtime.usernotification/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fb3a9c7
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.runtime.usernotification
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-SymbolicName: org.eclipse.osbp.runtime.usernotification
+Bundle-Version: 0.9.0.qualifier
+Import-Package: org.osgi.framework;version="1.8.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.event;version="1.3.0",
+ org.osgi.service.prefs,
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/org.eclipse.osbp.runtime.notification.impl.UserNotificationService.xml
+Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.runtime.notification;version="0.9.0",
+ org.eclipse.osbp.runtime.notification.impl;x-internal:=true;version="0.9.0"
diff --git a/org.eclipse.osbp.runtime.usernotification/OSGI-INF/org.eclipse.osbp.runtime.notification.impl.UserNotificationService.xml b/org.eclipse.osbp.runtime.usernotification/OSGI-INF/org.eclipse.osbp.runtime.notification.impl.UserNotificationService.xml
new file mode 100644
index 0000000..6825f88
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/OSGI-INF/org.eclipse.osbp.runtime.notification.impl.UserNotificationService.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="org.eclipse.osbp.runtime.notification.impl.UserNotificationService">
+ <implementation class="org.eclipse.osbp.runtime.notification.impl.UserNotificationService"/>
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.notification.IUserNotificationService"/>
+ </service>
+ <reference bind="bindEventAdmin" cardinality="1..1" interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="static" unbind="unbindEventAdmin"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.usernotification/about.html b/org.eclipse.osbp.runtime.usernotification/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.usernotification/about.ini b/org.eclipse.osbp.runtime.usernotification/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.runtime.usernotification/about.mappings b/org.eclipse.osbp.runtime.usernotification/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.runtime.usernotification/about.properties b/org.eclipse.osbp.runtime.usernotification/about.properties
new file mode 100644
index 0000000..e2df90b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.runtime.usernotification
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.usernotification/build.properties b/org.eclipse.osbp.runtime.usernotification/build.properties
new file mode 100644
index 0000000..e79b84a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ OSGI-INF/,\
+ .project,\
+ .classpath,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.usernotification/pom.xml b/org.eclipse.osbp.runtime.usernotification/pom.xml
new file mode 100644
index 0000000..eae59e3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.runtime.usernotification</artifactId>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.runtime.usernotification/src/org/eclipse/osbp/runtime/notification/IUserNotificationService.java b/org.eclipse.osbp.runtime.usernotification/src/org/eclipse/osbp/runtime/notification/IUserNotificationService.java
new file mode 100644
index 0000000..5da093c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/src/org/eclipse/osbp/runtime/notification/IUserNotificationService.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.notification;
+
+import java.util.Dictionary;
+import java.util.Map;
+
+import org.osgi.service.event.EventHandler;
+
+/**
+ * Is responsible for sending and retrieving notifications.
+ * <p>
+ * IMPORTANT: The notification service ensures, that the OSGi event admin is
+ * used and not the e4EventBroker.
+ */
+public interface IUserNotificationService {
+
+ /**
+ * The name of the default event attribute used to pass data.
+ */
+ public String DATA = "org.eclipse.osbp.data"; //$NON-NLS-1$
+
+ /**
+ * Publish event synchronously (the method does not return until the event
+ * is processed).
+ * <p>
+ * If data is a {@link Map} or a {@link Dictionary}, it is passed as is.
+ * Otherwise, a new Map is constructed and its {@link #DATA} attribute is
+ * populated with this value.
+ *
+ *
+ * @param userId
+ * the user id
+ * @param data
+ * data to be published with the event
+ * @return <code>true</code> if this operation was performed successfully;
+ * <code>false</code> otherwise
+ */
+ public boolean send(String userId, Object data);
+
+ /**
+ * Publish event asynchronously (this method returns immediately).
+ * <p>
+ * If data is a {@link Map} or a {@link Dictionary}, it is passed as is.
+ * Otherwise, a new Map is constructed and its {@link #DATA} attribute is
+ * populated with this value.
+ *
+ *
+ * @param userId
+ * the user id
+ * @param data
+ * data to be published with the event
+ * @return <code>true</code> if this operation was performed successfully;
+ * <code>false</code> otherwise
+ */
+ public boolean post(String userId, Object data);
+
+ /**
+ * Subscribe for events on the given topic.
+ * <p>
+ * The handler will be called on the UI thread.
+ *
+ *
+ * @param userId
+ * the user id
+ * @param eventHandler
+ * object to call when an event of interest arrives
+ * @return <code>true</code> if this operation was performed successfully;
+ * <code>false</code> otherwise
+ */
+ public boolean subscribe(String userId, EventHandler eventHandler);
+
+ /**
+ * Subscribe for events on the given topic.
+ * <p>
+ * The handler will be called on the UI thread if "headless" is set to
+ * <code>true</code>.
+ *
+ *
+ * @param userId
+ * the user id
+ * @param filter
+ * the LDAP event filter
+ * @param eventHandler
+ * object to call when an event of interest arrives
+ * @param headless
+ * <code>true</code> if handing of the events does not require
+ * UI; <code>false</code> otherwise
+ * @return <code>true</code> if this operation was performed successfully;
+ * <code>false</code> otherwise
+ */
+ public boolean subscribe(String userId, String filter,
+ EventHandler eventHandler, boolean headless);
+
+ /**
+ * Unsubscribe handler previously registered using
+ * {@link #subscribe(String, EventHandler)}.
+ *
+ * @param eventHandler
+ * previously registered event handler
+ * @return <code>true</code> if this operation was performed successfully;
+ * <code>false</code> otherwise
+ */
+ public boolean unsubscribe(EventHandler eventHandler);
+
+}
diff --git a/org.eclipse.osbp.runtime.usernotification/src/org/eclipse/osbp/runtime/notification/impl/UserNotificationService.java b/org.eclipse.osbp.runtime.usernotification/src/org/eclipse/osbp/runtime/notification/impl/UserNotificationService.java
new file mode 100644
index 0000000..7365efe
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/src/org/eclipse/osbp/runtime/notification/impl/UserNotificationService.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2013 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Florian Pirchner - adjustments to osbp code
+ *******************************************************************************/
+package org.eclipse.osbp.runtime.notification.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.eclipse.osbp.runtime.common.event.IEventBroker;
+import org.eclipse.osbp.runtime.notification.IUserNotificationService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class UserNotificationService.
+ */
+@Component
+public class UserNotificationService implements IUserNotificationService {
+
+ /** The registrations. */
+ private Map<EventHandler, Collection<ServiceRegistration<?>>> registrations = new HashMap<EventHandler, Collection<ServiceRegistration<?>>>();
+
+ /** The event admin. */
+ private EventAdmin eventAdmin;
+
+ /** The context. */
+ private ComponentContext context;
+
+ /**
+ * Instantiates a new user notification service.
+ */
+ public UserNotificationService() {
+ }
+
+ /**
+ * Activate.
+ *
+ * @param context
+ * the context
+ */
+ @Activate
+ protected void activate(ComponentContext context) {
+ this.context = context;
+ }
+
+ /**
+ * Deactivate.
+ *
+ * @param context
+ * the context
+ */
+ @Deactivate
+ protected void deactivate(ComponentContext context) {
+ Collection<Collection<ServiceRegistration<?>>> values = new ArrayList<Collection<ServiceRegistration<?>>>(
+ registrations.values());
+ registrations.clear();
+ for (Collection<ServiceRegistration<?>> handled : values) {
+ for (ServiceRegistration<?> registration : handled) {
+ registration.unregister();
+ }
+ }
+
+ this.context = null;
+ }
+
+ /**
+ * Bind event admin.
+ *
+ * @param eventAdmin
+ * the event admin
+ */
+ @Reference(cardinality = ReferenceCardinality.MANDATORY, unbind = "unbindEventAdmin")
+ protected void bindEventAdmin(EventAdmin eventAdmin) {
+ this.eventAdmin = eventAdmin;
+ }
+
+ /**
+ * Unbind event admin.
+ *
+ * @param eventAdmin
+ * the event admin
+ */
+ protected void unbindEventAdmin(EventAdmin eventAdmin) {
+ this.eventAdmin = null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.notification.IUserNotificationService#send(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public boolean send(String userId, Object data) {
+ Event event = constructEvent(userId, data);
+ eventAdmin.sendEvent(event);
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.notification.IUserNotificationService#post(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public boolean post(String userId, Object data) {
+ Event event = constructEvent(userId, data);
+ eventAdmin.postEvent(event);
+ return true;
+ }
+
+ /**
+ * Construct event.
+ *
+ * @param userId
+ * the user id
+ * @param data
+ * the data
+ * @return the event
+ */
+ @SuppressWarnings("unchecked")
+ private Event constructEvent(String userId, Object data) {
+ Event event;
+ if (data instanceof Dictionary<?, ?>) {
+ event = new Event(userId, (Dictionary<String, ?>) data);
+ } else if (data instanceof Map<?, ?>) {
+ event = new Event(userId, (Map<String, ?>) data);
+ } else {
+ Dictionary<String, Object> d = new Hashtable<String, Object>(2);
+ d.put(EventConstants.EVENT_TOPIC, userId);
+ if (data != null)
+ d.put(IEventBroker.DATA, data);
+ event = new Event(userId, d);
+ }
+ return event;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.notification.IUserNotificationService#subscribe(java.lang.String, org.osgi.service.event.EventHandler)
+ */
+ @Override
+ public boolean subscribe(String userId, EventHandler eventHandler) {
+ return subscribe(userId, null, eventHandler, false);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.notification.IUserNotificationService#subscribe(java.lang.String, java.lang.String, org.osgi.service.event.EventHandler, boolean)
+ */
+ @Override
+ public boolean subscribe(String userId, String filter,
+ EventHandler eventHandler, boolean headless) {
+ BundleContext bundleContext = context.getBundleContext();
+ String[] userIds = new String[] { userId };
+ Dictionary<String, Object> d = new Hashtable<String, Object>();
+ d.put(EventConstants.EVENT_TOPIC, userIds);
+ if (filter != null) {
+ d.put(EventConstants.EVENT_FILTER, filter);
+ }
+ ServiceRegistration<?> registration = bundleContext.registerService(
+ EventHandler.class.getName(), eventHandler, d);
+ Collection<ServiceRegistration<?>> handled = registrations
+ .get(eventHandler);
+ if (handled == null) {
+ registrations.put(eventHandler,
+ handled = new ArrayList<ServiceRegistration<?>>());
+ }
+ handled.add(registration);
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.notification.IUserNotificationService#unsubscribe(org.osgi.service.event.EventHandler)
+ */
+ @Override
+ public boolean unsubscribe(EventHandler eventHandler) {
+ Collection<ServiceRegistration<?>> handled = registrations
+ .remove(eventHandler);
+ if (handled == null || handled.isEmpty())
+ return false;
+ for (ServiceRegistration<?> r : handled) {
+ r.unregister();
+ }
+ return true;
+ }
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..94d0e3d
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osbp.releng.maven</groupId>
+ <artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+
+ <packaging>pom</packaging>
+
+ <properties>
+ <osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+ </properties>
+
+ <modules>
+ <!-- Bundles -->
+ <module>org.eclipse.osbp.runtime.common</module>
+ <module>org.eclipse.osbp.runtime.eclipselink.core.fragment</module>
+ <module>org.eclipse.osbp.runtime.ecore.bundlespace</module>
+ <module>org.eclipse.osbp.runtime.emf</module>
+ <module>org.eclipse.osbp.runtime.event</module>
+ <module>org.eclipse.osbp.runtime.datasource.provider</module>
+ <module>org.eclipse.osbp.runtime.designer.api</module>
+ <module>org.eclipse.osbp.runtime.jsr303.validation</module>
+ <module>org.eclipse.osbp.runtime.logback.fragment</module>
+ <module>org.eclipse.osbp.runtime.memento</module>
+ <module>org.eclipse.osbp.runtime.systemextension</module>
+ <module>org.eclipse.osbp.runtime.typeprovider.bundlespace</module>
+ <module>org.eclipse.osbp.runtime.usernotification</module>
+ <module>org.eclipse.osbp.runtime.security</module>
+
+ <!-- Features -->
+ <module>org.eclipse.osbp.runtime.feature.common</module>
+ <!-- <module>org.eclipse.osbp.runtime.feature.allinone</module> -->
+ <module>org.eclipse.osbp.runtime.feature.e4eventmanager</module>
+ <module>org.eclipse.osbp.runtime.feature.eclipselink.core.fragment</module>
+ <module>org.eclipse.osbp.runtime.feature.jsr303.validation</module>
+ <module>org.eclipse.osbp.runtime.feature.datasource.provider</module>
+ <module>org.eclipse.osbp.runtime.feature.typeprovider.bundlespace</module>
+ <module>org.eclipse.osbp.runtime.feature.ecore.bundlespace</module>
+ <!-- <module>org.eclipse.osbp.runtime.feature.allinone.testframework</module> -->
+ <module>org.eclipse.osbp.runtime.feature.resolverhooks</module>
+ </modules>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-compiler-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <compilerVersion>1.8</compilerVersion>
+ <encoding>UTF-8</encoding>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <resolver>p2</resolver>
+ <pomDependencies>consider</pomDependencies>
+ <environments>
+ <environment>
+ <os>win32</os>
+ <ws>win32</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86</arch>
+ </environment>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>x86_64</arch>
+ </environment>
+ </environments>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+</project>