001    /*
002     * Copyright 2001-2004 The Apache Software Foundation
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.apache.commons.cache.remote;
017    
018    import java.io.Serializable;
019    
020    /**
021     * tk.
022     *
023     * @version $Id: CacheStatResponse.java 155435 2005-02-26 13:17:27Z dirkv $
024     * @author Rodney Waldhoff
025     */
026    public class CacheStatResponse implements CacheResponse {
027      protected Long[] _stats = null;
028    
029      public CacheStatResponse(Long stat) {
030        this(new Long[] { stat } );
031      }
032    
033      public CacheStatResponse(Long[] stats) {
034        _stats = stats;
035      }
036    
037      public Long[] getCacheStats() {
038        return _stats;
039      }
040    
041      public boolean equals(CacheStatResponse res) {
042        if(null == res) {
043          return false;
044        } else if(null == res.getCacheStats()) {
045          return (null == _stats);
046        } else if(null == _stats) {
047          return false;
048        } else if(res.getCacheStats().length != _stats.length) {
049          return false;
050        } else {
051          for(int i=0;i<_stats.length;i++) {
052            if(! (_stats[i] == null ? ( null == (res.getCacheStats())[i] ) : _stats[i].equals(res.getCacheStats()[i]) )) {
053              return false;
054            }
055          }
056          return true;
057        }
058      }
059    
060      public int hashCode() {
061        if(null == _stats) {
062          return this.getClass().getName().hashCode();
063        } else {
064          int hc = 0;
065          for(int i=0;i<_stats.length;i++) {
066            try {
067              hc ^= _stats[i].hashCode();
068            } catch(NullPointerException e) {
069              // ignored
070            }
071          }
072          return hc;
073        }
074      }
075    }