Преглед изворни кода

NoSuchElementException error fixed in Sgen

Andreas Mülder пре 13 година
родитељ
комит
d7036c4710

+ 2 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/GeneratorExecutor.java

@@ -41,6 +41,8 @@ public class GeneratorExecutor {
 		String generatorId = model.getGeneratorId();
 		GeneratorDescriptor description = GeneratorExtensions
 				.getGeneratorDescriptorForId(generatorId);
+		if (description == null)
+			return;
 		final ISCTGenerator generator = description.createGenerator();
 		final EList<GeneratorEntry> entries = model.getEntries();
 		Job generatorJob = new Job("Execute SCT Genmodel " + file.getName()) {

+ 17 - 7
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/extensions/GeneratorExtensions.java

@@ -13,6 +13,8 @@ package org.yakindu.sct.generator.core.extensions;
 import static com.google.common.collect.Iterables.transform;
 import static com.google.common.collect.Lists.newArrayList;
 
+import java.util.NoSuchElementException;
+
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.Platform;
@@ -133,15 +135,23 @@ public class GeneratorExtensions {
 		return generatorDescriptors;
 	}
 
+	/**
+	 * returns the Generator Descriptor for the given generator id, or null, if
+	 * the id is unknown
+	 */
 	public static GeneratorDescriptor getGeneratorDescriptorForId(
 			final String generatorId) {
-		return Iterables.find(getGeneratorDescriptors(),
-				new Predicate<GeneratorDescriptor>() {
-					public boolean apply(GeneratorDescriptor input) {
-						return input != null && input.getId() != null
-								&& input.getId().equals(generatorId);
-					}
-				});
+		try {
+			return Iterables.find(getGeneratorDescriptors(),
+					new Predicate<GeneratorDescriptor>() {
+						public boolean apply(GeneratorDescriptor input) {
+							return input != null && input.getId() != null
+									&& input.getId().equals(generatorId);
+						}
+					});
+		} catch (NoSuchElementException ex) {
+			return null;
+		}
 	}
 
 	private static final class CreateGeneratorDescriptor implements

+ 2 - 1
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/contentassist/SGenProposalProvider.java

@@ -28,7 +28,6 @@ import org.yakindu.sct.model.sgen.GeneratorModel;
  */
 public class SGenProposalProvider extends AbstractSGenProposalProvider {
 
-
 	@Override
 	public void completeGeneratorEntry_ContentType(EObject model,
 			Assignment assignment, ContentAssistContext context,
@@ -38,6 +37,8 @@ public class SGenProposalProvider extends AbstractSGenProposalProvider {
 				GeneratorModel.class);
 		GeneratorDescriptor descriptor = GeneratorExtensions
 				.getGeneratorDescriptorForId(generatorModel.getGeneratorId());
+		if (descriptor == null)
+			return;
 		ICompletionProposal proposal = createCompletionProposal(
 				descriptor.getContentType(), context);
 		acceptor.accept(proposal);

+ 4 - 1
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/scoping/SGenScopeProvider.java

@@ -71,6 +71,8 @@ public class SGenScopeProvider extends AbstractDeclarativeScopeProvider {
 		String id = generatorModel.getGeneratorId();
 		final GeneratorDescriptor desc = GeneratorExtensions
 				.getGeneratorDescriptorForId(id);
+		if (desc == null)
+			return IScope.NULLSCOPE;
 		final Class<?> elementRefType = desc.getElementRefType();
 		return new FilteringScope(getDelegate().getScope(context, reference),
 				new Predicate<IEObjectDescription>() {
@@ -95,7 +97,8 @@ public class SGenScopeProvider extends AbstractDeclarativeScopeProvider {
 						FeatureConfiguration configuration = EcoreUtil2
 								.getContainerOfType(context,
 										FeatureConfiguration.class);
-						if(configuration == null || configuration.getType() == null)
+						if (configuration == null
+								|| configuration.getType() == null)
 							return false;
 						String featureName = configuration.getType().getName();
 						if (featureName == null) {

+ 9 - 8
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java

@@ -15,7 +15,6 @@ import static com.google.common.collect.Iterables.filter;
 import static com.google.common.collect.Iterables.transform;
 
 import java.util.List;
-import java.util.NoSuchElementException;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
@@ -23,8 +22,8 @@ import org.eclipse.xtext.EcoreUtil2;
 import org.eclipse.xtext.validation.Check;
 import org.yakindu.base.base.NamedElement;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
-import org.yakindu.sct.generator.core.extensions.LibraryExtensions;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDescriptor;
+import org.yakindu.sct.generator.core.extensions.LibraryExtensions;
 import org.yakindu.sct.generator.core.extensions.LibraryExtensions.LibraryDescriptor;
 import org.yakindu.sct.generator.core.features.IDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.BoolLiteral;
@@ -65,7 +64,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 	public static final String INCOMPATIBLE_TYPE_FLOAT_EXPECTED = "Incompatible type, Float expected";
 	public static final String INCOMPATIBLE_TYPE_STRING_EXPECTED = "Incompatible type, String expected";
 	public static final String UNKNOWN_CONTENT_TYPE = "Unknown content type '";
-	//Failure codes
+	// Failure codes
 	public static final String CODE_REQUIRED_FEATURE = "code_req_feature";
 
 	@Check
@@ -74,6 +73,8 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 				GeneratorModel.class);
 		GeneratorDescriptor descriptor = GeneratorExtensions
 				.getGeneratorDescriptorForId(generatorModel.getGeneratorId());
+		if (descriptor == null)
+			return;
 		String contentType = entry.getContentType();
 		if (contentType == null || contentType.trim().length() == 0) {
 			return;
@@ -143,10 +144,9 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 
 	@Check
 	public void checkGeneratorExists(GeneratorModel model) {
-		try {
-			GeneratorExtensions.getGeneratorDescriptorForId(model
-					.getGeneratorId());
-		} catch (NoSuchElementException e) {
+		GeneratorDescriptor descriptor = GeneratorExtensions
+				.getGeneratorDescriptorForId(model.getGeneratorId());
+		if (descriptor == null) {
 			error(String.format(UNKOWN_GENERATOR + " %s!",
 					model.getGeneratorId()),
 					SGenPackage.Literals.GENERATOR_MODEL__GENERATOR_ID);
@@ -206,7 +206,8 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 			if (!configuredTypes.contains(featureType.getName()))
 				error(String.format(MISSING_REQUIRED_FEATURE + " %s",
 						featureType.getName()),
-						SGenPackage.Literals.GENERATOR_ENTRY__ELEMENT_REF,CODE_REQUIRED_FEATURE, featureType.getName());
+						SGenPackage.Literals.GENERATOR_ENTRY__ELEMENT_REF,
+						CODE_REQUIRED_FEATURE, featureType.getName());
 		}
 	}