Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraradermache2012-10-26 11:45:55 +0000
committeraradermache2012-10-26 11:45:55 +0000
commit45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1 (patch)
treec14d781a1c5960090f1523372e4e0be432c0d866
parentd7fdde40d0137ed698d1a29b8c7f303353493ab7 (diff)
downloadorg.eclipse.papyrus-45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1.tar.gz
org.eclipse.papyrus-45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1.tar.xz
org.eclipse.papyrus-45e3a9d71f25c51bc1c8a65c79ae24921f8b3fa1.zip
Fix for bug 392497
-rw-r--r--plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationTool.java19
-rw-r--r--plugins/infra/services/org.eclipse.papyrus.infra.services.validation/src/org/eclipse/papyrus/infra/services/validation/ValidationUtils.java30
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;
}

Back to the top