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$ + } }