Refactored for extensibility
diff --git a/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/refresh/RefreshJob.java b/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/refresh/RefreshJob.java
index f497e9b..e77a084 100755
--- a/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/refresh/RefreshJob.java
+++ b/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/refresh/RefreshJob.java
@@ -14,7 +14,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-import java.util.List;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
@@ -34,10 +33,8 @@
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.common.util.UniqueEList;
import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.epf.persistence.FileManager;
import org.eclipse.epf.persistence.MultiFileResourceSetImpl;
import org.eclipse.epf.persistence.MultiFileSaveUtil;
@@ -470,34 +467,11 @@
/**
* Resolves the proxy and its containers
*
- * TODO: move this method to a utility class and make it static
- *
* @param proxy
* @return
*/
public EObject resolve(EObject proxy) {
- EObject resolved;
- try {
- resolved = EcoreUtil.resolve(proxy, resourceSet);
- } catch (Exception e) {
- resolved = proxy;
- }
- EObject container = proxy.eContainer();
- if (resolved.eContainer() == null && container != null) {
- if (container.eIsProxy()) {
- container = resolve(container);
- }
- EReference ref = proxy.eContainmentFeature();
- if (ref.isMany()) {
- List values = (List) container.eGet(ref);
- for (Iterator iter = values.iterator(); iter.hasNext(); iter
- .next())
- ;
- } else {
- container.eGet(ref);
- }
- }
- return resolved;
+ return PersistenceUtil.resolve(proxy, resourceSet);
}
public static RefreshJob getInstance() {
diff --git a/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/util/PersistenceUtil.java b/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/util/PersistenceUtil.java
index 0db2152..8d92520 100755
--- a/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/util/PersistenceUtil.java
+++ b/plugins/org.eclipse.epf.library.persistence/src/org/eclipse/epf/persistence/util/PersistenceUtil.java
@@ -15,6 +15,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
@@ -24,7 +25,10 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.epf.common.serviceability.EPFVersions;
import org.eclipse.epf.common.serviceability.VersionUtil;
import org.eclipse.epf.persistence.FileManager;
@@ -155,4 +159,35 @@
return null;
}
+ /**
+ * Resolves the proxy and its containers
+ *
+ * @param proxy
+ * @return
+ */
+ public static EObject resolve(EObject proxy, ResourceSet resourceSet) {
+ EObject resolved;
+ try {
+ resolved = EcoreUtil.resolve(proxy, resourceSet);
+ } catch (Exception e) {
+ resolved = proxy;
+ }
+ EObject container = proxy.eContainer();
+ if (resolved.eContainer() == null && container != null) {
+ if (container.eIsProxy()) {
+ container = resolve(container, resourceSet);
+ }
+ EReference ref = proxy.eContainmentFeature();
+ if (ref.isMany()) {
+ List values = (List) container.eGet(ref);
+ for (Iterator iter = values.iterator(); iter.hasNext(); iter
+ .next())
+ ;
+ } else {
+ container.eGet(ref);
+ }
+ }
+ return resolved;
+ }
+
}
\ No newline at end of file