package org.springframework.roo.model;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.Validate;
/**
* Default implementation of {@link CustomData}.
*
* @author Ben Alex
* @since 1.1
*/
public class CustomDataImpl implements CustomData {
public static final CustomData NONE = new CustomDataImpl(new LinkedHashMap<Object, Object>());
private final Map<Object, Object> customData;
public CustomDataImpl(final Map<Object, Object> customData) {
Validate.notNull(customData, "Custom data required");
this.customData = Collections.unmodifiableMap(customData);
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final CustomDataImpl other = (CustomDataImpl) obj;
if (customData == null) {
if (other.customData != null) {
return false;
}
} else if (!customData.equals(other.customData)) {
return false;
}
return true;
}
public Object get(final Object key) {
return customData.get(key);
}
@Override
public int hashCode() {
final int prime = 31;
final int result = 1;
return prime * result + (customData == null ? 0 : customData.hashCode());
}
public Iterator<Object> iterator() {
return customData.keySet().iterator();
}
public Set<Object> keySet() {
return customData.keySet();
}
@Override
public String toString() {
return customData.toString();
}
}