001/*-
002 * #%L
003 * Smile CDR - CDR
004 * %%
005 * Copyright (C) 2016 - 2026 Smile CDR, Inc.
006 * %%
007 * All rights reserved.
008 * #L%
009 */
010package ca.cdr.api.model.json;
011
012import ca.uhn.fhir.model.api.IModelJson;
013import com.fasterxml.jackson.annotation.JsonAutoDetect;
014import org.apache.commons.lang3.builder.EqualsBuilder;
015import org.apache.commons.lang3.builder.HashCodeBuilder;
016import org.apache.commons.lang3.builder.ToStringBuilder;
017// TODO: move this to hapi, in the same package as IModelJson
018
019@JsonAutoDetect(
020                creatorVisibility = JsonAutoDetect.Visibility.ANY,
021                fieldVisibility = JsonAutoDetect.Visibility.ANY,
022                getterVisibility = JsonAutoDetect.Visibility.ANY,
023                isGetterVisibility = JsonAutoDetect.Visibility.ANY,
024                setterVisibility = JsonAutoDetect.Visibility.ANY)
025public abstract class AbstractModelJson implements IModelJson {
026        @Override
027        public boolean equals(Object object) {
028                if (this == object) {
029                        return true;
030                }
031                if (object == null || getClass() != object.getClass()) {
032                        return false;
033                }
034                return EqualsBuilder.reflectionEquals(this, object);
035        }
036
037        @Override
038        public int hashCode() {
039                return HashCodeBuilder.reflectionHashCode(this);
040        }
041
042        @Override
043        public String toString() {
044                return ToStringBuilder.reflectionToString(this);
045        }
046}