package org.cagrid.core.resource; import java.util.Collections; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.xml.namespace.QName; import javax.xml.soap.SOAPElement; import org.cagrid.wsrf.properties.Resource; import org.cagrid.wsrf.properties.ResourceProperty; import org.cagrid.wsrf.properties.ResourcePropertyMetaData; import org.cagrid.wsrf.properties.ResourcePropertySet; import org.w3c.dom.Element; public class ResourceImpl implements Resource, ResourcePropertySet { private final Map<QName, ResourceProperty<?>> _resourceProperties = new ConcurrentHashMap<QName, ResourceProperty<?>>(); private final Map<QName, ResourceProperty<?>> resourceProperties = Collections .unmodifiableMap(_resourceProperties); private final QName resourceQName; public ResourceImpl(QName resourceQName) { this.resourceQName = resourceQName; } @Override public boolean add(ResourceProperty<?> property) { QName qName = property.getMetaData().getName(); _resourceProperties.put(qName, property); return true; } @Override public boolean remove(QName qName) { ResourceProperty<?> oldProperty = _resourceProperties.remove(qName); return (oldProperty != null); } @Override public ResourceProperty<?> get(QName qName) { return _resourceProperties.get(qName); } @Override public ResourceProperty<?> create(ResourcePropertyMetaData<?> rpMetaData) { return null; } @Override public Iterator<ResourceProperty<?>> iterator() { return resourceProperties.values().iterator(); } @Override public void clear() { _resourceProperties.clear(); } @Override public int size() { return _resourceProperties.size(); } @Override public boolean isEmpty() { return _resourceProperties.isEmpty(); } @Override public boolean isOpenContent() { return false; } @Override public QName getName() { return resourceQName; } @Override public SOAPElement toSOAPElement() { return null; } @Override public Element toElement() { return null; } }