com.github.mrenou.jacksonatic.annotation.JacksonaticJsonCreator.java Source code

Java tutorial

Introduction

Here is the source code for com.github.mrenou.jacksonatic.annotation.JacksonaticJsonCreator.java

Source

/**
 * Copyright (C) 2015 Morgan Renou (mrenou@gmail.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.github.mrenou.jacksonatic.annotation;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.lang.annotation.Annotation;

public class JacksonaticJsonCreator implements JsonCreator, JacksonaticAnnotation {

    private Mode mode = Mode.DEFAULT;

    private JacksonaticJsonCreator() {
    }

    @Override
    public Mode mode() {
        return mode;
    }

    @Override
    public Class<? extends Annotation> annotationType() {
        return JsonCreator.class;
    }

    public static Builder jsonCreator() {
        return new Builder();
    }

    public static Builder jsonCreator(Mode mode) {
        return new Builder().mode(mode);
    }

    @Override
    public String toString() {
        return "@JsonCreator{" + "mode=" + mode + '}';
    }

    public static class Builder implements AnnotationBuilder {

        private JacksonaticJsonCreator jsonCreator = new JacksonaticJsonCreator();

        public Builder mode(Mode mode) {
            jsonCreator.mode = mode;
            return this;
        }

        @Override
        public JsonCreator build() {
            return jsonCreator;
        }
    }
}