TinyTypes

Typed wrappers on native values + framework integrations.

Download as .zip Download as .tar.gz View on GitHub

TinyTypes

Build Status

What

Type safe wrappers on native types && support for commonly used frameworks.

See my slides 'bout it.

Status

Supported libraries/frameworks:

this implies:

Defining a TinyType

Add tinytypes dep (Maven):

<dependency>
    <groupId>tech.anima</groupId>
    <artifactId>tinytypes</artifactId>
    <version>1.1.0</version>
</dependency>

Example:

public class SomeKindOfId extends StringTinyType {
    public SomeKindOfId(String value) {
        super(value);
        // ... additional validation or restrictions here
    }
}

Use with Jackson

Add jackson dep (Maven):

<dependency>
    <groupId>tech.anima</groupId>
    <artifactId>jackson-datatype-tinytypes</artifactId>
    <version>1.1.0</version>
</dependency>

Register module on ObjectMapper:

new ObjectMapper().registerModule(new TinyTypesModule())

Profit!

objectMapper.writeValueAsString(new SomeKindOfId("ag7weq")); // "ag7weq"

objectMapper.readValue("ag7weq", SomeKindOfId.class); // SomeKindOfId#ag7weq

Use with Jersey

Add jersey dep (Maven):

<dependency>
    <groupId>tech.anima</groupId>
    <artifactId>tinytypes-jersey</artifactId>
    <version>1.1.0</version>
</dependency>

Register module on ObjectMapper:

new ObjectMapper().registerModule(new TinyTypesModule())

Register the ParamProvider:

.addProvider(TinyTypesParamProvider.class)

Register the HeaderDelegates:

JerseyResponseSupport.registerTinyTypes(
        Samples.Str.class,
        ... (other TTs here)
);

Profit!

(See tinytypes-examples test cases for more on how to use them with Jersey)

Planned for the future

I won't prioritize until I have a real necessity to use, PRs are welcome.