X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugObjectValue.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugObjectValue.java index 27c42d2..a94b869 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugObjectValue.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugObjectValue.java @@ -1,25 +1,49 @@ package net.sourceforge.phpeclipse.xdebug.php.model; +import java.util.ArrayList; + +import net.sourceforge.phpeclipse.xdebug.core.PHPDebugUtils; + +import org.eclipse.debug.core.DebugException; +import org.eclipse.debug.core.model.IVariable; import org.w3c.dom.Node; +import org.w3c.dom.NodeList; public class XDebugObjectValue extends XDebugAbstractValue { - public XDebugObjectValue(XDebugVariable variable, Node varNode, - String typeName) { - super(variable, varNode, typeName); - } + private int NumChildren; - public void setType(String typeName) { - fType = XDebugAbstractValue.VALUETYPE_OBJECT; - fTypeName = typeName; + public XDebugObjectValue(XDebugStackFrame variable, Node value) throws DebugException { + super(variable, value); - } + NumChildren = 0; + if (!PHPDebugUtils.getAttributeValue(value, "numchildren").equals("")) { + NumChildren = Integer.parseInt(PHPDebugUtils.getAttributeValue(value, "numchildren")); + } - public void renderValueString(String data) { - fValueString = data; + if (NumChildren > 0) { + NodeList property = value.getChildNodes(); - } + ArrayList a = new ArrayList(); + for (int i = 0; i < property.getLength(); i++) { + Node propertyNode = property.item(i); + /* + * Eliminate CLASSNAME duplicate from object properties. + * see http://bugs.xdebug.org/view.php?id=518 + * and http://svn.xdebug.org/cgi-bin/viewvc.cgi/xdebug/trunk/xdebug_var.c?root=xdebug&r1=2962&r2=2996 + */ + String name = PHPDebugUtils.getAttributeValue (propertyNode, "name"); + + if (!name.equals ("CLASSNAME")) { + a.add(new XDebugVariable(variable, propertyNode)); + } + } + + setChildren((IVariable[])a.toArray(new IVariable[a.size()])); + } - public boolean verifyValue(String expression) { - return false; + String className = PHPDebugUtils.getAttributeValue(value,"classname"); + if(!"".equals(className)) { + setValueString(className); + } } -} \ No newline at end of file +}