SOJO is a Java framework that converts JavaBeans (complex Java-Object graphs) to a simplified representation, so that handling access to JavaBeans properties is easy and uniform.
SOJO framework is meant to compliment POJOs in cases where object orientation is not supported or is not the best decision.
The possible property types, that are supported by a JavaBean (and SOJO) can be broken into three groups:
Simple: Simple properties are such as int, long, double (primitive data types) or a simple object (such as a java.lang.String, java.lang.Long, java.uilt.Date and so on). The net.sf.sojo.reflect.ReflectionHelper is to be responsible for define classes, which are simple (can get with method isSimpleType). With the method addSimpleType can add more types at runtime.
Iterateable: An Iterateable property stores a collection of objects that can be accessed by an integer-valued (index, non-negative) or by an iterator. Interfaces for this category are java.util.List, java.util.Set or the super interface java.util.Collection. An Iterateable property can be also an array.
Map: A Map property is a property with a implementation from the java interface java.util.Map. The elements are composite key-value pairs. You can set and retrieve individual values via a key.
The outcome of this categories of JavaBeans-properties are kinds of conversion. The main classes for conversions are the Java interface net.sf.sojo.Conversion respectively the abstract implementation net.sf.sojo.AbstractConversion. The first extensions are net.sf.sojo.SimpleConversion and net.sf.sojo.ConversionIterator. The net.sf.sojo.ConversionIterator is splitting in net.sf.sojo.ComplexConversion and net.sf.sojo.IterateableConversion.
For different kind of properties (category) exist different kind of strategies for conversions:
SimpleConversion: Convert a simple to a simple type. A example is the transformation from String to Long. For this problem you can use the:net.sf.sojo.conversion.Simple2SimpleConversion
ConversionIterator: is splitting in sub classes:
IterateableConversion: This category is equivalent to JavaBean category iterateable. Conversions implementations are: net.sf.sojo.conversion.Iterateable2IterateableConversion or net.sf.sojo.conversion.IterateableMap2MapConversion or net.sf.sojo.conversion.IterateableMap2BeanConversion
ComplexConversion: This category is equivalent to JavaBean category map. Conversions implementations are: net.sf.sojo.conversion.ComplexBean2MapConversion
What's New in This Release:
· A List, Set, Map, or Array that contains JavaBeans may be sorted.
· Filtering by equals, hashCode, and compare is supported.
· Filtering by regexp is supported. Many bugs were fixed.