Introduce EzyFox Binding
Updated at 16858085470001. Structure of EzyFox Binding
- EzyBindingContext: a composite object, it creates EzyMashaller and EzyUnmashaller object
- EzyMashaller: a composite object, it manages EzyWriter objects
- EzyUnmashaller: a composite object, it manages EzyReader objects
- EzyWriter: convert a POJO to EzyArray or EzyObject
- EzyReader: convert a EzyArray or EzyObject to POJO
EzyFox Binding also has many annotations and you can find out theme here.
2. Install EzyFox Binding
You can add to your dependency like this:
<dependency> <groupId>com.tvd12</groupId> <artifactId>ezyfox-binding</artifactId> <version>1.3.0</version> </dependency>
The latest version can be found in the Maven Central repository.
3. Create a EzyBindingContext
To create a EzyBindingContext you just need provide packages and EzyFox Binding will scan and create EzyReader, EzyWriter for which classes that's annotated by @EzyArrayBinding or @EzyObjectBinding annotations, example:
final EzyBindingContext bindingContext = EzyBindingContext.builder()
.scan("com.tvd12.ezyfox.example.binding")
.build();
4. Marshal an POJO
To marshal a POJO you need create a EzyMarshaller instance first, please remember you just need create only one EzyMarshaller instance. And then use marshal function to do. For which class's annotated with @EzyArrayBinding, it will be marshalled to EzyArray. For which class's annotated with @EzyObjectBinding, it will be marshalled to EzyObject, example:
package com.tvd12.ezyfox.example.binding.data;
import com.tvd12.ezyfox.binding.annotation.EzyArrayBinding;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@EzyArrayBinding
@AllArgsConstructor
@NoArgsConstructor
public class Author {
private long id;
private String name;
}
package com.tvd12.ezyfox.example.binding.data;
import com.tvd12.ezyfox.binding.annotation.EzyObjectBinding;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@EzyObjectBinding
@AllArgsConstructor
@NoArgsConstructor
public class Book {
private long id;
private String name;
private long authorId;
}
final EzyMarshaller marshaller = bindingContext.newMarshaller();
final EzyObject bookMap = marshaller
.marshal(new Book(1, "EzyFox in Action", 1));
System.out.println("bookMap: " + bookMap);
final EzyArray authorArray = marshaller
.marshal(new Author(1, "Young Monkeys"));
System.out.println("authorArray: " + authorArray);
5. Unmarshal a value
To unmarshal a value to POJO you need create a EzyUnmarshaller instance first, please remember you just need create only one EzyUnmarshaller instance. And then use unmarshal function to do. For which class's annotated with @EzyArrayBinding, it will be unmarshalled form a EzyArray. For which class's annotated with @EzyObjectBinding, it will be unmarshalled form a EzyObject, example:
final EzyUnmarshaller unmarshaller = bindingContext.newUnmarshaller();
final Book book = unmarshaller.unmarshal(bookMap, Book.class);
System.out.println("book: " + book);
final Author author = unmarshaller.unmarshal(authorArray, Author.class);
System.out.println("author: " + author);