Skip to content

Commit

Permalink
Merge branch 'snapshot' of git@github.com:geckoprojects-org/org.gecko…
Browse files Browse the repository at this point in the history
….emf.utils.git into snapshot
  • Loading branch information
maho7791 committed Jul 29, 2024
2 parents 1ae22c2 + 6a4e8e6 commit bd18ad5
Show file tree
Hide file tree
Showing 51 changed files with 1,911 additions and 88 deletions.
2 changes: 1 addition & 1 deletion cnf/central.mvn
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ org.geckoprojects.bnd:org.gecko.bnd.osgitest.library:1.5.0
org.geckoprojects.bnd:org.gecko.bnd.jacoco.library:1.5.0
org.geckoprojects.utils:org.gecko.util.bnd.library.workspace:1.0.0

org.geckoprojects.emf:org.gecko.emf.osgi.bnd.library.workspace:6.1.1
org.geckoprojects.emf:org.gecko.emf.osgi.bnd.library.workspace:6.2.0

com.fasterxml.jackson.core:jackson-core:2.14.1
com.fasterxml.jackson.core:jackson-databind:2.14.1
Expand Down
2 changes: 1 addition & 1 deletion cnf/local/index.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<repository xmlns="http://www.osgi.org/xmlns/repository/v1.0.0" name="Local" increment="1705409091790">
<repository xmlns="http://www.osgi.org/xmlns/repository/v1.0.0" name="Local" increment="1699736382673">
<resource>
<capability namespace="osgi.identity">
<attribute name="license" value="&quot;The Unlicense&quot;;link=&quot;https://github.com/miachm/SODS/blob/master/LICENSE&quot;"/>
Expand Down
6 changes: 2 additions & 4 deletions org.gecko.emf.bson.tests/test.bndrun
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,12 @@
org.yaml.snakeyaml;version='[1.33.0,1.33.1)',\
org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\
org.osgi.service.component;version='[1.5.1,1.5.2)',\
org.osgi.util.converter;version='[1.0.9,1.0.10)',\
org.osgi.util.function;version='[1.2.0,1.2.1)',\
org.osgi.util.promise;version='[1.3.0,1.3.1)',\
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.osgi.api;version='[6.1.1,6.1.2)',\
org.gecko.emf.osgi.component.config;version='[6.1.1,6.1.2)',\
org.gecko.emf.osgi.component.minimal;version='[6.1.1,6.1.2)',\
org.gecko.emf.osgi.example.model.basic;version='[6.1.0,6.1.1)',\
org.osgi.service.cm;version='[1.6.1,1.6.2)'
org.osgi.service.cm;version='[1.6.1,1.6.2)',\
org.osgi.util.converter;version='[1.0.9,1.0.10)'
11 changes: 11 additions & 0 deletions org.gecko.emf.converter.model/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?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-11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="aQute.bnd.classpath.container"/>
<classpathentry kind="src" output="bin" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
4 changes: 4 additions & 0 deletions org.gecko.emf.converter.model/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/bin/
/bin_test/
/generated/
/src/
23 changes: 23 additions & 0 deletions org.gecko.emf.converter.model/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.gecko.emf.converter.model</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>bndtools.core.bndbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>bndtools.core.bndnature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
eclipse.preferences.version=1
encoding//.settings/org.eclipse.core.resources.prefs=UTF-8
encoding//.settings/org.eclipse.jdt.core.prefs=UTF-8
encoding//.settings/org.eclipse.jdt.ui.prefs=UTF-8
encoding//model/converter.ecore=UTF-8
encoding//model/converter.genmodel=UTF-8
encoding/<project>=UTF-8
encoding/bnd.bnd=UTF-8
15 changes: 15 additions & 0 deletions org.gecko.emf.converter.model/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
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=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=11
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.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=11
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
content_assist_proposals_background=255,255,255
content_assist_proposals_foreground=0,0,0
eclipse.preferences.version=1
org.eclipse.jdt.ui.formatterprofiles.version=13
org.eclipse.jdt.ui.javadoc=true
spelling_locale_initialized=true
useAnnotationsPrefPage=true
useQuickDiffPrefPage=true
19 changes: 19 additions & 0 deletions org.gecko.emf.converter.model/bnd.bnd
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# sets the usually required buildpath using the bnd library, you can extend it with the normal -buildpath to your liking
-library: enable-emf

# The code generation takes a bit of time and makes the build a bit slower.
# It might be a good idea to put comments around it, when you don't need it

-generate:\
model/converter.genmodel;\
generate=geckoEMF;\
genmodel=model/converter.genmodel;\
output=src;\
logfile=converter-genmodel.log;\

# If this is not done with a instruction namespace, bnd would think you like
# to take full control over whats exported and imported and will ignore @Export
# Bundle Annotations
-includeresource.model: model=model

