Skip to content

Commit

Permalink
updated to latest geckoEMF
Browse files Browse the repository at this point in the history
Signed-off-by: Juergen Albert <j.albert@data-in-motion.biz>
  • Loading branch information
juergen-albert committed Feb 26, 2024
1 parent 4ccbaf7 commit e6c83a8
Show file tree
Hide file tree
Showing 50 changed files with 1,871 additions and 351 deletions.
3 changes: 3 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
</classpath>
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
generated/
/.metadata/
/build/
bin/
11 changes: 11 additions & 0 deletions .project
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>_</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>
21 changes: 4 additions & 17 deletions cnf/build.bnd
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
-library: \
geckoEMF,\
geckoOSGi-Test,\
geckoDIMC

geckoDIMC,\
geckoEMFUtil
# Needed because we enabled library 'gecko-dimc'
github-project: org.gecko.emf.persistence
base-version: 1.0.0.SNAPSHOT
Expand All @@ -19,24 +19,11 @@ base-version: 1.0.0.SNAPSHOT
restrict:=error;\
is:=warning

javac.source: 11
javac.target: 11
javac.source: 17
javac.target: 17

-require-bnd "(version>=6.2.0)"

# This can be removed with geckoEMF > 4.1.1, because it should be then included in the library
-enable-emf: false
-buildpath.emf: ${if;${-enable-emf};${emf.lib}}

# Default build path when using EMF and Gecko EMF
emf.lib: \
org.osgi.service.component.annotations;version=1.4,\
org.osgi.framework;version=1.9,\
org.gecko.emf.osgi.api;version=latest,\
org.eclipse.emf.common;version=latest,\
org.eclipse.emf.ecore;version=latest,\
org.eclipse.emf.ecore.xmi;version=latest

-plugin.Central: \
aQute.bnd.repository.maven.provider.MavenBndRepository; \
snapshotUrl="https://oss.sonatype.org/content/repositories/snapshots/"; \
Expand Down
15 changes: 7 additions & 8 deletions cnf/central.mvn
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ org.apache.felix:org.apache.felix.cm.json:1.0.6
org.apache.felix:org.apache.felix.log.extension:1.0.0
org.apache.felix:org.apache.felix.log:1.2.4
org.apache.felix:org.apache.felix.metatype:1.2.4
org.apache.felix:org.apache.felix.scr:2.1.30
org.apache.felix:org.apache.felix.shell.remote:1.2.0
org.apache.felix:org.apache.felix.threaddump:1.0.0
org.apache.felix:org.apache.felix.useradmin:1.0.4
Expand Down Expand Up @@ -147,14 +146,12 @@ org.eclipse.jdt:org.eclipse.jdt.core:3.26.0
org.freemarker:freemarker:2.3.31
org.apiguardian:apiguardian-api:1.1.1

org.geckoprojects.bnd:org.gecko.bnd.dimc.library:1.2.0
org.geckoprojects.bnd:org.gecko.bnd.osgitest.library:1.2.0
org.geckoprojects.bnd:org.gecko.bnd.jacoco.library:1.2.0
org.geckoprojects.bnd:org.gecko.bnd.dimc.library:1.5.0
org.geckoprojects.bnd:org.gecko.bnd.osgitest.library:1.5.0
org.geckoprojects.bnd:org.gecko.bnd.jacoco.library:1.5.0

#org.geckoprojects.emf:org.gecko.emf.osgi.api:4.4.0
#org.geckoprojects.emf:org.gecko.emf.osgi.component:4.4.0
org.geckoprojects.emf:org.gecko.emf.osgi.bnd.library.workspace:4.4.0
org.geckoprojects.emf:org.gecko.emf.osgi.example.model.basic:4.4.0
org.geckoprojects.emf:org.gecko.emf.osgi.bnd.library.workspace:6.1.0
org.geckoprojects.emf.utils:org.gecko.emf.util.jakartars.bnd.library.workspace:2.3.0

org.geckoprojects.emf.utils:org.gecko.emf.util.model:2.1.0

Expand All @@ -171,3 +168,5 @@ org.ops4j.pax.jdbc:pax-jdbc-derby:1.5.5

#PostgresQL
org.postgresql:postgresql:42.5.1
org.geckoprojects.emf:org.gecko.emf.osgi.example.model.basic:6.1.1
org.apache.felix:org.apache.felix.scr:2.2.10
Binary file not shown.
Binary file not shown.
Binary file not shown.
436 changes: 236 additions & 200 deletions cnf/local/index.xml

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion org.gecko.emf.persistence.jdbc.tests/bnd.bnd
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ Test-Cases: ${classes;HIERARCHY_INDIRECTLY_ANNOTATED;org.junit.platform.commons.
org.gecko.emf.persistence;version=snapshot,\
org.osgi.service.jdbc,\
org.gecko.emf.persistence.jdbc,\
org.postgresql.jdbc
org.postgresql.jdbc,\
org.gecko.emf.osgi.api,\
org.osgi.service.cm

Private-Package: org.gecko.emf.persistence.jdbc.tests

Expand Down
620 changes: 570 additions & 50 deletions org.gecko.emf.persistence.jdbc.tests/derby.log

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.gecko.emf.osgi.constants.EMFNamespaces;
import org.gecko.emf.persistence.PersistenceConstants;
import org.gecko.emf.persistence.helper.PersistenceHelper;
import org.gecko.emf.persistence.helper.PersistenceHelper.EMFPersistenceContext;
import org.gecko.emf.persistence.jdbc.JdbcHelper;
Expand All @@ -44,6 +46,7 @@
import de.jena.mdo.model.dbtree.DBTree;
import de.jena.mdo.model.dbtree.DbtreeFactory;
import de.jena.mdo.model.dbtree.DbtreePackage;
import org.osgi.service.cm.annotations.RequireConfigurationAdmin;

//import org.mockito.Mock;
//import org.mockito.junit.jupiter.MockitoExtension;
Expand All @@ -57,6 +60,7 @@
@ExtendWith(BundleContextExtension.class)
@ExtendWith(ServiceExtension.class)
@ExtendWith(ConfigurationExtension.class)
@RequireConfigurationAdmin
//@ExtendWith(MockitoExtension.class)
public class TreeExampleDerbyTest {

Expand All @@ -74,6 +78,7 @@ public void before(@InjectBundleContext BundleContext ctx) {
@WithFactoryConfigurations ({
@WithFactoryConfiguration(name="test", location = "?", factoryPid = "org.gecko.datasource", properties = {
@Property(key = "datasource.name", value = "DerbyTest"),
@Property(key = PersistenceConstants.PROPERTY_PERSISTENCE_NAME, value = "DerbyTest"),
@Property(key = "datasource.delegate.target", value = "(" + OSGI_JDBC_DRIVER_NAME + "=derby)"),
@Property(key = "datasource.dialect", value = "derby"),
@Property(key = "datasource.databaseName", value = "TEST"),
Expand All @@ -88,8 +93,8 @@ public void before(@InjectBundleContext BundleContext ctx) {
@Property(key = "persistence.jdbc.ds.target", value = "(datasource.name=DerbyTest)")
})
})
public void testSaveTree(@InjectService(filter = "(&(emf.configurator.name=emf.persistence.jdbc.derbytest)(emf.model.name=dbtree))") ResourceSet resourceSet,
@InjectService(filter = "(name=DerbyTest)") DataSourceFactory dsFactory) {
public void testSaveTree(@InjectService(filter = "(&(" + EMFNamespaces.EMF_CONFIGURATOR_NAME + "=emf.persistence.jdbc)(" + EMFNamespaces.EMF_MODEL_NAME + "=dbtree))", timeout = 5000) ResourceSet resourceSet,
@InjectService(filter = "(datasource.name=DerbyTest)", timeout = 5000) DataSourceFactory dsFactory) {
assertNotNull(resourceSet);
assertNotNull(dsFactory);
String dbUrl = String.format(DB_TEMPLATE, "TEST");
Expand Down Expand Up @@ -122,6 +127,7 @@ public void testSaveTree(@InjectService(filter = "(&(emf.configurator.name=emf.p
@WithFactoryConfigurations ({
@WithFactoryConfiguration(name="test", location = "?", factoryPid = "org.gecko.datasource", properties = {
@Property(key = "datasource.name", value = "DerbyTest"),
@Property(key = PersistenceConstants.PROPERTY_PERSISTENCE_NAME, value = "DerbyTest"),
@Property(key = "datasource.delegate.target", value = "(" + OSGI_JDBC_DRIVER_NAME + "=derby)"),
@Property(key = "datasource.dialect", value = "derby"),
@Property(key = "datasource.databaseName", value = "TEST"),
Expand All @@ -131,11 +137,15 @@ public void testSaveTree(@InjectService(filter = "(&(emf.configurator.name=emf.p
@Property(key = "datasource.password", value = "1234")
}),
@WithFactoryConfiguration(name="Derby-Test", location = "?", factoryPid = "org.gecko.persistence.jdbc", properties = {
@Property(key = "name", value = "derbytest"),
@Property(key = "dataSource.target", value = "(datasource.name=DerbyTest)")
@Property(key = "persistence.name", value = "derbytest"),
@Property(key = "persistence.jdbc.ds.target", value = "(datasource.name=DerbyTest)")
})
})
public void testLoadTree(@InjectService(filter = "(&(emf.configurator.name=emf.persistence.jdbc.derbytest)(emf.model.name=dbtree))") ResourceSet resourceSet) {
public void testLoadTree(
@InjectService(filter = "(&(" + EMFNamespaces.EMF_CONFIGURATOR_NAME + "=emf.persistence.jdbc)(" + EMFNamespaces.EMF_MODEL_NAME + "=dbtree))", timeout = 5000)
ResourceSet resourceSet,
@InjectService(filter = "(datasource.name=DerbyTest)", timeout = 5000) DataSourceFactory dsFactory
) {
assertNotNull(resourceSet);
EMFPersistenceContext context = PersistenceHelper.createPersistenceContext(TREE_BASE_URI, DbtreePackage.Literals.DB_TREE, null);

Expand Down
51 changes: 28 additions & 23 deletions org.gecko.emf.persistence.jdbc.tests/test.bndrun
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
bnd.identity;id='slf4j.simple';version:Version='1.7.30',\
bnd.identity;id='org.gecko.emf.persistence.jdbc',\
bnd.identity;id='org.postgresql.jdbc',\
bnd.identity;id='org.ops4j.pax.jdbc.derby'
bnd.identity;id='org.ops4j.pax.jdbc.derby',\
bnd.identity;id='org.apache.felix.gogo.command',\
bnd.identity;id='org.apache.felix.gogo.shell'

-runbundles.test: \
org.gecko.emf.persistence.jdbc.tests;version=snapshot
Expand All @@ -20,39 +22,42 @@
-runbundles: \
de.jena.mdo.tree.model;version='[1.0.0,1.0.1)',\
derby;version='[10.14.2000000,10.14.2000001)',\
junit-jupiter-api;version='[5.9.1,5.9.2)',\
junit-jupiter-params;version='[5.9.1,5.9.2)',\
junit-platform-commons;version='[1.9.1,1.9.2)',\
org.apache.felix.configadmin;version='[1.9.22,1.9.23)',\
org.apache.felix.scr;version='[2.2.0,2.2.1)',\
org.eclipse.emf.common;version='[2.23.0,2.23.1)',\
org.eclipse.emf.ecore;version='[2.25.0,2.25.1)',\
org.eclipse.emf.ecore.xmi;version='[2.16.0,2.16.1)',\
org.gecko.emf.osgi.api;version='[4.4.0,4.4.1)',\
org.gecko.emf.osgi.component;version='[4.4.0,4.4.1)',\
org.gecko.emf.persistence;version=snapshot,\
org.gecko.emf.persistence.jdbc;version=snapshot,\
org.gecko.emf.persistence.jdbc.tests;version=snapshot,\
org.opentest4j;version='[1.2.0,1.2.1)',\
org.osgi.service.component;version='[1.5.0,1.5.1)',\
org.osgi.service.jdbc;version='[1.0.1,1.0.2)',\
org.osgi.test.common;version='[1.2.1,1.2.2)',\
org.osgi.test.junit5;version='[1.2.1,1.2.2)',\
org.osgi.test.junit5.cm;version='[1.2.1,1.2.2)',\
org.osgi.util.converter;version='[1.0.8,1.0.9)',\
org.osgi.util.function;version='[1.1.0,1.1.1)',\
org.osgi.util.promise;version='[1.2.0,1.2.1)',\
slf4j.api;version='[1.7.30,1.7.31)',\
slf4j.simple;version='[1.7.30,1.7.31)',\
org.gecko.emf.persistence.pushstreams;version=snapshot,\
org.gecko.emf.pushstreams;version='[1.1.1,1.1.2)',\
org.gecko.emf.util.model;version='[2.1.0,2.1.1)',\
org.osgi.util.pushstream;version='[1.0.1,1.0.2)',\
net.bytebuddy.byte-buddy;version='[1.12.16,1.12.17)',\
net.bytebuddy.byte-buddy-agent;version='[1.12.16,1.12.17)',\
org.mockito.junit-jupiter;version='[4.9.0,4.9.1)',\
org.mockito.mockito-core;version='[4.9.0,4.9.1)',\
org.objenesis;version='[3.3.0,3.3.1)',\
org.postgresql.jdbc;version='[42.5.1,42.5.2)',\
org.gecko.emf.persistence.jdbc.dialect;version=snapshot,\
org.ops4j.pax.jdbc.derby;version='[1.5.3,1.5.4)'
junit-jupiter-api;version='[5.10.1,5.10.2)',\
junit-jupiter-params;version='[5.10.1,5.10.2)',\
junit-platform-commons;version='[1.10.1,1.10.2)',\
net.bytebuddy.byte-buddy;version='[1.14.9,1.14.10)',\
net.bytebuddy.byte-buddy-agent;version='[1.14.9,1.14.10)',\
org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\
org.apache.felix.scr;version='[2.2.10,2.2.11)',\
org.eclipse.emf.common;version='[2.29.0,2.29.1)',\
org.eclipse.emf.ecore;version='[2.35.0,2.35.1)',\
org.eclipse.emf.ecore.xmi;version='[2.36.0,2.36.1)',\
org.gecko.emf.pushstreams;version='[1.2.2,1.2.3)',\
org.gecko.emf.util.model;version='[2.2.2,2.2.3)',\
org.mockito.junit-jupiter;version='[4.11.0,4.11.1)',\
org.mockito.mockito-core;version='[4.11.0,4.11.1)',\
org.opentest4j;version='[1.3.0,1.3.1)',\
org.ops4j.pax.jdbc.derby;version='[1.5.5,1.5.6)',\
org.osgi.service.cm;version='[1.6.1,1.6.2)',\
org.osgi.service.component;version='[1.5.1,1.5.2)',\
org.osgi.util.function;version='[1.2.0,1.2.1)',\
org.osgi.util.promise;version='[1.3.0,1.3.1)',\
org.gecko.emf.osgi.component.minimal;version='[6.1.0,6.1.1)',\
org.osgi.util.converter;version='[1.0.9,1.0.10)',\
org.apache.felix.gogo.command;version='[1.1.2,1.1.3)',\
org.apache.felix.gogo.runtime;version='[1.1.4,1.1.5)',\
org.apache.felix.gogo.shell;version='[1.1.4,1.1.5)'
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/
package org.gecko.emf.persistence.jdbc;

import org.gecko.emf.osgi.EMFNamespaces;
import org.gecko.emf.osgi.constants.EMFNamespaces;

/**
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@
*/
package org.gecko.emf.persistence.jdbc.datasource;

import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.DATASOURCE_PREFIX;
import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.PROP_DATASOURCE_NAME;
import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.PROP_DIALECT_NAME;

import java.sql.Driver;
import java.sql.SQLException;
import java.util.HashMap;
Expand All @@ -24,9 +28,6 @@
import javax.sql.DataSource;
import javax.sql.XADataSource;

import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.DATASOURCE_PREFIX;
import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.PROP_DATASOURCE_NAME;
import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.PROP_DIALECT_NAME;
import org.gecko.emf.persistence.jdbc.dialect.Dialect;
import org.gecko.emf.persistence.jdbc.dialect.DialectProvider;
import org.osgi.framework.BundleContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import javax.sql.XADataSource;

import org.eclipse.emf.common.util.URI;
import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.PROP_DATASOURCE_NAME;
import org.gecko.emf.persistence.OutputStreamFactory;
import org.gecko.emf.persistence.PersistenceConstants;
import org.gecko.emf.persistence.PersistenceURIHandlerImpl;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
*/
package org.gecko.emf.persistence.jdbc.handler;

import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.RESOURCESET_CONFIG_PROP;
import static org.gecko.emf.persistence.PersistenceConstants.PROPERTY_PERSISTENCE_NAME;
import static org.gecko.emf.persistence.jdbc.JdbcPersistenceConstants.RESOURCESET_CONFIG_PROP;

import java.sql.Connection;
import java.util.Map;
Expand All @@ -21,14 +21,20 @@

import org.eclipse.emf.ecore.resource.URIHandler;
import org.gecko.emf.osgi.UriHandlerProvider;
import org.gecko.emf.osgi.annotation.require.RequireEMF;
import org.gecko.emf.persistence.OutputStreamFactory;
import org.gecko.emf.persistence.input.InputStreamFactory;
import org.gecko.emf.persistence.jdbc.handler.JdbcURIHandlerImpl.DataSourceFactoryHolder;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;
import org.osgi.service.component.annotations.ReferencePolicyOption;
import org.osgi.service.jdbc.DataSourceFactory;
import org.osgi.service.metatype.annotations.Designate;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import org.osgi.util.promise.Promise;
import org.osgi.util.promise.PromiseFactory;

Expand All @@ -39,6 +45,8 @@
* Change Generic type of the In- and Outputstreams from DataSourceFactory to Connection
*/
@Component(name = "org.gecko.persistence.jdbc", configurationPolicy = ConfigurationPolicy.REQUIRE, service = UriHandlerProvider.class, property = { RESOURCESET_CONFIG_PROP, "type=persistence"})
@RequireEMF
@Designate(ocd = org.gecko.emf.persistence.jdbc.handler.JdbcUriHandlerProvider.JdbcUriHandlerConfig.class, factory = true)
public class JdbcUriHandlerProvider implements UriHandlerProvider {

private volatile JdbcURIHandlerImpl uriHandler;
Expand All @@ -48,14 +56,18 @@ public class JdbcUriHandlerProvider implements UriHandlerProvider {
private final Map<String,Object> properties = new ConcurrentHashMap<>();
private final PromiseFactory pf = new PromiseFactory(Executors.newCachedThreadPool(), Executors.newScheduledThreadPool(2));

@interface JdbcUriHandlerConfig {
static final String PREFIX_ = "persistence.jdbc.";
String name();

@ObjectClassDefinition
public @interface JdbcUriHandlerConfig {
public static final String PREFIX_ = "persistence.";
String name() default "test";
String dsType() default "Driver";
}

@Activate
public void activate(JdbcUriHandlerConfig config, Map<String, Object> properties) {
System.out.println(config.name());
System.out.println(config.dsType());
this.properties.put(PROPERTY_PERSISTENCE_NAME, config.name());
this.properties.putAll(properties);
}
Expand All @@ -72,7 +84,7 @@ public URIHandler getURIHandler() {
return uriHandler;
}

@Reference(name="persistence.jdbc.ds")
@Reference(name="persistence.jdbc.ds", cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC, policyOption = ReferencePolicyOption.GREEDY)
public void setDataSourceFactory(DataSourceFactory dataSourceFactory, Map<String, Object> properties) {
String name = (String) properties.getOrDefault(PROPERTY_PERSISTENCE_NAME, "default");
connections.put(name, new DataSourceFactoryHolder(dataSourceFactory, properties));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
import org.gecko.emf.persistence.jdbc.context.JdbcInputContext;
import org.gecko.emf.persistence.jdbc.streams.JdbcInputStream;
import org.gecko.emf.persistence.pushstreams.AsyncPushEventSource;
import org.gecko.emf.persistence.pushstreams.PushStreamInputContentHandler;
import org.gecko.emf.persistence.pushstreams.PushEventSourceRunnable;
import org.gecko.emf.persistence.pushstreams.PushStreamConstants;
import org.gecko.emf.persistence.pushstreams.PushStreamInputContentHandler;
import org.gecko.emf.persistence.pushstreams.SimplePushEventSource;
import org.osgi.service.component.annotations.Component;
import org.osgi.util.pushstream.PushEventConsumer;
Expand Down

0 comments on commit e6c83a8

Please sign in to comment.