001/*
002 * Copyright 2010-2014 Ning, Inc.
003 * Copyright 2014-2015 The Billing Project, LLC
004 *
005 * The Billing Project licenses this file to you under the Apache License, version 2.0
006 * (the "License"); you may not use this file except in compliance with the
007 * License.  You may obtain a copy of the License at:
008 *
009 *    http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
013 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
014 * License for the specific language governing permissions and limitations
015 * under the License.
016 */
017
018package com.ning.billing.recurly.model;
019
020import com.google.common.base.Objects;
021
022import javax.xml.bind.annotation.XmlElement;
023import javax.xml.bind.annotation.XmlRootElement;
024
025@XmlRootElement(name = "custom_field")
026public class CustomField extends RecurlyObject {
027
028    @XmlElement(name = "name")
029    private String name;
030
031    @XmlElement(name = "value")
032    private String value;
033
034    public String getName() {
035        return name;
036    }
037
038    public void setName(final Object name) {
039        this.name = stringOrNull(name);
040    }
041
042    public String getValue() {
043        return value;
044    }
045
046    public void setValue(final Object value) {
047        this.value = stringOrNull(value);
048    }
049
050    @Override
051    public String toString() {
052        final StringBuilder sb = new StringBuilder("CustomField{");
053        sb.append("name=").append(name);
054        sb.append(", value=").append(value);
055        sb.append('}');
056        return sb.toString();
057    }
058
059    @Override
060    public boolean equals(final Object o) {
061        if (this == o) return true;
062        if (o == null || getClass() != o.getClass()) return false;
063
064        final CustomField field = (CustomField) o;
065
066        if (name != null ? !name.equals(field.name) : field.name != null) {
067            return false;
068        }
069        if (value != null ? !value.equals(field.value) : field.value != null) {
070            return false;
071        }
072
073        return true;
074    }
075
076    @Override
077    public int hashCode() {
078        return Objects.hashCode( name, value );
079    }
080}