private Status readEntity(String key, Map<String, ByteIterator> result) { try { // firstly, retrieve the entity to be deleted TableOperation retrieveOp = TableOperation.retrieve(partitionKey, key, DynamicTableEntity.class); DynamicTableEntity entity = cloudTable.execute(retrieveOp).getResultAsType(); HashMap<String, EntityProperty> properties = entity.getProperties(); for (Entry<String, EntityProperty> entry: properties.entrySet()) { String fieldName = entry.getKey(); ByteIterator fieldVal = new ByteArrayByteIterator(entry.getValue().getValueAsByteArray()); result.put(fieldName, fieldVal); } return Status.OK; } catch (Exception e) { return Status.ERROR; } }
DynamicTableEntity.class), options, null); DynamicTableEntity retrievedEntity = queryResult.<DynamicTableEntity>getResultAsType(); assertNotNull("Property D", retrievedEntity.getProperties().get("D")); assertTrue(Arrays.equals(baseEntity.getD(), retrievedEntity.getProperties().get("D").getValueAsByteArray())); assertEquals(replaceResult.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); assertNotNull(replaceResult.getEtag()); DynamicTableEntity.class), options, null); retrievedEntity = queryResult.<DynamicTableEntity>getResultAsType();
private void testBatchRetrieve(TableRequestOptions options) throws StorageException { // insert entity Class1 ref = TableTestHelper.generateRandomEntity("jxscl_odata"); this.table.execute(TableOperation.insert(ref), options, null); TableBatchOperation batch = new TableBatchOperation(); batch.retrieve(ref.getPartitionKey(), ref.getRowKey(), ref.getClass()); ArrayList<TableResult> results = this.table.execute(batch, options, null); assertEquals(results.size(), 1); assertEquals(results.get(0).getHttpStatusCode(), HttpURLConnection.HTTP_OK); Class1 retrievedRef = results.get(0).getResultAsType(); assertEquals(ref.getA(), retrievedRef.getA()); assertEquals(ref.getB(), retrievedRef.getB()); assertEquals(ref.getC(), retrievedRef.getC()); assertTrue(Arrays.equals(ref.getD(), retrievedRef.getD())); this.table.execute(TableOperation.delete(ref), options, null); }
final TableRequestOptions options, final OperationContext opContext) throws JsonParseException, IOException, StorageException, InstantiationException, IllegalAccessException { final TableResult res = new TableResult(); res.setEtag(etag); timestamp = tempProp.getValueAsDate(); if (res.getEtag() == null) { etag = getETagFromTimestamp(tempProp.getValueAsString()); res.setEtag(etag); res.setProperties(properties); res.setResult(resolver.resolve(partitionKey, rowKey, timestamp, res.getProperties(), res.getEtag())); entity.setEtag(res.getEtag()); entity.setTimestamp(timestamp); entity.readEntity(res.getProperties(), opContext); res.setResult(entity);
public boolean insert(TableType entity) { try { return tableRefrence(entity.getAzureTableName()) .execute(TableOperation.insert(entity)) .getHttpStatusCode() == Response.Status.NO_CONTENT.getStatusCode(); } catch (StorageException e) { LOG.warn("Error performing operation on Storage service", e); } throw new IllegalStateException("Error adding data in table " + entity.getAzureTableName()); }
assertEquals(mergeResult.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); assertNotNull(mergeResult.getEtag()); DynamicTableEntity mergedEntity = (DynamicTableEntity) res2.getResult();
private void insertAndDeleteBatchWithX(int x, TableRequestOptions options) throws StorageException { TableBatchOperation batch = new TableBatchOperation(); for (int m = 0; m < x; m++) { addInsertBatch(batch); } TableBatchOperation delBatch = new TableBatchOperation(); ArrayList<TableResult> results = this.table.execute(batch, options, null); for (TableResult r : results) { assertEquals(r.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); delBatch.delete((Class1) r.getResult()); } ArrayList<TableResult> delResults = this.table.execute(delBatch, options, null); for (TableResult r : delResults) { assertEquals(r.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); } }
resObj.setEtag(etagFromHeader); resObj.updateResultObject(this.getEntity()); resObj = new TableResult(httpStatusCode); resObj.setResult(this.getEntity()); resObj.setEtag(etagFromHeader); resObj.updateResultObject(this.getEntity());
/** * Gets the result returned by the table operation as an instance of the specified type. * * @return * An <code>T</code> reference which represents the result returned by the table operation. */ @SuppressWarnings("unchecked") public <T> T getResultAsType() { return (T) this.getResult(); }
@Override public TableResult postProcessResponse(HttpURLConnection connection, QueryTableOperation operation, CloudTableClient client, OperationContext context, TableResult storageObject) throws Exception { if (this.getResult().getStatusCode() == HttpURLConnection.HTTP_NOT_FOUND) { // Empty result return new TableResult(this.getResult().getStatusCode()); } // Parse response for updates InputStream inStream = connection.getInputStream(); TableResult res = parseResponse(inStream, this.getResult().getStatusCode(), this.getConnection() .getHeaderField(TableConstants.HeaderConstants.ETAG), context, options); connection.getInputStream().close(); return res; }
/** * Reserved for internal use. Sets the result to associate with the table operation as a {@link TableEntity}. * * @param ent * An instance of an object implementing {@link TableEntity} to associate with the table operation. * @throws UnsupportedEncodingException */ protected void updateResultObject(final TableEntity ent) throws UnsupportedEncodingException { this.result = ent; ent.setEtag(this.etag); if (this.etag != null) { ent.setTimestamp(parseETagForTimestamp(this.etag)); } }
TableResult res = TableDeserializer.parseSingleOpResponse(inStream, options, httpStatusCode, this.getClazzType(), this.getResolver(), opContext); res.setEtag(etagFromHeader); return res;
assertEquals(insertResult.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); assertNotNull(insertResult.getEtag()); DynamicTableEntity.class), options, null); DynamicTableEntity retrievedEntity = queryResult.getResultAsType();
assertEquals(insertResult.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); baseEntity.getPartitionKey(), baseEntity.getRowKey(), DynamicTableEntity.class)); DynamicTableEntity retrievedEntity = queryResult.<DynamicTableEntity> getResultAsType();
final TableRequestOptions options, final OperationContext opContext) throws JsonParseException, IOException, StorageException, InstantiationException, IllegalAccessException { final TableResult res = new TableResult(); res.setEtag(etag); timestamp = tempProp.getValueAsDate(); if (res.getEtag() == null) { etag = getETagFromTimestamp(tempProp.getValueAsString()); res.setEtag(etag); res.setProperties(properties); res.setResult(resolver.resolve(partitionKey, rowKey, timestamp, properties, res.getEtag())); entity.setEtag(res.getEtag()); res.setResult(entity);
public boolean remove(TableType entity) { try { return tableRefrence(entity.getAzureTableName()) .execute(TableOperation.delete(entity)) .getHttpStatusCode() == Response.Status.NO_CONTENT.getStatusCode(); } catch (StorageException e) { LOG.warn("Error updating row in table: {}", entity.getAzureTableName(), e); } throw new IllegalStateException("Error updating data in table: " + entity.getAzureTableName()); } }
private void upsertAndDeleteBatchWithX(int x, TableRequestOptions options) throws StorageException { TableBatchOperation batch = new TableBatchOperation(); for (int m = 0; m < x; m++) { addInsertOrMergeToBatch(TableTestHelper.generateRandomEntity("jxscl_odata"), batch); } TableBatchOperation delBatch = new TableBatchOperation(); ArrayList<TableResult> results = this.table.execute(batch, options, null); for (TableResult r : results) { assertEquals(r.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); delBatch.delete((Class2) r.getResult()); } ArrayList<TableResult> delResults = this.table.execute(delBatch, options, null); for (TableResult r : delResults) { assertEquals(r.getHttpStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); } }
resObj.setEtag(etagFromHeader); resObj.updateResultObject(this.getEntity()); resObj = new TableResult(httpStatusCode); resObj.setResult(this.getEntity()); resObj.setEtag(etagFromHeader); resObj.updateResultObject(this.getEntity());
/** * Gets the result returned by the table operation as an instance of the specified type. * * @return * An <code>T</code> reference which represents the result returned by the table operation. */ @SuppressWarnings("unchecked") public <T> T getResultAsType() { return (T) this.getResult(); }
@Override public TableResult postProcessResponse(HttpURLConnection connection, QueryTableOperation operation, CloudTableClient client, OperationContext context, TableResult storageObject) throws Exception { if (this.getResult().getStatusCode() == HttpURLConnection.HTTP_NOT_FOUND) { // Empty result return new TableResult(this.getResult().getStatusCode()); } // Parse response for updates InputStream inStream = connection.getInputStream(); TableResult res = parseResponse(inStream, this.getResult().getStatusCode(), this.getConnection() .getHeaderField(TableConstants.HeaderConstants.ETAG), context, options); return res; }