package com.ibm.sbt.opensocial.domino.config; import java.util.Map; import org.apache.shindig.auth.BlobCrypterSecurityTokenCodec; import org.apache.shindig.auth.SecurityTokenCodec; import org.apache.shindig.common.crypto.Crypto; import org.apache.shindig.common.util.CharsetUtil; import org.apache.shindig.config.ContainerConfig; import com.google.caja.util.Maps; import com.google.common.base.Objects; /** * A default implementation of OpenSocialContainerConfig. This implementation contains properties and * values that almost every container will need to override. Almost all container should extend this * class and override the {@link #getProperties()} methods if they need to override * additional container properties. * */ public class DefaultContainerConfig implements OpenSocialContainerConfig { private static final String DOMINO_CONTAINER_NAME = "domino"; protected Map<String, Object> props; public DefaultContainerConfig() { this.props = Maps.newHashMap(); props.put(BlobCrypterSecurityTokenCodec.SECURITY_TOKEN_KEY, CharsetUtil.newUtf8String(Crypto.getRandomBytes(20))); props.put(ContainerConfig.PARENT_KEY, DOMINO_CONTAINER_NAME); } @Override public Map<String, Object> getProperties() { return props; } @Override public boolean equals(Object o) { boolean equal = false; if(o instanceof OpenSocialContainerConfig) { OpenSocialContainerConfig test = (OpenSocialContainerConfig)o; equal = this.getProperties().keySet().size() == test.getProperties().size(); //Do not verify the security token keys match, there is no guarantee they will equal &= this.getProperties().get(ContainerConfig.PARENT_KEY).equals(test.getProperties().get(ContainerConfig.PARENT_KEY)); } return equal; } @Override public int hashCode() { return Objects.hashCode(props); } }