Bundle-Version: 1.0.0.SNAPSHOT
24 changes: 24 additions & 0 deletions org.gecko.emf.converter.model/model/converter.ecore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="model" nsURI="http://gecko.io/converter/1.0" nsPrefix="converter">
<eAnnotations source="Version">
<details key="value" value="1.0.0"/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EDataType" name="EShortArray" instanceClassName="short[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EIntArray" instanceClassName="int[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="ELongArray" instanceClassName="long[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EFloatArray" instanceClassName="float[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EDoubleArray" instanceClassName="double[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EBooleanArray" instanceClassName="boolean[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="ECharArray" instanceClassName="char[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EByteObjectArray" instanceClassName="java.lang.Byte[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EShortObjectArray" instanceClassName="java.lang.Short[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EIntegerObjectArray" instanceClassName="java.lang.Integer[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="ELongObjectArray" instanceClassName="java.lang.Long[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EFloatObjectArray" instanceClassName="java.lang.Float[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EDoubleObjectArray" instanceClassName="java.lang.Double[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EBooleanObjectArray" instanceClassName="java.lang.Boolean[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="ECharacterObjectArray" instanceClassName="java.lang.Character[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EStringArray" instanceClassName="java.lang.String[]"/>
<eClassifiers xsi:type="ecore:EDataType" name="EOSGiFrameworkVersion" instanceClassName="org.osgi.framework.Version"/>
</ecore:EPackage>
28 changes: 28 additions & 0 deletions org.gecko.emf.converter.model/model/converter.genmodel
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
modelDirectory="/org.gecko.emf.converter.model/src" modelPluginID="org.gecko.emf.converter.model"
modelName="converter.ecore" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
importerID="org.eclipse.emf.importer.ecore" complianceLevel="11.0" suppressGenModelAnnotations="false"
copyrightFields="false" operationReflection="true" importOrganizing="true" oSGiCompatible="true">
<foreignModel>converter.ecore</foreignModel>
<genPackages prefix="Converter" basePackage="org.gecko.emf.converter" disposableProviderFactory="true"
ecorePackage="converter.ecore#/">
<genDataTypes ecoreDataType="converter.ecore#//EShortArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EIntArray"/>
<genDataTypes ecoreDataType="converter.ecore#//ELongArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EFloatArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EDoubleArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EBooleanArray"/>
<genDataTypes ecoreDataType="converter.ecore#//ECharArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EByteObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EShortObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EIntegerObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//ELongObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EFloatObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EDoubleObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EBooleanObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//ECharacterObjectArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EStringArray"/>
<genDataTypes ecoreDataType="converter.ecore#//EOSGiFrameworkVersion"/>
</genPackages>
</genmodel:GenModel>
11 changes: 11 additions & 0 deletions org.gecko.emf.converter.tests/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?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-11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="aQute.bnd.classpath.container"/>
<classpathentry kind="src" output="bin" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
2 changes: 2 additions & 0 deletions org.gecko.emf.converter.tests/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/bin/
/bin_test/
23 changes: 23 additions & 0 deletions org.gecko.emf.converter.tests/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.gecko.emf.csv.tests</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>bndtools.core.bndbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>bndtools.core.bndnature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
encoding/bnd.bnd=UTF-8
encoding/test.bndrun=UTF-8
14 changes: 14 additions & 0 deletions org.gecko.emf.converter.tests/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=11
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.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=11
15 changes: 15 additions & 0 deletions org.gecko.emf.converter.tests/bnd.bnd
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
-library: enable-emf,\
enableOSGi-Test

javac.source: 11
javac.target: 11

Bundle-Version: 1.0.0.SNAPSHOT

-buildpath: \
org.gecko.emf.converter;version=snapshot,\
org.osgi.dto,\
org.osgi.util.converter;version=latest,\
org.osgi.util.function;version=latest

-dependson: org.gecko.emf.converter
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
/**
* Copyright (c) 2012 - 2022 Data In Motion and others.
* All rights reserved.
*
* This program and the accompanying materials are made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Data In Motion - initial API and implementation
*/
package org.gecko.emf.converter.tests;

import static org.junit.jupiter.api.Assertions.assertNotNull;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.gecko.emf.converter.DTOToEObjectConverters;
import org.gecko.emf.converter.DTOToEPackageConverter;
import org.gecko.emf.converter.tests.helper.DTOToEMFConverterTestHelper.ConverterTestBasicDTO;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.platform.commons.annotation.Testable;
import org.osgi.test.junit5.context.BundleContextExtension;
import org.osgi.test.junit5.service.ServiceExtension;
import org.osgi.util.converter.Converter;
import org.osgi.util.converter.ConverterBuilder;
import org.osgi.util.function.Function;

/**
* Integration test for {@link org.gecko.emf.converter.DTOToEObjectConverters}
*
* @author Michal H. Siemaszko
*/
@Testable
@ExtendWith(BundleContextExtension.class)
@ExtendWith(ServiceExtension.class)
public class DTOToEObjectConverterTest {
private static final String PACKAGE_NAME = "org.gecko.emf.converter";
private static final String NS_URI = "http://gecko.org/test/model/converter/1.0";
private static final String NS_PREFIX = "tests";

@Test
public void testDTO2EObjectConverterWithBuiltInTypeRule() {

ConverterTestBasicDTO dto = new ConverterTestBasicDTO();
dto.longPrimitiveField = Long.MIN_VALUE;
dto.booleanPrimitiveField = true;
dto.stringField = "hello";

EPackage dynamicEPackageFromDTOs = DTOToEPackageConverter.convert(PACKAGE_NAME, NS_URI, NS_PREFIX,
dto.getClass());
assertNotNull(dynamicEPackageFromDTOs);

EPackage.Registry.INSTANCE.put(dynamicEPackageFromDTOs.getNsURI(), dynamicEPackageFromDTOs);

Converter dto2EObjectConverter = DTOToEObjectConverters.customConverter(dynamicEPackageFromDTOs);

EObject mySimpleEObject = dto2EObjectConverter.convert(dto).to(EObject.class);
assertNotNull(mySimpleEObject);
}

@Test
public void testDTO2EObjectConverterBuilderWithBuiltInTypeRule() {

ConverterTestBasicDTO dto = new ConverterTestBasicDTO();
dto.longPrimitiveField = Long.MIN_VALUE;
dto.booleanPrimitiveField = true;
dto.stringField = "hello";

EPackage dynamicEPackageFromDTOs = DTOToEPackageConverter.convert(PACKAGE_NAME, NS_URI, NS_PREFIX,
dto.getClass());
assertNotNull(dynamicEPackageFromDTOs);

EPackage.Registry.INSTANCE.put(dynamicEPackageFromDTOs.getNsURI(), dynamicEPackageFromDTOs);

ConverterBuilder dto2EObjectConverterBuilder = DTOToEObjectConverters
.newCustomConverterBuilder(dynamicEPackageFromDTOs);

// .. add some more custom rules as needed

Converter dto2EObjectConverter = dto2EObjectConverterBuilder.build();

EObject mySimpleEObject = dto2EObjectConverter.convert(dto).to(EObject.class);
assertNotNull(mySimpleEObject);
}

@Test
public void testDTO2EObjectConverterWithBuiltInFunction() throws Exception {

ConverterTestBasicDTO dto = new ConverterTestBasicDTO();
dto.longPrimitiveField = Long.MIN_VALUE;
dto.booleanPrimitiveField = true;
dto.stringField = "hello";

EPackage dynamicEPackageFromDTOs = DTOToEPackageConverter.convert(PACKAGE_NAME, NS_URI, NS_PREFIX,
dto.getClass());
assertNotNull(dynamicEPackageFromDTOs);

EPackage.Registry.INSTANCE.put(dynamicEPackageFromDTOs.getNsURI(), dynamicEPackageFromDTOs);

Converter dto2EObjectConverter = DTOToEObjectConverters.customConverter(dynamicEPackageFromDTOs);

Function<Object, EObject> cf = dto2EObjectConverter.function().to(EObject.class);

EObject mySimpleEObject = cf.apply(dto);
assertNotNull(mySimpleEObject);
}

@Test
public void testDTO2EObjectConverterBuilderWithBuiltInFunction() throws Exception {

ConverterTestBasicDTO dto = new ConverterTestBasicDTO();
dto.longPrimitiveField = Long.MIN_VALUE;
dto.booleanPrimitiveField = true;
dto.stringField = "hello";

EPackage dynamicEPackageFromDTOs = DTOToEPackageConverter.convert(PACKAGE_NAME, NS_URI, NS_PREFIX,
dto.getClass());
assertNotNull(dynamicEPackageFromDTOs);

EPackage.Registry.INSTANCE.put(dynamicEPackageFromDTOs.getNsURI(), dynamicEPackageFromDTOs);

ConverterBuilder dto2EObjectConverterBuilder = DTOToEObjectConverters
.newCustomConverterBuilder(dynamicEPackageFromDTOs);

// .. add some more custom rules as needed

Converter dto2EObjectConverter = dto2EObjectConverterBuilder.build();

Function<Object, EObject> cf = dto2EObjectConverter.function().to(EObject.class);

EObject mySimpleEObject = cf.apply(dto);
assertNotNull(mySimpleEObject);
}
}
Loading

0 comments on commit bd18ad5

Please sign in to comment.