blob: acc4a4b72c04686c7da77e8ea0a4aead0e2de24b [file] [log] [blame]
/*
* 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.
*/
package org.apache.geode.internal.cache;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.versions.RegionVersionVector;
import org.apache.geode.internal.cache.versions.VersionTag;
/**
* This class is used for getting the contents of buckets and then optionally compare them. It may
* contain the region version vector for the bucket as well as all of the entries.
*
*
*/
public class BucketDump {
/**
* The version vector for this bucket
*/
private final RegionVersionVector rvv;
/**
* The contents of the bucket
*/
private final Map<Object, Object> values;
/**
* The contents of the bucket
*/
private final Map<Object, VersionTag> versions;
private final int bucketId;
private final InternalDistributedMember member;
public BucketDump(int bucketId, InternalDistributedMember member, RegionVersionVector rvv,
Map<Object, Object> values, Map<Object, VersionTag> versions) {
this.bucketId = bucketId;
this.member = member;
this.rvv = rvv;
this.values = values;
this.versions = versions;
}
public RegionVersionVector getRvv() {
return rvv;
}
public Map<Object, Object> getValues() {
return values;
}
public Map<Object, VersionTag> getVersions() {
return versions;
}
public Map<Object, ArrayList<Object>> getValuesWithVersions() {
Map<Object, ArrayList<Object>> result = new HashMap<Object, ArrayList<Object>>();
if (this.values == null) {
return result;
}
for (Entry<Object, Object> e : this.values.entrySet()) {
ArrayList<Object> list = new ArrayList<Object>();
list.add(e.getValue());
list.add(this.versions.get(e.getKey()));
result.put(e.getKey(), list);
}
return result;
}
public int getBucketId() {
return bucketId;
}
public InternalDistributedMember getMember() {
return member;
}
@Override
public String toString() {
// int sz;
// synchronized(this) {
// sz = this.size();
// }
return "Bucket id = " + bucketId + " from member = " + member + ": " + super.toString();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((values == null) ? 0 : values.hashCode());
result = prime * result + ((versions == null) ? 0 : versions.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
BucketDump other = (BucketDump) obj;
if (values == null) {
if (other.values != null)
return false;
} else if (!values.equals(other.values))
return false;
if (versions == null) {
if (other.versions != null)
return false;
} else if (!versions.equals(other.versions))
return false;
return true;
}
}