Example usage for org.apache.commons.beanutils DynaBean getDynaClass

List of usage examples for org.apache.commons.beanutils DynaBean getDynaClass

Introduction

In this page you can find the example usage for org.apache.commons.beanutils DynaBean getDynaClass.

Prototype

public DynaClass getDynaClass();

Source Link

Document

Return the DynaClass instance that describes the set of properties available for this DynaBean.

Usage

From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java

/**
 * Tests that elements for undefined tables are ignored.
 */// w  w  w . ja va 2s  .c  o m
public void testElementForUndefinedTable() throws Exception {
    Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='"
            + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + "  <table name='test'>\n"
            + "    <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n"
            + "    <column name='value' type='VARCHAR' size='50' required='true'/>\n" + "  </table>\n"
            + "</database>");
    List beans = readBeans(model, "<data>\n" + "  <test id='1' value='foo'/>\n"
            + "  <other id='2' value='bar'/>\n" + "  <test id='3' value='baz'/>\n" + "</data>");

    assertEquals(2, beans.size());

    DynaBean obj = (DynaBean) beans.get(0);

    assertEquals("test", obj.getDynaClass().getName());
    assertEquals("1", obj.get("id").toString());
    assertEquals("foo", obj.get("value").toString());

    obj = (DynaBean) beans.get(1);

    assertEquals("test", obj.getDynaClass().getName());
    assertEquals("3", obj.get("id").toString());
    assertEquals("baz", obj.get("value").toString());
}

From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java

/**
 * Tests that attributes for which no column is defined, are ignored.
 *//* w w w.ja  v  a 2 s. co m*/
public void testAttributeForUndefinedColumn() throws Exception {
    Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='"
            + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + "  <table name='test'>\n"
            + "    <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n"
            + "    <column name='value' type='VARCHAR' size='50' required='true'/>\n" + "  </table>\n"
            + "</database>");
    List beans = readBeans(model, "<data>\n" + "  <test id='1' value1='foo'/>\n" + "</data>");

    assertEquals(1, beans.size());

    DynaBean obj = (DynaBean) beans.get(0);

    assertEquals("test", obj.getDynaClass().getName());
    assertEquals("1", obj.get("id").toString());
    assertNull(obj.get("value"));
}

From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java

/**
 * Tests that sub elements for which no column is defined, are ignored.
 *//*from  www  .  j  av  a 2s.co m*/
public void testSubElementForUndefinedColumn() throws Exception {
    Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='"
            + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + "  <table name='test'>\n"
            + "    <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n"
            + "    <column name='value' type='VARCHAR' size='50' required='true'/>\n" + "  </table>\n"
            + "</database>");
    List beans = readBeans(model,
            "<data>\n" + "  <test id='1'>\n" + "    <value2>foo</value2>\n" + "  </test>\n" + "</data>");

    assertEquals(1, beans.size());

    DynaBean obj = (DynaBean) beans.get(0);

    assertEquals("test", obj.getDynaClass().getName());
    assertEquals("1", obj.get("id").toString());
    assertNull(obj.get("value"));
}

From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java

/**
 * Tests parsing when case sensitivity is turned on.
 *///from  w w  w . j a  v  a  2s. c om
public void testCaseSensitivityTurnedOn() throws Exception {
    Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='"
            + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + "  <table name='Test'>\n"
            + "    <column name='Id' type='INTEGER' primaryKey='true' required='true'/>\n"
            + "    <column name='Value' type='VARCHAR' size='50' required='true'/>\n" + "  </table>\n"
            + "</database>");
    String testDataXml = "<data>\n" + "  <test Id='1' Value='foo'/>\n" + "  <Test Id='2' value='baz'/>\n"
            + "</data>";

    ArrayList beans = new ArrayList();
    DataReader dataReader = new DataReader();

    dataReader.setCaseSensitive(true);
    dataReader.setModel(model);
    dataReader.setSink(new TestDataSink(beans));
    dataReader.read(new StringReader(testDataXml));

    assertEquals(1, beans.size());

    DynaBean obj = (DynaBean) beans.get(0);

    assertEquals("Test", obj.getDynaClass().getName());
    assertEquals("2", obj.get("Id").toString());
    assertNull(obj.get("Value"));
}

