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: ObjectArrayResponse.java 155435 2005-02-26 13:17:27Z dirkv $
024     * @author Rodney Waldhoff
025     */
026    public class ObjectArrayResponse implements CacheResponse {
027      protected Serializable[] _sers = null;
028    
029      public ObjectArrayResponse(Serializable[] sers) {
030        _sers = sers;
031      }
032    
033      public Serializable[] getArray() {
034        return _sers;
035      }
036    
037      public Serializable getObject(int i) {
038        return _sers[i];
039      }
040    
041      public int getLength() {
042        return _sers.length;
043      }
044    
045      public boolean equals(ObjectArrayResponse res) {
046        if(null == res) {
047          return false;
048        } else if(null == res.getArray()) {
049          return (null == _sers);
050        } else if(null == _sers) {
051          return false;
052        } else if(_sers.length != res.getLength()) {
053          return false;
054        } else {
055          for(int i=0;i<_sers.length;i++) {
056            if(! (_sers[i] == null ? ( null == res.getObject(i) ) : _sers[i].equals(res.getObject(i)) ) ) {
057              return false;
058            }
059          }
060          return true;
061        }
062      }
063    
064      public int hashCode() {
065        if(null == _sers) {
066          return this.getClass().getName().hashCode();
067        } else {
068          int hc = 0;
069          for(int i=0;i<_sers.length;i++) {
070            try {
071              hc ^= _sers[i].hashCode();
072            } catch(NullPointerException e) {
073              // ignored
074            }
075          }
076          return hc;
077        }
078      }
079    }