catch up with development
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b9f0a46
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,37 @@
+**/bin/
+**/target/
+**._trace
+**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.ide.core.ui.softwarefactory.feature/.gitignore b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.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.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.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.ide.core.ui.softwarefactory.feature/feature.xml b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
index 4e1d5a5..2cfa74e 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
@@ -14,7 +14,8 @@
id="org.eclipse.osbp.ide.core.ui.softwarefactory.feature"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.ide.core.ui.softwarefactory">
<description>
%description
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.classpath b/org.eclipse.osbp.ide.core.ui.softwarefactory/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.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.ide.core.ui.softwarefactory/.gitignore b/org.eclipse.osbp.ide.core.ui.softwarefactory/.gitignore
new file mode 100644
index 0000000..09e3bc9
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6e80039
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+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.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.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.ide.core.ui.softwarefactory/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.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.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF b/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
index 942b4e3..2fdad6c 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
@@ -14,11 +14,11 @@
org.eclipse.core.resources,
org.eclipse.emf.ecore;bundle-version="2.10.0",
org.eclipse.jdt.core,
- org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.builder;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.ui;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.11.0,2.12.0)",
org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.builder.ui.access;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.builder.ui.access;bundle-version="[0.9.0,0.10.0)",
@@ -29,7 +29,7 @@
org.eclipse.osbp.xtext.authorizationdsl;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.datainterchange
+ org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)"
Import-Package: javax.validation,
org.osgi.framework;version="1.8.0"
Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties b/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
index 502727e..074eb31 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
@@ -11,13 +11,3 @@
epl-v10.html,\
icons/,\
build.properties
-src.includes = about.properties, about.mappings, about.ini, about.html, license.html,\
- LICENSE.txt,\
- epl-v10.html,\
- icons/,\
- plugin.xml,\
- META-INF/,\
- .settings/,\
- .project,\
- .classpath,\
- build.properties
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
index 566d306..1b20dde 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
@@ -21,7 +21,6 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.CopyOnWriteArraySet;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
@@ -33,20 +32,22 @@
import org.eclipse.core.resources.IStorage;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.ProgressMonitorWrapper;
import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.Diagnostician;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.osbp.dsl.semantic.common.types.LType;
import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
import org.eclipse.osbp.dsl.semantic.entity.LEntity;
import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
@@ -58,7 +59,6 @@
import org.eclipse.osbp.xtext.action.ActionModel;
import org.eclipse.osbp.xtext.action.ActionPackage;
import org.eclipse.osbp.xtext.action.ActionToolbar;
-import org.eclipse.osbp.xtext.action.DatainterchangeActionEnum;
import org.eclipse.osbp.xtext.addons.EObjectHelper;
import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationModel;
import org.eclipse.osbp.xtext.authorizationdsl.Role;
@@ -66,17 +66,15 @@
import org.eclipse.osbp.xtext.datainterchange.DataInterchangeModel;
import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAttribute;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLFactory;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
import org.eclipse.osbp.xtext.datamartdsl.DatamartModel;
import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
-import org.eclipse.xtext.builder.builderState.IBuilderState;
import org.eclipse.xtext.resource.IReferenceDescription;
-import org.eclipse.xtext.resource.IResourceDescription;
-import org.eclipse.xtext.resource.IResourceDescription.Delta;
import org.eclipse.xtext.resource.SaveOptions;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.eclipse.xtext.ui.editor.findrefs.IReferenceFinder;
@@ -85,6 +83,7 @@
import org.eclipse.xtext.util.IAcceptor;
import org.eclipse.xtext.util.Pair;
import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+import org.eclipse.xtext.validation.FeatureBasedDiagnostic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -101,8 +100,7 @@
public static final String BUILDER_ID = Constants.BUILDER_ID;
- private static final Logger LOGGER = LoggerFactory
- .getLogger(OSBP2Builder.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(OSBP2Builder.class);
public final static String MODELS_BASE_SRC_DIRECTORY = "models";
public final static String SOURCE_BASE_SRC_DIRECTORY = "src";
@@ -120,6 +118,13 @@
public final static String PERSPECTIVE_MODEL_EXTENSION = "perspective";
public final static String MENU_MODEL_EXTENSION = "menu";
+ Set<String> doNotTouchExtensions = new HashSet<>();
+ {
+ doNotTouchExtensions.add(ENTITY_MODEL_EXTENSION);
+ doNotTouchExtensions.add(DTO_MODEL_EXTENSION);
+ doNotTouchExtensions.add(SERVICE_MODEL_EXTENSION);
+ }
+
@Inject
private XtextResourceSetProvider rsProvider;
@@ -136,8 +141,7 @@
private boolean firstBuild = true;
@Override
- protected IProject[] build(int kind, Map<String, String> args,
- IProgressMonitor monitor) throws CoreException {
+ protected IProject[] build(int kind, Map<String, String> args, IProgressMonitor monitor) throws CoreException {
LOGGER.info("build started for " + getProject());
long startTime = System.currentTimeMillis();
SubMonitor progress = null;
@@ -151,15 +155,11 @@
isModelExtending = true;
for (String extension : modelInstanceDecriptionMap.keySet()) {
if (extension.equals(fileExtension)
- && modelInstanceDecriptionMap.get(extension)
- .getProject().equals(getProject())
- && modelInstanceDecriptionMap.get(extension)
- .isDone()
- && !modelInstanceDecriptionMap.get(extension)
- .isBuilt()) {
+ && modelInstanceDecriptionMap.get(extension).getProject().equals(getProject())
+ && modelInstanceDecriptionMap.get(extension).isDone()
+ && !modelInstanceDecriptionMap.get(extension).isBuilt()) {
LOGGER.debug("rebuild for " + extension);
- modelInstanceDecriptionMap.get(extension)
- .setBuilt(true);
+ modelInstanceDecriptionMap.get(extension).setBuilt(true);
needRebuild();
extensionsRebuilt.add(extension);
modelExtenderBuilder.getPending().remove(fileExtension);
@@ -170,15 +170,15 @@
if (!isModelExtending) { // this disturbs the model extender workflow
try {
- final String taskName = "Building" + getProject().getName()
- + ": "; //$NON-NLS-1$
- progress = SubMonitor.convert(new ProgressMonitorWrapper(
- monitor) { // NOSONAR - lambda
- @Override
- public void subTask(String name) { // NOSONAR
- super.subTask(taskName + name);
- }
- }, 8);
+ final String taskName = "Building" + getProject().getName() + ": "; //$NON-NLS-2$
+ progress = SubMonitor.convert(new ProgressMonitorWrapper(monitor) { // NOSONAR
+ // -
+ // lambda
+ @Override
+ public void subTask(String name) { // NOSONAR
+ super.subTask(taskName + name);
+ }
+ }, 8);
if (kind == FULL_BUILD || firstBuild) {
firstBuild = false;
fullBuild(progress.newChild(1));
@@ -203,15 +203,14 @@
if (progress != null) {
progress.done();
}
- LOGGER.info("Build " + getProject().getName() + " in "
- + (System.currentTimeMillis() - startTime) + " ms");
+ LOGGER.info(
+ "Build " + getProject().getName() + " in " + (System.currentTimeMillis() - startTime) + " ms");
}
}
if (extensionsRebuilt.size() > 0) {
for (String extension : extensionsRebuilt) {
LOGGER.debug("extending finished for " + extension);
- modelExtenderBuilder
- .notifyListeners(new ModelExtendedEvent(extension));
+ modelExtenderBuilder.notifyListeners(new ModelExtendedEvent(extension));
}
}
return getProject().getReferencedProjects();
@@ -260,10 +259,8 @@
* given monitor. Accepts null, indicating that no progress
* should be reported and that the operation cannot be cancelled.
*/
- protected void incrementalBuild(IResourceDelta delta,
- final IProgressMonitor monitor) throws CoreException {
- final SubMonitor progress = SubMonitor.convert(monitor,
- "Updating references", 4);
+ protected void incrementalBuild(IResourceDelta delta, final IProgressMonitor monitor) throws CoreException {
+ final SubMonitor progress = SubMonitor.convert(monitor, "Updating references", 4);
progress.subTask("Updating references");
if (progress.isCanceled())
throw new OperationCanceledException();
@@ -305,8 +302,7 @@
* given monitor. Accepts null, indicating that no progress
* should be reported and that the operation cannot be cancelled.
*/
- protected void fullBuild(final IProgressMonitor monitor)
- throws CoreException {
+ protected void fullBuild(final IProgressMonitor monitor) throws CoreException {
IProject project = getProject();
if (!project.getDescription().hasNature(Constants.NATURE_ID)) {
@@ -347,32 +343,39 @@
EObject model = loadSemanticModel(modifiedFile);
if (model == null) {
- LOGGER.error("Skipping build since SemanticModel could not be loaded from "
- + modifiedFile.getName());
+ LOGGER.error("Skipping build since SemanticModel could not be loaded from " + modifiedFile.getName());
return;
}
+ if (model instanceof LEntityModel) {
+ LEntityModel entityModel = (LEntityModel) model;
+ Set<URI> lTypes = new HashSet<>();
+ for (LTypedPackage entityPkg : entityModel.getPackages()) {
+ for (LType lType : entityPkg.getTypes()) {
+ lTypes.add(EcoreUtil.getURI(lType));
+ }
+ }
+ touchReferencingModel(modifiedFile.getName(), lTypes, model.eResource().getResourceSet());
+ }
+
if (model instanceof AuthorizationModel) {
AuthorizationModel authorizationModel = (AuthorizationModel) model;
Set<URI> roles = new HashSet<>();
for (Role role : authorizationModel.getPckg().getRoles()) {
roles.add(EcoreUtil.getURI(role));
}
- touchReferencingModel(modifiedFile.getName(), roles, model
- .eResource().getResourceSet());
+ touchReferencingModel(modifiedFile.getName(), roles, model.eResource().getResourceSet());
}
if (model instanceof DatamartModel) {
DatamartModel datamartModel = (DatamartModel) model;
Set<URI> datamarts = new HashSet<>();
for (DatamartPackage datamartPkg : datamartModel.getPackages()) {
- for (DatamartDefinition datamart : datamartPkg
- .getDefinitions()) {
+ for (DatamartDefinition datamart : datamartPkg.getDefinitions()) {
datamarts.add(EcoreUtil.getURI(datamart));
}
}
- touchReferencingModel(modifiedFile.getName(), datamarts, model
- .eResource().getResourceSet());
+ touchReferencingModel(modifiedFile.getName(), datamarts, model.eResource().getResourceSet());
}
if (model instanceof ActionModel) {
ActionModel actionModel = (ActionModel) model;
@@ -382,8 +385,7 @@
actionToolbars.add(EcoreUtil.getURI(actionToolbar)); // NOSONAR
}
}
- touchReferencingModel(modifiedFile.getName(), actionToolbars, model
- .eResource().getResourceSet());
+ touchReferencingModel(modifiedFile.getName(), actionToolbars, model.eResource().getResourceSet());
}
if (model instanceof DataInterchangeModel) {
DataInterchangeModel dataInterchangeModel = (DataInterchangeModel) model;
@@ -393,38 +395,48 @@
dataInterchanges.add(EcoreUtil.getURI(dataInterchange)); // NOSONAR
}
}
- touchReferencingModel(modifiedFile.getName(), dataInterchanges, model
- .eResource().getResourceSet());
+ touchReferencingModel(modifiedFile.getName(), dataInterchanges, model.eResource().getResourceSet());
}
}
+ protected boolean shouldTouch(IReferenceDescription t) {
+ URI sourceResourceURI = t.getSourceEObjectUri().trimFragment();
+ URI targetResourceURI = t.getTargetEObjectUri().trimFragment();
+ if (sourceResourceURI.equals(targetResourceURI)) {
+ // reference points to an EObject in same resource
+ return false;
+ }
+
+ // if defined in set to not touch
+ return !doNotTouchExtensions.contains(sourceResourceURI.fileExtension());
+ }
+
@SuppressWarnings("restriction")
- protected void touchReferencingModel(String triggerModel, Set<URI> items,
- ResourceSet sourceResourceSet) {
+ protected void touchReferencingModel(String triggerModel, Set<URI> items, ResourceSet sourceResourceSet) {
final List<IReferenceDescription> referenceTargets = new ArrayList<>();
- referenceFinder.findAllReferences(items, new LocalResourceAccess(
- sourceResourceSet), new IAcceptor<IReferenceDescription>() {
- @Override
- public void accept(IReferenceDescription t) {
- if (!referenceTargets.contains(t)) {
- referenceTargets.add(t);
- }
- }
- }, null);
+ referenceFinder.findAllReferences(items, new LocalResourceAccess(sourceResourceSet),
+ new IAcceptor<IReferenceDescription>() {
+ @Override
+ public void accept(IReferenceDescription t) {
+ if (shouldTouch(t)) {
+ if (!referenceTargets.contains(t)) {
+ referenceTargets.add(t);
+ }
+ }
+ }
+ }, null);
List<Resource> affectedResources = new LinkedList<>();
Map<IProject, XtextResourceSet> targetResourceSets = new HashMap<>();
for (IReferenceDescription desc : referenceTargets) {
IProject project = null;
- Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper
- .getStorages(desc.getSourceEObjectUri());
+ Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper.getStorages(desc.getSourceEObjectUri());
if (pairs.iterator().hasNext()) {
project = pairs.iterator().next().getSecond();
}
if (project == null) {
- LOGGER.error("No project could be found for "
- + desc.getSourceEObjectUri());
+ LOGGER.error("No project could be found for " + desc.getSourceEObjectUri());
continue;
}
@@ -437,22 +449,17 @@
}
// load the resource by the resource set
- Resource modelResource = resourceSet.getResource(desc
- .getSourceEObjectUri().trimFragment(), true);
+ Resource modelResource = resourceSet.getResource(desc.getSourceEObjectUri().trimFragment(), true);
if (!affectedResources.contains(modelResource)) {
affectedResources.add(modelResource);
}
}
try {
for (Resource resource : affectedResources) {
- LOGGER.info("writing from " + triggerModel
- + " affected resource "
- + resource.getURI().lastSegment());
- resource.save(SaveOptions.newBuilder().format().getOptions()
- .toOptionsMap());
- LOGGER.info("finished writing from " + triggerModel
- + " affected resource "
- + resource.getURI().lastSegment());
+ LOGGER.info("writing from " + triggerModel + " affected resource " + resource.getURI().lastSegment());
+ // wora 16.01.2018
+ saveRessourceOnlyWhenAllowed(resource);
+ LOGGER.info("finished writing from " + triggerModel + " affected resource "+ resource.getURI().lastSegment());
}
} catch (IOException e) {
LOGGER.error("{}", e);
@@ -489,8 +496,7 @@
}
final List<IReferenceDescription> referenceTargets = new ArrayList<>();
- referenceFinder.findAllReferences(entities, new LocalResourceAccess(
- lEntityModel.eResource().getResourceSet()),
+ referenceFinder.findAllReferences(entities, new LocalResourceAccess(lEntityModel.eResource().getResourceSet()),
new IAcceptor<IReferenceDescription>() {
@Override
public void accept(IReferenceDescription t) {
@@ -504,15 +510,13 @@
Map<IProject, XtextResourceSet> datamartResourceSets = new HashMap<>();
for (IReferenceDescription desc : referenceTargets) {
IProject datamartProject = null;
- Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper
- .getStorages(desc.getSourceEObjectUri());
+ Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper.getStorages(desc.getSourceEObjectUri());
if (pairs.iterator().hasNext()) {
datamartProject = pairs.iterator().next().getSecond();
}
if (datamartProject == null) {
- LOGGER.error("No project could be found for "
- + desc.getSourceEObjectUri());
+ LOGGER.error("No project could be found for " + desc.getSourceEObjectUri());
continue;
}
@@ -525,11 +529,9 @@
}
// load the resource by the resource set
- Resource datamartModelResource = resourceSet.getResource(desc
- .getSourceEObjectUri().trimFragment(), true);
- DatamartEntity dmEntity = (DatamartEntity) EObjectHelper
- .getSemanticElement(datamartModelResource, desc
- .getSourceEObjectUri().fragment());
+ Resource datamartModelResource = resourceSet.getResource(desc.getSourceEObjectUri().trimFragment(), true);
+ DatamartEntity dmEntity = (DatamartEntity) EObjectHelper.getSemanticElement(datamartModelResource,
+ desc.getSourceEObjectUri().fragment());
if (!dmEntity.isTracking()) {
continue;
@@ -541,25 +543,20 @@
// clear properties section
DatamartDSLFactory dmFactory = DatamartDSLFactory.eINSTANCE;
- EList<DatamartProperty> properties = dmEntity
- .getProperties();
+ EList<DatamartAttribute> properties = dmEntity.getAttributes();
if (properties != null) {
properties.clear();
// rebuild properties section
- for (LEntityAttribute eAttr : dmEntity.getEntityRef()
- .getAllAttributes()) {
- if (!eAttr.isId() && !eAttr.isUuid()) {
- DatamartProperty property = dmFactory
- .createDatamartProperty();
- property.setAggregated(false);
- property.setFiltered(false);
- property.setOptional(false);
- property.setScaled(false);
- property.setSelected(false);
- property.setPlaced(true);
- property.setAxis(AxisEnum.COLUMNS);
- property.setPropertyRef(eAttr);
- properties.add(property);
+ for (LEntityAttribute eAttr : dmEntity.getEntityRef().getAllAttributes()) {
+ if (!eAttr.isId() && !eAttr.isUuid() && !eAttr.isVersion() && !(eAttr.getType() instanceof LBean)) {
+ DatamartAxis axis = dmFactory.createDatamartAxis();
+ axis.setName(AxisEnum.COLUMNS);
+ DatamartAttribute attribute = dmFactory.createDatamartAttribute();
+ attribute.setAggregated(false);
+ attribute.setScaled(false);
+ attribute.setAxis(axis);
+ attribute.setAttributeRef(eAttr);
+ properties.add(attribute);
}
}
}
@@ -568,8 +565,8 @@
try {
LOGGER.info("writing datamart");
for (Resource resource : affectedResources) {
- resource.save(SaveOptions.newBuilder().format().getOptions()
- .toOptionsMap());
+ // wora 16.01.2018
+ saveRessourceOnlyWhenAllowed(resource);
}
LOGGER.info("finished writing datamart");
} catch (IOException e) {
@@ -610,8 +607,7 @@
* @return
*/
protected boolean isOpened(IResourceDelta delta) {
- return delta.getResource() instanceof IProject
- && (delta.getFlags() & IResourceDelta.OPEN) != 0
+ return delta.getResource() instanceof IProject && (delta.getFlags() & IResourceDelta.OPEN) != 0
&& ((IProject) delta.getResource()).isOpen();
}
@@ -622,8 +618,7 @@
}
}
- public static class LocalResourceAccess implements
- IReferenceFinder.ILocalResourceAccess {
+ public static class LocalResourceAccess implements IReferenceFinder.ILocalResourceAccess {
private ResourceSet resourceSet;
@@ -642,4 +637,30 @@
}
}
+
+ /**
+ * Make sure that resources (delta) changes are only saved onto a model, when they comply with the corresponding
+ * model grammar rules.
+ * @param resource the new {@link Resource} resource (change)
+ * @throws @{@link IllegalArgumentException} or {@link IOException}
+ * @since wora 16.01.2018
+ */
+ public void saveRessourceOnlyWhenAllowed(Resource resource) throws IllegalArgumentException, IOException{
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
+ int sev = diagnostic.getSeverity();
+ if (sev <= Diagnostic.WARNING) {
+ LOGGER.info("saveRessourceOnlyWhenAllowed - writing {} allowed.", resource.toString());
+ resource.save(SaveOptions.newBuilder().format().getOptions().toOptionsMap());
+ } else if(sev == Diagnostic.ERROR) {
+ String childrenErrorDetail = "";
+ for(Object diag : diagnostic.getChildren()){
+ FeatureBasedDiagnostic f = ((FeatureBasedDiagnostic) diag);
+ childrenErrorDetail += "\n\nERROR MESSAGE: "+f.getMessage()+ "\n\nSOURCE:"+ f.getSource() + "\n\n";
+ }
+ // In case the model itself contains errors
+ String err = ((!resource.getErrors().isEmpty()) ? resource.getErrors().get(0).toString() : "") + childrenErrorDetail;
+ LOGGER.error("saveRessourceOnlyWhenAllowed - diagnosic error {}", err);
+ throw new IllegalArgumentException(err);
+ }
+ }
}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
index 44828ce..aba3a65 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
@@ -15,7 +15,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.eclipse.core.resources.IWorkspace;
import org.eclipse.xtext.resource.IResourceDescriptions;
import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
import org.slf4j.Logger;
@@ -40,7 +39,7 @@
this.extension = extension;
}
- protected abstract boolean extendModel(Map<String, ModelInstanceDescription> packageDeltas);
+ protected abstract boolean extendModel(Map<String, ModelInstanceDescription> packageDeltas) throws Exception;
public String getExtension() {
return extension;
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
index 9dd7a91..3491deb 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
@@ -25,8 +25,7 @@
Map<String, DataType> getColInfo();
char getCustomDelimiter();
char getTextQualifier();
- Map<String, String> getAttributeMap();
- void setAttributeMap(Map<String, String> attributeMap);
void setXtextUtilService(IXtextUtilService xtextUtilService);
IXtextUtilService getXtextUtilService();
+ boolean isForeignUuid(int idx);
}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
index 068e4fb..cc40cc7 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
@@ -28,6 +28,7 @@
void addExtension(IModelExtenderProvider.Event.Listener listener, BaseExtender baseExtender) throws Exception;
Map<String, ModelInstanceDescription> getModelInstanceDescriptionMap(IModelExtenderProvider.Event.Listener listener);
Set<String> getPending();
+ void clearAll();
}
/**
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
index 7182f0f..a8599fc 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
@@ -26,9 +26,11 @@
import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.IModelExtenderProvider.Event.Listener;
import org.eclipse.xtext.builder.builderState.IBuilderState;
import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IReferenceDescription;
import org.eclipse.xtext.resource.IResourceDescription;
import org.eclipse.xtext.resource.IResourceDescription.Delta;
+import com.google.common.collect.Iterables;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -144,7 +146,7 @@
public void descriptionsChanged(org.eclipse.xtext.resource.IResourceDescription.Event event) {
Map<String, IResourceDescription> toBeRebuilt = new HashMap<String, IResourceDescription>();
for (Delta delta : event.getDeltas()) {
- if ((delta.haveEObjectDescriptionsChanged() && delta.getNew() != null) || authorizationChanged(delta)) {
+ if ((delta.haveEObjectDescriptionsChanged() && delta.getNew() != null) || authorizationChanged(delta) || changedDelta(delta)) {
toBeRebuilt.put(delta.getUri().fileExtension(), delta.getNew());
}
}
@@ -171,7 +173,21 @@
}
return false;
}
+
+ boolean changedReferenceDescriptions(Delta delta){
+ Iterable<IReferenceDescription> oldReferenceDescriptions = delta.getOld().getReferenceDescriptions();
+ Iterable<IReferenceDescription> newReferenceDescriptions = delta.getNew().getReferenceDescriptions();
+ return (Iterables.size(oldReferenceDescriptions) != Iterables.size(newReferenceDescriptions));
+ }
+ boolean changedImportNames(Delta delta){
+ return (contains(delta.getNew().getImportedNames()) && !contains(delta.getOld().getImportedNames()));
+ }
+
+ boolean changedDelta(Delta delta){
+ return changedReferenceDescriptions(delta) || changedImportNames(delta);
+ }
+
boolean contains(Iterable<QualifiedName> iterable) {
String identifier = adapter.getIdentifier().toLowerCase();
for (QualifiedName qn : iterable) {
@@ -190,4 +206,11 @@
}
return false;
}
+
+ public void clearAll () {
+ if (listenerList!=null) listenerList.clear();
+ if (packageDeltaMap!=null) packageDeltaMap.clear();
+ if (pending!=null) pending.clear();
+ System.out.println("+++++++++++++++++++++ clearALL ++++++++++++++++++++++++++");
+ }
}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
index cc2cd44..50df502 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
@@ -22,6 +22,7 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.osbp.xtext.addons.EObjectHelper;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.IResourceDescription;
@@ -29,45 +30,82 @@
import org.eclipse.xtext.resource.SaveOptions;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
+import org.eclipse.xtext.validation.FeatureBasedDiagnostic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.eclipse.osbp.xtext.addons.EObjectHelper;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
-import org.eclipse.osbp.xtext.datamartdsl.services.DatamartDSLGrammarAccess;
public class ModelExtenderUtils {
- public static enum DataType { NONE("none"), DOUBLE("double"), DOUBLECOLON("double"), INT("int"), TEXT("String"), DATE("date"), BOOLEAN("boolean");
+ private ModelExtenderUtils() {}
+ public enum DataType {
+ NONE("none", null, null), DOUBLE("double", null, null), DOUBLECOLON("double", "###.00", "de_DE"), INT("int", null, null),
+ UUID("uuid", null, null), TEXT("String", null, null), DATE("Date", "yyyyMMdd", null), BOOLEAN("boolean", null, null),
+ // wora 15.12.2017 missing datatype
+ BLOBMAPPING("BlobMapping", null, null);
+
private String value;
+ private String format;
+ private String locale;
- private DataType(String value) {
- this.value = value;
+ private DataType(String value, String format, String locale) {
+ this.value = value;
+ this.format = format;
+ this.locale = locale;
+ }
+
+ private DataType(DataType type) {
+ this.value = type.value;
+ this.format = type.format;
+ this.locale = type.locale;
}
public String getValue() {
return value;
}
- };
- private static final Logger LOGGER = LoggerFactory
- .getLogger(ModelExtenderUtils.class);
+ public String getFormat() {
+ return format;
+ }
+
+ public void setFormat(String format) {
+ this.format = format;
+ }
+
+ public String getLocale() {
+ return locale;
+ }
+
+ }
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ModelExtenderUtils.class);
// persist the modified model
public static void writeModel(EObject model, String id) {
try {
- LOGGER.info("running diagnostic for "+id);
- Diagnostic diagnostic = Diagnostician.INSTANCE
- .validate(model.eResource().getContents().get(0));
+ LOGGER.info("running diagnostic for {}",id);
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(model.eResource().getContents().get(0));
int sev = diagnostic.getSeverity();
if (sev <= Diagnostic.WARNING) {
- LOGGER.info("writing "+id);
- model.eResource().save(
- SaveOptions.newBuilder().format().getOptions()
- .toOptionsMap());
- } else {
- LOGGER.error(model.eResource().getErrors().get(0)
- .toString());
+ LOGGER.info("writing {}",id);
+ model.eResource().save(SaveOptions.newBuilder().format().getOptions().toOptionsMap());
+ } else if(sev == Diagnostic.ERROR) {
+ // wora 11.12.2017 just making sure we get a proper error message shown to us
+ String err = "";
+ if(!model.eResource().getErrors().isEmpty()){ // In case the model itself contains errors
+ err = model.eResource().getErrors().get(0).toString();
+ }
+ String childrenErrorDetail = "";
+ for(Object diag : diagnostic.getChildren()){
+ FeatureBasedDiagnostic f = ((FeatureBasedDiagnostic) diag);
+ String mes = f.getMessage();
+ String source = f.getSource();
+ childrenErrorDetail += "\n\nERROR MESSAGE: "+mes+ "\n\nSOURCE:"+ source + "\n\n";
+ }
+ err = "Grammar Diagnostic ERROR\nMODEL: "+id+ childrenErrorDetail;
+
+ LOGGER.error("diagnosic error {}", err);
+ throw new IllegalArgumentException(err);
}
- LOGGER.info("finished writing "+id);
+ LOGGER.info("finished writing {}",id);
} catch (IOException e) {
LOGGER.error("{}", e);
}
@@ -77,7 +115,7 @@
// avoid some keywords
public static String normalizeName(String name) {
String normalized = Normalizer.normalize(name, Normalizer.Form.NFKD).toLowerCase().replaceAll("[^a-z0-9 ]", "").replace(" ", "_");
- if(normalized.toLowerCase().equals("description")) {
+ if(normalized.equalsIgnoreCase("description")) {
normalized = "_"+normalized;
}
return normalized;
@@ -101,7 +139,7 @@
IEObjectDescription desc = iter.next();
objects.add(desc.getEObjectOrProxy());
}
- return objects.size()>0;
+ return !objects.isEmpty();
}
// get an EObject from a full qualified datatype name
@@ -122,7 +160,7 @@
IEObjectDescription desc = iter.next();
objects.add(desc.getEObjectOrProxy());
}
- return objects.size()>0;
+ return !objects.isEmpty();
}
/**
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
index f004fca..7abb0a7 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
@@ -15,7 +15,6 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.common.util.URI;
import org.eclipse.xtext.resource.IResourceDescription;
-import org.eclipse.xtext.resource.IResourceDescription.Delta;
public class ModelInstanceDescription {
private String packageName;
diff --git a/pom.xml b/pom.xml
index 1cc863f..34b5eda 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,4 +106,13 @@
</plugins>
</pluginManagement>
</build>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.osbp.dependencies</groupId>
+ <artifactId>
+ org.eclipse.osbp.dependencies.bundle.activemq.all.osgi
+ </artifactId>
+ <version>5.14.5-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
</project>