package org.constretto.model;
import org.apache.commons.lang.StringUtils;
import java.util.*;
/**
* @author <a href="mailto:kaare.nilsen@arktekk.no">Kaare Nilsen</a>
*/
public class CArray extends CValue {
private final List<CValue> data;
public CArray(final List<CValue> data) {
if(data == null) {
throw new NullPointerException("The \"data\" argument can not be null");
}
this.data = Arrays.asList(data.toArray(new CValue[]{}));
}
public List<CValue> data() {
return data == null ? Collections.<CValue>emptyList() : Collections.unmodifiableList(data);
}
@Override
public Set<String> referencedKeys() {
Set<String> referencedKeys = new HashSet<String>();
for (CValue value : data) {
referencedKeys.addAll(value.referencedKeys());
}
return referencedKeys;
}
@Override
public void replace(String key, String resolvedValue) {
for (CValue value : data) {
value.replace(key, resolvedValue);
}
}
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
final CArray cArray = (CArray) o;
if (data != null ? !data.equals(cArray.data) : cArray.data != null) return false;
return true;
}
@Override
public int hashCode() {
return data != null ? data.hashCode() : 0;
}
@Override
public String toString() {
return "[" + StringUtils.join(data, ',') + "]";
}
}