Java Code Examples for org.eclipse.emf.ecore.util.EcoreValidator

The following are top voted examples for showing how to use org.eclipse.emf.ecore.util.EcoreValidator. These examples are extracted from open source projects. You can vote up the examples you like and your votes will be used in our system to generate more good examples.
Example 1
Project: xtext-core   File: CompositeEValidatorTest.java   View source code 6 votes vote down vote up
/** Test for https://bugs.eclipse.org/bugs/show_bug.cgi?id=396726 */
@Test public void testNoShortCircuiting() {
	CompositeEValidator compositeValidator = new CompositeEValidator();
	compositeValidator.setEqualitySupportProvider(new Provider<CompositeEValidator.EValidatorEqualitySupport>() {
		@Override
		public EValidatorEqualitySupport get() {
			return new CompositeEValidator.EValidatorEqualitySupport();
		}
	});
	assertEquals(1, compositeValidator.getContents().size());

	compositeValidator.addValidator(EcoreValidator.INSTANCE);
	assertEquals(2, compositeValidator.getContents().size());

	TestEcoreValidator testValidator = new TestEcoreValidator();
	compositeValidator.addValidator(testValidator);
	assertEquals(3, compositeValidator.getContents().size());
	
	compositeValidator.validate(EcoreFactory.eINSTANCE.createEClass(), new BasicDiagnostic(), null);
	assertTrue(testValidator.wasCalled());
}
 
Example 2
Project: xtext-core   File: XtextValidationTest.java   View source code 6 votes vote down vote up
@Override
public void setUp() throws Exception {
	super.setUp();
	with(XtextStandaloneSetup.class);
	EValidator.Registry.INSTANCE.put(EcorePackage.eINSTANCE, EcoreValidator.INSTANCE);
		File tempFile = File.createTempFile("XtextValidationTest", ".ecore");
		tempFile.deleteOnExit();
		Files.write("<?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='XtextValidationBugs'"+
				"                nsURI='http://XtextValidationBugs'"+
				"                nsPrefix='XtextValidationBugs'>"+
				"  <eClassifiers xsi:type='ecore:EClass' name='Bug322875'>"+
				"    <eStructuralFeatures xsi:type='ecore:EReference' name='referencesETypeFromClasspathPackage' eType='ecore:EClass classpath:/org/eclipse/xtext/Xtext.ecore#//Grammar'/>"+
				"  </eClassifiers>"+
				"</ecore:EPackage>"
				, tempFile, StandardCharsets.UTF_8);
		xtextValidationTest_ecore = tempFile.toURI().toURL();
}
 
Example 3
Project: DarwinSPL   File: HyexpressionMarkerHelper.java   View source code 5 votes vote down vote up
/**
 * <p>
 * Removes all markers that were caused by the given object from the resource.
 * Markers are created and removed asynchronously. Thus, they may not appear when
 * calls to this method return. But, the order of marker additions and removals is
 * preserved.
 * </p>
 * 
 * @param resource The resource where to delete markers from
 * @param causingObject The cause of the problems to remove
 */
