Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages