Bug 579067 - DataTree toString implementations for debug
Change-Id: I8ad33daa9f69e1c9d9d5ca83e9797601a60418b8
Signed-off-by: Joerg Kubitz <jkubitz-eclipse@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.resources/+/190589
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Mickael Istria <mistria@redhat.com>
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/AbstractDataTreeNode.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/AbstractDataTreeNode.java
index d91da64..6d9f006 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/AbstractDataTreeNode.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/AbstractDataTreeNode.java
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.core.internal.dtree;
+import java.util.Arrays;
+import java.util.stream.Collectors;
import org.eclipse.core.internal.utils.Messages;
import org.eclipse.core.internal.utils.StringPool;
import org.eclipse.core.runtime.IPath;
@@ -589,8 +591,37 @@
* for debugging purposes only (no NLS support needed)
*/
@Override
- public String toString() {
- return "an AbstractDataTreeNode(" + this.getName() + ") with " + getChildren().length + " children."; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ final public String toString() {
+ return toShortString(); // $NON-NLS-1$
+ }
+ // example output:
+ // "DataTreeNode with 3 children
+ // leftOfRoot DataTreeNode with 3 children
+ // new DataTreeNode
+ // three DataTreeNode
+ // two DataTreeNode
+ // newTopLevel DataTreeNode
+ // rightOfRoot DataTreeNode with 1 children
+ // rightOfRight DataTreeNode"
+ String toLongString() {
+ return toShortString() + "\n" + getChildrenString(1); //$NON-NLS-1$
+ }
+
+ // example output:
+ // "rightOfRoot DataTreeNode with 1 children"
+ String toShortString() {
+ return (getName() == null ? "" : getName() + " ") + this.getClass().getSimpleName() //$NON-NLS-1$ //$NON-NLS-2$
+ + (getChildren().length == 0 ? "" //$NON-NLS-1$
+ : (" with " + getChildren().length + " children"));//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private String getChildrenString(int depth) {
+ int MAXDEPTH = 2; // draw only some levels
+ String indent = " ".repeat(depth); //$NON-NLS-1$
+ return (depth > MAXDEPTH ? "" //$NON-NLS-1$
+ : (Arrays.stream(getChildren())
+ .map(n -> indent + n.toShortString() + "\n" + n.getChildrenString(depth + 1)) //$NON-NLS-1$
+ .collect(Collectors.joining())));
}
/**
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataDeltaNode.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataDeltaNode.java
index 8ac8d77..fd56ced 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataDeltaNode.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataDeltaNode.java
@@ -106,15 +106,6 @@
}
/**
- * Returns a unicode representation of the node. This method is used
- * for debugging purposes only (no NLS support needed)
- */
- @Override
- public String toString() {
- return "a DataDeltaNode(" + this.getName() + ") with " + getChildren().length + " children."; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- /**
* Returns a constant describing the type of node.
*/
@Override
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataTreeNode.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataTreeNode.java
index 8cfb072..8d8a72a 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataTreeNode.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DataTreeNode.java
@@ -350,18 +350,6 @@
((IStringPoolParticipant) o).shareStrings(set);
}
- /**
- * Returns a unicode representation of the node. This method is used
- * for debugging purposes only (no NLS support needed)
- */
- @Override
- public String toString() {
- return "a DataTreeNode(" + this.getName() + ") with " + getChildren().length + " children."; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- /**
- * Returns a constant describing the type of node.
- */
@Override
int type() {
return T_COMPLETE_NODE;
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeletedNode.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeletedNode.java
index e4e532b..5647027 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeletedNode.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeletedNode.java
@@ -110,15 +110,6 @@
}
/**
- * Return a unicode representation of the node. This method
- * is used for debugging purposes only (no NLS please)
- */
- @Override
- public String toString() {
- return "a DeletedNode(" + this.getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /**
* Returns a string describing the type of node.
*/
@Override
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeltaDataTree.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeltaDataTree.java
index 68b20fd..9ad72e6 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeltaDataTree.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/DeltaDataTree.java
@@ -977,4 +977,12 @@
root.storeStrings(set);
}
}
-}
+
+ /** for debugging purposes only */
+ @Override
+ public String toString() {
+ return this.getClass().getSimpleName() + " " + Integer.toHexString(System.identityHashCode(this)) + " parent=" //$NON-NLS-1$ //$NON-NLS-2$
+ + (parent == null ? null : Integer.toHexString(System.identityHashCode(parent))) + " rootNode=" //$NON-NLS-1$
+ + rootNode.toShortString();
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/NoDataDeltaNode.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/NoDataDeltaNode.java
index 9f21a6a..a4933cd 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/NoDataDeltaNode.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/dtree/NoDataDeltaNode.java
@@ -118,15 +118,6 @@
}
/**
- * Returns a unicode representation of the node. This method is used
- * for debugging purposes only (no NLS support needed)
- */
- @Override
- public String toString() {
- return "a NoDataDeltaNode(" + this.getName() + ") with " + getChildren().length + " children."; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- /**
* Return a constant describing the type of node.
*/
@Override
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/FileStoreRoot.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/FileStoreRoot.java
index e55c025..9993e69 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/FileStoreRoot.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/FileStoreRoot.java
@@ -209,4 +209,10 @@
}
return canonicalRoot;
}
+
+ /** for debugging only **/
+ @Override
+ public String toString() {
+ return root.toString();
+ }
}
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java
index 466f925..6032633 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceInfo.java
@@ -488,4 +488,10 @@
output.writeInt(getContentId());
output.writeLong(modStamp);
}
+
+ /** for debugging only **/
+ @Override
+ public String toString() {
+ return "" + fileStoreRoot + " modStamp=" + modStamp; //$NON-NLS-1$ //$NON-NLS-2$
+ }
}