Package org.sql2o.reflection

Examples of org.sql2o.reflection.Setter


        assertFalse(pojo1.equals(pojo2));

        Field[] fields = pojo1.getClass().getDeclaredFields();
        for (Field field : fields) {
            Setter setter = fsf.newSetter(field);
            assertSame(field.getType(),setter.getType());
            Object val1 = field.get(pojo1);
            Object val2 = field.get(pojo2);
            assertFalse(val1.equals(val2));
            setter.setProperty(pojo2,val1);
            Object val3 = field.get(pojo2);
            assertEquals(val1,val3);
        }

        assertEquals(pojo1,pojo2);

        // let's reset all values to NULL
        // primitive fields will not be affected
        for (Field field : fields) {
            Setter setter = fsf.newSetter(field);
            Object val1 = field.get(pojo1);
            assertNotNull(val1);

            setter.setProperty(pojo1,null);

            Object val2 = field.get(pojo1);
            if(!setter.getType().isPrimitive()){
                assertNull(val2);
                continue;
            }
            assertNotNull(val2);
            // not affected
View Full Code Here


            final String propertyPath,
            final PojoMetadata metadata) {
        int index = propertyPath.indexOf('.');
        if (index <= 0) {
            // Simple path - fast way
            final Setter setter = metadata.getPropertySetterIfExists(propertyPath);
            // behavior change: do not throw if POJO contains less properties
            if (setter == null) return null;
            final Converter converter = quirks.converterOf(setter.getType());
            // setter without converter
            if (converter == null) return setter;
            return new Setter() {
                public void setProperty(Object obj, Object value) {
                    try {
                        setter.setProperty(obj, converter.convert(value));
                    } catch (ConverterException e) {
                        throw new Sql2oException("Error trying to convert column " + propertyPath + " to type " + setter.getType(), e);
                    }
                }

                public Class getType() {
                    return setter.getType();
                }
            };
        }
        // dot path - long way
        // i'm too lazy now to rewrite this case so I just call old unoptimized code...
        // TODO: rewrite, get rid of POJO class
        return new Setter() {
            public void setProperty(Object obj, Object value) {
                Pojo pojo = new Pojo(metadata, metadata.isCaseSensitive(), obj);
                pojo.setProperty(propertyPath, value, quirks);
            }
View Full Code Here

                }

                // otherwise we want executeAndFetch with object mapping
                Object pojo = metadata.getObjectConstructor().newInstance();
                for (int colIdx = 1; colIdx <= columnCount; colIdx++) {
                    Setter setter = setters[colIdx];
                    if (setter == null) continue;
                    setter.setProperty(pojo, quirks.getRSVal(resultSet, colIdx));
                }

                return (T) pojo;
            }
        };
View Full Code Here

        Method[] methods = pojo1.getClass().getDeclaredMethods();
        for (Method method : methods) {
            if(!method.getName().startsWith("set_")) continue;
            Field field = pojo1.getClass()
                    .getDeclaredField(method.getName().substring(3));
            Setter setter = msf.newSetter(method);
            assertSame(field.getType(),setter.getType());
            Object val1 = field.get(pojo1);
            Object val2 = field.get(pojo2);
            assertFalse(val1.equals(val2));
            setter.setProperty(pojo2,val1);
            Object val3 = field.get(pojo2);
            assertEquals(val1,val3);
        }

        assertEquals(pojo1,pojo2);

        // let's reset all values to NULL
        // primitive fields will not be affected
        for (Method method : methods) {
            if(!method.getName().startsWith("set_")) continue;
            Field field = pojo1.getClass()
                    .getDeclaredField(method.getName().substring(3));
            Setter setter = msf.newSetter(method);
            Object val1 = field.get(pojo1);
            assertNotNull(val1);

            setter.setProperty(pojo1,null);

            Object val2 = field.get(pojo1);
            if(!setter.getType().isPrimitive()){
                assertNull(val2);
                continue;
            }
            assertNotNull(val2);
            // not affected
View Full Code Here

TOP

Related Classes of org.sql2o.reflection.Setter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.