use of com.amazonaws.services.dynamodbv2.document.Table in project cas by apereo.
the class DynamoDbServiceRegistryFacilitator method createServicesTable.
/**
* Create tables.
*
* @param deleteTables the delete tables
*/
@SneakyThrows
public void createServicesTable(final boolean deleteTables) {
LOGGER.debug("Attempting to create DynamoDb services table");
final CreateTableRequest request = new CreateTableRequest().withAttributeDefinitions(new AttributeDefinition(ColumnNames.ID.getColumnName(), ScalarAttributeType.S)).withKeySchema(new KeySchemaElement(ColumnNames.ID.getColumnName(), KeyType.HASH)).withProvisionedThroughput(new ProvisionedThroughput(dynamoDbProperties.getReadCapacity(), dynamoDbProperties.getWriteCapacity())).withTableName(dynamoDbProperties.getTableName());
if (deleteTables) {
final DeleteTableRequest delete = new DeleteTableRequest(request.getTableName());
LOGGER.debug("Sending delete request [{}] to remove table if necessary", delete);
TableUtils.deleteTableIfExists(amazonDynamoDBClient, delete);
}
LOGGER.debug("Sending delete request [{}] to create table", request);
TableUtils.createTableIfNotExists(amazonDynamoDBClient, request);
LOGGER.debug("Waiting until table [{}] becomes active...", request.getTableName());
TableUtils.waitUntilActive(amazonDynamoDBClient, request.getTableName());
final DescribeTableRequest describeTableRequest = new DescribeTableRequest().withTableName(request.getTableName());
LOGGER.debug("Sending request [{}] to obtain table description...", describeTableRequest);
final TableDescription tableDescription = amazonDynamoDBClient.describeTable(describeTableRequest).getTable();
LOGGER.debug("Located newly created table with description: [{}]", tableDescription);
}
use of com.amazonaws.services.dynamodbv2.document.Table in project cas by apereo.
the class DynamoDbServiceRegistryFacilitator method count.
/**
* Count long.
*
* @return the long
*/
public long count() {
final ScanRequest scan = new ScanRequest(dynamoDbProperties.getTableName());
LOGGER.debug("Scanning table with request [{}] to count items", scan);
final ScanResult result = this.amazonDynamoDBClient.scan(scan);
LOGGER.debug("Scanned table with result [{}]", scan);
return result.getCount();
}
use of com.amazonaws.services.dynamodbv2.document.Table in project cas by apereo.
the class DynamoDbServiceRegistryFacilitator method getAll.
/**
* Gets all.
*
* @return the all
*/
public List<RegisteredService> getAll() {
final List<RegisteredService> services = new ArrayList<>();
final ScanRequest scan = new ScanRequest(dynamoDbProperties.getTableName());
LOGGER.debug("Scanning table with request [{}]", scan);
final ScanResult result = this.amazonDynamoDBClient.scan(scan);
LOGGER.debug("Scanned table with result [{}]", scan);
services.addAll(result.getItems().stream().map(this::deserializeServiceFromBinaryBlob).sorted((o1, o2) -> Integer.valueOf(o1.getEvaluationOrder()).compareTo(o2.getEvaluationOrder())).collect(Collectors.toList()));
return services;
}
use of com.amazonaws.services.dynamodbv2.document.Table in project cas by apereo.
the class DynamoDbTicketRegistryFacilitator method buildTableAttributeValuesMapFromTicket.
/**
* Build table attribute values from ticket map.
*
* @param ticket the ticket
* @param encTicket the encoded ticket
* @return the map
*/
public Map<String, AttributeValue> buildTableAttributeValuesMapFromTicket(final Ticket ticket, final Ticket encTicket) {
final Map<String, AttributeValue> values = new HashMap<>();
values.put(ColumnNames.ID.getColumnName(), new AttributeValue(encTicket.getId()));
values.put(ColumnNames.PREFIX.getColumnName(), new AttributeValue(ticket.getPrefix()));
values.put(ColumnNames.CREATION_TIME.getColumnName(), new AttributeValue(ticket.getCreationTime().toString()));
values.put(ColumnNames.COUNT_OF_USES.getColumnName(), new AttributeValue().withN(Integer.toString(ticket.getCountOfUses())));
values.put(ColumnNames.TIME_TO_LIVE.getColumnName(), new AttributeValue().withN(Long.toString(ticket.getExpirationPolicy().getTimeToLive())));
values.put(ColumnNames.TIME_TO_IDLE.getColumnName(), new AttributeValue().withN(Long.toString(ticket.getExpirationPolicy().getTimeToIdle())));
values.put(ColumnNames.ENCODED.getColumnName(), new AttributeValue().withB(ByteBuffer.wrap(SerializationUtils.serialize(encTicket))));
LOGGER.debug("Created attribute values [{}] based on provided ticket [{}]", values, encTicket.getId());
return values;
}
use of com.amazonaws.services.dynamodbv2.document.Table in project cas by apereo.
the class DynamoDbTicketRegistryFacilitator method deleteAll.
/**
* Delete all.
*
* @return the int
*/
public int deleteAll() {
final AtomicInteger count = new AtomicInteger();
final Collection<TicketDefinition> metadata = this.ticketCatalog.findAll();
metadata.forEach(r -> {
final ScanRequest scan = new ScanRequest(r.getProperties().getStorageName());
LOGGER.debug("Submitting scan request [{}] to table [{}]", scan, r.getProperties().getStorageName());
count.addAndGet(this.amazonDynamoDBClient.scan(scan).getCount());
});
createTicketTables(true);
return count.get();
}
Aggregations