Author: scabanovich
Date: 2010-09-23 10:51:29 -0400 (Thu, 23 Sep 2010)
New Revision: 25125
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/Libs.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/LibsListener.java
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileSystemsHelper.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarAccess.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarSystemImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularChildren.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ext/AbstractClassPathMonitor.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java
Log:
JBIDE-7148
https://jira.jboss.org/browse/JBIDE-7148
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileSystemsHelper.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileSystemsHelper.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileSystemsHelper.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -11,6 +11,8 @@
package org.jboss.tools.common.model.filesystems;
import org.jboss.tools.common.model.*;
+import org.jboss.tools.common.model.filesystems.impl.FileSystemsImpl;
+import org.jboss.tools.common.model.filesystems.impl.Libs;
public class FileSystemsHelper {
public static final String FILE_SYSTEMS = "FileSystems"; //$NON-NLS-1$
@@ -31,4 +33,16 @@
return model.getByPath(FILE_SYSTEMS + "/WEB-INF"); //$NON-NLS-1$
}
+ public static Libs getLibs(XModel model) {
+ XModelObject fs = getFileSystems(model);
+ return (!(fs instanceof FileSystemsImpl)) ? null : ((FileSystemsImpl)fs).getLibs();
+ }
+
+ public static Libs getLibs(XModelObject object) {
+ if(object instanceof FileSystemsImpl) {
+ return ((FileSystemsImpl)object).getLibs();
+ }
+ return object == null ? null : getLibs(object.getModel());
+ }
+
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -32,11 +32,17 @@
Ov overlapper = null;
FileSystemsRenameListener fileSystemsRenameListener = new
FileSystemsRenameListener(this);
+ Libs libs = new Libs(this);
+
public FileSystemsImpl() {
IWorkspace workspace = ModelPlugin.getWorkspace();
if (workspace != null) workspace.addResourceChangeListener(this);
}
+ public Libs getLibs() {
+ return libs;
+ }
+
public String getPresentationString() {
IProject p = EclipseResourceUtil.getProject(this);
String app = getAttributeValue("application name"); //$NON-NLS-1$
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -21,6 +21,7 @@
import org.jboss.tools.common.meta.XAttribute;
import org.jboss.tools.common.meta.XModelEntity;
import org.jboss.tools.common.model.*;
+import org.jboss.tools.common.model.filesystems.FileSystemsHelper;
import org.jboss.tools.common.model.loaders.*;
import org.jboss.tools.common.model.loaders.impl.*;
import org.jboss.tools.common.model.plugin.ModelPlugin;
@@ -158,63 +159,12 @@
IProject project = EclipseResourceUtil.getProject(object);
if(project == null) return;
XModelObject lib = validateLib(object);
- if(lib == null) {
- return;
- }
- List<String> newPaths = null;
- try {
- newPaths = EclipseResourceUtil.getClassPath(project.getProject());
- List<String> jre = EclipseResourceUtil.getJREClassPath(project.getProject());
- if(jre != null) newPaths.removeAll(jre);
- } catch (CoreException e) {
- //TODO
- ModelPlugin.getDefault().logError(e);
- } catch (IOException e) {
- ModelPlugin.getDefault().logError(e);
- }
- if(paths == null && newPaths == null) return;
- if((newPaths == null || paths == null) || (paths.size() != newPaths.size())) {
- paths = newPaths;
- } else {
- boolean b = false;
- for (int i = 0; i < paths.size() && !b; i++) {
- if(!paths.get(i).equals(newPaths.get(i))) b = true;
- }
- if(!b) return;
- paths = newPaths;
- }
- XModelObject[] fs = object.getChildren("FileSystemJar"); //$NON-NLS-1$
- Set<XModelObject> fss = new HashSet<XModelObject>();
- for (int i = 0; i < fs.length; i++) fss.add(fs[i]);
-
- for (int i = 0; i < paths.size(); i++) {
- String path = paths.get(i);
- if(!EclipseResourceUtil.isJar(path)) continue;
- String fileName = new File(path).getName();
- if(EclipseResourceUtil.SYSTEM_JAR_SET.contains(fileName)) continue;
- String jsname = "lib-" + fileName; //$NON-NLS-1$
- XModelObject o = object.getChildByPath(jsname);
- if(o != null) {
- fss.remove(o);
- } else {
- o = object.getModel().createModelObject("FileSystemJar", null);
//$NON-NLS-1$
- o.setAttributeValue(XModelObjectConstants.ATTR_NAME, jsname);
- o.setAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION, path);
- o.set(IS_ADDED_TO_CLASSPATH, XModelObjectConstants.TRUE);
- object.addChild(o);
-// object.setModified(true);
- }
- }
-
- for (XModelObject o: fss) {
- String path =
XModelObjectUtil.expand(o.getAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION),
o.getModel(), null);
- if(XModelObjectConstants.TRUE.equals(o.get(FileSystemsLoader.IS_ADDED_TO_CLASSPATH)))
{
- o.removeFromParent();
- } else if(!new File(path).exists()) {
- o.removeFromParent();
- }
- }
-
+// if(lib == null) {
+// return;
+// }
+
+ Libs libs = FileSystemsHelper.getLibs(object);
+ if(libs != null) libs.update();
}
private XModelObject validateLib(XModelObject object) {
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarAccess.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarAccess.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarAccess.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -289,14 +289,14 @@
public JarSystemImpl getMain() {
IProject p = EclipseResourceUtil.getProject(main);
- if(p == null || !p.isAccessible() || main.getParent() == null) {
+ if(p == null || !p.isAccessible() || !main.isActive()) {
main = null;
synchronized(slaves) {
Iterator<JarSystemImpl> it = slaves.iterator();
while(it.hasNext()) {
JarSystemImpl s = it.next();
p = EclipseResourceUtil.getProject(s);
- if(p == null || !p.isAccessible() || s.getParent() == null) {
+ if(p == null || !p.isAccessible() || !s.isActive()) {
it.remove();
} else if(main == null) {
main = s;
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarSystemImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarSystemImpl.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarSystemImpl.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -47,6 +47,9 @@
boolean loaded2 = false;
protected void loadChildren() {
+ if(!isActive()) {
+ return;
+ }
// if(jar.isLoaded()) return;
if(this != getJarAccess().getMain()) return;
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/Libs.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/Libs.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/Libs.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.common.model.filesystems.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.XModelObjectConstants;
+import org.jboss.tools.common.model.plugin.ModelPlugin;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
+import org.jboss.tools.common.model.util.XModelObjectUtil;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class Libs {
+ protected FileSystemsImpl object;
+ protected List<String> paths = null;
+ Map<IPath, String> paths2 = new HashMap<IPath, String>();
+
+ List<LibsListener> listeners = new ArrayList<LibsListener>();
+
+ public Libs(FileSystemsImpl object) {
+ this.object = object;
+ }
+
+ private IProject getProjectResource() {
+ return EclipseResourceUtil.getProject(object);
+ }
+
+ public boolean update() {
+ List<String> newPaths = null;
+ try {
+ newPaths = EclipseResourceUtil.getClassPath(getProjectResource());
+ List<String> jre = EclipseResourceUtil.getJREClassPath(getProjectResource());
+ if(jre != null) newPaths.removeAll(jre);
+ } catch (CoreException e) {
+ //TODO
+ ModelPlugin.getDefault().logError(e);
+ } catch(IOException e) {
+ ModelPlugin.getDefault().logError(e);
+ }
+ if(paths == null && newPaths == null) return false;
+ if((newPaths == null || paths == null) || (paths.size() != newPaths.size())) {
+ paths = newPaths;
+ } else {
+ boolean b = false;
+ for (int i = 0; i < paths.size() && !b; i++) {
+ if(!paths.get(i).equals(newPaths.get(i))) b = true;
+ }
+ if(!b) return false;
+ paths = newPaths;
+ }
+ createMap(); if(paths == null) return true;
+ XModelObject[] fs = object.getChildren("FileSystemJar"); //$NON-NLS-1$
+ Set<XModelObject> fss = new HashSet<XModelObject>();
+ for (int i = 0; i < fs.length; i++) fss.add(fs[i]);
+
+ for (int i = 0; i < paths.size(); i++) {
+ String path = paths.get(i);
+ if(!EclipseResourceUtil.isJar(path)) continue;
+ String fileName = new File(path).getName();
+ if(EclipseResourceUtil.SYSTEM_JAR_SET.contains(fileName)) continue;
+ String jsname = "lib-" + fileName; //$NON-NLS-1$
+ XModelObject o = object.getChildByPath(jsname);
+ if(o != null) {
+ fss.remove(o);
+ } else {
+ o = object.getModel().createModelObject("FileSystemJar", null);
//$NON-NLS-1$
+ o.setAttributeValue(XModelObjectConstants.ATTR_NAME, jsname);
+ o.setAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION, path);
+ o.set(FileSystemsLoader.IS_ADDED_TO_CLASSPATH, XModelObjectConstants.TRUE);
+ object.addChild(o);
+// object.setModified(true);
+ }
+ }
+
+ for (XModelObject o: fss) {
+ String path =
XModelObjectUtil.expand(o.getAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION),
o.getModel(), null);
+ if(XModelObjectConstants.TRUE.equals(o.get(FileSystemsLoader.IS_ADDED_TO_CLASSPATH)))
{
+ o.removeFromParent();
+ } else if(!new File(path).exists()) {
+ o.removeFromParent();
+ }
+ }
+
+ return true;
+ }
+
+ public List<String> getPaths() {
+ return paths;
+ }
+
+ public Map<IPath, String> getPathsAsMap() {
+ return paths2;
+ }
+
+ private void createMap() {
+ paths2.clear();
+ if(paths != null) {
+ for (String p : paths) {
+ paths2.put(new Path(p), p);
+ }
+ }
+ }
+
+ public synchronized void addListener(LibsListener listener) {
+ listeners.add(listener);
+ }
+
+ public synchronized void removeListener(LibsListener listener) {
+ listeners.remove(listener);
+ }
+
+ void fire() {
+ LibsListener[] ls = null;
+ synchronized(this) {
+ ls = listeners.toArray(new LibsListener[0]);
+ }
+ if(ls != null) for (LibsListener listener: ls) {
+ listener.pathsChanged(paths);
+ }
+ }
+}
Property changes on:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/Libs.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/LibsListener.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/LibsListener.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/LibsListener.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.common.model.filesystems.impl;
+
+import java.util.List;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public interface LibsListener {
+ public void pathsChanged(List<String> paths);
+}
Property changes on:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/LibsListener.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularChildren.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularChildren.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularChildren.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -99,8 +99,9 @@
public Map<String, XModelObject> getObjectsMap() {
Map<String, XModelObject> result = new HashMap<String, XModelObject>();
if (objects != null) {
- synchronized(objects) {
- result.putAll(objects.getMap());
+ Map<String, XModelObject> entries = objects.getMap();
+ synchronized(entries) {
+ result.putAll(entries);
}
}
return result;
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ext/AbstractClassPathMonitor.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ext/AbstractClassPathMonitor.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ext/AbstractClassPathMonitor.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -14,7 +14,10 @@
import org.eclipse.core.runtime.Path;
import org.jboss.tools.common.model.XModel;
import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.filesystems.FileSystemsHelper;
import org.jboss.tools.common.model.filesystems.impl.FileSystemsLoader;
+import org.jboss.tools.common.model.filesystems.impl.Libs;
+import org.jboss.tools.common.model.filesystems.impl.LibsListener;
import org.jboss.tools.common.model.plugin.ModelPlugin;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
import org.jboss.tools.common.model.util.XModelObjectUtil;
@@ -24,12 +27,13 @@
*
* @author Viacheslav Kabanovich
*/
-public abstract class AbstractClassPathMonitor<P> {
+public abstract class AbstractClassPathMonitor<P> implements LibsListener {
protected XModel model = null;
protected P project;
protected List<String> paths = null;
protected Map<IPath, String> paths2 = new HashMap<IPath, String>();
+ boolean libsModified = false;
protected Set<String> processedPaths = new HashSet<String>();
@@ -44,6 +48,9 @@
* Initialization of inner model.
*/
public void init() {
+ if(model == null) return;
+ Libs libs = FileSystemsHelper.getLibs(model);
+ if(libs != null) libs.addListener(this);
}
public abstract IProject getProjectResource();
@@ -54,74 +61,19 @@
* @return
*/
public boolean update() {
- List<String> newPaths = null;
- try {
- newPaths = EclipseResourceUtil.getClassPath(getProjectResource());
- List<String> jre = EclipseResourceUtil.getJREClassPath(getProjectResource());
- if(jre != null) newPaths.removeAll(jre);
- } catch (CoreException e) {
- //TODO
- ModelPlugin.getDefault().logError(e);
- } catch(IOException e) {
- ModelPlugin.getDefault().logError(e);
+ Libs libs = FileSystemsHelper.getLibs(model);
+ libs.update();
+ List<String> newPaths = libs.getPaths();
+ boolean result = libsModified || paths == null;
+ paths = newPaths;
+ if(result) {
+ paths2.clear();
+ paths2.putAll(libs.getPathsAsMap());
}
- if(paths == null && newPaths == null) return false;
- if((newPaths == null || paths == null) || (paths.size() != newPaths.size())) {
- paths = newPaths;
- } else {
- boolean b = false;
- for (int i = 0; i < paths.size() && !b; i++) {
- if(!paths.get(i).equals(newPaths.get(i))) b = true;
- }
- if(!b) return false;
- paths = newPaths;
- }
- createMap();
- XModelObject object = model.getByPath("FileSystems"); //$NON-NLS-1$
- XModelObject[] fs = object.getChildren("FileSystemJar"); //$NON-NLS-1$
- Set<XModelObject> fss = new HashSet<XModelObject>();
- for (int i = 0; i < fs.length; i++) fss.add(fs[i]);
-
- for (int i = 0; i < paths.size(); i++) {
- String path = paths.get(i);
- if(!EclipseResourceUtil.isJar(path)) continue;
- String fileName = new File(path).getName();
- if(EclipseResourceUtil.SYSTEM_JAR_SET.contains(fileName)) continue;
- String jsname = "lib-" + fileName; //$NON-NLS-1$
- XModelObject o = model.getByPath("FileSystems").getChildByPath(jsname);
//$NON-NLS-1$
- if(o != null) {
- fss.remove(o);
- } else {
- o = object.getModel().createModelObject("FileSystemJar", null);
//$NON-NLS-1$
- o.setAttributeValue("name", jsname); //$NON-NLS-1$
- o.setAttributeValue("location", path); //$NON-NLS-1$
- o.set(FileSystemsLoader.IS_ADDED_TO_CLASSPATH, "true"); //$NON-NLS-1$
- object.addChild(o);
-// object.setModified(true);
- }
- }
-
- for (XModelObject o: fss) {
- String path = XModelObjectUtil.expand(o.getAttributeValue("location"),
o.getModel(), null); //$NON-NLS-1$
- if("true".equals(o.get(FileSystemsLoader.IS_ADDED_TO_CLASSPATH))) {
//$NON-NLS-1$
- o.removeFromParent();
- } else if(!new File(path).exists()) {
- o.removeFromParent();
- }
- }
-
- return true;
+ libsModified = false;
+ return result;
}
- private void createMap() {
- paths2.clear();
- if(paths != null) {
- for (String p : paths) {
- paths2.put(new Path(p), p);
- }
- }
- }
-
public void pathLoaded(IPath path) {
String p = paths2.get(path);
if(p != null) {
@@ -139,4 +91,7 @@
processedPaths.clear();
}
+ public void pathsChanged(List<String> paths) {
+ libsModified = true;
+ }
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java 2010-09-23
14:23:22 UTC (rev 25124)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java 2010-09-23
14:51:29 UTC (rev 25125)
@@ -515,68 +515,14 @@
}
private static void updateLibs(IProject project, XModelObject object) {
- List<String> paths = new ArrayList<String>();
- XModelObject[] ss = object.getChildren();
- for (int i = 0; i < ss.length; i++) {
- if(ss[i].getModelEntity().getName().equals("FileSystemJar")) {
- paths.add(ss[i].getAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION));
- }
- }
- List<String> newPaths = null;
- try {
- newPaths = EclipseResourceUtil.getClassPath(project.getProject());
- List<String> jre = EclipseResourceUtil.getJREClassPath(project.getProject());
- if(jre != null) newPaths.removeAll(jre);
- } catch (CoreException e) {
- //TODO
- ModelPlugin.getDefault().logError(e);
- } catch (IOException e) {
- ModelPlugin.getDefault().logError(e);
- }
- if(paths == null && newPaths == null) return;
- if((newPaths == null || paths == null) || (paths.size() != newPaths.size())) {
- paths = newPaths;
- } else {
- boolean b = false;
- for (int i = 0; i < paths.size() && !b; i++) {
- if(!paths.get(i).equals(newPaths.get(i))) b = true;
- }
- if(!b) return;
- paths = newPaths;
- }
- if(paths == null && newPaths == null) return;
- XModelObject[] fs = object.getChildren("FileSystemJar"); //$NON-NLS-1$
- Set<XModelObject> fss = new HashSet<XModelObject>();
- for (int i = 0; i < fs.length; i++) fss.add(fs[i]);
-
- for (int i = 0; i < paths.size(); i++) {
- String path = paths.get(i);
- if(!EclipseResourceUtil.isJar(path)) continue;
- String fileName = new File(path).getName();
- if(SYSTEM_JAR_SET.contains(fileName)) continue;
- String jsname = "lib-" + fileName; //$NON-NLS-1$
- XModelObject o = object.getChildByPath(jsname);
- if(o != null) {
- fss.remove(o);
- } else {
- o = object.getModel().createModelObject("FileSystemJar", null);
//$NON-NLS-1$
- o.setAttributeValue(XModelObjectConstants.ATTR_NAME, jsname);
- o.setAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION, path);
- o.set(FileSystemsLoader.IS_ADDED_TO_CLASSPATH, XModelObjectConstants.TRUE);
- object.addChild(o);
-// object.setModified(true);
- }
- }
-
- for (XModelObject o: fss) {
- String path =
XModelObjectUtil.expand(o.getAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION),
o.getModel(), null);
- if(XModelObjectConstants.TRUE.equals(o.get(FileSystemsLoader.IS_ADDED_TO_CLASSPATH)))
{
- o.removeFromParent();
- } else if(!new File(path).exists()) {
- o.removeFromParent();
- }
- }
-
+ FileSystemsHelper.getLibs(object).update();
+// List<String> paths = new ArrayList<String>();
+// XModelObject[] ss = object.getChildren();
+// for (int i = 0; i < ss.length; i++) {
+// if(ss[i].getModelEntity().getName().equals("FileSystemJar")) {
+// paths.add(ss[i].getAttributeValue(XModelObjectConstants.ATTR_NAME_LOCATION));
+// }
+// }
}