Author: scabanovich
Date: 2008-11-20 12:09:57 -0500 (Thu, 20 Nov 2008)
New Revision: 11919
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/AuxiliaryLoader.java
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileAuxiliary.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularObjectImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelObjectImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/markers/ConstraintChecker.java
Log:
JBIDE-3085
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileAuxiliary.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileAuxiliary.java 2008-11-20
16:43:50 UTC (rev 11918)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/FileAuxiliary.java 2008-11-20
17:09:57 UTC (rev 11919)
@@ -60,7 +60,9 @@
String auxname = aux.getAttributeValue("name");
if(replaceExtension) return auxname;
int i = auxname.lastIndexOf('.');
- return (i < 0) ? auxname : auxname.substring(0, i);
+ String s = (i < 0) ? auxname : auxname.substring(0, i);
+ if(addLeadingDot && s.startsWith(".")) s = s.substring(1);
+ return s;
}
public String getAuxiliaryName(XModelObject main) {
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java 2008-11-20
16:43:50 UTC (rev 11918)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java 2008-11-20
17:09:57 UTC (rev 11919)
@@ -38,6 +38,7 @@
import org.jboss.tools.common.model.filesystems.XFileObject;
import org.jboss.tools.common.model.impl.RegularObjectImpl;
import org.jboss.tools.common.model.impl.XModelImpl;
+import org.jboss.tools.common.model.loaders.AuxiliaryLoader;
import org.jboss.tools.common.model.loaders.Reloadable;
import org.jboss.tools.common.model.loaders.XObjectLoader;
import org.jboss.tools.common.model.loaders.impl.PropertiesLoader;
@@ -151,8 +152,23 @@
linkedResources.put(pp, rs[i]);
_loadChild(peer, f);
}
+
+ bindAuxiliary();
+
fire = true;
}
+
+ private void bindAuxiliary() {
+ XModelObject[] cs = getChildren();
+ for (int i = 0; i < cs.length; i++) {
+ if(cs[i].getFileType() == XModelObject.FILE) {
+ XObjectLoader loader = XModelObjectLoaderUtil.getObjectLoader(cs[i]);
+ if(loader instanceof AuxiliaryLoader) {
+ ((AuxiliaryLoader)loader).bind(cs[i]);
+ }
+ }
+ }
+ }
private void _loadChild(FileSystemPeer peer, File f) {
if(f.isDirectory()) {
@@ -327,6 +343,8 @@
String nm = (String)it.next();
updateRemove((XModelObject)toRemove.get(nm));
}
+
+ bindAuxiliary();
} catch (NoClassDefFoundError error) {
//Most probably Eclipse is shutting down.
return true;
@@ -1015,7 +1033,16 @@
public boolean write(Object object) {
if(!(object instanceof XModelObject)) return false;
XModelObject o = (XModelObject)object;
- return XModelObjectLoaderUtil.saveBody(f, o, ResourcesPlugin.getEncoding());
+
+ boolean b = XModelObjectLoaderUtil.saveBody(f, o,
ResourcesPlugin.getEncoding());
+
+ XModelObject p = o.getParent();
+ while(p != null && p.getFileType() < XFileObject.FOLDER) p = p.getParent();
+ if(p instanceof FolderImpl) {
+ ((FolderImpl)p).getFileSystem().getPeer().register(f);
+ }
+
+ return b;
}
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularObjectImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularObjectImpl.java 2008-11-20
16:43:50 UTC (rev 11918)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/RegularObjectImpl.java 2008-11-20
17:09:57 UTC (rev 11919)
@@ -57,6 +57,10 @@
return children.getObjects();
}
+ public XModelObject[] getLoadedChildren() {
+ return children.getObjects();
+ }
+
public boolean addChild_0(XModelObject o) {
if(o == null) {
return false;
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelObjectImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelObjectImpl.java 2008-11-20
16:43:50 UTC (rev 11918)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelObjectImpl.java 2008-11-20
17:09:57 UTC (rev 11919)
@@ -237,6 +237,10 @@
return getChildren();
}
+ public XModelObject[] getLoadedChildren() {
+ return getChildren();
+ }
+
public XModelObject getChildAt(int i) {
XModelObject[] children = getChildren();
return (i < 0 || i >= children.length) ? null : children[i];
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/AuxiliaryLoader.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/AuxiliaryLoader.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/AuxiliaryLoader.java 2008-11-20
17:09:57 UTC (rev 11919)
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.loaders;
+
+import org.jboss.tools.common.model.XModelObject;
+
+/**
+ * @author Viacheslav Kabanovich
+ */
+public interface AuxiliaryLoader {
+ public void bind(XModelObject main);
+}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/markers/ConstraintChecker.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/markers/ConstraintChecker.java 2008-11-20
16:43:50 UTC (rev 11918)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/markers/ConstraintChecker.java 2008-11-20
17:09:57 UTC (rev 11919)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.common.model.markers;
+import org.jboss.tools.common.model.impl.XModelObjectImpl;
import org.jboss.tools.common.model.markers.ResourceMarkers;
import org.jboss.tools.common.meta.XAttribute;
@@ -42,7 +43,7 @@
String error = as[i].getConstraint().getError(o.getAttributeValue(as[i].getName()));
if(error != null) addProblem(o, as[i].getName(), "Value " + error);
}
- XModelObject[] cs = o.getChildrenForSave();
+ XModelObject[] cs = ((XModelObjectImpl)o).getLoadedChildren();
for (int i = 0; i < cs.length; i++) check(cs[i]);
}