NWTS Java Code

Project site for net.nicholaswilliams.java projects
Last modified August 28, 2013 03:29 UTC


Bean Validation Constraints
The Java Bean Validation API (JSR-303 version 1.0, JSR-349 version 1.1) contains many useful built-in constraints, such as @NotNull and @Size. However, these built-in constraints also fail to meet certain basic needs, such as @NotBlank, @NotEmpty, email constraints, expression constraints, multi-property constraints, and @NotNull versions of all of those constraints. This project contains many more constraints and also provides support for the Java 8 Date & Time API (JSR-310), when available.

JPA 2.1 Converters
The latest version of the Java Persistence API, JPA 2.1 specified in JSR-338, provides a standard mechanism for converting non-standard entity attribute data types to basic datatypes that all JPA providers must support. Using these attribute converters is preferred over using provider-specific mechanisms, which hinders provider portability. This project contains some basic attribute converters for types such as InetAddress and the Java 8 Date & Time API (JSR-310), when available.

JPA Full-Text Search
The Java Persistence API provides no mechanisms designed specifically for searching data. Though the criteria API and the query and native query APIs can be useful for finding data in a relational database, the steps necessary to perform full-text searches and return results with hit scores are extensive, non-obvious, and repetitive. Hibernate Search is a useful project for searching against Apache Lucineā„¢ indexes, but not native full-text indexes. This project defines a simple but powerful API and helper annotations to make searching through native full-text indexes easy.

License Manager
The License Manager is a Java-based license management library for use by any Java project to maintain intellectual property security. It might just be a perfect world if all code were Open Source, but in the real world some projects are proprietary and licensed. This secure Java library helps you maintain, generate, store, secure and authenticate licenses in any Java-based application, whether desktop-, applet- or web-based.

Raw Sockets
Sometimes, we just need to communicate using sockets and manipulate or access packet headers of outgoing or incoming packets. One example of this is the common command-line traceroute program, which cannot operate without raw socket access. This Open Source JNI C++/Java extension for Windows, Linux and Mac OS X meets this need.

TeamCity Plugins
This umbrella project contains plugins for the TeamCity Continuous Integration Server. The Shared Build Number plugin permits you to create standalone build numbers that can be shared between multiple build configurations and even projects. Using the Linux System Properties plugin, you can identify the distribution/flavor and version that your agents are running on so that you can filter them for platform-sensitive builds.