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(XDebugStackFrame variable, Node value) {
+ private int NumChildren;
+
+ public XDebugObjectValue(XDebugStackFrame variable, Node value) throws DebugException {
super(variable, value);
- }
- public void renderValueString(String data) {
- fValueString = data;
- }
+ NumChildren = 0;
+ if (!PHPDebugUtils.getAttributeValue(value, "numchildren").equals("")) {
+ NumChildren = Integer.parseInt(PHPDebugUtils.getAttributeValue(value, "numchildren"));
+ }
+
+ 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
+}