List of usage examples for org.apache.commons.beanutils DynaBean getDynaClass
public DynaClass getDynaClass();
DynaClass
instance that describes the set of properties available for this DynaBean. 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; }