Skip to content

Commit

Permalink
Adding Maven Build Process + Readme changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Shounaks committed Feb 14, 2024
1 parent c258ad6 commit 9077cc6
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 4 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Project is composed of multiple Maven sub-modules, each corresponding to a jar:
* [jr-retrofit2](../../tree/master/jr-retrofit2) contains `jackson-jr` - based handlers for [Retrofit 2](https://square.github.io/retrofit/) library
* Depends on `jackson-jr` and `Retrofit` API jars, and indirectly on `jackson-core`
* [jr-annotation-support](../../tree/master/jr-annotation-support) contains extension with support for a subset of core [Jackson annotations](../../../jackson-annotations)
* [jr-extension-datetime](../../tree/master/jr-extension-datetime) contains extension with support for `LocalDateTime`
* jr-all creates an "uber-jar" that contains individual modules along with all their dependencies:
* `jr-objects` classes as-is, without relocating
* `jr-stree` classes as-is, without relocating
Expand Down
28 changes: 28 additions & 0 deletions jr-extension-datetime/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Overview

This module extends the functionalities of jackson-jr adding support for LocalDateTime.

### Example

```java
import com.fasterxml.jackson.jr.extension.datetime.JacksonLocalDateTimeExtension;
import com.fasterxml.jackson.jr.ob.JSON;

import java.time.LocalDateTime;

class Application {
private static final JSON JACKSON = JSON.builder()
.register(new JacksonLocalDateTimeExtension())
.build();

public static void main(String[] args) {
// Create the class that we need to
final LocalDateTime now = LocalDateTime.now();
MyClass myObject = new MyClass(now, 'Some Other Values....');
String myObjectJsonString = JACKSON.asString(myObject);
MyClass myObjectFromJson = JACKSON.beanFrom(MyClass, myObjectJsonString);
assert myObjectFromJson.time == now;
}

}
```
57 changes: 53 additions & 4 deletions jr-extension-datetime/pom.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
<!-- that they should prefer consuming it instead. -->
<!-- do_not_remove: published-with-gradle-metadata -->
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.fasterxml.jackson.jr</groupId>
<artifactId>jackson-jr-parent</artifactId>
Expand All @@ -11,12 +14,58 @@

<artifactId>jackson-jr-extension-datetime</artifactId>
<packaging>bundle</packaging>
<description>Additional package that adds support for LocalDate time and other Time Related Fields</description>
<url>https://github.com/FasterXML/jackson-jr</url>

<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>

<properties>
<!-- Looks like we need to be bit careful on OSGi exports, to avoid
accidentally double-exporting jr-objects types
-->
<osgi.export>${project.groupId}.extension.datetime;version=${project.version}</osgi.export>

<!-- for Reproducible Builds -->
<project.build.outputTimestamp>2023-11-15T22:39:39Z</project.build.outputTimestamp>
</properties>

<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.jr</groupId>
<artifactId>jackson-jr-objects</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>
<excludes>
<exclude>**/failing/*.java</exclude>
</excludes>
</configuration>
</plugin>
<!-- 11-Mar-2019, tatu: Add basic JDK8-includable module-info, generated by Moditect -->
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
</plugin>
<!-- 05-Jul-2020, tatu: Add generation of Gradle Module Metadata -->
<plugin>
<groupId>de.jjohannes</groupId>
<artifactId>gradle-module-metadata-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
8 changes: 8 additions & 0 deletions jr-extension-datetime/src/main/resources/META-INF/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
This copy of Jackson-jr library is licensed under the
Apache (Software) License, version 2.0 ("the License").
See the License for details about distribution rights, and the
specific rights regarding derivative works.

You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0
17 changes: 17 additions & 0 deletions jr-extension-datetime/src/main/resources/META-INF/NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Jackson JSON processor

Jackson is a high-performance, Free/Open Source JSON processing library.
It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has
been in development since 2007.
It is currently developed by a community of developers.

## Licensing

Jackson components are licensed under Apache (Software) License, version 2.0,
as per accompanying LICENSE file.

## Credits

A list of contributors may be found from CREDITS file, which is included
in some artifacts (usually source distributions); but is always available
from the source code management (SCM) system project uses.

0 comments on commit 9077cc6

Please sign in to comment.