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:net.sf.morph.reflect.reflectors.DynaBeanReflector.java

/**
 * {@inheritDoc}/*from w ww . j  av  a2 s. co  m*/
 */
protected Object getImpl(Object bean, String propertyName) throws Exception {
    DynaBean dyna = getDynaBean(bean);
    return IMPLICIT_PROPERTY_DYNA_CLASS.equals(propertyName) ? dyna.getDynaClass() : dyna.get(propertyName);
}

From source file:net.mlw.vlh.adapter.jdbc.dynabean.DefaultDynaBeanAdapter.java

public List processResultSet(String name, ResultSet result, int numberPerPage, ValueListInfo info)
        throws SQLException {
    List list = new ArrayList();

    ResultSetDynaClass rsdc = new ResultSetDynaClass(result, false, isUseName());
    BasicDynaClass bdc = new BasicDynaClass(name, BasicDynaBean.class, rsdc.getDynaProperties());

    int rowIndex = 0;
    for (Iterator rows = rsdc.iterator(); rows.hasNext() && rowIndex < numberPerPage; rowIndex++) {
        try {// w  w  w.jav a2s  .  com
            DynaBean oldRow = (DynaBean) rows.next();
            DynaBean newRow = bdc.newInstance();

            DynaProperty[] properties = oldRow.getDynaClass().getDynaProperties();
            for (int i = 0, length = properties.length; i < length; i++) {
                String propertyName = properties[i].getName();
                Object value = oldRow.get(propertyName);
                newRow.set(propertyName, value);
            }

            list.add(newRow);
        } catch (Exception e) {
            LOGGER.error(e);
        }
    }

    return list;
}

From source file:io.coala.experimental.dynabean.DynaBeanTest.java

@Test
public void testDynaBeans() throws Exception {
    // for usage, see
    // http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanutils/package-summary.html#package_description

    final DynaBean dynaBean = new LazyDynaBean(); // Create LazyDynaBean
    final MutableDynaClass dynaClass = (MutableDynaClass) dynaBean.getDynaClass(); // get DynaClass

    dynaClass.add("amount", java.lang.Integer.class); // add property
    dynaClass.add("myMap", java.util.TreeMap.class); // add mapped property

    final DynaBean employee = dynaClass.newInstance();

    // TODO experiment with Jackson's AnnotationIntrospector to annotate
    // DynaBean#get(...) method with @JsonAnyGetter and #set(...) method
    // with @JsonAnySetter

    employee.set("address", new HashMap<String, String>());
    employee.set("activeEmployee", Boolean.FALSE);
    employee.set("firstName", "Fred");
    employee.set("lastName", "Flintstone");

    LOG.trace("Employee: " + JsonUtil.toPrettyJSON(employee));

    // set all <activeEmployee> attribute values to <true>
    final BeanPropertyValueChangeClosure closure = new BeanPropertyValueChangeClosure("activeEmployee",
            Boolean.TRUE);/*from  w  w  w  . ja v  a 2s.  c  o  m*/

    final Collection<?> employees = Collections.singleton(employee);
    LOG.trace("Mutated employees: " + JsonUtil.toPrettyJSON(employees));

    // update the Collection
    CollectionUtils.forAllDo(employees, closure);

    // filter for beans with <activeEmployee> set to <false>
    final BeanPropertyValueEqualsPredicate predicate = new BeanPropertyValueEqualsPredicate("lastName",
            "Flintstone");

    // filter the Collection
    CollectionUtils.filter(employees, predicate);
    LOG.trace("Filtered employees: " + JsonUtil.toPrettyJSON(employees));
}

From source file:net.sf.json.util.DynaBeanToBeanMorpher.java

/**
 * DOCUMENT ME!//from ww w. j  ava2  s .  c o  m
 *
 * @param value DOCUMENT ME!
 *
 * @return DOCUMENT ME!
 */
public Object morph(Object value) {
    if (value == null) {
        return null;
    }

    if (!supports(value.getClass())) {
        throw new MorphException("value is not a DynaBean");
    }

    Object bean = null;

    try {
        bean = beanClass.newInstance();

        DynaBean dynaBean = (DynaBean) value;
        DynaClass dynaClass = dynaBean.getDynaClass();
        PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(beanClass);

        for (int i = 0; i < pds.length; i++) {
            PropertyDescriptor pd = pds[i];
            String name = pd.getName();
            DynaProperty dynaProperty = dynaClass.getDynaProperty(name);

            if (dynaProperty != null) {
                Class dynaType = dynaProperty.getType();
                Class type = pd.getPropertyType();

                if (type.isAssignableFrom(dynaType)) {
                    PropertyUtils.setProperty(bean, name, dynaBean.get(name));
                } else {
                    if (IdentityObjectMorpher.getInstance() == morpherRegistry.getMorpherFor(type)) {
                        throw new MorphException("Can't find a morpher for target class " + type);
                    } else {
                        PropertyUtils.setProperty(bean, name, morpherRegistry.morph(type, dynaBean.get(name)));
                    }
                }
            }
        }
    } catch (InstantiationException e) {
        throw new MorphException(e);
    } catch (IllegalAccessException e) {
        throw new MorphException(e);
    } catch (InvocationTargetException e) {
        throw new MorphException(e);
    } catch (NoSuchMethodException e) {
        throw new MorphException(e);
    }

    return bean;
}

From source file:net.mlw.vlh.web.tag.DynaBeanColumnsTag.java

/**
 * @see javax.servlet.jsp.tagext.Tag#doEndTag()
 *//*from w  ww  .  ja va 2  s . co  m*/
public int doEndTag() throws JspException {
    ValueListSpaceTag rootTag = (ValueListSpaceTag) JspUtils.getParent(this, ValueListSpaceTag.class);

    DefaultRowTag rowTag = (DefaultRowTag) JspUtils.getParent(this, DefaultRowTag.class);
    DynaBean bean = (DynaBean) pageContext.getAttribute(rowTag.getBeanName());
    if (bean == null) {
        LOGGER.error("Zero results where returned.");
        return SKIP_BODY;
    }

    DynaClass dClass = bean.getDynaClass();

    StringBuffer sb = new StringBuffer();
    for (int i = 0, length = dClass.getDynaProperties().length; i < length; i++) {
        String name = dClass.getDynaProperties()[i].getName();
        if ((include.isEmpty() || include.contains(name)) && (exclude.isEmpty() || !exclude.contains(name))) {
            if (rowTag.getCurrentRowNumber() == 0) {
                String displayName = name.substring(0, 1).toUpperCase() + name.substring(1);
                rowTag.addColumnInfo(new ColumnInfo(displayName, name, defaultSort, null));
            }

            sb.append(rowTag.getDisplayProvider().getCellPreProcess(null));
            if (bean.get(name) == null) {
                sb.append(rootTag.getConfig().getNullToken());
            } else {
                sb.append(bean.get(name));
            }

            sb.append(rowTag.getDisplayProvider().getCellPostProcess());
        }

    }

    JspUtils.write(pageContext, sb.toString());

    release();

    return EVAL_PAGE;
}

From source file:junit.mock.TestDynaPropertiesMO.java

public void testDoStartTag() throws Exception {
    DynaBean bean = createDynaBean();

    /*mockPageContext.setupFindAttribute(bean);
    mockPageContext.addExpectedFindAttributeValues("item");
    mockPageContext.addExpectedSetAttributeStringObjectValues(
    "var", bean.getDynaClass().getDynaProperties());*/

    mockPageContext.expectFindAttribute("item").returns(bean);
    mockPageContext.expectSetAttribute("var", bean.getDynaClass().getDynaProperties());
    tag.setItem("${item}");
    tag.setVar("var");

    int result = tag.doStartTag();

    assertEquals(Tag.SKIP_BODY, result);
    //mockPageContext.
    //System.out.print(mockPageContext.getAttribute("var"));
}

From source file:com.xwtec.xwserver.util.json.JSONObject.java

private static JSONObject _fromDynaBean(DynaBean bean, JsonConfig jsonConfig) {
    if (bean == null) {
        fireObjectStartEvent(jsonConfig);
        fireObjectEndEvent(jsonConfig);/*from  ww  w  . ja  va  2  s .  c  om*/
        return new JSONObject(true);
    }

    if (!addInstance(bean)) {
        try {
            return jsonConfig.getCycleDetectionStrategy().handleRepeatedReferenceAsObject(bean);
        } catch (JSONException jsone) {
            removeInstance(bean);
            fireErrorEvent(jsone, jsonConfig);
            throw jsone;
        } catch (RuntimeException e) {
            removeInstance(bean);
            JSONException jsone = new JSONException(e);
            fireErrorEvent(jsone, jsonConfig);
            throw jsone;
        }
    }
    fireObjectStartEvent(jsonConfig);

    JSONObject jsonObject = new JSONObject();
    try {
        DynaProperty[] props = bean.getDynaClass().getDynaProperties();
        Collection exclusions = jsonConfig.getMergedExcludes();
        PropertyFilter jsonPropertyFilter = jsonConfig.getJsonPropertyFilter();
        for (int i = 0; i < props.length; i++) {
            boolean bypass = false;
            DynaProperty dynaProperty = props[i];
            String key = dynaProperty.getName();
            if (exclusions.contains(key)) {
                continue;
            }
            Class type = dynaProperty.getType();
            Object value = bean.get(dynaProperty.getName());
            if (jsonPropertyFilter != null && jsonPropertyFilter.apply(bean, key, value)) {
                continue;
            }
            JsonValueProcessor jsonValueProcessor = jsonConfig.findJsonValueProcessor(type, key);
            if (jsonValueProcessor != null) {
                value = jsonValueProcessor.processObjectValue(key, value, jsonConfig);
                bypass = true;
                if (!JsonVerifier.isValidJsonValue(value)) {
                    throw new JSONException("Value is not a valid JSON value. " + value);
                }
            }
            setValue(jsonObject, key, value, type, jsonConfig, bypass);
        }
    } catch (JSONException jsone) {
        removeInstance(bean);
        fireErrorEvent(jsone, jsonConfig);
        throw jsone;
    } catch (RuntimeException e) {
        removeInstance(bean);
        JSONException jsone = new JSONException(e);
        fireErrorEvent(jsone, jsonConfig);
        throw jsone;
    }

    removeInstance(bean);
    fireObjectEndEvent(jsonConfig);
    return jsonObject;
}

From source file:no.sesat.search.mode.command.GoogleSearchCommand.java

protected ResultItem createItem(final DynaBean entry) {

    ResultItem resItem = new BasicResultItem();

    final DynaProperty[] descriptors = entry.getDynaClass().getDynaProperties();
    for (DynaProperty d : descriptors) {
        if (entry.get(d.getName()) instanceof Serializable) {
            resItem = resItem.addObjectField(d.getName(), (Serializable) entry.get(d.getName()));
        }/*from  w  w  w  . j ava 2s  . c  o  m*/
    }

    return resItem;

}

From source file:org.apache.action2.legacy.DynaBeanPropertyAccessor.java

public Object getProperty(Map context, Object target, Object name) throws OgnlException {

    if (target instanceof DynaBean && name != null) {
        DynaBean bean = (DynaBean) target;
        DynaClass cls = bean.getDynaClass();
        String key = name.toString();
        if (cls.getDynaProperty(key) != null) {
            return bean.get(key);
        }//from w  w  w  .  j av  a 2  s . c o  m
    }
    return null;
}

From source file:org.apache.ddlutils.dynabean.DynaClassCache.java

/**
 * Returns the {@link SqlDynaClass} for the given bean.
 * /*  w w w.  j ava  2  s . c o m*/
 * @param dynaBean The bean
 * @return The dyna bean class
 */
public SqlDynaClass getDynaClass(DynaBean dynaBean) throws SqlDynaException {
    DynaClass dynaClass = dynaBean.getDynaClass();

    if (dynaClass instanceof SqlDynaClass) {
        return (SqlDynaClass) dynaClass;
    } else {
        // TODO: we could autogenerate an SqlDynaClass here ?
        throw new SqlDynaException("The dyna bean is not an instance of a SqlDynaClass");
    }
}