package fr.adrienbrault.idea.symfony2plugin.dic.container;
import com.google.gson.annotations.SerializedName;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*
* We dont want to serialize default values so eg use Boolean and nullable values for properties
*/
public class SerializableService implements ServiceSerializable {
@NotNull
private final String id;
@SerializedName("class")
@Nullable
private String className;
@SerializedName("public")
@Nullable
private Boolean isPublic;
@SerializedName("lazy")
@Nullable
private Boolean isLazy;
@SerializedName("abstract")
@Nullable
private Boolean isAbstract;
@SerializedName("autowire")
@Nullable
private Boolean isAutowire;
@SerializedName("deprecated")
@Nullable
private Boolean isDeprecated;
@Nullable
private String alias;
@Nullable
private String decorates;
@Nullable
@SerializedName("decoration_inner_name")
private String decorationInnerName;
@Nullable
private String parent;
public SerializableService(@NotNull String id) {
this.id = id;
}
@Override
@NotNull
public String getId() {
return id;
}
@Override
@Nullable
public String getClassName() {
return className;
}
public SerializableService setClassName(@Nullable String className) {
this.className = className;
return this;
}
public SerializableService setIsPublic(@Nullable Boolean isPublic) {
this.isPublic = isPublic;
return this;
}
@Override
public boolean isLazy() {
return isLazy != null ? isLazy : false;
}
public SerializableService setIsLazy(@Nullable Boolean isLazy) {
this.isLazy = isLazy;
return this;
}
@Override
public boolean isAbstract() {
return isAbstract != null ? isAbstract : false;
}
public SerializableService setIsAbstract(@Nullable Boolean isAbstract) {
this.isAbstract = isAbstract;
return this;
}
@Override
public boolean isAutowire() {
return isAutowire != null ? isAutowire : false;
}
public SerializableService setIsAutowire(@Nullable Boolean isAutowire) {
this.isAutowire = isAutowire;
return this;
}
@Override
public boolean isDeprecated() {
return isDeprecated != null ? isDeprecated : false;
}
public SerializableService setIsDeprecated(@Nullable Boolean isDeprecated) {
this.isDeprecated = isDeprecated;
return this;
}
@Override
public boolean isPublic() {
return isPublic != null ? isPublic : true;
}
@Nullable
@Override
public String getAlias() {
return alias;
}
public SerializableService setAlias(@Nullable String alias) {
this.alias = alias;
return this;
}
@Override
@Nullable
public String getParent() {
return parent;
}
public SerializableService setParent(@Nullable String parent) {
this.parent = parent;
return this;
}
@Override
@Nullable
public String getDecorates() {
return decorates;
}
public SerializableService setDecorates(@Nullable String decorates) {
this.decorates = decorates;
return this;
}
@Override
@Nullable
public String getDecorationInnerName() {
return decorationInnerName;
}
public SerializableService setDecorationInnerName(@Nullable String decorationInnerName) {
this.decorationInnerName = decorationInnerName;
return this;
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(this.id)
.append(this.className)
.append(this.isPublic)
.append(this.isDeprecated)
.append(this.isLazy)
.append(this.isAbstract)
.append(this.isAutowire)
.append(this.isDeprecated)
.append(this.alias)
.append(this.decorates)
.append(this.decorationInnerName)
.append(this.parent)
.toHashCode()
;
}
@Override
public boolean equals(Object obj) {
return obj instanceof SerializableService &&
Objects.equals(((SerializableService) obj).id, this.id) &&
Objects.equals(((SerializableService) obj).className, this.className) &&
Objects.equals(((SerializableService) obj).isPublic, this.isPublic) &&
Objects.equals(((SerializableService) obj).isDeprecated, this.isDeprecated) &&
Objects.equals(((SerializableService) obj).isLazy, this.isLazy) &&
Objects.equals(((SerializableService) obj).isAbstract, this.isAbstract) &&
Objects.equals(((SerializableService) obj).isAutowire, this.isAutowire) &&
Objects.equals(((SerializableService) obj).isDeprecated, this.isDeprecated) &&
Objects.equals(((SerializableService) obj).alias, this.alias) &&
Objects.equals(((SerializableService) obj).decorates, this.decorates) &&
Objects.equals(((SerializableService) obj).decorationInnerName, this.decorationInnerName) &&
Objects.equals(((SerializableService) obj).parent, this.parent)
;
}
}