Address Sonar issues in generic implementations

This commit addresses a number of bugs and
code smells reported by Sonar in the generic
packages of Eclipse Capra.

Change-Id: Ib9f45536bc3ded91ffb2b8202dedadf62fe8aa9c
diff --git a/bundles/org.eclipse.capra.generic.persistence/META-INF/MANIFEST.MF b/bundles/org.eclipse.capra.generic.persistence/META-INF/MANIFEST.MF
index 2051273..37435bf 100644
--- a/bundles/org.eclipse.capra.generic.persistence/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.capra.generic.persistence/META-INF/MANIFEST.MF
@@ -11,4 +11,5 @@
  org.eclipse.capra.core
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Export-Package: org.eclipse.capra.generic.persistance
+Import-Package: org.slf4j
 Automatic-Module-Name: org.eclipse.capra.generic.persistence
diff --git a/bundles/org.eclipse.capra.generic.persistence/src/org/eclipse/capra/generic/persistance/TracePersistenceAdapter.java b/bundles/org.eclipse.capra.generic.persistence/src/org/eclipse/capra/generic/persistance/TracePersistenceAdapter.java
index 80ea702..970ccb9 100644
--- a/bundles/org.eclipse.capra.generic.persistence/src/org/eclipse/capra/generic/persistance/TracePersistenceAdapter.java
+++ b/bundles/org.eclipse.capra.generic.persistence/src/org/eclipse/capra/generic/persistance/TracePersistenceAdapter.java
@@ -29,6 +29,8 @@
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This generic implementation of
@@ -38,6 +40,8 @@
  */
 public class TracePersistenceAdapter implements org.eclipse.capra.core.adapters.TracePersistenceAdapter {
 
+	private static final Logger LOG = LoggerFactory.getLogger(TracePersistenceAdapter.class);
+
 	private static final String DEFAULT_PROJECT_NAME = "__WorkspaceTraceModels";
 	private static final String DEFAULT_TRACE_MODEL_NAME = "traceModel.xmi";
 	private static final String DEFAULT_ARTIFACT_WRAPPER_MODEL_NAME = "artifactWrappers.xmi";
@@ -51,7 +55,7 @@
 
 				return Optional.of(resource.getContents().get(0));
 			} catch (IOException e) {
-				e.printStackTrace();
+				LOG.error("Could not load model", e);
 			}
 		}
 		return Optional.empty();
@@ -59,7 +63,7 @@
 
 	@Override
 	public EObject getTraceModel(ResourceSet resourceSet) {
-		TraceMetaModelAdapter adapter = ExtensionPointHelper.getTraceMetamodelAdapter().get();
+		TraceMetaModelAdapter adapter = ExtensionPointHelper.getTraceMetamodelAdapter().orElseThrow();
 		return loadModel(resourceSet, DEFAULT_TRACE_MODEL_NAME).orElse(adapter.createModel());
 	}
 
@@ -99,14 +103,13 @@
 			resourceForArtifacts.save(null);
 			resource.save(null);
 		} catch (Exception e) {
-			System.err.println("Unable to save trace model!");
-			e.printStackTrace();
+			LOG.error("Unable to save trace model!", e);
 		}
 	}
 
 	@Override
 	public EObject getArtifactWrappers(ResourceSet resourceSet) {
-		ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
+		ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().orElseThrow();
 		return loadModel(resourceSet, DEFAULT_ARTIFACT_WRAPPER_MODEL_NAME).orElse(adapter.createModel());
 	}
 
diff --git a/bundles/org.eclipse.capra.generic.priority/src/org/eclipse/capra/generic/priority/DefaultPriorityHandler.java b/bundles/org.eclipse.capra.generic.priority/src/org/eclipse/capra/generic/priority/DefaultPriorityHandler.java
index 859b705..fc76d14 100644
--- a/bundles/org.eclipse.capra.generic.priority/src/org/eclipse/capra/generic/priority/DefaultPriorityHandler.java
+++ b/bundles/org.eclipse.capra.generic.priority/src/org/eclipse/capra/generic/priority/DefaultPriorityHandler.java
@@ -31,7 +31,7 @@
 	public <T> IArtifactHandler<? extends T> getSelectedHandler(
 			Collection<? extends IArtifactHandler<? extends T>> handlers, Object artifact) {
 		return handlers.stream().filter(handler -> handler.canHandleArtifact(artifact))
-				.max(new ArtifactHandlerPriorityComparator()).get();
+				.max(new ArtifactHandlerPriorityComparator()).orElseThrow();
 	}
 
 	/**
diff --git a/bundles/org.eclipse.capra.generic.tracemodel/src/org/eclipse/capra/generic/tracemodel/GenericMetaModelAdapter.java b/bundles/org.eclipse.capra.generic.tracemodel/src/org/eclipse/capra/generic/tracemodel/GenericMetaModelAdapter.java
index 56ea5d7..f7c6624 100644
--- a/bundles/org.eclipse.capra.generic.tracemodel/src/org/eclipse/capra/generic/tracemodel/GenericMetaModelAdapter.java
+++ b/bundles/org.eclipse.capra.generic.tracemodel/src/org/eclipse/capra/generic/tracemodel/GenericMetaModelAdapter.java
@@ -28,16 +28,12 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Provides generic functionality to deal with traceability meta models.
  */
 public class GenericMetaModelAdapter extends AbstractMetaModelAdapter implements TraceMetaModelAdapter {
 
-	private static final Logger LOG = LoggerFactory.getLogger(GenericMetaModelAdapter.class);
-
 	private static final int DEFAULT_INITIAL_TRANSITIVITY_DEPTH = 1;
 
 	public GenericMetaModelAdapter() {
@@ -64,7 +60,7 @@
 		EObject trace = TracemodelFactory.eINSTANCE.create(traceType);
 		RelatedTo relatedToTrace = (RelatedTo) trace;
 		relatedToTrace.getItem().addAll(selection);
-		TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
+		TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().orElseThrow();
 		EObject artifactModel = persistenceAdapter.getArtifactWrappers(new ResourceSetImpl());
 		ArtifactHelper artifactHelper = new ArtifactHelper(artifactModel);
 
@@ -74,7 +70,7 @@
 		StringBuilder name = new StringBuilder();
 		for (Object obj : selection) {
 			name.append(" ")
-					.append(artifactHelper.getHandler(artifactHelper.unwrapWrapper(obj)).get()
+					.append(artifactHelper.getHandler(artifactHelper.unwrapWrapper(obj)).orElseThrow()
 							.withCastedHandler(artifactHelper.unwrapWrapper(obj), (h, e) -> h.getDisplayName(e))
 							.orElseGet(obj::toString));
 		}
@@ -86,18 +82,16 @@
 	@Override
 	public boolean isThereATraceBetween(EObject firstElement, EObject secondElement, EObject traceModel) {
 		GenericTraceModel root = (GenericTraceModel) traceModel;
-		List<RelatedTo> relevantLinks = new ArrayList<RelatedTo>();
+		List<RelatedTo> relevantLinks = new ArrayList<>();
 		List<RelatedTo> allTraces = root.getTraces();
 
 		for (RelatedTo trace : allTraces) {
-			if (!firstElement.equals(secondElement)) {
-				if (EMFHelper.isElementInList(trace.getItem(), firstElement)
-						&& EMFHelper.isElementInList(trace.getItem(), secondElement)) {
-					relevantLinks.add(trace);
-				}
+			if (!firstElement.equals(secondElement) && EMFHelper.isElementInList(trace.getItem(), firstElement)
+					&& EMFHelper.isElementInList(trace.getItem(), secondElement)) {
+				relevantLinks.add(trace);
 			}
 		}
-		return relevantLinks.size() > 0;
+		return !relevantLinks.isEmpty();
 	}
 
 	@Override
@@ -128,7 +122,7 @@
 		List<Connection> connections = new ArrayList<>();
 		List<RelatedTo> traces = root.getTraces();
 
-		if (selectedRelationshipTypes.size() == 0
+		if (selectedRelationshipTypes.isEmpty()
 				|| selectedRelationshipTypes.contains(TracemodelPackage.eINSTANCE.getRelatedTo().getName())) {
 			if (element instanceof RelatedTo) {
 				RelatedTo trace = (RelatedTo) element;
@@ -205,7 +199,8 @@
 				tModel.getTraces().remove(trace);
 			}
 
-			TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
+			TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter()
+					.orElseThrow();
 			persistenceAdapter.saveTracesAndArtifacts(tModel,
 					persistenceAdapter.getArtifactWrappers(new ResourceSetImpl()));
 		}