catch up with development
diff --git a/.artifactVersions b/.artifactVersions
deleted file mode 100644
index 9774cde..0000000
--- a/.artifactVersions
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644
index 7f083e3..0000000
--- a/.depVersions
+++ /dev/null
@@ -1,6 +0,0 @@
-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/.gitignore b/.gitignore
new file mode 100644
index 0000000..845a766
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+bin/
+.*.jar
+**/xtend-gen
+.DS_Store
+target
+xtend-gen/
+plugin.xml_gen
+/build.runtime.kepler.latest.log.properties
+**/log
+org.eclipse.osbp.runtime.systemextension.license
+org.eclipse.osbp.runtime.systemextension.license.tests.addon
+**git.properties
+
+**/target/
+**/.metadata/
+
+**/emf-gen/**/.gitignore
+**/src-gen/**/.gitignore
+**/git.properties
+**/*.java._trace
+**/*.log
+**/*.log.properties
+
+**/bin/
+**/build/
+*.class
+*.ctrl
+**/Debug/
+.DS_Store
+*.ear
+*.war
+
+**/*.actionbin
+**/*.blipbin
+**/*.chartbin
+**/*.cubebin
+**/*.datatypebin
+**/*.dtobin
+**/*.entitybin
+**/*.servicebin
+**/*.tablebin
+**/*.uibin
+**/*.uisemanticbin
+**/*.xtendbin
+**/*.xtextbin
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.common.tests/.classpath b/org.eclipse.osbp.runtime.common.tests/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.common.tests/.project b/org.eclipse.osbp.runtime.common.tests/.project
index 3063fcc..6695e11 100644
--- a/org.eclipse.osbp.runtime.common.tests/.project
+++ b/org.eclipse.osbp.runtime.common.tests/.project
@@ -6,12 +6,40 @@
</projects>
<buildSpec>
<buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<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.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
index fc612f6..715db10 100644
--- a/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
@@ -4,10 +4,15 @@
Bundle-SymbolicName: org.eclipse.osbp.runtime.common.tests
Bundle-Version: 0.9.0.qualifier
Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.junit,
- org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.equinox.ds;bundle-version="1.4.400",
+ org.eclipse.osgi;bundle-version="3.11.3",
+ org.eclipse.osgi.services;bundle-version="3.5.100",
+ org.eclipse.osgi.util;bundle-version="3.3.100",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.equinox.coordinator;bundle-version="1.3.200"
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/src/org/eclipse/osbp/runtime/common/session/SessionManagerTest.java b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionManagerTest.java
new file mode 100644
index 0000000..1f46ed2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionManagerTest.java
@@ -0,0 +1,246 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+public class SessionManagerTest {
+
+ private static BundleContext bc;
+ private static ISessionManager sessionManager;
+
+ @BeforeClass
+ public static void setup() {
+ bc = FrameworkUtil.getBundle(SessionManagerTest.class).getBundleContext();
+
+ ServiceReference<ISessionManager> ref = bc.getServiceReference(ISessionManager.class);
+ sessionManager = bc.getService(ref);
+ assertNotNull(sessionManager);
+
+ bc.registerService(ISession.class, new Session("1"), null);
+ bc.registerService(ISession.class, new Session("2"), null);
+ bc.registerService(ISession.class, new Session("3"), null);
+ bc.registerService(ISession.class, new Session("4"), null);
+ }
+
+ private CountDownLatch latch;
+ private AtomicInteger count;
+ private AtomicInteger error;
+ private AtomicInteger generalCount;
+
+ @Test
+ public void test_getSessions() {
+ List<ISession> result = sessionManager.getSessions((t) -> t.get("id") != null);
+ assertEquals(4, result.size());
+
+ List<ISession> result2 = sessionManager.getSessions((t) -> t.get("id").equals("2"));
+ assertEquals(1, result2.size());
+ }
+
+ @Test
+ public void test_getSessionsAsync() {
+ CompletableFuture<List<ISession>> result = sessionManager.getSessionsAsync((t) -> t.get("id") != null);
+ result.thenAccept((sessions) -> {
+ assertEquals(4, sessions.size());
+ });
+ }
+
+ @Test
+ public void test_asyncEach_Simple() {
+
+ latch = new CountDownLatch(2);
+ count = new AtomicInteger();
+ error = new AtomicInteger();
+
+ Set<String> filterIds = Collections.synchronizedSet(new HashSet<>());
+ filterIds.add("1");
+ filterIds.add("3");
+
+ List<CompletableFuture<FutureResult<String>>> results = sessionManager.asyncEach((s) -> {
+ return (String) s.get("id");
+ }, (r) -> {
+ count.incrementAndGet();
+ latch.countDown();
+ if (!r.isError) {
+ filterIds.remove(r.value);
+ }
+ }, (sessionFilter) -> filterIds.contains(sessionFilter.get("id")));
+
+ try {
+ latch.await(500, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ fail();
+ }
+
+ assertEquals(2, count.get());
+ assertEquals(0, error.get());
+ assertEquals(0, filterIds.size());
+ }
+
+ @SuppressWarnings("unused")
+ @Test
+ public void test_asyncEach_WithException() {
+
+ latch = new CountDownLatch(4);
+ generalCount = new AtomicInteger();
+ count = new AtomicInteger();
+ error = new AtomicInteger();
+
+ List<CompletableFuture<FutureResult<String>>> results = sessionManager.asyncEach((s) -> {
+ int _c = generalCount.incrementAndGet();
+ if (_c % 2 == 0) {
+ throw new IllegalStateException();
+ }
+ return (String) s.get("id");
+ }, (r) -> {
+ if (!r.isError) {
+ count.incrementAndGet();
+ } else {
+ error.incrementAndGet();
+ }
+ latch.countDown();
+ });
+
+ try {
+ latch.await(500, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ fail();
+ }
+
+ assertEquals(2, count.get());
+ assertEquals(2, error.get());
+ }
+
+ @Test
+ public void test_asyncAll_Simple() {
+
+ latch = new CountDownLatch(2);
+ count = new AtomicInteger();
+ error = new AtomicInteger();
+
+ Set<String> filterIds = Collections.synchronizedSet(new HashSet<>());
+ filterIds.add("1");
+ filterIds.add("3");
+
+ CompletableFuture<List<FutureResult<String>>> result = sessionManager.asyncAll((s) -> {
+ return (String) s.get("id");
+ }, (sessionFilter) -> filterIds.contains(sessionFilter.get("id")));
+
+ result.thenAccept((rl) -> {
+ for (FutureResult<String> r : rl) {
+ count.incrementAndGet();
+ latch.countDown();
+ if (!r.isError) {
+ filterIds.remove(r.value);
+ }
+ }
+ });
+
+ try {
+ latch.await(500, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ fail();
+ }
+
+ assertEquals(2, count.get());
+ assertEquals(0, error.get());
+ assertEquals(0, filterIds.size());
+ }
+
+ @Test
+ public void test_asyncAll_WithException() {
+
+ latch = new CountDownLatch(4);
+ generalCount = new AtomicInteger();
+ count = new AtomicInteger();
+ error = new AtomicInteger();
+
+ CompletableFuture<List<FutureResult<String>>> result = sessionManager.asyncAll((s) -> {
+ int _c = generalCount.incrementAndGet();
+ if (_c % 2 == 0) {
+ throw new IllegalStateException();
+ }
+ return (String) s.get("id");
+ });
+
+ result.thenAccept((rlist) -> {
+ for (FutureResult<String> r : rlist) {
+ if (!r.isError) {
+ count.incrementAndGet();
+ } else {
+ error.incrementAndGet();
+ }
+ latch.countDown();
+ }
+ });
+
+ try {
+ latch.await(500, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ fail();
+ }
+
+ assertEquals(2, count.get());
+ assertEquals(2, error.get());
+ }
+
+ public static class Session extends AbstractSession {
+
+ final Map<String, Object> props = new HashMap<>();
+
+ public Session(String id) {
+ super();
+ props.put("id", id);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T get(Class<T> key) {
+ return (T) props.get(key.getName());
+ }
+
+ @Override
+ public Object get(String key) {
+ return props.get(key);
+ }
+
+ @Override
+ protected <T> CompletableFuture<T> doAsync(final Function<ISession, T> function, ExecutorService executor) {
+ CompletableFuture<T> promise = new CompletableFuture<>();
+ runAsync(function, promise);
+ return promise;
+ }
+
+ protected <T> void runAsync(final Function<ISession, T> function, CompletableFuture<T> promise) {
+ new Thread(() -> {
+ try {
+ T value = function.apply(this);
+ promise.complete(value);
+ } catch (Exception e) {
+ promise.completeExceptionally(e);
+ }
+ }).start();
+ }
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionTest.java b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionTest.java
new file mode 100644
index 0000000..6b35744
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionTest.java
@@ -0,0 +1,175 @@
+package org.eclipse.osbp.runtime.common.session;
+
+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 java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+
+public class SessionTest {
+
+ private BundleContext bc;
+
+ @Before
+ public void setup() {
+ bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
+ }
+
+ @Test
+ public void test_apply() {
+ Session session = new Session("1");
+ String value = session.apply((s) -> {
+ return "Foo";
+ });
+ assertEquals("Foo", value);
+ }
+
+ @Test
+ public void test_async() {
+
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ Session session = new Session("1");
+ CompletableFuture<FutureResult<String>> promise = session.async((s) -> {
+ try {
+ Thread.sleep(250);
+ } catch (InterruptedException e) {
+ }
+ return "Foo";
+ }, null);
+
+ try {
+ latch.await(500, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ fail();
+ }
+
+ assertTrue(promise.isDone());
+ }
+
+ @Test
+ public void test_async_Success() {
+
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ final AtomicBoolean success = new AtomicBoolean();
+ final AtomicBoolean error = new AtomicBoolean();
+
+ Session session = new Session("1");
+ CompletableFuture<FutureResult<String>> promise = session.async((s) -> {
+ try {
+ Thread.sleep(250);
+ } catch (InterruptedException e) {
+ }
+ return "Foo";
+ }, (r) -> {
+ if (r.isError) {
+ error.set(true);
+ } else {
+ if (r.value.equals("Foo")) {
+ success.set(true);
+ }
+ }
+ });
+
+ try {
+ latch.await(500, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ fail();
+ }
+
+ assertTrue(promise.isDone());
+ assertTrue(success.get());
+ assertFalse(error.get());
+ }
+
+ @Test
+ public void test_async_Error() {
+
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ final AtomicBoolean success = new AtomicBoolean();
+ final AtomicBoolean error = new AtomicBoolean();
+
+ Session session = new Session("1");
+ CompletableFuture<FutureResult<String>> promise = session.async((s) -> {
+ try {
+ Thread.sleep(250);
+ } catch (InterruptedException e) {
+ }
+ throw new IllegalArgumentException();
+ }, (r) -> {
+ if (r.isError) {
+ if (r.error != null) {
+ error.set(true);
+ }
+ } else {
+ success.set(true);
+ }
+ });
+
+ try {
+ latch.await(500, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ fail();
+ }
+
+ assertTrue(promise.isDone());
+ assertFalse(success.get());
+ assertTrue(error.get());
+ }
+
+ public static class Session extends AbstractSession {
+
+ final Map<String, Object> props = new HashMap<>();
+
+ public Session(String id) {
+ super();
+ props.put("id", id);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T get(Class<T> key) {
+ return (T) props.get(key.getName());
+ }
+
+ @Override
+ public Object get(String key) {
+ return props.get(key);
+ }
+
+ @Override
+ protected <T> CompletableFuture<T> doAsync(final Function<ISession, T> function, ExecutorService executor) {
+ CompletableFuture<T> promise = new CompletableFuture<>();
+ runAsync(function, promise);
+ return promise;
+ }
+
+ protected <T> void runAsync(final Function<ISession, T> function, CompletableFuture<T> promise) {
+ new Thread(() -> {
+ try {
+ T value = function.apply(this);
+ promise.complete(value);
+ } catch (Exception e) {
+ promise.completeExceptionally(e);
+ }
+ }).start();
+ }
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/.classpath b/org.eclipse.osbp.runtime.common/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.common/.gitignore b/org.eclipse.osbp.runtime.common/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a698e59
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
index 959d8d9..26d8ac8 100644
--- a/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
@@ -7,18 +7,22 @@
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.bean,
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.entities;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.filter;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.session;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,
@@ -34,10 +38,11 @@
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
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
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"
+ org.slf4j.api;bundle-version="1.7.2",
+ org.eclipse.core.databinding.observable
diff --git a/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.session.impl.SessionManager.xml b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.session.impl.SessionManager.xml
new file mode 100644
index 0000000..c3ebfac
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.session.impl.SessionManager.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.session.impl.SessionManager">
+ <service>
+ <provide interface="org.eclipse.osbp.runtime.common.session.ISessionManager"/>
+ </service>
+ <reference bind="addSession" cardinality="0..n" interface="org.eclipse.osbp.runtime.common.session.ISession" name="Session" policy="dynamic" unbind="removeSession"/>
+ <implementation class="org.eclipse.osbp.runtime.common.session.impl.SessionManager"/>
+</scr:component>
\ No newline at end of file
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
index 44d894d..643d273 100644
--- 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
@@ -1,8 +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"/>
+ <property name="service.ranking" value="100"/>
<service>
<provide interface="org.eclipse.osbp.runtime.common.state.ISharedStateContextProvider"/>
</service>
- <property name="service.ranking" value="100"/>
+ <implementation class="org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider"/>
</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanOrdering.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanOrdering.java
new file mode 100644
index 0000000..bb6e65a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanOrdering.java
@@ -0,0 +1,13 @@
+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;
+
+@Target({ FIELD})
+@Retention(RUNTIME)
+public @interface AsKanbanOrdering {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanState.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanState.java
new file mode 100644
index 0000000..6e65a09
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanState.java
@@ -0,0 +1,13 @@
+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;
+
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface AsKanbanState {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Datamart.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Datamart.java
new file mode 100644
index 0000000..3a671ce
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Datamart.java
@@ -0,0 +1,13 @@
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target(TYPE)
+public @interface Datamart {
+
+}
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
index a8170e8..8f1b4dc 100644
--- 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
@@ -50,12 +50,14 @@
if (DtoUtils.isDisposeField(objClass, event.getPropertyName())) {
return;
}
- // dirty field not forwarded to handle dirty
- if (DtoUtils.isDirtyField(objClass, event.getPropertyName())) {
+ // dirty field not forwarded to handle dirty, if already dirty
+ if (DtoUtils.isDirtyField(objClass, event.getPropertyName()) && DtoUtils.isDirty(object)) {
return;
}
} catch (SecurityException ignoreIt) {
LOGGER.error("{}", ignoreIt);
+ } catch (IllegalAccessException ignoreIt) {
+ LOGGER.error("{}", ignoreIt);
}
handleDirty(event);
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
index 39c6e12..5fc2fd9 100644
--- 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
@@ -19,8 +19,10 @@
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.commons.lang.reflect.MethodUtils;
@@ -87,7 +89,48 @@
}
/**
- * Returns the id key field. Field annotated with {@link Id}.
+ * Gets the version field. Field annotated with {@link Version}.
+ *
+ * @param clazz
+ * the clazz
+ * @return the version field
+ */
+ public static Field getVersionField(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getVersionField();
+ }
+
+ /**
+ * Returns the id field. Field annotated with {@link Id}.
+ *
+ * @param dto
+ * the dto
+ * @return the id field
+ */
+ public static Object getIdValue(Object dto) {
+ Info info = getInfo(dto.getClass());
+ Field f = info.getIdField();
+ f.setAccessible(true);
+ try {
+ return f.get(dto);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ public static void setIdValue(Object dto, Object idValue) {
+ Info info = getInfo(dto.getClass());
+ Field f = info.getIdField();
+ f.setAccessible(true);
+ try {
+ f.set(dto, idValue);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ /**
+ * Returns the field value.
*
* @param instance
* the instance
@@ -111,6 +154,31 @@
}
/**
+ * Sets the field value.
+ *
+ * @param instance
+ * the instance
+ * @param idProperty
+ * the id property
+ * @param value
+ * the value
+ */
+ public static void setValue(Object dto, String idProperty, Object value) {
+ try {
+ BeanInfo beanInfo = Introspector.getBeanInfo(dto.getClass());
+ for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+ if (pd.getName().equals(idProperty)) {
+ pd.getWriteMethod().invoke(dto, value);
+ break;
+ }
+ }
+ } catch (IntrospectionException | IllegalAccessException | IllegalArgumentException
+ | InvocationTargetException e) {
+ LOGGER.error("{}", e);
+ }
+ }
+
+ /**
* Returns the domain description field. Field annotated with
* #DomainDescription.
*
@@ -174,6 +242,34 @@
}
/**
+ * Returns true, if the given field is a id field.
+ *
+ * @param clazz
+ * the clazz
+ * @param fieldName
+ * the field name
+ * @return true, if is id field
+ */
+ public static boolean isIdField(Class<?> clazz, String fieldName) {
+ Info info = getInfo(clazz);
+ return info.getIdField() != null ? info.getIdField().getName().equals(fieldName) : false;
+ }
+
+ /**
+ * Returns true, if the given field is a version field.
+ *
+ * @param clazz
+ * the clazz
+ * @param fieldName
+ * the field name
+ * @return true, if is version field
+ */
+ public static boolean isVersionField(Class<?> clazz, String fieldName) {
+ Info info = getInfo(clazz);
+ return info.getVersionField() != null ? info.getVersionField().getName().equals(fieldName) : false;
+ }
+
+ /**
* Returns true, if the given field is a dirty field. Dirty fields indicate
* that the dto is dirty.
*
@@ -287,6 +383,30 @@
}
/**
+ * Gets the owner domain references.
+ *
+ * @param clazz
+ * the clazz
+ * @return the owner domain references
+ */
+ public static List<Field> getOwnerDomainReferences(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getOwnerDomainReferences();
+ }
+
+ /**
+ * Gets the member domain references.
+ *
+ * @param clazz
+ * the clazz
+ * @return the member domain references
+ */
+ public static List<Field> getMemberDomainReferences(Class<?> clazz) {
+ Info info = getInfo(clazz);
+ return info.getMemberDomainReferences();
+ }
+
+ /**
* Returns the info for the given class.
*
* @param clazz
@@ -389,6 +509,51 @@
}
/**
+ * Unregisters the adapter as a property changed listener.
+ *
+ * @param adapter
+ * the adapter
+ * @param dto
+ * the dto
+ */
+ public static void unregisterAdapter(PropertyChangeListener adapter, Object dto) {
+ if (adapter == null || dto == null) {
+ return;
+ }
+
+ try {
+ MethodUtils.invokeMethod(dto, "removePropertyChangeListener", 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());
+ }
+ }
+
+ public static List<String> getFieldNames(Class<?> clazz) {
+ List<String> fieldNames = new ArrayList<>();
+ try {
+ for (Field field : clazz.getDeclaredFields()) {
+ fieldNames.add(field.getName());
+ }
+
+ Class<?> superClass = clazz.getSuperclass();
+ if (superClass != null) {
+ fieldNames.addAll(getFieldNames(superClass));
+ }
+ } catch (SecurityException e) {
+ LOGGER.error("{}", e);
+ }
+ return fieldNames;
+ }
+
+ /**
* Applies all required field infos to the info object.
*
* @param clazz
@@ -411,6 +576,17 @@
if (field.getAnnotation(Id.class) != null) {
info.idField = field;
}
+ if (field.getAnnotation(Version.class) != null) {
+ info.versionField = field;
+ }
+
+ if (field.getAnnotation(DomainReference.class) != null) {
+ if (field.getType().isAssignableFrom(List.class)) {
+ info.memberDomainReferences.add(field);
+ } else {
+ info.ownerDomainReferences.add(field);
+ }
+ }
if (field.getType() == PropertyChangeSupport.class) {
info.propertyChangeSupportField = field;
@@ -486,7 +662,7 @@
* the name
* @return the field
*/
- protected Field findField(Class<?> clazz, String name) {
+ protected static Field findField(Class<?> clazz, String name) {
try {
Field field = clazz.getDeclaredField(name);
return field;
@@ -530,6 +706,21 @@
/** The domain description field. */
private Field domainDescriptionField;
+ /** The version field. */
+ private Field versionField;
+
+ /**
+ * The owner domain references = all 1 references of a oneToMany
+ * relationship.
+ */
+ private List<Field> ownerDomainReferences = new ArrayList<>();
+
+ /**
+ * The member domain references = all n references of a oneToMany
+ * relationship.
+ */
+ private List<Field> memberDomainReferences = new ArrayList<>();
+
/**
* Gets the dispose field.
*
@@ -540,6 +731,33 @@
}
/**
+ * Gets the owner domain references.
+ *
+ * @return the owner domain references
+ */
+ public List<Field> getOwnerDomainReferences() {
+ return ownerDomainReferences;
+ }
+
+ /**
+ * Gets the member domain references.
+ *
+ * @return the member domain references
+ */
+ public List<Field> getMemberDomainReferences() {
+ return memberDomainReferences;
+ }
+
+ /**
+ * Gets the version field.
+ *
+ * @return the version field
+ */
+ public Field getVersionField() {
+ return versionField;
+ }
+
+ /**
* Gets the dirty field.
*
* @return the dirty field
@@ -607,5 +825,4 @@
}
}
-
}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Filter.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Filter.java
new file mode 100644
index 0000000..f32813b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Filter.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 content is a
+ * may be used in generic search dialogs as a wildcard field. Like eg, lt, gt, ge, ... and wildcards
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface Filter {
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/FilterDepth.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/FilterDepth.java
new file mode 100644
index 0000000..ec31bbb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/FilterDepth.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.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation defines the depth of generic filters.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface FilterDepth {
+
+ /**
+ * The depth of the generic filter. It will look for all fields annotated
+ * with @Filter and @Range.
+ *
+ * @return
+ */
+ int depth();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/IsValid.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/IsValid.java
new file mode 100644
index 0000000..b3169ba
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/IsValid.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.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;
+
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface IsValid {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/OnKanbanCard.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/OnKanbanCard.java
new file mode 100644
index 0000000..2467cec
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/OnKanbanCard.java
@@ -0,0 +1,13 @@
+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;
+
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface OnKanbanCard {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Range.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Range.java
new file mode 100644
index 0000000..d1210b3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Range.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 content is a
+ * may be used in generic search dialogs as a range selection. Eg from-until fields.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface Range {
+
+}
+
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/UniqueEntry.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/UniqueEntry.java
new file mode 100644
index 0000000..67baa9e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/UniqueEntry.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 Entities and DTOs. If a field is marked with
+ * this annotation, the same entity must not contain more than one record with
+ * the same value.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface UniqueEntry {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Version.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Version.java
new file mode 100644
index 0000000..55f4bc6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Version.java
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+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
+ * version field.
+ */
+@Retention(RUNTIME)
+@Target(FIELD)
+public @interface Version {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/bean/IdentityPropertyChangeSupport.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/bean/IdentityPropertyChangeSupport.java
new file mode 100644
index 0000000..783bf93
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/bean/IdentityPropertyChangeSupport.java
@@ -0,0 +1,66 @@
+package org.eclipse.osbp.runtime.common.bean;
+
+import java.beans.PropertyChangeSupport;
+
+@SuppressWarnings("serial")
+public class IdentityPropertyChangeSupport extends PropertyChangeSupport {
+
+// private Object source;
+
+ public IdentityPropertyChangeSupport(Object source) {
+ super(source);
+// this.source = source;
+ }
+
+// public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
+// if (oldValue == null || newValue == null || !valuesEqual(oldValue, newValue)) {
+// firePropertyChange(new PropertyChangeEvent(source, propertyName, oldValue, newValue));
+// }
+// }
+//
+// public void firePropertyChange(PropertyChangeEvent event) {
+// Object oldValue = event.getOldValue();
+// Object newValue = event.getNewValue();
+// if (oldValue == null || newValue == null || !valuesEqual(oldValue, newValue)) {
+// String name = event.getPropertyName();
+//
+// PropertyChangeListener[] common = getPropertyChangeListeners(null);
+// fireEvent(common, event);
+//
+// PropertyChangeListener[] named = (name != null) ? getPropertyChangeListeners(name) : null;
+// fireEvent(named, event);
+// }
+// }
+//
+// public void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue) {
+// if (oldValue == null || newValue == null || !valuesEqual(oldValue, newValue)) {
+// firePropertyChange(new IndexedPropertyChangeEvent(source, propertyName, oldValue, newValue, index));
+// }
+// }
+//
+// private boolean valuesEqual(Object oldValue, Object newValue) {
+// if (isAnnotationPresent(oldValue.getClass())) {
+// return oldValue == newValue;
+// }
+// return oldValue.equals(newValue);
+// }
+//
+// protected boolean isAnnotationPresent(final Class<?> clazz) {
+// if (clazz.isAnnotationPresent(EqualByIdentity.class)) {
+// return true;
+// }
+// for (Class<?> i : clazz.getInterfaces()) {
+// if (i.isAnnotationPresent(EqualByIdentity.class))
+// return true;
+// }
+// return false;
+// }
+//
+// protected void fireEvent(PropertyChangeListener[] listeners, PropertyChangeEvent event) {
+// if (listeners != null) {
+// for (PropertyChangeListener listener : listeners) {
+// listener.propertyChange(event);
+// }
+// }
+// }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/entities/EntityUtils.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/entities/EntityUtils.java
new file mode 100644
index 0000000..6a71999
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/entities/EntityUtils.java
@@ -0,0 +1,601 @@
+/**
+ * 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.entities;
+
+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 javax.persistence.Id;
+
+import org.apache.commons.lang.reflect.MethodUtils;
+import org.eclipse.osbp.runtime.common.annotations.Dirty;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Class EntityUtils.
+ */
+public class EntityUtils {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory.getLogger(EntityUtils.class);
+
+ /** The infos. */
+ private static Map<Class<?>, Info> INFOS = Collections.synchronizedMap(new HashMap<Class<?>, EntityUtils.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 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 field. Field annotated with {@link Id}.
+ *
+ * @param dto
+ * the dto
+ * @return the id field
+ */
+ public static Object getIdValue(Object dto) {
+ Info info = getInfo(dto.getClass());
+ Field f = info.getIdField();
+ f.setAccessible(true);
+ try {
+ return f.get(dto);
+ } catch (IllegalArgumentException e) {
+ throw new IllegalStateException(e);
+ } catch (IllegalAccessException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ /**
+ * 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 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(javax.persistence.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/event/EventDispatcherEvent.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/EventDispatcherEvent.java
new file mode 100644
index 0000000..86f8284
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/EventDispatcherEvent.java
@@ -0,0 +1,184 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.runtime.common.event;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap;
+
+/**
+ * The Class EventDispatcherEvent.
+ */
+public class EventDispatcherEvent {
+
+ /**
+ * The Enum EventDispatcherCommand.
+ */
+ public enum EventDispatcherCommand {
+ /** something was selected. */
+ SELECT,
+ /** something requested a refresh. */
+ REFRESH,
+ /** The user saved. */
+ SAVE,
+ /** The user deleted. */
+ DELETE,
+ /** The user started an action. */
+ ACTION,
+ /** Process finished so remove progressbar. */
+ REMOVE_PROGRESSBAR
+ }
+
+ /**
+ * The Enum EventDispatcherDataTag.
+ */
+ public enum EventDispatcherDataTag {
+ /** The id. values are of type id or uuid */
+ ID,
+ /** The id of the pressed action button */
+ BUTTON_ID,
+ /** The id of an started human task (bpmn) */
+ TASK_ID,
+ /** The list of objects. */
+ LIST,
+ /** a filled dto object. */
+ DTO
+ }
+
+ /** The command. */
+ private EventDispatcherCommand command;
+
+ /** The sender class. */
+ private String sender;
+
+ /** The topic. */
+ private String topic;
+
+ /** The data. */
+ private Map<EventDispatcherDataTag, Object> data = new CopyOnWriteIdentityMap<>();
+
+ /**
+ * Instantiates a new event dispatcher event.
+ *
+ * @param command the command
+ * @param topic the topic
+ */
+ public EventDispatcherEvent(EventDispatcherCommand command, String topic, String sender) {
+ this.command = command;
+ this.topic = topic;
+ this.sender = sender;
+ }
+
+ /**
+ * Gets the command.
+ *
+ * @return the command
+ */
+ public EventDispatcherCommand getCommand() {
+ return command;
+ }
+
+ /**
+ * Sets the command.
+ *
+ * @param command the new command
+ */
+ public void setCommand(EventDispatcherCommand command) {
+ this.command = command;
+ }
+
+ /**
+ * Gets the topic.
+ *
+ * @return the topic
+ */
+ public String getTopic() {
+ return topic;
+ }
+
+ /**
+ * Sets the topic.
+ *
+ * @param topic the new topic
+ */
+ public void setTopic(String topic) {
+ this.topic = topic;
+ }
+
+ /**
+ * Gets the data.
+ *
+ * @return the data
+ */
+ public Map<EventDispatcherDataTag, Object> getData() {
+ return data;
+ }
+
+ /**
+ * Sets the data.
+ *
+ * @param data the data
+ */
+ public void setData(Map<EventDispatcherDataTag, Object> data) {
+ this.data = data;
+ }
+
+ /**
+ * Adds the item data.
+ *
+ * @param tag the tag
+ * @param item the item
+ */
+ @SuppressWarnings("unchecked")
+ public void addItem(EventDispatcherDataTag tag, Object item) {
+ if(tag == EventDispatcherDataTag.LIST) {
+ if(!data.containsKey(EventDispatcherDataTag.LIST)) {
+ data.put(EventDispatcherDataTag.LIST, new CopyOnWriteArrayList<String>());
+ }
+ ((List<String>)data.get(EventDispatcherDataTag.LIST)).add((String)item);
+ } else {
+ data.put(tag, item);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public void addData(List<IDualData> selectedData) {
+ if(!data.containsKey(EventDispatcherDataTag.LIST)) {
+ data.put(EventDispatcherDataTag.LIST, new CopyOnWriteArrayList<String>());
+ }
+ for(IDualData dd : selectedData){
+ ((List<String>)data.get(EventDispatcherDataTag.LIST)).add(dd.getSelectionValue());
+ }
+ }
+
+ /**
+ * Gets the sender.
+ *
+ * @return the sender id
+ */
+ public String getSender() {
+ return sender;
+ }
+
+ /**
+ * Sets the sender id.
+ *
+ * @param sender the new sender
+ */
+ public void setSender(String sender) {
+ this.sender = sender;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IDualData.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IDualData.java
new file mode 100644
index 0000000..75cfdaa
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IDualData.java
@@ -0,0 +1,89 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.runtime.common.event;
+
+/**
+ * The Interface IDualData.
+ */
+public interface IDualData {
+
+ /**
+ * Marks this filter as to be decoded as string.
+ *
+ * @param isString the is string
+ */
+ void asString(boolean isString);
+ /**
+ * Equals.
+ *
+ * @param item the item
+ * @return true, if successful
+ */
+ boolean equals(IDualData item);
+ /**
+ * Gets the selection value.
+ *
+ * @return the selection value
+ */
+ String getSelectionValue();
+
+ /**
+ * Gets the selection value prepared for a database.
+ *
+ * @param value the value
+ * @return the database selection value
+ */
+ String getDatabaseSelectionValue();
+ /**
+ * Sets the selection value.
+ *
+ * @param value the new selection value
+ */
+ void setSelectionValue(String value);
+
+ /**
+ * Gets the formatted value.
+ *
+ * @return the formatted value
+ */
+ String getFormattedValue();
+
+ /**
+ * Sets the formatted value.
+ *
+ * @param formattedValue the new formatted value
+ */
+ void setFormattedValue(String formattedValue);
+
+ /**
+ * Gets the hierarchy.
+ *
+ * @return the hierarchy
+ */
+ String getHierarchy();
+
+ /**
+ * Gets the hierarchy with brackets.
+ *
+ * @return the hierarchy with brackets
+ */
+ String getHierarchyWithBrackets();
+
+ /**
+ * Sets the hierarchy.
+ *
+ * @param hierarchy the new hierarchy
+ */
+ void setHierarchy(String hierarchy);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventDispatcher.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventDispatcher.java
new file mode 100644
index 0000000..3fb12ba
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventDispatcher.java
@@ -0,0 +1,69 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.runtime.common.event;
+
+
+/**
+ * The Interface IEventDispatcher.
+ */
+public interface IEventDispatcher {
+
+ /**
+ * Adds the event receiver.
+ *
+ * @param receiver the receiver
+ */
+ void addEventReceiver(Receiver receiver);
+
+ /**
+ * Removes the event receiver.
+ *
+ * @param receiver the receiver
+ */
+ void removeEventReceiver(Receiver receiver);
+
+ /**
+ * Send event.
+ *
+ * @param event the event
+ */
+ void sendEvent(EventDispatcherEvent event);
+
+ /**
+ * The Interface Receiver.
+ */
+ public interface Receiver {
+
+ /**
+ * Receive event.
+ *
+ * @param event the event
+ */
+ void receiveEvent(EventDispatcherEvent event);
+ }
+
+ /**
+ * The Interface Sender.
+ */
+ public interface Sender {
+ }
+
+// public interface Global extends IEventDispatcher {
+//
+// }
+//
+// public interface Provider {
+// IEventDispatcher getDispatcher();
+// }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/DtoServiceException.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/DtoServiceException.java
new file mode 100644
index 0000000..f7cf3b8
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/DtoServiceException.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2014 - 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.filter;
+
+/**
+ * Contains converted SQLExceptions.
+ */
+@SuppressWarnings("serial")
+public class DtoServiceException extends RuntimeException {
+
+ private final String sqlState;
+
+ public DtoServiceException(String sqlState, String message, Throwable cause) {
+ super(message, cause);
+ this.sqlState = sqlState;
+ }
+
+ /**
+ * @return the sqlState
+ */
+ protected String getSqlState() {
+ return sqlState;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOService.java
new file mode 100644
index 0000000..8a21d76
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOService.java
@@ -0,0 +1,276 @@
+/**
+ * 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.filter;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+import org.eclipse.osbp.runtime.common.validation.ValidationKind;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IDTOService.
+ *
+ * @param <A>
+ * the generic type
+ */
+public interface IDTOService<A> extends IService {
+
+ /** The Constant PROP_MAX_COLLECTION_CONTENT. */
+ public static final int PROP_MAX_COLLECTION_CONTENT = 2000;
+
+ /**
+ * Returns the dto for the given id.
+ *
+ * @param id
+ * the id
+ * @return the a
+ */
+ A get(Object id);
+
+ /**
+ * Reloads the given dto and returns the refreshed values by a new
+ * instance.<br>
+ * If the data basis for the dto is not available anymore. For instance the
+ * entity was deleted, then <code>null</code> will be returned.
+ *
+ * @param dto
+ * the dto
+ * @return A
+ */
+ A reload(A dto);
+
+ /**
+ * Returns a collection of dtos matching the filter in the query. <br>
+ * The maximum amount of contained elements is limited by
+ * {@link #PROP_MAX_COLLECTION_CONTENT}.
+ *
+ * @param query
+ * the query
+ * @return the collection
+ */
+ Collection<A> find(IQuery query);
+
+ /**
+ * Returns a collection of dtos matching the filter defined in the query and
+ * starting from the given startIndex. <br>
+ * May be used for lazy loading issues. Ensure that a sort order is used in
+ * that case.
+ *
+ * The maximum amount of contained elements is limited by
+ * {@link #PROP_MAX_COLLECTION_CONTENT}.
+ *
+ * @param query
+ * the query
+ * @param startIndex
+ * the start index
+ * @return the collection
+ */
+ Collection<A> find(IQuery query, int startIndex);
+
+ /**
+ * Returns a collection of dtos selected by the given jpql. <br>
+ * This method throws an {@link IllegalArgumentException} if the defined
+ * jpql does not select dtos.
+ *
+ * @param query
+ * the query
+ * @return the collection
+ */
+ Collection<A> findDtos(IJPQL jpql);
+
+ /**
+ * Returns a list of values selected by the given jpql. <br>
+ * The values are at the same index as in the JPQL "select"-statement. Eg.
+ * "select p.name, p.postalcode from Person p".
+ *
+ * @param query
+ * the query
+ * @return the collection
+ */
+ List<?> findValues(IJPQL jpql);
+
+ /**
+ * Updates the given DTO.
+ *
+ * @param dto
+ * the dto
+ */
+ void update(A dto);
+
+ /**
+ * Deletes the given DTO.
+ *
+ * @param dto
+ * the dto
+ * @throws DtoServiceException
+ * if the record can not be deleted
+ */
+ void delete(A dto) throws DtoServiceException;
+
+ /**
+ * Returns the count of all dto matching the filter.
+ *
+ * @param query
+ * the query
+ * @return the int
+ */
+ int size(IQuery query);
+
+ /**
+ * Returns true, if the dto exists for the given filter.
+ *
+ * @param dto
+ * the dto
+ * @param query
+ * the query
+ * @return true, if successful
+ */
+ boolean contains(Object dto, IQuery query);
+
+ /**
+ * Returns true, if a dto exists for the given filter.
+ *
+ * @param query
+ * the query
+ * @return true, if successful
+ */
+ boolean contains(IQuery query);
+
+ /**
+ * Returns the next dto for the given one using the filter and the
+ * sortOrder.
+ *
+ * @param dto
+ * the dto
+ * @param query
+ * the query
+ * @return the next
+ */
+ A getNext(A dto, IQuery query);
+
+ /**
+ * Returns the previous dto for the given one using the filter and the
+ * sortOrder.
+ *
+ * @param dto
+ * the dto
+ * @param query
+ * the query
+ * @return the previous
+ */
+ A getPrevious(A dto, IQuery query);
+
+ /**
+ * Returns the first dto for the given filter and the sortOrder.
+ *
+ * @param query
+ * the query
+ * @return the first
+ */
+ A getFirst(IQuery query);
+
+ /**
+ * Returns the last dto for the given filter and the sortOrder.
+ *
+ * @param query
+ * the query
+ * @return the last
+ */
+ A getLast(IQuery query);
+
+ /**
+ * Returns true, if the given dto is the first one for the filter and
+ * sortOrder.
+ *
+ * @param dto
+ * the dto
+ * @param query
+ * the query
+ * @return true, if is first
+ */
+ boolean isFirst(A dto, IQuery query);
+
+ /**
+ * Returns true, if the given dto is the last one for the filter and
+ * sortOrder.
+ *
+ * @param dto
+ * the dto
+ * @param query
+ * the query
+ * @return true, if is last
+ */
+ boolean isLast(A dto, IQuery query);
+
+ /**
+ * Returns the index of the given dto for the filter and sortOrder.
+ *
+ * @param dto
+ * the dto
+ * @param query
+ * the query
+ * @return the int
+ */
+ int indexOf(A dto, IQuery query);
+
+ /**
+ * Returns the dto for the given index, filter and sortOrder.
+ *
+ * @param index
+ * the index
+ * @param query
+ * the query
+ * @return the by index
+ */
+ A getByIndex(int index, IQuery query);
+
+ /**
+ * Returns a list of dtos with size <= numberOfItems, starting from the
+ * startIndex in respect to the filter and sortOrder.
+ *
+ * @param startIndex
+ * the start index
+ * @param numberOfItems
+ * the number of items
+ * @param query
+ * the query
+ * @return the by index
+ */
+ List<A> getByIndex(int startIndex, int numberOfItems, IQuery query);
+
+ /**
+ * Validates the given DTO.
+ *
+ * @param object
+ * the object
+ * @param kind
+ * the kind of validation
+ * @param properties
+ * any kind of properties required in validation
+ * @return the sets the
+ * @throws IllegalStateException
+ * if no Validator is available
+ */
+ Set<IStatus> validate(A object, ValidationKind kind, Map<String, Object> properties) throws IllegalStateException;
+
+ /**
+ * Gets the id.
+ *
+ * @param dto
+ * the dto
+ * @return the id
+ */
+ Object getId(A dto);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOServiceWithMutablePersistence.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOServiceWithMutablePersistence.java
new file mode 100644
index 0000000..f2c290b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOServiceWithMutablePersistence.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.filter;
+
+import javax.persistence.EntityManagerFactory;
+
+/**
+ * This DTO service allows to specify a deviating persistence ID.
+ *
+ * @param <A>
+ */
+public interface IDTOServiceWithMutablePersistence<A> extends IDTOService<A> {
+
+ /**
+ * Returns the persistence Id which is used to find the proper
+ * {@link EntityManagerFactory},
+ *
+ * @return
+ */
+ String getPersistenceId();
+
+ /**
+ * Sets the persistence Id which is used to find the proper
+ * {@link EntityManagerFactory},
+ *
+ * @param persistenceId
+ */
+ void setPersistenceId(String persistenceId);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDatamartService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDatamartService.java
new file mode 100644
index 0000000..4fe2bb0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDatamartService.java
@@ -0,0 +1,51 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.util.List;
+
+import org.eclipse.osbp.runtime.common.filter.IService;
+
+/**
+ * The Interface IDatamartService.
+ *
+ * @param <T> the generic beantype of a datamart
+ */
+public interface IDatamartService<T> extends IService {
+ List<T> getResults(String datamartFQN);
+
+ int size(IQuery createQuery);
+
+ boolean contains(T bean, IQuery createQuery);
+
+ T getNext(T bean, IQuery createQuery);
+
+ T getPrevious(T bean, IQuery createQuery);
+
+ T getFirst(IQuery createQuery);
+
+ T getLast(IQuery createQuery);
+
+ boolean isFirst(T bean, IQuery createQuery);
+
+ boolean isLast(T bean, IQuery createQuery);
+
+ int indexOf(T bean, IQuery createQuery);
+
+ T getByIndex(int index, IQuery createQuery);
+
+ List<T> getByIndex(int startIndex, int numberOfItems, IQuery createQuery);
+
+ T get(Object idValue);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IFilterEnhancer.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IFilterEnhancer.java
new file mode 100644
index 0000000..8c39c0c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IFilterEnhancer.java
@@ -0,0 +1,32 @@
+/**
+ * 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.filter;
+
+public interface IFilterEnhancer {
+
+ /**
+ * Enhance query to follow user filters
+ *
+ * @param query the query
+ */
+ void enhanceQuery(IQuery query);
+
+ /**
+ * Check get for direct id navigation
+ *
+ * @param entityClass the entity class
+ * @param id the id
+ * @return true, if successful
+ */
+ boolean checkGet(Class<?> entityClass, Object id);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IJPQL.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IJPQL.java
new file mode 100644
index 0000000..1a8b0eb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IJPQL.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.filter;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ *
+ * @noimplement by clients. Will be changed in future!
+ */
+public interface IJPQL extends Serializable {
+
+ /**
+ * Returns the JPQL.
+ *
+ * @return
+ */
+ String getJPQL();
+
+ /**
+ * Returns the map with additional information.
+ *
+ * @return
+ */
+ Map<String, Object> getParameters();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilter.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilter.java
new file mode 100644
index 0000000..94cecbe
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilter.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.filter;
+
+import java.io.Serializable;
+
+public interface ILFilter extends Serializable {
+
+ /**
+ * Check if a change in the value of a property can affect the filtering
+ * result. May always return true, at the cost of performance.
+ *
+ * If the filter cannot determine whether it may depend on the property
+ * or not, should return true.
+ *
+ * @param propertyId
+ * @return true if the filtering result may/does change based on changes
+ * to the property identified by propertyId
+ */
+ public boolean appliesToProperty(Object propertyId);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilterService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilterService.java
new file mode 100644
index 0000000..455446d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilterService.java
@@ -0,0 +1,33 @@
+/**
+ * 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.filter;
+
+/**
+ * Provides methods to create several filters.
+ */
+public interface ILFilterService {
+
+ /**
+ * Creates a filter following the SQL syntax:<br>
+ * <i>where {idProperty} <> {id} and {valueProperty} = {value}</i>
+ *
+ * @param value
+ * @param valueProperty
+ * @param id
+ * @param idProperty
+ * @return
+ */
+ ILFilter createUniqueEntryFilter(Object value, String valueProperty, Object id, String idProperty);
+
+
+ IQuery createQuery(ILFilter filter);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IQuery.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IQuery.java
new file mode 100644
index 0000000..db4c6e6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IQuery.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.filter;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ *
+ * @noimplement by clients. Will be changed in future!
+ */
+public interface IQuery extends Serializable {
+
+ /**
+ * Returns the root filter that should be used for the query.
+ *
+ * @return
+ */
+ ILFilter getFilter();
+
+ /**
+ * Replaces the root filter that should be used for the query.
+ *
+ */
+ void replaceFilter(ILFilter filter);
+
+ /**
+ * Returns the sortable columns.
+ *
+ * @return
+ */
+ SortOrder getSortOrder();
+
+ /**
+ * Returns the map with additional information.
+ *
+ * @return
+ */
+ Map<String, Object> getMap();
+
+}
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IService.java
similarity index 73%
rename from org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java
rename to org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IService.java
index 5ed5873..52d16d3 100644
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IService.java
@@ -8,10 +8,12 @@
* Contributors:
* Florian Pirchner - Initial implementation
*/
-package org.eclipse.osbp.runtime.security;
+package org.eclipse.osbp.runtime.common.filter;
-import org.apache.shiro.session.mgt.SessionManager;
+/**
+ * Provides methods to create several filters.
+ */
+public interface IService {
-public interface ISessionManagerService extends SessionManager {
-
+
}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortBy.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortBy.java
new file mode 100644
index 0000000..f43420e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortBy.java
@@ -0,0 +1,75 @@
+/**
+ * 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.filter;
+
+import java.io.Serializable;
+
+public class SortBy implements Serializable {
+
+ private static final long serialVersionUID = -6308560006578484770L;
+
+ /**
+ * The property ID to sort by.
+ */
+ private final Object propertyId;
+
+ /**
+ * True to sort ascendingly, false to sort descendingly.
+ */
+ private final boolean ascending;
+
+ /**
+ * Gets the property ID to sort by.
+ */
+ public Object getPropertyId() {
+ return propertyId;
+ }
+
+ /**
+ * Returns true to sort ascendingly, false to sort descendingly.
+ */
+ public boolean isAscending() {
+ return ascending;
+ }
+
+ /**
+ * Creates a new <code>SortBy</code> instance.
+ *
+ * @param propertyId
+ * the property ID to sort by (must not be null).
+ * @param ascending
+ * true to sort ascendingly, false to sort descendingly.
+ */
+ public SortBy(Object propertyId, boolean ascending) {
+ assert propertyId != null : "propertyId must not be null";
+ this.propertyId = propertyId;
+ this.ascending = ascending;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj.getClass() == getClass()) {
+ SortBy o = (SortBy) obj;
+ return o.propertyId.equals(propertyId) && o.ascending == ascending;
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = propertyId.hashCode();
+ hash = hash * 7 + new Boolean(ascending).hashCode();
+ return hash;
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortOrder.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortOrder.java
new file mode 100644
index 0000000..66d7dd6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortOrder.java
@@ -0,0 +1,44 @@
+/**
+ * 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.filter;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class SortOrder implements Serializable {
+
+ private final List<SortBy> sortBy = new ArrayList<SortBy>();
+
+ public SortOrder() {
+ }
+
+ /**
+ * @return the sortOrder
+ */
+ public List<SortBy> getSortBy() {
+ return sortBy;
+ }
+
+ /**
+ * @param e
+ * @return
+ * @see java.util.List#add(java.lang.Object)
+ */
+ public boolean add(SortBy e) {
+ return sortBy.add(e);
+ }
+
+ public void clear() {
+ sortBy.clear();
+ }
+
+}
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
index d93c3e6..a6c4afa 100644
--- 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
@@ -143,4 +143,34 @@
return result;
}
+ /**
+ * Key lookup integer.
+ *
+ * @param name of the key
+ * @return the integer
+ */
+ public static Integer keyLookupInteger(final String name) {
+ final Object value = keyCodeMappings.get(name);
+ if (value instanceof Integer) {
+ return (Integer) value;
+ }
+
+ return Integer.valueOf(name.charAt(0));
+ }
+
+ /**
+ * Modifier lookup.
+ *
+ * @param name of the modifier
+ * @return the int
+ */
+ public static int modifierLookup(final String name) {
+ final Object value = modifierMappings.get(name);
+ if (value instanceof Integer) {
+ return ((Integer) value).intValue();
+ }
+
+ return 0;
+ }
+
}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/AbstractSession.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/AbstractSession.java
new file mode 100644
index 0000000..66bae41
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/AbstractSession.java
@@ -0,0 +1,74 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.function.Function;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+
+/**
+ * A base implementation of the session using the SessionUnitOfWork to provide
+ * session scope.
+ */
+public abstract class AbstractSession implements ISession {
+
+ private Type sessionType = Type.MASTER;
+
+ @Override
+ public <T> T apply(Function<ISession, T> function) {
+ if (function == null) {
+ throw new NullPointerException("Function is null!");
+ }
+ return function.apply(this);
+ }
+
+ @Override
+ public <T> CompletableFuture<FutureResult<T>> async(final Function<ISession, T> function,
+ SessionCallback<T> callback) {
+ return async(function, callback, null);
+ }
+
+ @Override
+ public <T> CompletableFuture<FutureResult<T>> async(Function<ISession, T> function, SessionCallback<T> callback,
+ ExecutorService executor) {
+
+ CompletableFuture<T> promise = doAsync(function, executor);
+
+ CompletableFuture<FutureResult<T>> transformer = promise.handle((t, e) -> {
+ return new FutureResult<T>(this, t, e);
+ });
+
+ CompletableFuture<FutureResult<T>> notifier = transformer.whenComplete((r, t) -> {
+ if (callback == null) {
+ return;
+ }
+ callback.accept(r);
+ });
+ return notifier;
+
+ }
+
+ /**
+ * The implementation needs to synchronize the runnable with the underlying
+ * frameworks. For instance Vaadin UI. This method MUST NOT block.
+ *
+ * @param function
+ * @param executor
+ */
+ protected abstract <T> CompletableFuture<T> doAsync(final Function<ISession, T> function, ExecutorService executor);
+
+ @Override
+ public void sendData(Map<String, Object> data) {
+ // override if used
+ }
+
+ public Type getType() {
+ return sessionType;
+ }
+
+ public void setType(Type sessionType) {
+ this.sessionType = sessionType;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISession.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISession.java
new file mode 100644
index 0000000..471419f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISession.java
@@ -0,0 +1,154 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+
+/**
+ * And abstraction above a state. Eg. Vaadin UI.
+ */
+public interface ISession {
+
+ String HOSTNAME = "hostname";
+ String IS_SLAVE = "slave";
+
+ /**
+ * Returns the host address of the session.
+ *
+ * @return
+ */
+ String getHost();
+
+ /**
+ * Executes the function in the scope of the session.
+ *
+ * @param function
+ * @return
+ */
+ <T> T apply(Function<ISession, T> function);
+
+ /**
+ * Creates a {@link CompletableFuture} for the given function. This method
+ * must NOT block.
+ *
+ * @param function
+ * @param callback
+ * @return
+ */
+ <T> CompletableFuture<FutureResult<T>> async(final Function<ISession, T> function, SessionCallback<T> callback);
+
+ /**
+ * Creates a {@link CompletableFuture} for the given function. This method
+ * must NOT block.
+ *
+ * @param function
+ * @param callback
+ * @return
+ */
+ <T> CompletableFuture<FutureResult<T>> async(final Function<ISession, T> function, SessionCallback<T> callback,
+ ExecutorService executor);
+
+ /**
+ * Sends the given data to the session. Call must by synced.
+ *
+ * @param data
+ */
+ void sendData(Map<String, Object> data);
+
+ /**
+ * Returns the property associated with the key.
+ *
+ * @param key
+ * @return
+ */
+ <T> T get(Class<T> key);
+
+ /**
+ * Returns the property associated with the key.
+ *
+ * @param key
+ * @return
+ */
+ Object get(String key);
+
+ void set(String key, Object object);
+
+ /**
+ * Returns true, if the session has slave sessions. Otherwise false.
+ *
+ * @return
+ */
+ boolean isMasterSession();
+
+ /**
+ * Returns true, if the session is a slave session and has a master session.
+ * Otherwise false.
+ *
+ * @return
+ */
+ boolean isSlaveSession();
+
+ /**
+ * Returns the type {@link Type} of this session.
+ *
+ * @return
+ */
+ Type getType();
+
+ /**
+ * Returns the master session, if the session is a slave session.
+ * <code>Null</code> otherwise.
+ *
+ * @return
+ */
+ ISession getMaster();
+
+ /**
+ * Returns an unmodifiable list of all slave sessions connected to this
+ * master. Returns never <code>null</code>.
+ *
+ * @return
+ */
+ List<ISession> getSlaves();
+
+ /**
+ * Returns a list of slaves filtered by given filter.
+ * @param filter
+ * @return
+ */
+ List<ISession> getSlaves(Predicate<ISession> filter);
+
+ /**
+ * Adds a session which is a slave. Slaves are used to "paint" on web UIs
+ * controlled by the master session.
+ *
+ * @param name
+ * @return
+ */
+ void addSlave(ISession slave);
+
+ /**
+ * See {@link #addSlaveSession(ISession)}
+ *
+ * @param slave
+ */
+ void removeSlave(ISession slave);
+
+ /**
+ * In case of slave session, the session MUST provide a fragment following
+ * the pattern: {master-host}{UI-to-display}
+ *
+ * @return
+ */
+ String getFragment();
+
+ enum Type {
+ MASTER, SLAVE;
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISessionManager.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISessionManager.java
new file mode 100644
index 0000000..89e63ff
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISessionManager.java
@@ -0,0 +1,112 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+/**
+ * Is responsible to keep track of all {@link ISession}s in this JVM
+ * instance.<br>
+ * Sessions are added and removed automatically by the manager.
+ */
+public interface ISessionManager {
+
+ /**
+ * Returns an unmodifiable list of sessions.
+ *
+ * @param filter
+ * an optional filter which is used to filter the sessions before
+ * they are added to the result list.
+ * @return
+ */
+ List<ISession> getSessions(Predicate<ISession> filter);
+
+ /**
+ * Returns an unmodifiable list of sessions. This method MUST NOT block.
+ *
+ * @param filter
+ * an optional filter which is used to filter the sessions before
+ * they are added to the result list.
+ * @return
+ */
+ CompletableFuture<List<ISession>> getSessionsAsync(Predicate<ISession> filter);
+
+ /**
+ * Syncs all {@link ISession} with the given function in an async way. This
+ * method MUST NOT block.
+ *
+ * @param function
+ * The function to transform the session to a return value.
+ * @return {@link CompletableFuture} which is completed with a list of
+ * {@link FutureResult}
+ */
+ <T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function);
+
+ /**
+ * Syncs the {@link ISession}s matching the filter with the given function
+ * in an async way. This method MUST NOT block.
+ *
+ * @param function
+ * The function to transform the session to a return value.
+ * @return {@link CompletableFuture} which is completed with a list of
+ * {@link FutureResult}
+ * @param filter
+ * an optional filter which is used to filter the sessions before
+ * they are added to the result list.
+ * @return
+ */
+ <T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function, Predicate<ISession> filter);
+
+ /**
+ * Syncs all {@link ISession} with the given function in an async way. This
+ * method MUST NOT block.
+ *
+ * @param function
+ * The function to transform the session to a return value.
+ * @param callback
+ * The callback is attached to every future in the resulting list
+ * @return A list of {@link CompletableFuture}s. One
+ * {@link CompletableFuture} for each async request to
+ * {@link ISession#async(Function, SessionCallback)}
+ * {@link FutureResult}
+ */
+ <T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function, SessionCallback<T> callback);
+
+ /**
+ * Syncs the {@link ISession}s matching the filter with the given function
+ * in an async way. This method MUST NOT block.
+ *
+ * @param function
+ * The function to transform the session to a return value.
+ * @param callback
+ * The callback is attached to every future in the resulting list
+ * @param filter
+ * an optional filter which is used to filter the sessions before
+ * they are added to the result list.
+ * @return A list of {@link CompletableFuture}s. One
+ * {@link CompletableFuture} for each async request to
+ * {@link ISession#async(Function, SessionCallback)}
+ * {@link FutureResult}
+ */
+ <T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function, SessionCallback<T> callback,
+ Predicate<ISession> filter);
+
+ class FutureResult<T> {
+ public final ISession session;
+ public final T value;
+ public final Throwable error;
+
+ public final boolean isError;
+
+ public FutureResult(ISession session, T value, Throwable error) {
+ super();
+ this.session = session;
+ this.value = value;
+ this.error = error;
+
+ isError = error != null;
+ }
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionCallback.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionCallback.java
new file mode 100644
index 0000000..432965e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionCallback.java
@@ -0,0 +1,10 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+
+@FunctionalInterface
+public interface SessionCallback<T> {
+
+ void accept(FutureResult<T> result);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionUtil.java
new file mode 100644
index 0000000..b88cf54
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionUtil.java
@@ -0,0 +1,37 @@
+package org.eclipse.osbp.runtime.common.session;
+
+public class SessionUtil {
+
+ private SessionUtil(){
+
+ }
+
+ /**
+ * Splits the fragment by "," and returns the encoded info. Returns null, if no fragment available.
+ * @param fragment
+ * @return
+ */
+ public static Info getFragmentInfo(String fragment){
+ if(fragment == null){
+ return null;
+ }
+ String[] tokens = fragment.split("-");
+ if(tokens.length == 1) {
+ return null;
+ }
+ return new Info(tokens[0], tokens[1]);
+ }
+
+
+ public static class Info {
+ public final String host;
+ public final String ui;
+ public Info(String host, String ui) {
+ super();
+ this.host = host;
+ this.ui = ui;
+ }
+
+
+ }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/impl/SessionManager.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/impl/SessionManager.java
new file mode 100644
index 0000000..dfcdf50
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/impl/SessionManager.java
@@ -0,0 +1,196 @@
+package org.eclipse.osbp.runtime.common.session.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+import org.eclipse.osbp.runtime.common.session.ISession;
+import org.eclipse.osbp.runtime.common.session.ISessionManager;
+import org.eclipse.osbp.runtime.common.session.SessionCallback;
+import org.eclipse.osbp.runtime.common.session.SessionUtil;
+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.component.annotations.ReferencePolicy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(immediate = true)
+public class SessionManager implements ISessionManager {
+
+ static Logger LOGGER = LoggerFactory.getLogger(SessionManager.class);
+
+ List<ISession> sessions;
+
+ ExecutorService executorService;
+
+ @Activate
+ void activate() {
+ sessions = new CopyOnWriteArrayList<>();
+ executorService = Executors.newFixedThreadPool(3, (r) -> {
+ Thread t = new Thread(r);
+ t.setDaemon(true);
+ t.setName(SessionManager.class.getName() + "-" + new Date().getTime());
+ return t;
+ });
+ }
+
+ @Deactivate
+ void deactivate() {
+ sessions.clear();
+ sessions = null;
+
+ try {
+ executorService.awaitTermination(5, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ executorService.shutdownNow();
+ }
+ }
+
+ @Override
+ public List<ISession> getSessions(Predicate<ISession> filter) {
+ if (filter == null) {
+ return Collections.unmodifiableList(sessions);
+ } else {
+ List<ISession> result = new ArrayList<>();
+ for (ISession session : sessions.toArray(new ISession[sessions.size()])) {
+ if (filter != null && !filter.test(session)) {
+ continue;
+ }
+ result.add(session);
+ }
+ return Collections.unmodifiableList(result);
+ }
+ }
+
+ @Override
+ public CompletableFuture<List<ISession>> getSessionsAsync(Predicate<ISession> filter) {
+ return CompletableFuture.supplyAsync(() -> getSessions(filter), executorService);
+ }
+
+ @Override
+ public <T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function) {
+ return asyncAll(function, null);
+ }
+
+ @Override
+ public <T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function,
+ Predicate<ISession> filter) {
+
+ // create a promise
+ CompletableFuture<List<FutureResult<T>>> promise = new CompletableFuture<>();
+
+ // query the sessions async
+ CompletableFuture<List<ISession>> sessions = getSessionsAsync(filter);
+
+ // if sessions queried, then call session#async for each session
+ sessions.thenCompose((_sessions) -> {
+ List<CompletableFuture<FutureResult<T>>> asyncs = collectSessionAsyncCalls(_sessions, function);
+
+ // we need a trigger which triggers, if all s#async are done
+ CompletableFuture<Void> allOfTrigger = CompletableFuture
+ .allOf(asyncs.toArray(new CompletableFuture<?>[asyncs.size()]));
+ allOfTrigger.thenRun(() -> {
+ // now lets collect the values from the async calls
+ List<FutureResult<T>> tempResult = asyncs.stream().map((a) -> a.join()).collect(Collectors.toList());
+
+ // and notify the promise
+ promise.complete(tempResult);
+ });
+
+ return allOfTrigger;
+ });
+
+ return promise;
+ }
+
+ /**
+ * Collects all async session calls and returns the resulting list.
+ *
+ * @param sessions
+ * @param function
+ * @return
+ */
+ <T> List<CompletableFuture<FutureResult<T>>> collectSessionAsyncCalls(List<ISession> sessions,
+ Function<ISession, T> function) {
+ List<CompletableFuture<FutureResult<T>>> asyncs = sessions.stream()
+ .<CompletableFuture<FutureResult<T>>>map((s) -> s.async(function, null)).collect(Collectors.toList());
+ return asyncs;
+ }
+
+ @Override
+ public <T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function,
+ SessionCallback<T> callback) {
+ return asyncEach(function, callback, null);
+ }
+
+ @Override
+ public <T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function,
+ SessionCallback<T> callback, Predicate<ISession> filter) {
+
+ // query the sessions sync
+ List<ISession> sessions = getSessions(filter);
+
+ // create future list querying the FutureResult async
+ List<CompletableFuture<FutureResult<T>>> result = sessions.stream().map((s) -> s.async(function, callback))
+ .collect(Collectors.toList());
+ return result;
+ }
+
+ @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+ void addSession(ISession session) {
+ if (session.isSlaveSession()) {
+ // register slave
+ session.set(ISession.IS_SLAVE, true);
+ SessionUtil.Info info = SessionUtil.getFragmentInfo(session.getFragment());
+ if (info != null) {
+ List<ISession> temp = getSessions((s) -> ((String)s.get(ISession.HOSTNAME)).equalsIgnoreCase(info.host));
+
+ for (ISession s : temp) {
+ if (s.getType() == ISession.Type.MASTER) {
+ s.addSlave(session);
+ break;
+ }
+ }
+ }
+ } else {
+ // register master
+ List<ISession> temp = getSessions((s) -> ((Boolean)s.get(ISession.IS_SLAVE)));
+ for (ISession s : temp) {
+ session.addSlave(s);
+ }
+ }
+ session.set(ISession.HOSTNAME, session.getHost());
+ sessions.add(session);
+ }
+
+ void removeSession(ISession session) {
+ if (session.isSlaveSession()) {
+ SessionUtil.Info info = SessionUtil.getFragmentInfo(session.getFragment());
+ if (info != null) {
+ List<ISession> temp = getSessions((s) -> ((String)s.get(ISession.HOSTNAME)).equalsIgnoreCase(info.host));
+
+ for (ISession s : temp) {
+ if (s.isMasterSession()) {
+ s.removeSlave(session);
+ break;
+ }
+ }
+ }
+ }
+ sessions.remove(session);
+
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/BeanUtils.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/BeanUtils.java
new file mode 100644
index 0000000..8aba595
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/BeanUtils.java
@@ -0,0 +1,259 @@
+package org.eclipse.osbp.runtime.common.util;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.osbp.runtime.common.annotations.AsKanbanState;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.annotations.Filter;
+import org.eclipse.osbp.runtime.common.annotations.OnKanbanCard;
+import org.eclipse.osbp.runtime.common.annotations.Range;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BeanUtils {
+
+ /** The Constant LOGGER. */
+ private static final Logger LOGGER = LoggerFactory.getLogger(BeanUtils.class);
+
+ public static List<Field> getAllFilteringFields(Class<?> clazz) {
+ List<Field> result = new ArrayList<>();
+
+ for (Field field : getAllFields(clazz)) {
+ if (field.isAnnotationPresent(Range.class) || field.isAnnotationPresent(Filter.class)) {
+ result.add(field);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns all filtering fields recurse to the defined depth.
+ *
+ * @param clazz
+ * @param depth
+ * @return
+ */
+ public static List<Field> getAllFilteringFieldsRecurse(Class<?> clazz, int depth) {
+ List<Field> result = new ArrayList<>();
+ if (depth == -1) {
+ return result;
+ }
+
+ for (Field field : getAllFields(clazz)) {
+ if (field.isAnnotationPresent(Range.class) || field.isAnnotationPresent(Filter.class)) {
+ result.add(field);
+ } else if (field.isAnnotationPresent(DomainReference.class)) {
+ result.addAll(getAllFilteringFieldsRecurse(field.getType(), depth--));
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns all property ids (eg: person.country.isocode) recurse to the
+ * defined depth.
+ *
+ * @param clazz
+ * @param depth
+ * @return
+ */
+ public static List<String> getAllFilteringProperties(Class<?> clazz, int depth) {
+ List<String> result = new ArrayList<>();
+ if (depth == -1) {
+ return result;
+ }
+
+ return internalGetAllFilteringProperties(null, clazz, depth);
+ }
+
+ private static List<String> internalGetAllFilteringProperties(String currentPath, Class<?> clazz, int depth) {
+ List<String> result = new ArrayList<>();
+ if (depth == -1) {
+ return result;
+ }
+
+ String newPath = currentPath;
+ int newDepth = depth - 1;
+
+ if (currentPath == null) {
+ newPath = "";
+ }
+
+ for (Field field : getAllFields(clazz)) {
+ if (field.isAnnotationPresent(Range.class) || field.isAnnotationPresent(Filter.class)) {
+ result.add(toPath(newPath, field.getName()));
+ } else if (field.isAnnotationPresent(DomainReference.class)) {
+ result.addAll(
+ internalGetAllFilteringProperties(toPath(newPath, field.getName()), field.getType(), newDepth));
+ }
+ }
+
+ return result;
+ }
+
+ private static String toPath(String currentPath, String fieldName) {
+ if (currentPath == null || currentPath.trim().equals("")) {
+ return fieldName;
+ } else {
+ return currentPath + "." + fieldName;
+ }
+ }
+
+ public static List<Field> getAllFields(Class<?> clazz) {
+ if (clazz == null) {
+ return null;
+ }
+
+ List<Field> result = new ArrayList<>();
+ try {
+ result.addAll(Arrays.asList(clazz.getDeclaredFields()));
+ } catch (SecurityException e) {
+ LOGGER.warn("{}", e);
+ }
+
+ Class<?> superClass = clazz.getSuperclass();
+ if (superClass != null) {
+ List<Field> temp = getAllFields(superClass);
+ result.addAll(temp);
+ }
+ return result;
+ }
+
+ /**
+ * Returns the enum literals of the field annotated with AsKanbanState. Or
+ * null.
+ *
+ * @param clazz
+ * @return
+ */
+ public static <T> T[] getKanbanStateEnumLiterals(Class<?> clazz) {
+ if (clazz == null) {
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ Class<T> enumx = (Class<T>) getAllFields(clazz).stream().filter(f -> f.isAnnotationPresent(AsKanbanState.class))
+ .findFirst().map(f -> f.getType()).orElse(null);
+ if (enumx != null && enumx.isEnum()) {
+ return enumx.getEnumConstants();
+ }
+ return null;
+ }
+
+ /**
+ * Returns the enum literals of the field annotated with AsKanbanState. Or
+ * null.
+ *
+ * @param clazz
+ * @return
+ */
+ public static List<String> getKanbanVisibleOnCardProperties(Class<?> clazz) {
+ if (clazz == null) {
+ return null;
+ }
+
+ return getAllFields(clazz).stream().filter(f -> f.isAnnotationPresent(OnKanbanCard.class))
+ .map(f -> f.getName()).collect(Collectors.toList());
+ }
+
+ /**
+ * Returns the state value of the given itemId.
+ *
+ * @param itemId
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> T getKanbanState(Object itemId) {
+ Field stateField = getAllFields(itemId.getClass()).stream()
+ .filter(f -> f.isAnnotationPresent(AsKanbanState.class)).findFirst().orElse(null);
+ if (stateField != null) {
+ return (T) DtoUtils.getValue(itemId, stateField.getName());
+ }
+
+ return null;
+ }
+
+ public static Class<?> getNestedFieldType(Class<?> clazz, String dotedPath) {
+ Field field = getNestedField(clazz, dotedPath);
+ return field != null ? field.getType() : null;
+ }
+
+ public static Field getNestedField(Class<?> clazz, String dotedPath) {
+
+ String[] tokens = dotedPath.split("\\.");
+
+ Field field = null;
+ Class<?> fieldType = clazz;
+ for (String token : tokens) {
+ field = getField(fieldType, token);
+ if (field == null) {
+ return null;
+ }
+
+ fieldType = field.getType();
+ }
+
+ return field;
+ }
+
+ public static Field getField(Class<?> clazz, String name) {
+ if (clazz == null) {
+ return null;
+ }
+ Field field = null;
+ try {
+ field = clazz.getDeclaredField(name);
+ } catch (SecurityException e) {
+ LOGGER.warn("{}", e);
+ } catch (NoSuchFieldException e) {
+ }
+
+ if (field == null) {
+ Class<?> superClass = clazz.getSuperclass();
+ if (superClass != null) {
+ field = getField(superClass, name);
+ }
+ }
+ return field;
+ }
+
+ public static boolean isBoolean(Class<?> clazz, String propertyId) {
+ Class<?> type = getNestedFieldType(clazz, propertyId);
+ return type == Boolean.class || type == Boolean.TYPE;
+ }
+
+ public static boolean isDate(Class<?> clazz, String propertyId) {
+ Class<?> type = getNestedFieldType(clazz, propertyId);
+ return Date.class.isAssignableFrom(type);
+ }
+
+ public static boolean isDecimal(Class<?> clazz, String propertyId) {
+ Class<?> type = getNestedFieldType(clazz, propertyId);
+ return type != String.class && type != Boolean.class && type != Boolean.TYPE
+ && (type.isPrimitive() || Number.class.isAssignableFrom(type));
+ }
+
+ public static boolean isString(Class<?> clazz, String propertyId) {
+ Class<?> type = getNestedFieldType(clazz, propertyId);
+ return type == String.class;
+ }
+
+ public static boolean isAnnotationPresent(Class<?> clazz, String nestedPropertyId,
+ Class<? extends Annotation> annotation) {
+ Field field = getNestedField(clazz, nestedPropertyId);
+ if (field == null) {
+ return false;
+ }
+ return field.isAnnotationPresent(annotation);
+ }
+
+}
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.classpath b/org.eclipse.osbp.runtime.datasource.provider/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..7a53139
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
+encoding/src=UTF-8
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..13b3428
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
index ab4b857..975b3eb 100644
--- a/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
@@ -18,7 +18,7 @@
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.gemini.naming;bundle-version="[1.0.5,1.0.6)",
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
diff --git a/org.eclipse.osbp.runtime.designer.api/.classpath b/org.eclipse.osbp.runtime.designer.api/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.designer.api/.gitignore b/org.eclipse.osbp.runtime.designer.api/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a698e59
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.classpath b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
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
index 3df4750..d80784c 100644
--- a/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF
@@ -9,4 +9,3 @@
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.ecore.bundlespace/.classpath b/org.eclipse.osbp.runtime.ecore.bundlespace/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.gitignore b/org.eclipse.osbp.runtime.ecore.bundlespace/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
index 2df7f33..4e53e29 100644
--- a/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.osbp.runtime.ecore.bundlespace
Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-SymbolicName: org.eclipse.osbp.runtime.ecore.bundlespace
Bundle-Version: 0.9.0.qualifier
Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/org.eclipse.osbp.runtime.emf/.classpath b/org.eclipse.osbp.runtime.emf/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.event/.classpath b/org.eclipse.osbp.runtime.event/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.event/.gitignore b/org.eclipse.osbp.runtime.event/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
index bcdeed9..dc3a1e7 100644
--- a/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.osbp.runtime.event
Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-SymbolicName: org.eclipse.osbp.runtime.event
Bundle-Version: 0.9.0.qualifier
Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/.gitignore b/org.eclipse.osbp.runtime.feature.allinone.testframework/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/src/license/THIRD-PARTY.properties b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/license/THIRD-PARTY.properties
new file mode 100644
index 0000000..652694d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/license/THIRD-PARTY.properties
@@ -0,0 +1,27 @@
+# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
+#-------------------------------------------------------------------------------
+# Already used licenses in project :
+# - Apache License 2.0
+# - BSD License
+# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+# (CDDL)
+# Version
+# 1.0
+# - Common Public License Version 1.0
+# - Eclipse Public License v1.0
+# - GNU LGPL 3
+# - Indiana University Extreme! Lab Software
+# License,
+# vesion 1.1.1
+# - Lesser General Public License (LPGL)
+# - Lesser General Public License (LPGL) v 2.1
+# - MIT License
+# - The Apache Software License, Version 2.0
+#-------------------------------------------------------------------------------
+# Please fill the missing licenses for dependencies :
+#
+#
+#Mon Feb 09 16:05:30 CET 2015
+org.eclipse.gemini--org.apache.derby--10.8.2.2=
+org.eclipse.gemini--org.eclipse.gemini.dbaccess.derby--1.1.0.RELEASE=
+org.eclipse.gemini--org.eclipse.gemini.dbaccess.util--1.1.0.RELEASE=
diff --git a/org.eclipse.osbp.runtime.feature.common/.gitignore b/org.eclipse.osbp.runtime.feature.common/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.common/feature.xml b/org.eclipse.osbp.runtime.feature.common/feature.xml
index 1b1e145..fd8dfbb 100644
--- a/org.eclipse.osbp.runtime.feature.common/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.common/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.common"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.common">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.gitignore b/org.eclipse.osbp.runtime.feature.datasource.provider/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
index 9a9ed70..2e33c1c 100644
--- a/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.datasource.provider"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.datasource.provider">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.gitignore b/org.eclipse.osbp.runtime.feature.e4eventmanager/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
index cbd2795..de6feab 100644
--- a/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.e4eventmanager"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.event">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.gitignore b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
index 2382144..90d4c3b 100644
--- a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.eclipselink.core.fragment"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.eclipselink.core.fragment">
<description>
%description
@@ -28,14 +29,7 @@
%license
</license>
- <plugin
- id="org.apache.aries.transaction.manager"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
+ <plugin
id="org.eclipse.osbp.runtime.eclipselink.core.fragment"
download-size="0"
install-size="0"
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
index eda9658..38f0c57 100644
--- a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
@@ -40,7 +40,6 @@
<labelSuffix> (source)</labelSuffix>
<excludes>
<plugin id="org.eclipse.persistence.core"/>
- <plugin id="org.apache.aries.transaction.manager"/>
</excludes>
</configuration>
</plugin>
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.gitignore b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
index 2523749..282ee2d 100644
--- a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.ecore.bundlespace"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.ecore.bundlespace">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.gitignore b/org.eclipse.osbp.runtime.feature.jsr303.validation/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
index 3a293eb..d0316d1 100644
--- a/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.jsr303.validation"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.jsr303.validation">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.gitignore b/org.eclipse.osbp.runtime.feature.resolverhooks/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
index 0520982..2dcb42f 100644
--- a/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.resolverhooks"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.systemextension">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.gitignore b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
index 7e0d31b..f96901d 100644
--- a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.runtime.feature.typeprovider.bundlespace"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.runtime.typeprovider.bundlespace">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.classpath b/org.eclipse.osbp.runtime.jsr303.validation/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.gitignore b/org.eclipse.osbp.runtime.jsr303.validation/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
index 7ead445..9b684a6 100644
--- a/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
@@ -2,22 +2,18 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.osbp.runtime.jsr303.validation
Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
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",
+Import-Package: 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
+Service-Component: OSGI-INF/*.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)"
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ javax.validation.api;bundle-version="1.1.0"
Bundle-Activator: org.eclipse.osbp.runtime.jsr303.validation.Activator
Export-Package: org.eclipse.osbp.runtime.jsr303.validation.common;version="0.9.0"
+Bundle-ClassPath: .
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/build.properties b/org.eclipse.osbp.runtime.jsr303.validation/build.properties
index 53ea953..5ae90c0 100644
--- a/org.eclipse.osbp.runtime.jsr303.validation/build.properties
+++ b/org.eclipse.osbp.runtime.jsr303.validation/build.properties
@@ -1,5 +1,9 @@
output.. = target/classes/
-bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+bin.includes = about.properties,\
+ about.mappings,\
+ about.ini,\
+ about.html,\
+ META-INF/,\
.,\
.project,\
.classpath,\
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
index 23111f2..b60abd1 100644
--- 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
@@ -16,6 +16,7 @@
import java.util.Locale;
import java.util.ResourceBundle;
+import javax.validation.*;
import org.apache.bval.jsr303.DefaultMessageInterpolator;
import org.eclipse.osbp.runtime.common.i18n.II18nService;
import org.eclipse.osbp.runtime.jsr303.validation.common.ValidationUtil;
@@ -46,7 +47,7 @@
}
@Override
- public String interpolate(String message, Context context, Locale locale) {
+ public String interpolate(String message, MessageInterpolator.Context context, Locale locale) {
String result = "";
if (i18nService != null) {
@@ -63,7 +64,7 @@
}
@Override
- public String interpolate(String message, Context context) {
+ public String interpolate(String message, MessageInterpolator.Context context) {
return super.interpolate(message, context);
}
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
index af1c654..c5f2843 100644
--- 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
@@ -11,19 +11,22 @@
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*/
- package org.eclipse.osbp.runtime.jsr303.validation.common;
+package org.eclipse.osbp.runtime.jsr303.validation.common;
import java.util.HashSet;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import javax.validation.ConstraintViolation;
+import javax.validation.MessageInterpolator;
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;
+import org.eclipse.osbp.runtime.jsr303.validation.OSGiMessageInterpolator;
public class ValidationUtil {
@@ -31,6 +34,18 @@
super();
}
+ public static MessageInterpolator createNewMessageInterpolator(Locale locale) {
+ OSGiMessageInterpolator interpolator = new OSGiMessageInterpolator();
+ interpolator.setLocale(locale);
+ return interpolator;
+ }
+
+ public static void updateLocale(MessageInterpolator interpolator, Locale locale) {
+ if (interpolator instanceof OSGiMessageInterpolator) {
+ ((OSGiMessageInterpolator) interpolator).setLocale(locale);
+ }
+ }
+
/**
* Maps the contraint violations to IStatus.
*
@@ -46,15 +61,11 @@
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());
+ 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());
+ 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());
@@ -67,8 +78,7 @@
}
protected static String getMessageCode(ConstraintViolation<?> violation) {
- String message = violation.getMessageTemplate().substring(1,
- violation.getMessageTemplate().length() - 1);
+ String message = violation.getMessageTemplate().substring(1, violation.getMessageTemplate().length() - 1);
if (message.contains(":")) {
String[] tokens = message.split(":");
return tokens[1];
@@ -77,11 +87,9 @@
return violation.getPropertyPath().toString();
}
- protected static IStatus.Severity getSeverity(
- ConstraintViolation<?> violation) {
+ protected static IStatus.Severity getSeverity(ConstraintViolation<?> violation) {
IStatus.Severity severity = IStatus.Severity.ERROR;
- Set<Class<? extends Payload>> payloads = violation
- .getConstraintDescriptor().getPayload();
+ Set<Class<? extends Payload>> payloads = violation.getConstraintDescriptor().getPayload();
if (payloads.size() > 0) {
Class<? extends Payload> payload = payloads.iterator().next();
if (payload == InfoSeverity.class) {
@@ -101,8 +109,7 @@
for (Map.Entry<String, Object> entry : props.entrySet()) {
String replacement = "\\{" + entry.getKey() + "\\}";
- message = message.replaceAll(replacement, entry.getValue()
- .toString());
+ message = message.replaceAll(replacement, entry.getValue().toString());
}
return message;
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.classpath b/org.eclipse.osbp.runtime.logback.fragment/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
index 889ce06..f73d831 100644
--- a/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
@@ -6,3 +6,5 @@
Bundle-Version: 0.9.0.qualifier
Fragment-Host: ch.qos.logback.classic
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: ch.qos.logback.core.rolling;version="1.1.2",
+ ch.qos.logback.core.rolling.helper;version="1.1.2"
diff --git a/org.eclipse.osbp.runtime.logback.fragment/logback.xml b/org.eclipse.osbp.runtime.logback.fragment/logback.xml
deleted file mode 100644
index c426104..0000000
--- a/org.eclipse.osbp.runtime.logback.fragment/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<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.memento/.classpath b/org.eclipse.osbp.runtime.memento/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.memento/.gitignore b/org.eclipse.osbp.runtime.memento/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
index f922205..9e0419e 100644
--- a/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.osbp.runtime.memento
Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-SymbolicName: org.eclipse.osbp.runtime.memento
Bundle-Version: 0.9.0.qualifier
Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/org.eclipse.osbp.runtime.security/.project b/org.eclipse.osbp.runtime.security/.project
deleted file mode 100644
index 50329a7..0000000
--- a/org.eclipse.osbp.runtime.security/.project
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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
deleted file mode 100644
index ff42ad4..0000000
--- a/org.eclipse.osbp.runtime.security/LICENSE.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-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
deleted file mode 100644
index 6884709..0000000
--- a/org.eclipse.osbp.runtime.security/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,21 +0,0 @@
-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
deleted file mode 100644
index fab37ab..0000000
--- a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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
deleted file mode 100644
index 99e251d..0000000
--- a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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
deleted file mode 100644
index 64c0598..0000000
--- a/org.eclipse.osbp.runtime.security/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!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
deleted file mode 100644
index 7df671f..0000000
--- a/org.eclipse.osbp.runtime.security/about.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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
deleted file mode 100644
index 4511a0a..0000000
--- a/org.eclipse.osbp.runtime.security/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# 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
deleted file mode 100644
index 706c165..0000000
--- a/org.eclipse.osbp.runtime.security/about.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# 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
deleted file mode 100644
index e79b84a..0000000
--- a/org.eclipse.osbp.runtime.security/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-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
deleted file mode 100644
index d5b7204..0000000
--- a/org.eclipse.osbp.runtime.security/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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/impl/JdbcRealmComponent.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java
deleted file mode 100644
index 73edbed..0000000
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 1660d1a..0000000
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/LdapRealmComponent.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 93a93e3..0000000
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/SecurityManagerComponent.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * 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/.classpath b/org.eclipse.osbp.runtime.systemextension/.classpath
new file mode 100644
index 0000000..b9a5b1e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f42de36
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.classpath b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.gitignore b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
index 84d0800..bb651ef 100644
--- a/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
@@ -2,12 +2,11 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.osbp.runtime.typeprovider.bundlespace
Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
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
+Service-Component: OSGI-INF/*.xml
Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.runtime.usernotification/.classpath b/org.eclipse.osbp.runtime.usernotification/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.usernotification/.gitignore b/org.eclipse.osbp.runtime.usernotification/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
index fb3a9c7..14cfd41 100644
--- a/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.osbp.runtime.usernotification
Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-SymbolicName: org.eclipse.osbp.runtime.usernotification
Bundle-Version: 0.9.0.qualifier
Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/pom.xml b/pom.xml
index 94d0e3d..6d91483 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,113 +7,120 @@
<!--# http://www.eclipse.org/legal/epl-v10.html -->
<!--# -->
<!--# Contributors: -->
-<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--# 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>
+<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>
+ <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>
+ <groupId>org.eclipse.osbp.runtime</groupId>
+ <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
- <packaging>pom</packaging>
+ <packaging>pom</packaging>
- <properties>
- <osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
- </properties>
+ <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>
+ <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>
- <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>
+ <!-- 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>
+
+ <repositories>
+ <repository>
+ <id>osbp-nexus-thirdparty</id>
+ <url>http://download.osbee.org:8086/nexus/content/repositories/osbee-thirdparty/</url>
+ </repository>
+ </repositories>
+
+ <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>