public void unmark(Resource resource, final EObject causingObject) {
	final IFile file = getFile(resource);
	if (file == null) {
		return;
	}
	final String markerID = getMarkerID(eu.hyvar.feature.expression.resource.hyexpression.HyexpressionEProblemType.UNKNOWN);
	final String causingObjectURI = getObjectURI(causingObject);
	if (causingObjectURI == null) {
		return;
	}
	COMMAND_QUEUE.addCommand(new eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionCommand<Object>() {
		public boolean execute(Object context) {
			try {
				IMarker[] markers = file.findMarkers(markerID, true, IResource.DEPTH_ZERO);
				for (IMarker marker : markers) {
					if (causingObjectURI.equals(marker.getAttribute(EcoreValidator.URI_ATTRIBUTE))) {
						marker.delete();
					}
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 4
Project: DarwinSPL   File: HymanifestMarkerHelper.java   View source code 5 votes vote down vote up
/**
 * <p>
 * Removes all markers that were caused by the given object from the resource.
 * Markers are created and removed asynchronously. Thus, they may not appear when
 * calls to this method return. But, the order of marker additions and removals is
 * preserved.
 * </p>
 * 
 * @param resource The resource where to delete markers from
 * @param causingObject The cause of the problems to remove
 */
public void unmark(Resource resource, final EObject causingObject) {
	final IFile file = getFile(resource);
	if (file == null) {
		return;
	}
	final String markerID = getMarkerID(eu.hyvar.mspl.manifest.resource.hymanifest.HymanifestEProblemType.UNKNOWN);
	final String causingObjectURI = getObjectURI(causingObject);
	if (causingObjectURI == null) {
		return;
	}
	COMMAND_QUEUE.addCommand(new eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestCommand<Object>() {
		public boolean execute(Object context) {
			try {
				IMarker[] markers = file.findMarkers(markerID, true, IResource.DEPTH_ZERO);
				for (IMarker marker : markers) {
					if (causingObjectURI.equals(marker.getAttribute(EcoreValidator.URI_ATTRIBUTE))) {
						marker.delete();
					}
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 5
Project: DarwinSPL   File: HymappingMarkerHelper.java   View source code 5 votes vote down vote up
/**
 * <p>
 * Removes all markers that were caused by the given object from the resource.
 * Markers are created and removed asynchronously. Thus, they may not appear when
 * calls to this method return. But, the order of marker additions and removals is
 * preserved.
 * </p>
 * 
 * @param resource The resource where to delete markers from
 * @param causingObject The cause of the problems to remove
 */
public void unmark(Resource resource, final EObject causingObject) {
	final IFile file = getFile(resource);
	if (file == null) {
		return;
	}
	final String markerID = getMarkerID(eu.hyvar.feature.mapping.resource.hymapping.HymappingEProblemType.UNKNOWN);
	final String causingObjectURI = getObjectURI(causingObject);
	if (causingObjectURI == null) {
		return;
	}
	COMMAND_QUEUE.addCommand(new eu.hyvar.feature.mapping.resource.hymapping.IHymappingCommand<Object>() {
		public boolean execute(Object context) {
			try {
				IMarker[] markers = file.findMarkers(markerID, true, IResource.DEPTH_ZERO);
				for (IMarker marker : markers) {
					if (causingObjectURI.equals(marker.getAttribute(EcoreValidator.URI_ATTRIBUTE))) {
						marker.delete();
					}
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 6
Project: DarwinSPL   File: HyconstraintsMarkerHelper.java   View source code 5 votes vote down vote up
/**
 * <p>
 * Removes all markers that were caused by the given object from the resource.
 * Markers are created and removed asynchronously. Thus, they may not appear when
 * calls to this method return. But, the order of marker additions and removals is
 * preserved.
 * </p>
 * 
 * @param resource The resource where to delete markers from
 * @param causingObject The cause of the problems to remove
 */
public void unmark(Resource resource, final EObject causingObject) {
	final IFile file = getFile(resource);
	if (file == null) {
		return;
	}
	final String markerID = getMarkerID(eu.hyvar.feature.constraint.resource.hyconstraints.HyconstraintsEProblemType.UNKNOWN);
	final String causingObjectURI = getObjectURI(causingObject);
	if (causingObjectURI == null) {
		return;
	}
	COMMAND_QUEUE.addCommand(new eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsCommand<Object>() {
		public boolean execute(Object context) {
			try {
				IMarker[] markers = file.findMarkers(markerID, true, IResource.DEPTH_ZERO);
				for (IMarker marker : markers) {
					if (causingObjectURI.equals(marker.getAttribute(EcoreValidator.URI_ATTRIBUTE))) {
						marker.delete();
					}
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 7
Project: DarwinSPL   File: HydatavalueMarkerHelper.java   View source code 5 votes vote down vote up
/**
 * <p>
 * Removes all markers that were caused by the given object from the resource.
 * Markers are created and removed asynchronously. Thus, they may not appear when
 * calls to this method return. But, the order of marker additions and removals is
 * preserved.
 * </p>
 * 
 * @param resource The resource where to delete markers from
 * @param causingObject The cause of the problems to remove
 */
public void unmark(Resource resource, final EObject causingObject) {
	final IFile file = getFile(resource);
	if (file == null) {
		return;
	}
	final String markerID = getMarkerID(eu.hyvar.dataValues.resource.hydatavalue.HydatavalueEProblemType.UNKNOWN);
	final String causingObjectURI = getObjectURI(causingObject);
	if (causingObjectURI == null) {
		return;
	}
	COMMAND_QUEUE.addCommand(new eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueCommand<Object>() {
		public boolean execute(Object context) {
			try {
				IMarker[] markers = file.findMarkers(markerID, true, IResource.DEPTH_ZERO);
				for (IMarker marker : markers) {
					if (causingObjectURI.equals(marker.getAttribute(EcoreValidator.URI_ATTRIBUTE))) {
						marker.delete();
					}
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 8
Project: DarwinSPL   File: DwprofileMarkerHelper.java   View source code 5 votes vote down vote up
/**
 * <p>
 * Removes all markers that were caused by the given object from the resource.
 * Markers are created and removed asynchronously. Thus, they may not appear when
 * calls to this method return. But, the order of marker additions and removals is
 * preserved.
 * </p>
 * 
 * @param resource The resource where to delete markers from
 * @param causingObject The cause of the problems to remove
 */
public void unmark(Resource resource, final EObject causingObject) {
	final IFile file = getFile(resource);
	if (file == null) {
		return;
	}
	final String markerID = getMarkerID(de.darwinspl.preferences.resource.dwprofile.DwprofileEProblemType.UNKNOWN);
	final String causingObjectURI = getObjectURI(causingObject);
	if (causingObjectURI == null) {
		return;
	}
	COMMAND_QUEUE.addCommand(new de.darwinspl.preferences.resource.dwprofile.IDwprofileCommand<Object>() {
		public boolean execute(Object context) {
			try {
				IMarker[] markers = file.findMarkers(markerID, true, IResource.DEPTH_ZERO);
				for (IMarker marker : markers) {
					if (causingObjectURI.equals(marker.getAttribute(EcoreValidator.URI_ATTRIBUTE))) {
						marker.delete();
					}
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 9
Project: xtext-core   File: XtextValidator.java   View source code 5 votes vote down vote up
public boolean createMessageForSource(Diagnostic diagnostic, EObject object, ValidationMessageAcceptor acceptor) {
	String code = XtextValidator.class.getName() + ".PackageValidation." + diagnostic.getCode();
	int severity = diagnostic.getSeverity();
	if (diagnostic.getCode() == EcoreValidator.UNIQUE_CLASSIFIER_NAMES || diagnostic.getCode() == EcoreValidator.UNIQUE_FEATURE_NAMES)
		severity = Diagnostic.ERROR;
	String message = diagnostic.getMessage();
	return createMessageForSource(message, code, severity, object, acceptor);
}
 
Example 10
Project: xtext-core   File: XtextValidator.java   View source code 5 votes vote down vote up
public void doCreateMessage(Diagnostic diagnostic, EObject object, EStructuralFeature feature, ValidationMessageAcceptor acceptor) {
	String code = XtextValidator.class.getName() + ".PackageValidation." + diagnostic.getCode();
	int severity = diagnostic.getSeverity();
	if (diagnostic.getCode() == EcoreValidator.UNIQUE_CLASSIFIER_NAMES || diagnostic.getCode() == EcoreValidator.UNIQUE_FEATURE_NAMES)
		severity = Diagnostic.ERROR;
	String message = diagnostic.getMessage();
	doCreateMessage(message, code, severity, object, feature, acceptor);
}
 
Example 11
Project: eclipse-avro   File: EcorePackageImpl.java   View source code 5 votes vote down vote up
/**
 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
 * 
 * <p>This method is used to initialize {@link EcorePackage#eINSTANCE} when that field is accessed.
 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @see #eNS_URI
 * @see #createPackageContents()
 * @see #initializePackageContents()
 * @generated
 */
public static EcorePackage init()
{
  if (isInited) return (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);

  // Obtain or create and register package
  EcorePackageImpl theEcorePackage = (EcorePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof EcorePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new EcorePackageImpl());

  isInited = true;

  // Create package meta-data objects
  theEcorePackage.createPackageContents();

  // Initialize created meta-data
  theEcorePackage.initializePackageContents();

  // Register package validator
  EValidator.Registry.INSTANCE.put
    (theEcorePackage, 
     new EValidator.Descriptor()
     {
       public EValidator getEValidator()
       {
         return EcoreValidator.INSTANCE;
       }
     });


  // Update the registry and return the package
  EPackage.Registry.INSTANCE.put(EcorePackage.eNS_URI, theEcorePackage);
  return theEcorePackage;
}
 
Example 12
Project: clickwatch   File: EcorePackageImpl.java   View source code 5 votes vote down vote up
/**
 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
 * 
 * <p>This method is used to initialize {@link EcorePackage#eINSTANCE} when that field is accessed.
 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @see #eNS_URI
 * @see #createPackageContents()
 * @see #initializePackageContents()
 * @generated
 */
public static EcorePackage init()
{
  if (isInited) return (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);

  // Obtain or create and register package
  EcorePackageImpl theEcorePackage = (EcorePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof EcorePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new EcorePackageImpl());

  isInited = true;

  // Create package meta-data objects
  theEcorePackage.createPackageContents();

  // Initialize created meta-data
  theEcorePackage.initializePackageContents();

  // Register package validator
  EValidator.Registry.INSTANCE.put
    (theEcorePackage, 
     new EValidator.Descriptor()
     {
       public EValidator getEValidator()
       {
         return EcoreValidator.INSTANCE;
       }
     });


  // Update the registry and return the package
  EPackage.Registry.INSTANCE.put(EcorePackage.eNS_URI, theEcorePackage);
  return theEcorePackage;
}
 
Example 13
Project: DarwinSPL   File: HyexpressionMarkerHelper.java   View source code 4 votes vote down vote up
protected void createMarkerFromDiagnostic(final IFile file, final eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionTextDiagnostic diagnostic) {
	final eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionProblem problem = diagnostic.getProblem();
	eu.hyvar.feature.expression.resource.hyexpression.HyexpressionEProblemType problemType = problem.getType();
	final String markerID = getMarkerID(problemType);
	COMMAND_QUEUE.addCommand(new eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionCommand<Object>() {
		public boolean execute(Object context) {
			try {
				// if there are too many markers, we do not add new ones
				if (file.findMarkers(markerID, false, IResource.DEPTH_ZERO).length >= MAXIMUM_MARKERS) {
					return true;
				}
				
				IMarker marker = file.createMarker(markerID);
				if (problem.getSeverity() == eu.hyvar.feature.expression.resource.hyexpression.HyexpressionEProblemSeverity.ERROR) {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
				} else {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
				}
				marker.setAttribute(IMarker.MESSAGE, diagnostic.getMessage());
				eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionTextDiagnostic textDiagnostic = (eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionTextDiagnostic) diagnostic;
				marker.setAttribute(IMarker.LINE_NUMBER, textDiagnostic.getLine());
				marker.setAttribute(IMarker.CHAR_START, textDiagnostic.getCharStart());
				marker.setAttribute(IMarker.CHAR_END, textDiagnostic.getCharEnd() + 1);
				if (diagnostic instanceof eu.hyvar.feature.expression.resource.hyexpression.mopp.HyexpressionResource.ElementBasedTextDiagnostic) {
					EObject element = ((eu.hyvar.feature.expression.resource.hyexpression.mopp.HyexpressionResource.ElementBasedTextDiagnostic) diagnostic).getElement();
					String elementURI = getObjectURI(element);
					if (elementURI != null) {
						marker.setAttribute(EcoreValidator.URI_ATTRIBUTE, elementURI);
					}
				}
				Collection<eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionQuickFix> quickFixes = textDiagnostic.getProblem().getQuickFixes();
				Collection<Object> sourceIDs = new ArrayList<Object>();
				if (quickFixes != null) {
					for (eu.hyvar.feature.expression.resource.hyexpression.IHyexpressionQuickFix quickFix : quickFixes) {
						if (quickFix != null) {
							sourceIDs.add(quickFix.getContextAsString());
						}
					}
				}
				if (!sourceIDs.isEmpty()) {
					marker.setAttribute(IMarker.SOURCE_ID, eu.hyvar.feature.expression.resource.hyexpression.util.HyexpressionStringUtil.explode(sourceIDs, "|"));
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 14
Project: DarwinSPL   File: HymanifestMarkerHelper.java   View source code 4 votes vote down vote up
protected void createMarkerFromDiagnostic(final IFile file, final eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestTextDiagnostic diagnostic) {
	final eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestProblem problem = diagnostic.getProblem();
	eu.hyvar.mspl.manifest.resource.hymanifest.HymanifestEProblemType problemType = problem.getType();
	final String markerID = getMarkerID(problemType);
	COMMAND_QUEUE.addCommand(new eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestCommand<Object>() {
		public boolean execute(Object context) {
			try {
				// if there are too many markers, we do not add new ones
				if (file.findMarkers(markerID, false, IResource.DEPTH_ZERO).length >= MAXIMUM_MARKERS) {
					return true;
				}
				
				IMarker marker = file.createMarker(markerID);
				if (problem.getSeverity() == eu.hyvar.mspl.manifest.resource.hymanifest.HymanifestEProblemSeverity.ERROR) {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
				} else {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
				}
				marker.setAttribute(IMarker.MESSAGE, diagnostic.getMessage());
				eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestTextDiagnostic textDiagnostic = (eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestTextDiagnostic) diagnostic;
				marker.setAttribute(IMarker.LINE_NUMBER, textDiagnostic.getLine());
				marker.setAttribute(IMarker.CHAR_START, textDiagnostic.getCharStart());
				marker.setAttribute(IMarker.CHAR_END, textDiagnostic.getCharEnd() + 1);
				if (diagnostic instanceof eu.hyvar.mspl.manifest.resource.hymanifest.mopp.HymanifestResource.ElementBasedTextDiagnostic) {
					EObject element = ((eu.hyvar.mspl.manifest.resource.hymanifest.mopp.HymanifestResource.ElementBasedTextDiagnostic) diagnostic).getElement();
					String elementURI = getObjectURI(element);
					if (elementURI != null) {
						marker.setAttribute(EcoreValidator.URI_ATTRIBUTE, elementURI);
					}
				}
				Collection<eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestQuickFix> quickFixes = textDiagnostic.getProblem().getQuickFixes();
				Collection<Object> sourceIDs = new ArrayList<Object>();
				if (quickFixes != null) {
					for (eu.hyvar.mspl.manifest.resource.hymanifest.IHymanifestQuickFix quickFix : quickFixes) {
						if (quickFix != null) {
							sourceIDs.add(quickFix.getContextAsString());
						}
					}
				}
				if (!sourceIDs.isEmpty()) {
					marker.setAttribute(IMarker.SOURCE_ID, eu.hyvar.mspl.manifest.resource.hymanifest.util.HymanifestStringUtil.explode(sourceIDs, "|"));
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 15
Project: DarwinSPL   File: HymappingMarkerHelper.java   View source code 4 votes vote down vote up
protected void createMarkerFromDiagnostic(final IFile file, final eu.hyvar.feature.mapping.resource.hymapping.IHymappingTextDiagnostic diagnostic) {
	final eu.hyvar.feature.mapping.resource.hymapping.IHymappingProblem problem = diagnostic.getProblem();
	eu.hyvar.feature.mapping.resource.hymapping.HymappingEProblemType problemType = problem.getType();
	final String markerID = getMarkerID(problemType);
	COMMAND_QUEUE.addCommand(new eu.hyvar.feature.mapping.resource.hymapping.IHymappingCommand<Object>() {
		public boolean execute(Object context) {
			try {
				// if there are too many markers, we do not add new ones
				if (file.findMarkers(markerID, false, IResource.DEPTH_ZERO).length >= MAXIMUM_MARKERS) {
					return true;
				}
				
				IMarker marker = file.createMarker(markerID);
				if (problem.getSeverity() == eu.hyvar.feature.mapping.resource.hymapping.HymappingEProblemSeverity.ERROR) {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
				} else {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
				}
				marker.setAttribute(IMarker.MESSAGE, diagnostic.getMessage());
				eu.hyvar.feature.mapping.resource.hymapping.IHymappingTextDiagnostic textDiagnostic = (eu.hyvar.feature.mapping.resource.hymapping.IHymappingTextDiagnostic) diagnostic;
				marker.setAttribute(IMarker.LINE_NUMBER, textDiagnostic.getLine());
				marker.setAttribute(IMarker.CHAR_START, textDiagnostic.getCharStart());
				marker.setAttribute(IMarker.CHAR_END, textDiagnostic.getCharEnd() + 1);
				if (diagnostic instanceof eu.hyvar.feature.mapping.resource.hymapping.mopp.HymappingResource.ElementBasedTextDiagnostic) {
					EObject element = ((eu.hyvar.feature.mapping.resource.hymapping.mopp.HymappingResource.ElementBasedTextDiagnostic) diagnostic).getElement();
					String elementURI = getObjectURI(element);
					if (elementURI != null) {
						marker.setAttribute(EcoreValidator.URI_ATTRIBUTE, elementURI);
					}
				}
				Collection<eu.hyvar.feature.mapping.resource.hymapping.IHymappingQuickFix> quickFixes = textDiagnostic.getProblem().getQuickFixes();
				Collection<Object> sourceIDs = new ArrayList<Object>();
				if (quickFixes != null) {
					for (eu.hyvar.feature.mapping.resource.hymapping.IHymappingQuickFix quickFix : quickFixes) {
						if (quickFix != null) {
							sourceIDs.add(quickFix.getContextAsString());
						}
					}
				}
				if (!sourceIDs.isEmpty()) {
					marker.setAttribute(IMarker.SOURCE_ID, eu.hyvar.feature.mapping.resource.hymapping.util.HymappingStringUtil.explode(sourceIDs, "|"));
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 16
Project: DarwinSPL   File: HyconstraintsMarkerHelper.java   View source code 4 votes vote down vote up
protected void createMarkerFromDiagnostic(final IFile file, final eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsTextDiagnostic diagnostic) {
	final eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsProblem problem = diagnostic.getProblem();
	eu.hyvar.feature.constraint.resource.hyconstraints.HyconstraintsEProblemType problemType = problem.getType();
	final String markerID = getMarkerID(problemType);
	COMMAND_QUEUE.addCommand(new eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsCommand<Object>() {
		public boolean execute(Object context) {
			try {
				// if there are too many markers, we do not add new ones
				if (file.findMarkers(markerID, false, IResource.DEPTH_ZERO).length >= MAXIMUM_MARKERS) {
					return true;
				}
				
				IMarker marker = file.createMarker(markerID);
				if (problem.getSeverity() == eu.hyvar.feature.constraint.resource.hyconstraints.HyconstraintsEProblemSeverity.ERROR) {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
				} else {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
				}
				marker.setAttribute(IMarker.MESSAGE, diagnostic.getMessage());
				eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsTextDiagnostic textDiagnostic = (eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsTextDiagnostic) diagnostic;
				marker.setAttribute(IMarker.LINE_NUMBER, textDiagnostic.getLine());
				marker.setAttribute(IMarker.CHAR_START, textDiagnostic.getCharStart());
				marker.setAttribute(IMarker.CHAR_END, textDiagnostic.getCharEnd() + 1);
				if (diagnostic instanceof eu.hyvar.feature.constraint.resource.hyconstraints.mopp.HyconstraintsResource.ElementBasedTextDiagnostic) {
					EObject element = ((eu.hyvar.feature.constraint.resource.hyconstraints.mopp.HyconstraintsResource.ElementBasedTextDiagnostic) diagnostic).getElement();
					String elementURI = getObjectURI(element);
					if (elementURI != null) {
						marker.setAttribute(EcoreValidator.URI_ATTRIBUTE, elementURI);
					}
				}
				Collection<eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsQuickFix> quickFixes = textDiagnostic.getProblem().getQuickFixes();
				Collection<Object> sourceIDs = new ArrayList<Object>();
				if (quickFixes != null) {
					for (eu.hyvar.feature.constraint.resource.hyconstraints.IHyconstraintsQuickFix quickFix : quickFixes) {
						if (quickFix != null) {
							sourceIDs.add(quickFix.getContextAsString());
						}
					}
				}
				if (!sourceIDs.isEmpty()) {
					marker.setAttribute(IMarker.SOURCE_ID, eu.hyvar.feature.constraint.resource.hyconstraints.util.HyconstraintsStringUtil.explode(sourceIDs, "|"));
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 17
Project: DarwinSPL   File: HydatavalueMarkerHelper.java   View source code 4 votes vote down vote up
protected void createMarkerFromDiagnostic(final IFile file, final eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueTextDiagnostic diagnostic) {
	final eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueProblem problem = diagnostic.getProblem();
	eu.hyvar.dataValues.resource.hydatavalue.HydatavalueEProblemType problemType = problem.getType();
	final String markerID = getMarkerID(problemType);
	COMMAND_QUEUE.addCommand(new eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueCommand<Object>() {
		public boolean execute(Object context) {
			try {
				// if there are too many markers, we do not add new ones
				if (file.findMarkers(markerID, false, IResource.DEPTH_ZERO).length >= MAXIMUM_MARKERS) {
					return true;
				}
				
				IMarker marker = file.createMarker(markerID);
				if (problem.getSeverity() == eu.hyvar.dataValues.resource.hydatavalue.HydatavalueEProblemSeverity.ERROR) {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
				} else {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
				}
				marker.setAttribute(IMarker.MESSAGE, diagnostic.getMessage());
				eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueTextDiagnostic textDiagnostic = (eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueTextDiagnostic) diagnostic;
				marker.setAttribute(IMarker.LINE_NUMBER, textDiagnostic.getLine());
				marker.setAttribute(IMarker.CHAR_START, textDiagnostic.getCharStart());
				marker.setAttribute(IMarker.CHAR_END, textDiagnostic.getCharEnd() + 1);
				if (diagnostic instanceof eu.hyvar.dataValues.resource.hydatavalue.mopp.HydatavalueResource.ElementBasedTextDiagnostic) {
					EObject element = ((eu.hyvar.dataValues.resource.hydatavalue.mopp.HydatavalueResource.ElementBasedTextDiagnostic) diagnostic).getElement();
					String elementURI = getObjectURI(element);
					if (elementURI != null) {
						marker.setAttribute(EcoreValidator.URI_ATTRIBUTE, elementURI);
					}
				}
				Collection<eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueQuickFix> quickFixes = textDiagnostic.getProblem().getQuickFixes();
				Collection<Object> sourceIDs = new ArrayList<Object>();
				if (quickFixes != null) {
					for (eu.hyvar.dataValues.resource.hydatavalue.IHydatavalueQuickFix quickFix : quickFixes) {
						if (quickFix != null) {
							sourceIDs.add(quickFix.getContextAsString());
						}
					}
				}
				if (!sourceIDs.isEmpty()) {
					marker.setAttribute(IMarker.SOURCE_ID, eu.hyvar.dataValues.resource.hydatavalue.util.HydatavalueStringUtil.explode(sourceIDs, "|"));
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 18
Project: DarwinSPL   File: DwprofileMarkerHelper.java   View source code 4 votes vote down vote up
protected void createMarkerFromDiagnostic(final IFile file, final de.darwinspl.preferences.resource.dwprofile.IDwprofileTextDiagnostic diagnostic) {
	final de.darwinspl.preferences.resource.dwprofile.IDwprofileProblem problem = diagnostic.getProblem();
	de.darwinspl.preferences.resource.dwprofile.DwprofileEProblemType problemType = problem.getType();
	final String markerID = getMarkerID(problemType);
	COMMAND_QUEUE.addCommand(new de.darwinspl.preferences.resource.dwprofile.IDwprofileCommand<Object>() {
		public boolean execute(Object context) {
			try {
				// if there are too many markers, we do not add new ones
				if (file.findMarkers(markerID, false, IResource.DEPTH_ZERO).length >= MAXIMUM_MARKERS) {
					return true;
				}
				
				IMarker marker = file.createMarker(markerID);
				if (problem.getSeverity() == de.darwinspl.preferences.resource.dwprofile.DwprofileEProblemSeverity.ERROR) {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
				} else {
					marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
				}
				marker.setAttribute(IMarker.MESSAGE, diagnostic.getMessage());
				de.darwinspl.preferences.resource.dwprofile.IDwprofileTextDiagnostic textDiagnostic = (de.darwinspl.preferences.resource.dwprofile.IDwprofileTextDiagnostic) diagnostic;
				marker.setAttribute(IMarker.LINE_NUMBER, textDiagnostic.getLine());
				marker.setAttribute(IMarker.CHAR_START, textDiagnostic.getCharStart());
				marker.setAttribute(IMarker.CHAR_END, textDiagnostic.getCharEnd() + 1);
				if (diagnostic instanceof de.darwinspl.preferences.resource.dwprofile.mopp.DwprofileResource.ElementBasedTextDiagnostic) {
					EObject element = ((de.darwinspl.preferences.resource.dwprofile.mopp.DwprofileResource.ElementBasedTextDiagnostic) diagnostic).getElement();
					String elementURI = getObjectURI(element);
					if (elementURI != null) {
						marker.setAttribute(EcoreValidator.URI_ATTRIBUTE, elementURI);
					}
				}
				Collection<de.darwinspl.preferences.resource.dwprofile.IDwprofileQuickFix> quickFixes = textDiagnostic.getProblem().getQuickFixes();
				Collection<Object> sourceIDs = new ArrayList<Object>();
				if (quickFixes != null) {
					for (de.darwinspl.preferences.resource.dwprofile.IDwprofileQuickFix quickFix : quickFixes) {
						if (quickFix != null) {
							sourceIDs.add(quickFix.getContextAsString());
						}
					}
				}
				if (!sourceIDs.isEmpty()) {
					marker.setAttribute(IMarker.SOURCE_ID, de.darwinspl.preferences.resource.dwprofile.util.DwprofileStringUtil.explode(sourceIDs, "|"));
				}
			} catch (CoreException ce) {
				handleException(ce);
			}
			return true;
		}
	});
}
 
Example 19
Project: SPA   File: BenchmarkController.java   View source code 4 votes vote down vote up
/**
 * Loads a configuration from the XMI-File specified as parameter
 * {@code confFile}. The configuration is validated using OCL constraints
 * specified in the ECore Model. If the validation fails, an exception is
 * thrown. Otherwise the parsed configuration is returned.
 * 
 * @param confFile
 *            The config-file which should be loaded.
 * @return A {@code ExperimentSetup} instance containing every information
 *         needed to run the benchmarks.
 * @throws BenchmarkException
 *             if the configuration is invalid.
 */
public static ExperimentSetup loadConfigurationFromXMI(String confFile)
{
	ResourceSet load_resourceSet = new ResourceSetImpl();
	load_resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
	load_resourceSet.getPackageRegistry().put(SBHModelPackage.eNS_URI, SBHModelPackage.eINSTANCE);
	Resource load_resource = load_resourceSet.getResource(URI.createURI(confFile), true);

	// Add OCL-Validators to EMF
	String oclDelegateURI = OCLDelegateDomain.OCL_DELEGATE_URI;
	EOperation.Internal.InvocationDelegate.Factory.Registry.INSTANCE.put(oclDelegateURI, new OCLInvocationDelegateFactory.Global());
	EStructuralFeature.Internal.SettingDelegate.Factory.Registry.INSTANCE.put(oclDelegateURI, new OCLSettingDelegateFactory.Global());
	EValidator.ValidationDelegate.Registry.INSTANCE.put(oclDelegateURI, new OCLValidationDelegateFactory.Global());

	EValidator.Registry.INSTANCE.put(SBHModelPackage.eINSTANCE, new EcoreValidator());
	BasicDiagnostic diagnostics = new BasicDiagnostic();

	LOGGER.debug("Validating Objects:");
	for (EObject eObj : ImmutableList.copyOf(load_resource.getAllContents()))
	{
	
		validate(eObj, diagnostics);
	}

	// Output Error-Messages if errors occured
	if (diagnostics.getSeverity() != Diagnostic.OK)
	{
		LOGGER.error("Validation of %s failed:", confFile);
		for (Diagnostic d : diagnostics.getChildren())
		{
			LOGGER.error("%s", d.getMessage());
		}
		throw new BenchmarkException("Configuration not valid");
	}

	if (load_resource.getContents().size() != 1)
	{
		LOGGER.error("Configuration invalid: There must be one root element, not %d", load_resource.getContents().size());
		throw new BenchmarkException("Configuration not valid");
	}

	EObject o = load_resource.getContents().get(0);

	if (!(o instanceof Configuration))
	{
		LOGGER.error("Configuration invalid: Root Element is %s not 'Configuration'", o);
		throw new BenchmarkException("Rootelement is not 'Configuration'");
	}

	// Start to evaluate Configuration
	Configuration conf = (Configuration) o;

	if (conf.getExperimentSetup() == null)
	{
		LOGGER.error("Configuration invalid: Configuration does not contain a ExperimentSetups");
		throw new BenchmarkException("Configuration does not contain a ExperimentSetups");
	}

	return conf.getExperimentSetup();
}
 
Example 20
Project: SPA   File: BenchmarkController.java   View source code 4 votes vote down vote up
/**
 * Loads a configuration from the XMI-File specified as parameter
 * {@code confFile}. The configuration is validated using OCL constraints
 * specified in the ECore Model. If the validation fails, an exception is
 * thrown. Otherwise the parsed configuration is returned.
 * 
 * @param confFile
 *            The config-file which should be loaded.
 * @return A {@code ExperimentSetup} instance containing every information
 *         needed to run the benchmarks.
 * @throws BenchmarkException
 *             if the configuration is invalid.
 */
public static ExperimentSetup loadConfigurationFromXMI(String confFile)
{
	ResourceSet load_resourceSet = new ResourceSetImpl();
	load_resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
	load_resourceSet.getPackageRegistry().put(SBHModelPackage.eNS_URI, SBHModelPackage.eINSTANCE);
	Resource load_resource = load_resourceSet.getResource(URI.createURI(confFile), true);

	// Add OCL-Validators to EMF
	String oclDelegateURI = OCLDelegateDomain.OCL_DELEGATE_URI;
	EOperation.Internal.InvocationDelegate.Factory.Registry.INSTANCE.put(oclDelegateURI, new OCLInvocationDelegateFactory.Global());
	EStructuralFeature.Internal.SettingDelegate.Factory.Registry.INSTANCE.put(oclDelegateURI, new OCLSettingDelegateFactory.Global());
	EValidator.ValidationDelegate.Registry.INSTANCE.put(oclDelegateURI, new OCLValidationDelegateFactory.Global());

	EValidator.Registry.INSTANCE.put(SBHModelPackage.eINSTANCE, new EcoreValidator());
	BasicDiagnostic diagnostics = new BasicDiagnostic();

	LOGGER.debug("Validating Objects:");
	for (EObject eObj : ImmutableList.copyOf(load_resource.getAllContents()))
	{

		validate(eObj, diagnostics);
	}

	// Output Error-Messages if errors occured
	if (diagnostics.getSeverity() != Diagnostic.OK)
	{
		LOGGER.error("Validation of %s failed:", confFile);
		for (Diagnostic d : diagnostics.getChildren())
		{
			LOGGER.error("%s", d.getMessage());
		}
		throw new BenchmarkException("Configuration not valid");
	}

	if (load_resource.getContents().size() != 1)
	{
		LOGGER.error("Configuration invalid: There must be one root element, not %d", load_resource.getContents().size());
		throw new BenchmarkException("Configuration not valid");
	}

	EObject o = load_resource.getContents().get(0);

	if (!(o instanceof Configuration))
	{
		LOGGER.error("Configuration invalid: Root Element is %s not 'Configuration'", o);
		throw new BenchmarkException("Rootelement is not 'Configuration'");
	}

	// Start to evaluate Configuration
	Configuration conf = (Configuration) o;

	if (conf.getExperimentSetup() == null)
	{
		LOGGER.error("Configuration invalid: Configuration does not contain a ExperimentSetups");
		throw new BenchmarkException("Configuration does not contain a ExperimentSetups");
	}

	return conf.getExperimentSetup();
}