From source file:org.apache.ddlutils.io.TestDataReaderAndWriter.java

/**
 * Tests parsing when case sensitivity is turned off.
 *//*  w w w.  j  a  v a 2 s  .c om*/
public void testCaseSensitivityTurnedOff() throws Exception {
    Database model = readModel("<?xml version='1.0' encoding='ISO-8859-1'?>\n" + "<database xmlns='"
            + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" + "  <table name='Test'>\n"
            + "    <column name='Id' type='INTEGER' primaryKey='true' required='true'/>\n"
            + "    <column name='Value' type='VARCHAR' size='50' required='true'/>\n" + "  </table>\n"
            + "</database>");
    String testDataXml = "<data>\n" + "  <test Id='1' Value='foo'/>\n" + "  <Test Id='2' value='bar'/>\n"
            + "  <Test id='3' Value='baz'/>\n" + "</data>";

    ArrayList beans = new ArrayList();
    DataReader dataReader = new DataReader();

    dataReader.setCaseSensitive(false);
    dataReader.setModel(model);
    dataReader.setSink(new TestDataSink(beans));
    dataReader.read(new StringReader(testDataXml));

    assertEquals(3, beans.size());

    DynaBean obj = (DynaBean) beans.get(0);

    assertEquals("Test", obj.getDynaClass().getName());
    assertEquals("1", obj.get("Id").toString());
    assertEquals("foo", obj.get("Value").toString());

    obj = (DynaBean) beans.get(1);

    assertEquals("Test", obj.getDynaClass().getName());
    assertEquals("2", obj.get("Id").toString());
    assertEquals("bar", obj.get("Value").toString());

    obj = (DynaBean) beans.get(2);

    assertEquals("Test", obj.getDynaClass().getName());
    assertEquals("3", obj.get("Id").toString());
    assertEquals("baz", obj.get("Value").toString());
}

From source file:org.apache.ddlutils.task.TestWriteDataToFileCommand.java

/**
 * Adds the writeDataToFile sub task to the given task, executes it, and checks its output.
 *
 * @param task         The task/*from   ww w . j  a  v a  2  s  .c o  m*/
 * @param expectedData A map table name -> list of dyna beans sorted by the pk value that is expected
 */
private void runTask(DatabaseToDdlTask task, Map expectedData) throws IOException {
    WriteDataToFileCommand subTask = new WriteDataToFileCommand();
    File tmpFile = File.createTempFile("data", ".xml");

    try {
        subTask.setOutputFile(tmpFile);
        task.addWriteDataToFile(subTask);
        task.setModelName("roundtriptest");
        task.execute();

        DataReader dataReader = new DataReader();
        final Map readData = new HashMap();

        dataReader.setModel(getAdjustedModel());
        dataReader.setSink(new DataSink() {
            public void addBean(DynaBean bean) throws DataSinkException {
                String key = ((SqlDynaClass) bean.getDynaClass()).getTableName();
                List beans = (List) readData.get(key);

                if (beans == null) {
                    beans = new ArrayList();
                    readData.put(key, beans);
                }
                beans.add(bean);
            }

            public void end() throws DataSinkException {
            }

            public void start() throws DataSinkException {
            }
        });
        dataReader.read(tmpFile);

        assertEquals("Not the same tables in the expected and actual data", expectedData.keySet(),
                readData.keySet());
    } finally {
        if (!tmpFile.delete()) {
            getLog().warn("Could not delete temporary file " + tmpFile.getAbsolutePath());
        }
    }
}

From source file:org.apache.ddlutils.TestAgainstLiveDatabaseBase.java

/**
 * Determines the value of the bean's property that has the given name. Depending on the
 * case-setting of the current builder, the case of teh name is considered or not. 
 * //from  w  w w.j  a v a  2  s  . c  om
 * @param bean     The bean
 * @param propName The name of the property
 * @return The value
 */
protected Object getPropertyValue(DynaBean bean, String propName) {
    if (getPlatform().isDelimitedIdentifierModeOn()) {
        return bean.get(propName);
    } else {
        DynaProperty[] props = bean.getDynaClass().getDynaProperties();

        for (int idx = 0; idx < props.length; idx++) {
            if (propName.equalsIgnoreCase(props[idx].getName())) {
                return bean.get(props[idx].getName());
            }
        }
        throw new IllegalArgumentException("The bean has no property with the name " + propName);
    }
}

From source file:org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDynaBeanImpl.java

/**
 * Let's give the user some hints as to what could be wrong.
 *//*from   w  w  w  .j a va  2  s.c o  m*/
protected void logSetProblem(Object anObject, Object aValue, String msg) {
    Logger logger = LoggerFactory.getDefaultLogger();
    logger.error("Error in operation [set] of object [" + this.getClass().getName() + "], " + msg);
    logger.error("Property Name [" + getName() + "]");
    if (anObject instanceof DynaBean) {
        DynaBean dynaBean = (DynaBean) anObject;
        logger.error("anObject was DynaClass [" + dynaBean.getDynaClass().getName() + "]");
    } else if (anObject != null) {
        logger.error("anObject was class [" + anObject.getClass().getName() + "]");
    } else {
        logger.error("anObject was null");
    }
    if (aValue != null)
        logger.error("aValue was class [" + aValue.getClass().getName() + "]");
    else
        logger.error("aValue was null");
}

From source file:org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDynaBeanImpl.java

/**
 * Let's give the user some hints as to what could be wrong.
 *//*w  ww  .  j  ava  2s.  c o  m*/
protected void logGetProblem(Object anObject, String msg) {
    Logger logger = LoggerFactory.getDefaultLogger();
    logger.error("Error in operation [get of object [" + this.getClass().getName() + "], " + msg);
    logger.error("Property Name [" + getName() + "]");
    if (anObject instanceof DynaBean) {
        DynaBean dynaBean = (DynaBean) anObject;
        logger.error("anObject was DynaClass [" + dynaBean.getDynaClass().getName() + "]");
    } else if (anObject != null) {
        logger.error("anObject was class [" + anObject.getClass().getName() + "]");
    } else {
        logger.error("anObject was null");
    }
}

From source file:org.apache.struts.config.FormBeanConfig.java

/**
 * <p>Create and return an <code>ActionForm</code> instance appropriate to
 * the information in this <code>FormBeanConfig</code>.</p>
 *
 * <p>Although this method is not formally deprecated yet, where possible,
 * the form which accepts an <code>ActionContext</code> as an argument is
 * preferred, to help sever direct dependencies on the Servlet API.  As
 * the ActionContext becomes more familiar in Struts, this method will
 * almost certainly be deprecated.</p>
 *
 * @param servlet The action servlet//from   www . j av a  2s.  c  om
 * @return ActionForm instance
 * @throws IllegalAccessException if the Class or the appropriate
 *                                constructor is not accessible
 * @throws InstantiationException if this Class represents an abstract
 *                                class, an array class, a primitive type,
 *                                or void; or if instantiation fails for
 *                                some other reason
 */
public ActionForm createActionForm(ActionServlet servlet)
        throws IllegalAccessException, InstantiationException {
    Object obj = null;

    // Create a new form bean instance
    if (getDynamic()) {
        obj = getDynaActionFormClass().newInstance();
    } else {
        obj = formBeanClass().newInstance();
    }

    ActionForm form = null;

    if (obj instanceof ActionForm) {
        form = (ActionForm) obj;
    } else {
        form = new BeanValidatorForm(obj);
    }

    form.setServlet(servlet);

    if (form instanceof DynaBean && ((DynaBean) form).getDynaClass() instanceof MutableDynaClass) {
        DynaBean dynaBean = (DynaBean) form;
        MutableDynaClass dynaClass = (MutableDynaClass) dynaBean.getDynaClass();

        // Add properties
        dynaClass.setRestricted(false);

        FormPropertyConfig[] props = findFormPropertyConfigs();

        for (int i = 0; i < props.length; i++) {
            dynaClass.add(props[i].getName(), props[i].getTypeClass());
            dynaBean.set(props[i].getName(), props[i].initial());
        }

        dynaClass.setRestricted(isRestricted());
    }

    if (form instanceof BeanValidatorForm) {
        ((BeanValidatorForm) form).initialize(this);
    }

    return form;
}