You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Kristian Mandrup <kr...@mandrup.dk> on 2004/11/27 15:07:03 UTC

[betwixt] DynaBean read from xml problem

I can now successfully read a DynaClass complete with DynaProperties using
my previously posted adapters.
Had a bug in DynaClassAdapter - fix here: 

    public void setDynaProperties(DynaProperty[] properties) {
        setProperties(properties);
    }
        
    public void setProperties(DynaProperty[] properties) {
        super.setProperties(properties);
    } 

I now only have a problem reading a DynaBean:

<?xml version='1.0' ?>  <dynabean class="betwixt.DynaBeanAdapter"
className="betwixt.DynaBeanAdapter" id="1">
    <dynaClass class="betwixt.DynaClassAdapter"
className="betwixt.DynaClassAdapter"
dynaBeanClass="org.apache.commons.beanutils.BasicDynaBean" name="Person"
id="2">
      <dynaProperties>
        <DynaPropertyAdapter class="betwixt.DynaPropertyAdapter"
className="betwixt.DynaPropertyAdapter" name="name" type="java.lang.String"
id="3"/>
        <DynaPropertyAdapter class="betwixt.DynaPropertyAdapter"
className="betwixt.DynaPropertyAdapter" name="age" type="java.lang.Integer"
id="4"/>
        <DynaPropertyAdapter class="betwixt.DynaPropertyAdapter"
className="betwixt.DynaPropertyAdapter" name="married"
type="java.lang.Boolean" id="5"/>
      </dynaProperties>
    </dynaClass>
    <dynaClassRef idref="2"/>
    <values>
      <entry class="java.util.HashMap$Entry" id="6">
        <key>married</key>
        <value>false</value>
      </entry>
      <entry class="java.util.HashMap$Entry" id="7">
        <key>age</key>
        <value>30</value>
      </entry>
      <entry class="java.util.HashMap$Entry" id="8">
        <key>name</key>
        <value>Kristian Mandrup</value>
      </entry>
    </values>
  </dynabean>

betwixt.DynaBeanAdapter@1be0f0a
DynaBean:betwixt.DynaBeanAdapter@1be0f0a

<?xml version='1.0' ?>  <dynabean class="betwixt.DynaBeanAdapter"
className="betwixt.DynaBeanAdapter" id="1">
    <values/>
  </dynabean>

As the following DynaBeanAdapter class demonstrates, I have plenty of
setters but none of them (except the primitive types such as the string
className) seem to be called on correctly on construction, again resulting
in an empty DynaBean!
Que-pasa!!! :)
Almost there.... help or tips appreciated ;-)

===
import java.util.HashMap;

import org.apache.commons.beanutils.BasicDynaBean;
import org.apache.commons.beanutils.DynaClass;

/**
 * Created on 2004-11-27 by @author Kristian
 * 
 * TODO Describe type
 * 
 */
public class DynaBeanAdapter extends BasicDynaBean {

    /**
     * Comment for <code>serialVersionUID</code>
     */
    private static final long serialVersionUID = 1436974242229864237L;
    
    private DynaClass dynaClassRef;
    private String className = "betwixt.DynaBeanAdapter";
    
    public DynaBeanAdapter() {
        this(null);
    }

    public DynaBeanAdapter(DynaClass dynaClass) {
        super(dynaClass);
        setDynaClassRef(dynaClass);
    }    
    
    /**
     * @return Returns the dynaClassRef.
     */
    public DynaClass getDynaClassRef() {
        return dynaClassRef;
    }
    /**
     * @param dynaClassRef The dynaClassRef to set.
     */
    public void setDynaClassRef(DynaClass dynaClassRef) {
        this.dynaClassRef = dynaClassRef;
        this.dynaClass = dynaClassRef;
    }
    
    /**
     * @return Returns the values.
     */
    public Object getValue(String key) {
        return getValues().get(key);
    }    
    
    /**
     * @return Returns the values.
     */
    public HashMap getValues() {
        return values;
    }
    /**
     * @param values The values to set.
     */
    public void setValues(HashMap values) {
        this.values = values;
    }    
    
    public void addValue(String key, Object value) {
        set(key, value);
    }      

    public void addValues(String key, Object value) {
        set(key, value);
    }     
    
    /**
     * @return Returns the className.
     */
    public String getClassName() {
        return className;
    }
    /**
     * @param className The className to set.
     */
    public void setClassName(String className) {
        this.className = className;
    }
}

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.779 / Virus Database: 526 - Release Date: 19-10-2004
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org