diff options
author | aradermache | 2012-10-26 11:45:55 +0000 |
---|---|---|
committer | aradermache | 2012-10-26 11:45:55 +0000 |
commit | 45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1 (patch) | |
tree | c14d781a1c5960090f1523372e4e0be432c0d866 | |
parent | d7fdde40d0137ed698d1a29b8c7f303353493ab7 (diff) | |
download | org.eclipse.papyrus-45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1.tar.gz org.eclipse.papyrus-45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1.tar.xz org.eclipse.papyrus-45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1.zip |
Fix for bug 392497
2 files changed, 41 insertions, 8 deletions
diff --git a/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationTool.java b/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationTool.java index ea00a999789..467bea4c210 100644 --- a/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationTool.java +++ b/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationTool.java @@ -25,6 +25,7 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EValidator; +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.facet.infra.browser.uicore.internal.model.LinkItem; @@ -41,17 +42,18 @@ public class ValidationTool { /** current editing domain */ private EditingDomain domain; + protected Resource resource; /** * Constructor: * create a new instance of the validation tool for a specific model element * - * @param element + * @param eObject * a model element */ - public ValidationTool(Object element) { - this.element = element; - setEObject((EObject)Platform.getAdapterManager().getAdapter(element, EObject.class)); + public ValidationTool(EObject eObject) { + this.resource = ValidationUtils.getValidationResource(eObject); + setEObject(eObject); } /** @@ -60,12 +62,14 @@ public class ValidationTool { * * @param eObject * a model element + * @param resource + * the resource for which we look for markers. */ - public ValidationTool(EObject eObject) { + public ValidationTool(EObject eObject, Resource resource) { + this.resource = resource; setEObject(eObject); } - public void tryChildIfEmpty() { // element has no eObject. try parent if(getEObject() == null) { @@ -102,7 +106,7 @@ public class ValidationTool { public IMarker[] getMarkers() { if(getEObject() != null) { if(getEObject().eResource() != null) { - URI uri = getEObject().eResource().getURI(); + URI uri = resource.getURI(); String platformResourceString = uri.toPlatformString(true); IFile file = (platformResourceString != null ? ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(platformResourceString)) : null); @@ -162,5 +166,4 @@ public class ValidationTool { // reached, if subEObj == null return false; } - } diff --git a/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationUtils.java b/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationUtils.java index cc0881407d6..cf49e58ba02 100644 --- a/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationUtils.java +++ b/plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationUtils.java @@ -18,12 +18,16 @@ import java.util.Map; import java.util.MissingResourceException; import org.eclipse.core.resources.IMarker; +import org.eclipse.emf.common.EMFPlugin; 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.EValidator; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.ui.action.ValidateAction.EclipseResourcesUtil; +import org.eclipse.emf.transaction.TransactionalEditingDomain; +import org.eclipse.emf.transaction.util.TransactionUtil; public class ValidationUtils { @@ -89,4 +93,30 @@ public class ValidationUtils { } return null; } + + /** + * Convenience function delegating to getResourceViaDomain(domain) + * + * @return The resource on which markers should be applied. + */ + public static Resource getValidationResource(EObject eObject) { + TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(eObject); + return getValidationResourceViaDomain(domain); + } + + /** + * @return The resource on which markers should be applied. + * Currently, the function simply returns the first resource of the resource-set which happens to be the + * "notation" resource. This might change in the future. + */ + public static Resource getValidationResourceViaDomain(TransactionalEditingDomain domain) { + if(domain != null) { + Resource resource = eclipseResourcesUtil != null ? domain.getResourceSet().getResources().get(0) : null; + return resource; + } + return null; + } + + public static EclipseResourcesUtil eclipseResourcesUtil = + EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE ? new EclipseResourcesUtil() : null; } |