| package org.apache.commons.jcs.engine.control.group; |
| |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| */ |
| |
| import java.io.Serializable; |
| |
| /** |
| * Description of the Class |
| */ |
| public class GroupAttrName<T> |
| implements Serializable |
| { |
| /** Don't change */ |
| private static final long serialVersionUID = 1586079686300744198L; |
| |
| /** Description of the Field */ |
| public final GroupId groupId; |
| |
| /** the name of the attribute */ |
| public final T attrName; |
| |
| /** Cached toString value */ |
| private String toString; |
| |
| /** |
| * Constructor for the GroupAttrName object |
| * @param groupId |
| * @param attrName |
| */ |
| public GroupAttrName( GroupId groupId, T attrName ) |
| { |
| this.groupId = groupId; |
| this.attrName = attrName; |
| |
| if ( groupId == null ) |
| { |
| throw new IllegalArgumentException( "groupId must not be null." ); |
| } |
| } |
| |
| /** |
| * Tests object equality. |
| * @param obj The <code>GroupAttrName</code> instance to test. |
| * @return Whether equal. |
| */ |
| @Override |
| public boolean equals( Object obj ) |
| { |
| if ( obj == null || !( obj instanceof GroupAttrName ) ) |
| { |
| return false; |
| } |
| GroupAttrName<?> to = (GroupAttrName<?>) obj; |
| |
| if (groupId.equals( to.groupId )) |
| { |
| if (attrName == null && to.attrName == null) |
| { |
| return true; |
| } |
| else if (attrName == null || to.attrName == null) |
| { |
| return false; |
| } |
| |
| return attrName.equals( to.attrName ); |
| } |
| |
| return false; |
| } |
| |
| /** |
| * @return A hash code based on the hash code of @ #groupid} and {@link #attrName}. |
| */ |
| @Override |
| public int hashCode() |
| { |
| if (attrName == null) |
| { |
| return groupId.hashCode(); |
| } |
| |
| return groupId.hashCode() ^ attrName.hashCode(); |
| } |
| |
| /** |
| * @return the cached value. |
| */ |
| @Override |
| public String toString() |
| { |
| if ( toString == null ) |
| { |
| toString = "[GAN: groupId=" + groupId + ", attrName=" + attrName + "]"; |
| } |
| |
| return toString; |
| } |
| |
| } |