Skip to content

Repository files navigation

TinyTypes

Build Status

What

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

See my slides 'bout it.

Status

Supported libraries/frameworks:

  • Jackson
  • Jersey

this implies:

  • Dropwizard (resources only, only JSON mediaType)

Defining a TinyType

Add tinytypes dep (Maven):

<dependency>
<groupId>tech.anima</groupId>
<artifactId>tinytypes</artifactId>
<version>1.1.1</version>
</dependency>
  • Extend one of the base TinyTypes classes
  • It must not be abstract
  • Provide a constructor matching the one in the base class

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.1</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.1</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

  • Android Parchelable
  • Hibernate
  • Spring
  • Xstream

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

About

Typed wrappers on native values + framework integrations.

Resources

Stars

11 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages