package com.yammer.breakerbox.azure.model; import com.microsoft.windowsazure.services.table.client.TableServiceEntity; import com.yammer.breakerbox.azure.core.AzureTableName; import com.yammer.breakerbox.azure.core.TableId; import com.yammer.breakerbox.azure.core.TableKey; import com.yammer.breakerbox.azure.core.TableType; import com.yammer.breakerbox.store.DependencyId; import com.yammer.breakerbox.store.ServiceId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Bean to represent the Service table. * Partitioned by service, each service contains a list of service dependency keys. * As of 5-SEP-2013, these dependency keys are updated by the continuous polling of services' * Tenacity endpoint for DependencyKeys. See TenacityClient for more. */ public class ServiceEntity extends TableType implements TableKey { private static final Logger LOGGER = LoggerFactory.getLogger(ServiceEntity.class); private ServiceEntity(ServiceId serviceId, DependencyId dependencyId) { super(TableId.SERVICE); this.partitionKey = serviceId.getId(); this.rowKey = dependencyId.getId(); } public ServiceId getServiceId() { return ServiceId.from(getPartitionKey()); } public DependencyId getDependencyId() { return DependencyId.from(getRowKey()); } public static ServiceEntity build(ServiceId serviceId, DependencyId dependencyId) { return new ServiceEntity(serviceId, dependencyId); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; return true; } @Override public int hashCode() { return super.hashCode(); } @Override public Class<? extends TableServiceEntity> getEntityClass() { return ServiceEntity.class; } @Override public AzureTableName getTable() { return TableId.SERVICE; } /** * @deprecated kept for backward compatibility * For Azure */ @Deprecated public ServiceEntity() { super(TableId.SERVICE); } }