Releases: OpenPojo/openpojo
Releases · OpenPojo/openpojo
OpenPojo 0.8.5
Added
- OpenPojo now has the ability to enumerate classes from java BootClassLoader.
- Issue #98, support for java.util.TimeZone random generation added (Thanks to Ignacio L.)
- Issue #84, support for sun.security.krb5.Credentials random generation added.
- Issue #96 Support for generating random values for java.time.Instant added (Thanks to sixcorners)
Fixed
- Issue #85, OpenPojo now correctly handles a single dimension array when the array type is primitive (Thanks to Todd C.)
- BusinessIdentityTester is now thread safe.
OpenPojo 0.8.4
Added
- Issue #78, PojoClass, PojoMethod & PojoField now all support isPackagePrivate() as well as isPrivate(), isProtected(), isPublic().
- Issue #79, PojoField now supports getGetter() & getSetter(). (Thanks to Chris D.)
Fixed
- When attempting to generate subclass for Abstract class, OpenPojo was throwing class not found instead of the friendly message about including asm to the classpath.
- Issue #81, inability to load all classes from a package recursively when a method or field was linking to missing class, now OpenPojo will warn about the missing class but will return the list of classes it was able to load.
- Issue #82, support for randomly generating ZonedDateTime class from Java8. (Thanks to Shawn S.)
- Issue #82, support for randomly generating ZonedId class from Java8. (Thanks to Shawn S.)
Removed
- EnumSetRandomGenerator classes which had been deprecated as the functionality had been moved to Set generators.
OpenPojo 0.8.3
Added
- Support for generating random URL closing issue #74. (Thanks to John G.)
- Support for generating random URI.
OpenPojo 0.8.2
Added
- Support for generating UUID which fixed issue #72. (Thanks to John G. for reporting the issue).
OpenPojo 0.8.1
Added
- PojoClass now has .getPackage() which returns PojoPackage allowing various Package operations.
Fixed
- BusinessIdentity.toString() now does deepToString on array fields.
- Issue #68 - A corner case with Java < 1.7 failing to randomly generate values for testing when the field was declared as Set<Object[]> or some other combination of Collection holding primitive arrays.
OpenPojo 0.8.0
This release is identical to 0.7.5, however the OpenPojo license has been moved to Apache 2.0.
OpenPojo 0.7.5
Added
- Validator now supports single PojoClass validation, List, or even recursively over a given package. Removing the need for PojoValidator completely.
OpenPojo 0.7.4
Added
- Simplified Pojo Validation, now there is a ValidatorBuilder class to simplify adding Rule(s) / Tester(s). Thanks to Felipe R. for suggesting and providing a working implementation, also thanks to Todd C. for being a sounding board on brain storming alternative approaches. This will simplify much of the boiler plate written to create tests against Pojos. For example:
Validator validator = ValidatorBuilder.create()
.with(new GetterMustExistRule())
.with(new SetterMustExistRule())
.with(new SetterTester())
.with(new GetterTester())
.build();
validator.validate(POJO_PACKAGE, new FilterPackageInfo());
Fixed
- BusinessIdentity.areEqual() / .doHashCode() was failing to do deep inspection with multi-dimentional arrays. (Thanks to Todd C. for uncovering this issue).
- TestClassMustBeProperlyNamedRule was failing when TestNG annotation was not loaded.
- FilterChain class used to throw null pointer exception when created with "null" filters, will now act as passive filter.
- A minor warning in Pojo validation was being thrown when an Interface was being validated without rules being added.
OpenPojo 0.7.3
Added
- Support for every Collection & Map in Java, with automatic detection and registration based on JVM support. The complete list of Collections & Maps listed bellow.
- New Rule TestClassMustBeProperlyNamedRule to test misnamed test files that will only run on your IDE but not on your build server.
public class StructuralTest {
private PojoValidator pojoValidator;
@Before
public void setup() {
pojoValidator = new PojoValidator();
pojoValidator.addRule(new TestClassMustBeProperlyNamedRule());
}
@Test
public void allTestsMustBeProperlyNamed() {
List<PojoClass> pojoClasses = PojoClassFactory.getPojoClassesRecursively("com.openpojo", null);
for (PojoClass pojoClass : pojoClasses) {
pojoValidator.runValidation(pojoClass);
}
}
}
Collections:
- AbstractCollection
- Collection
Lists:
- AbstractList
- AbstractSequentialList
- ArrayList
- AttributeList
- CopyOnWriteArrayList
- LinkedList
- List
- RoleList
- RoleUnresolvedList
- Stack
- Vector
Queues:
- AbstractQueue
- ArrayBlockingQueue
- ArrayDeque
- BlockingDeque
- BlockingQueue
- ConcurrentLinkedDeque
- ConcurrentLinkedQueue
- DelayQueue
- Deque
- LinkedBlockingDeque
- LinkedBlockingQueue
- LinkedTransferQueue
- PriorityBlockingQueue
- PriorityQueue
- Queue
- SynchronousQueue
- TransferQueue
Sets:
- AbstractSet
- ConcurrentSkipListSet
- CopyOnWriteArraySet
- EnumSet
- HashSet
- JobStateReasons
- LinkedHashSet
- NavigableSet
- Set
- SortedSet
- TreeSet
Maps:
- AbstractMap
- ConcurrentHashMap
- ConcurrentMap
- EnumMap
- HashMap
- Hashtable
- IdentityHashMap
- LinkedHashMap
- Map
- NavigableMap
- SortedMap
- TreeMap
- WeakHashMap
OpenPojo-0.7.2
Fixed
- Issue #57 - An intermittent failure when generating a random generic Collection.