/* * Copyright 2013 Nicolas Morel * * 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.nmorel.gwtjackson.rebind.bean; import java.util.List; import java.util.Map; import java.util.Set; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.github.nmorel.gwtjackson.rebind.property.PropertyInfo; import com.google.gwt.core.ext.typeinfo.JAbstractMethod; import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.JParameter; import com.google.gwt.thirdparty.guava.common.base.Optional; import com.google.gwt.thirdparty.guava.common.collect.ImmutableList; import com.google.gwt.thirdparty.guava.common.collect.ImmutableMap; import com.google.gwt.thirdparty.guava.common.collect.ImmutableSet; /** * <p>BeanInfo class.</p> * * @author Nicolas Morel * @version $Id: $ */ public final class BeanInfo { private final JClassType type; private final ImmutableList<JClassType> parameterizedTypes; /*#### Instantiation properties ####*/ private final Optional<JClassType> builder; private final Optional<JAbstractMethod> creatorMethod; private final ImmutableMap<String, JParameter> creatorParameters; private final boolean creatorDefaultConstructor; private final boolean creatorDelegation; private final Optional<BeanTypeInfo> typeInfo; private final Optional<PropertyInfo> valuePropertyInfo; private final Optional<PropertyInfo> anyGetterPropertyInfo; private final Optional<PropertyInfo> anySetterPropertyInfo; /*#### Visibility properties ####*/ private final ImmutableSet<String> ignoredFields; private final JsonAutoDetect.Visibility fieldVisibility; private final JsonAutoDetect.Visibility getterVisibility; private final JsonAutoDetect.Visibility isGetterVisibility; private final JsonAutoDetect.Visibility setterVisibility; private final JsonAutoDetect.Visibility creatorVisibility; private final boolean ignoreUnknown; /*#### Ordering properties ####*/ private final ImmutableList<String> propertyOrderList; private final boolean propertyOrderAlphabetic; /*#### Identity info ####*/ private final Optional<BeanIdentityInfo> identityInfo; /*#### Inclusion info ####*/ private final Optional<Include> include; BeanInfo( JClassType type, List<JClassType> parameterizedTypes, Optional<JClassType> builder, Optional<JAbstractMethod> creatorMethod, Map<String, JParameter> creatorParameters, boolean creatorDefaultConstructor, boolean creatorDelegation, Optional<BeanTypeInfo> typeInfo, Optional<PropertyInfo> valuePropertyInfo, Optional<PropertyInfo> anyGetterPropertyInfo, Optional<PropertyInfo> anySetterPropertyInfo, Set<String> ignoredFields, Visibility fieldVisibility, Visibility getterVisibility, Visibility isGetterVisibility, Visibility setterVisibility, Visibility creatorVisibility, boolean ignoreUnknown, List<String> propertyOrderList, boolean propertyOrderAlphabetic, Optional<BeanIdentityInfo> identityInfo, Optional<Include> include ) { this.type = type; this.parameterizedTypes = ImmutableList.copyOf( parameterizedTypes ); this.builder = builder; this.creatorMethod = creatorMethod; this.creatorParameters = ImmutableMap.copyOf( creatorParameters ); this.creatorDefaultConstructor = creatorDefaultConstructor; this.creatorDelegation = creatorDelegation; this.typeInfo = typeInfo; this.valuePropertyInfo = valuePropertyInfo; this.anyGetterPropertyInfo = anyGetterPropertyInfo; this.anySetterPropertyInfo = anySetterPropertyInfo; this.ignoredFields = ImmutableSet.copyOf( ignoredFields ); this.fieldVisibility = fieldVisibility; this.getterVisibility = getterVisibility; this.isGetterVisibility = isGetterVisibility; this.setterVisibility = setterVisibility; this.creatorVisibility = creatorVisibility; this.ignoreUnknown = ignoreUnknown; this.propertyOrderList = ImmutableList.copyOf( propertyOrderList ); this.propertyOrderAlphabetic = propertyOrderAlphabetic; this.identityInfo = identityInfo; this.include = include; } /** * <p>Getter for the field <code>type</code>.</p> * * @return a {@link com.google.gwt.core.ext.typeinfo.JClassType} object. */ public JClassType getType() { return type; } /** * <p>Getter for the field <code>parameterizedTypes</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.collect.ImmutableList} object. */ public ImmutableList<JClassType> getParameterizedTypes() { return parameterizedTypes; } /** * <p>Getter for the field <code>builder</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<JClassType> getBuilder() { return builder; } /** * <p>Getter for the field <code>creatorMethod</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<JAbstractMethod> getCreatorMethod() { return creatorMethod; } /** * <p>Getter for the field <code>creatorParameters</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.collect.ImmutableMap} object. */ public ImmutableMap<String, JParameter> getCreatorParameters() { return creatorParameters; } /** * <p>isCreatorDefaultConstructor</p> * * @return a boolean. */ public boolean isCreatorDefaultConstructor() { return creatorDefaultConstructor; } /** * <p>isCreatorDelegation</p> * * @return a boolean. */ public boolean isCreatorDelegation() { return creatorDelegation; } /** * <p>Getter for the field <code>typeInfo</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<BeanTypeInfo> getTypeInfo() { return typeInfo; } /** * <p>Getter for the field <code>valuePropertyInfo</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<PropertyInfo> getValuePropertyInfo() { return valuePropertyInfo; } /** * <p>Getter for the field <code>anyGetterPropertyInfo</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<PropertyInfo> getAnyGetterPropertyInfo() { return anyGetterPropertyInfo; } /** * <p>Getter for the field <code>anySetterPropertyInfo</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<PropertyInfo> getAnySetterPropertyInfo() { return anySetterPropertyInfo; } /** * <p>Getter for the field <code>ignoredFields</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.collect.ImmutableSet} object. */ public ImmutableSet<String> getIgnoredFields() { return ignoredFields; } /** * <p>Getter for the field <code>fieldVisibility</code>.</p> * * @return a {@link com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility} object. */ public Visibility getFieldVisibility() { return fieldVisibility; } /** * <p>Getter for the field <code>getterVisibility</code>.</p> * * @return a {@link com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility} object. */ public Visibility getGetterVisibility() { return getterVisibility; } /** * <p>Getter for the field <code>isGetterVisibility</code>.</p> * * @return a {@link com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility} object. */ public Visibility getIsGetterVisibility() { return isGetterVisibility; } /** * <p>Getter for the field <code>setterVisibility</code>.</p> * * @return a {@link com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility} object. */ public Visibility getSetterVisibility() { return setterVisibility; } /** * <p>Getter for the field <code>creatorVisibility</code>.</p> * * @return a {@link com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility} object. */ public Visibility getCreatorVisibility() { return creatorVisibility; } /** * <p>isIgnoreUnknown</p> * * @return a boolean. */ public boolean isIgnoreUnknown() { return ignoreUnknown; } /** * <p>Getter for the field <code>propertyOrderList</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.collect.ImmutableList} object. */ public ImmutableList<String> getPropertyOrderList() { return propertyOrderList; } /** * <p>isPropertyOrderAlphabetic</p> * * @return a boolean. */ public boolean isPropertyOrderAlphabetic() { return propertyOrderAlphabetic; } /** * <p>Getter for the field <code>identityInfo</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<BeanIdentityInfo> getIdentityInfo() { return identityInfo; } /** * <p>Getter for the field <code>include</code>.</p> * * @return a {@link com.google.gwt.thirdparty.guava.common.base.Optional} object. */ public Optional<Include> getInclude() { return include; } }