Jelajahi Sumber

IN PROGRESS - issue YAKHMI-749: C-Code generator throws runtime exception if target project is closed.
https://intern.itemis.de/jira/browse/YAKHMI-749

Added validation to check if target project is open.

markus.muehlbrandt@gmail.com 13 tahun lalu
induk
melakukan
6a10232f1e

+ 9 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/AbstractDefaultFeatureValueProvider.java

@@ -96,6 +96,15 @@ public abstract class AbstractDefaultFeatureValueProvider implements
 			return false;
 		}
 	}
+	
+	protected boolean projectOpened(String value) {
+		try {
+			return ResourcesPlugin.getWorkspace().getRoot().getProject(value)
+					.isOpen();
+		} catch (IllegalArgumentException e) {
+			return false;
+		}
+	}
 
 	protected boolean folderExists(String projectName, String folderPath) {
 		try {

+ 5 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/features/impl/CoreLibraryDefaultFeatureValueProvider.java

@@ -56,6 +56,11 @@ public class CoreLibraryDefaultFeatureValueProvider extends
 				&& !projectExists(parameterValue.getStringValue()))
 			return warning(String.format("The Project %s does not exist",
 					parameterValue.getExpression()));
+		if (OUTLET_FEATURE_TARGET_PROJECT.equals(parameterName)
+				&& projectExists(parameterValue.getStringValue())
+				&& !projectOpened(parameterValue.getStringValue()))
+			return error(String.format("The Project %s is not open.",
+					parameterValue.getExpression()));
 		if (OUTLET_FEATURE_TARGET_FOLDER.equals(parameterName)) {
 			FeatureParameterValue targetProjectParam = parameterValue
 					.getFeatureConfiguration().getParameterValue(