diff options
4 files changed, 37 insertions, 17 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ContainerModelNode.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ContainerModelNode.java index b6d62466e..d9c21cc14 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ContainerModelNode.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ContainerModelNode.java @@ -18,9 +18,9 @@ import java.util.concurrent.locks.ReentrantLock; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.tcf.te.runtime.events.EventManager; import org.eclipse.tcf.te.runtime.model.interfaces.IContainerModelNode; import org.eclipse.tcf.te.runtime.model.interfaces.IModelNode; -import org.eclipse.tcf.te.runtime.events.EventManager; /** * A common (data) model container node implementation. @@ -212,7 +212,17 @@ public class ContainerModelNode extends ModelNode implements IContainerModelNode */ @Override public int size() { - return childList.size(); + int size = 0; + try { childListLock.lock(); size = childList.size(); } finally { childListLock.unlock(); } + return size; + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.runtime.properties.PropertiesContainer#isEmpty() + */ + @Override + public boolean isEmpty() { + return super.isEmpty() && !hasChildren(); } /* (non-Javadoc) @@ -308,11 +318,16 @@ public class ContainerModelNode extends ModelNode implements IContainerModelNode IModelNode find = super.find(uuid); if (find != null) return find; - for (IModelNode child : childList) { - find = child.find(uuid); - if (find != null) { - return find; + try { + childListLock.lock(); + for (IModelNode child : childList) { + find = child.find(uuid); + if (find != null) { + return find; + } } + } finally { + childListLock.unlock(); } return find; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java index db93a1c54..35ea1dfbd 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java @@ -137,17 +137,6 @@ public class ModelNode extends PropertiesContainer implements IModelNode, IModel } /* (non-Javadoc) - * @see org.eclipse.tcf.te.runtime.nodes.PropertiesContainer#getProperty(java.lang.String) - */ - @Override - public Object getProperty(String key) { - if (PROPERTY_NAME.equals(key)) { - return getName(); - } - return super.getProperty(key); - } - - /* (non-Javadoc) * @see org.eclipse.tcf.te.runtime.interfaces.nodes.IModelNode#getDescription() */ @Override diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/interfaces/properties/IPropertiesContainer.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/interfaces/properties/IPropertiesContainer.java index be8e13cf9..139bd61ff 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/interfaces/properties/IPropertiesContainer.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/interfaces/properties/IPropertiesContainer.java @@ -214,6 +214,13 @@ public interface IPropertiesContainer extends IAdaptable { public void clearProperties(); /** + * Returns whether this properties container is empty or not. + * + * @return <code>True</code> if the properties container is empty, <code>false</code> if not. + */ + public boolean isEmpty(); + + /** * Test if the property value stored under the given property is equal ignoring the case to the given * expected string value. * diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/properties/PropertiesContainer.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/properties/PropertiesContainer.java index 261243275..635b6c100 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/properties/PropertiesContainer.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime/src/org/eclipse/tcf/te/runtime/properties/PropertiesContainer.java @@ -473,6 +473,15 @@ public class PropertiesContainer extends PlatformObject implements IPropertiesCo }
/* (non-Javadoc)
+ * @see org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer#isEmpty()
+ */
+ @Override
+ public boolean isEmpty() {
+ Assert.isTrue(checkThreadAccess(), "Illegal Thread Access"); //$NON-NLS-1$
+ return properties.isEmpty();
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.tcf.te.runtime.interfaces.IPropertiesContainer#isProperty(java.lang.String, long)
*/
@Override
|