List of usage examples for org.apache.commons.lang3.exception ContextedRuntimeException setContextValue
@Override public ContextedRuntimeException setContextValue(final String label, final Object value)
From source file:ServerMultipart.java
private static void multipartUpload(ServerSideMultipartManager multipart) { String uploadObject = "/" + mantaUsername + "/stor/multipart"; // We catch network errors and handle them here try {//from ww w . j ava 2s.co m ServerSideMultipartUpload upload = multipart.initiateUpload(uploadObject); MantaMultipartUploadPart part1 = multipart.uploadPart(upload, 1, RandomUtils.nextBytes(5242880)); MantaMultipartUploadPart part2 = multipart.uploadPart(upload, 2, RandomUtils.nextBytes(1000000)); // Complete the process by instructing Manta to assemble the final object from its parts MantaMultipartUploadTuple[] parts = new MantaMultipartUploadTuple[] { part1, part2 }; Stream<MantaMultipartUploadTuple> partsStream = Arrays.stream(parts); multipart.complete(upload, partsStream); System.out.println(uploadObject + " is now assembled!"); } catch (IOException e) { // This catch block is for general network failures // For example, ServerSideMultipartUpload.initiateUpload can throw an IOException ContextedRuntimeException exception = new ContextedRuntimeException( "A network error occurred when doing a multipart upload to Manta."); exception.setContextValue("path", uploadObject); throw exception; } }
From source file:ClientEncryptionServerMultipart.java
private static void multipartUpload(EncryptedServerSideMultipartManager multipart) { String uploadObject = "/" + mantaUsername + "/stor/multipart"; // We catch network errors and handle them here try {/*from ww w.j a va2 s.c o m*/ MantaMetadata metadata = new MantaMetadata(); metadata.put("e-secretkey", "My Secret Value"); EncryptedMultipartUpload<ServerSideMultipartUpload> upload = multipart.initiateUpload(uploadObject, metadata); MantaMultipartUploadPart part1 = multipart.uploadPart(upload, 1, RandomUtils.nextBytes(5242880)); MantaMultipartUploadPart part2 = multipart.uploadPart(upload, 2, RandomUtils.nextBytes(1000000)); // Complete the process by instructing Manta to assemble the final object from its parts MantaMultipartUploadTuple[] parts = new MantaMultipartUploadTuple[] { part1, part2 }; Stream<MantaMultipartUploadTuple> partsStream = Arrays.stream(parts); multipart.complete(upload, partsStream); System.out.println(uploadObject + " is now assembled!"); } catch (IOException e) { // This catch block is for general network failures // For example, ServerSideMultipartUpload.initiateUpload can throw an IOException ContextedRuntimeException exception = new ContextedRuntimeException( "A network error occurred when doing a multipart upload to Manta."); exception.setContextValue("path", uploadObject); throw exception; } }
From source file:JobsBasedMultipart.java
private static void multipartUpload(MantaClient mantaClient) { // instantiated with a reference to the class the actually connects to Manta JobsMultipartManager multipart = new JobsMultipartManager(mantaClient); String uploadObject = "/username/stor/test/file"; /* I'm using File objects below, but I could be using byte[] arrays, * Strings, or InputStreams as well. */ File part1file = new File("part-1.data"); File part2file = new File("part-2.data"); File part3file = new File("part-3.data"); // We can set any metadata for the final object MantaMetadata metadata = new MantaMetadata(); metadata.put("m-test-metadata", "any value"); // We can set any header for the final object MantaHttpHeaders headers = new MantaHttpHeaders(); headers.setContentType("text/plain"); // We catch network errors and handle them here try {/*from ww w.j a v a 2s . co m*/ // We get a response object JobsMultipartUpload upload = multipart.initiateUpload(uploadObject); // It contains a UUID transaction id UUID id = upload.getId(); // It also contains the path of the final object String uploadPath = upload.getPath(); // Everywhere below that we specified "upload" we could also just // use the upload transaction id List<MantaMultipartUploadPart> parts = new ArrayList<>(); // We can add the parts in any order MantaMultipartUploadPart part2 = multipart.uploadPart(upload, 2, part2file); // Each put of a part is a synchronous operation MantaMultipartUploadPart part1 = multipart.uploadPart(upload, 1, part1file); // Although in a later version we could make an async option MantaMultipartUploadPart part3 = multipart.uploadPart(upload, 3, part3file); parts.add(part1); parts.add(part3); parts.add(part2); // If we want to give up now, we could always abort // multipart.abort(upload); // We've uploaded all of the parts, now lets join them multipart.complete(upload, parts.stream()); // If we want to pause execution until it is committed int timesToPoll = 10; multipart.waitForCompletion(upload, Duration.ofSeconds(5), timesToPoll, uuid -> { throw new RuntimeException("Multipart completion timed out"); }); } catch (MantaClientHttpResponseException e) { // This catch block is for when we actually have a response code from Manta // We can handle specific HTTP responses here if (e.getStatusCode() == 503) { System.out.println("Manta is unavailable. Please try again"); return; } // We could rethrow as a more detailed exception as below throw new RuntimeException(e); } catch (IOException e) { // This catch block is for general network failures // Note: MantaClientHttpResponseException inherits from IOException // so if it is not explicitly caught, it would go to this block ContextedRuntimeException exception = new ContextedRuntimeException( "A network error occurred when doing a multipart upload to" + "Manta. See context for details."); // We should all of the diagnostic context that we need exception.setContextValue("parts", "[part-1.data, part-2.data, part-3.data]"); // We rethrow the exception with additional detail throw exception; } }
From source file:net.certifi.audittablegen.ChangeSourceFactory.java
List<DBChangeUnit> getDBChangeList(TableDef baseTableDef) { List<DBChangeUnit> tableChangeUnits = new ArrayList(); List<DBChangeUnit> renameColumnChangeUnits = new ArrayList(); List<DBChangeUnit> alterTableChangeUnits = new ArrayList(); DBChangeUnit workUnit;/* w w w . j a v a2s .co m*/ String baseTableName = baseTableDef.getName(); String newColumnName; if (baseTableDef == null) { logger.error("Invalid input. null TableDef"); return tableChangeUnits; } if (baseTableDef.getColumns().isEmpty()) { ContextedRuntimeException e = new ContextedRuntimeException(); e.setContextValue("tableName", baseTableDef.getName()); logger.error("Invalid Input. TableDef has no columns.", e); return tableChangeUnits; } String auditTableName = tablePrefix + baseTableName + tablePostfix; String auditActionColumn = columnPrefix + "action" + columnPostfix; String auditTimeStampColumn = columnPrefix + "ts" + columnPostfix; String auditUserColumn = columnPrefix + "userId" + columnPostfix; String sessionUserColumn = columnPrefix + "sessionUser" + columnPostfix; TableDef auditTableDef = null; if (auditTablesMap.containsKey(auditTableName)) { auditTableDef = auditTablesMap.get(auditTableName); } if (isTableExcluded(baseTableName)) { //drop all audit triggers tableChangeUnits.add(new DBChangeUnit(DBChangeType.begin)); workUnit = new DBChangeUnit(DBChangeType.dropTriggers); workUnit.setTableName(baseTableName); tableChangeUnits.add(workUnit); tableChangeUnits.add(new DBChangeUnit(DBChangeType.end)); //done. We don't want to alter any exising audit table return tableChangeUnits; } //create or alter audit table if (null == auditTableDef) { //create table tableChangeUnits.add(new DBChangeUnit(DBChangeType.begin)); workUnit = new DBChangeUnit(DBChangeType.createTable); workUnit.tableName = auditTableName; tableChangeUnits.add(workUnit); //create id column workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(auditTableName + "Id"); workUnit.setTableName(auditTableName); workUnit.setTypeName(auditIdTypeName); workUnit.setIdentity(Boolean.TRUE); tableChangeUnits.add(workUnit); //create all columns on the base table for (ColumnDef baseColumn : baseTableDef.getColumns()) { workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(baseColumn.getName()); workUnit.setTableName(auditTableName); workUnit.setTypeName(baseColumn.getTypeName()); workUnit.setSize(baseColumn.getSize()); workUnit.setDecimalSize(baseColumn.getDecimalSize()); tableChangeUnits.add(workUnit); } //create the audit tracking columns //action workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(auditActionColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(auditActionTypeName); //insert, update, or delete workUnit.setSize(6); workUnit.setDecimalSize(0); tableChangeUnits.add(workUnit); //user workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(auditUserColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(auditUserTypeName); workUnit.setSize(configSource.getMaxUserNameLength()); workUnit.setDecimalSize(0); tableChangeUnits.add(workUnit); //timestamp workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(auditTimeStampColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(auditTimeStampTypeName); workUnit.setSize(0); workUnit.setDecimalSize(0); tableChangeUnits.add(workUnit); //sessionUser if (!sessionUserSQL.isEmpty()) { workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(sessionUserColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(sessionUserTypeName); workUnit.setSize(sessionUserDataSize); workUnit.setDecimalSize(0); tableChangeUnits.add(workUnit); } //end of table tableChangeUnits.add(new DBChangeUnit(DBChangeType.end)); } else { //alter table //there might not be any changes, so store up any changes in //a temporary list, and evaluate. alterTableChangeUnits.add(new DBChangeUnit(DBChangeType.begin)); workUnit = new DBChangeUnit(DBChangeType.alterTable); workUnit.setTableName(auditTableName); alterTableChangeUnits.add(workUnit); //to make this a little easier, get a map for the column list Map<String, ColumnDef> auditColumnMap = new CaseInsensitiveMap(); for (ColumnDef auditColumn : auditTableDef.getColumns()) { auditColumnMap.put(auditColumn.getName(), auditColumn); } //make sure the audit columns and the id exist //create the audit tracking columns //action if (!auditColumnMap.containsKey(auditActionColumn)) { logger.warn("Existing audit table {} does not contain column {}. Creating", auditTableName, auditActionColumn); workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(auditActionColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(auditActionTypeName); //insert, update, or delete workUnit.setSize(6); workUnit.setDecimalSize(0); alterTableChangeUnits.add(workUnit); } //user if (!auditColumnMap.containsKey(auditUserColumn)) { logger.warn("Existing audit table {} does not contain column {}. Creating", auditTableName, auditUserColumn); workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(auditUserColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(auditUserTypeName); workUnit.setSize(configSource.getMaxUserNameLength()); workUnit.setDecimalSize(0); alterTableChangeUnits.add(workUnit); } //timestamp if (!auditColumnMap.containsKey(auditTimeStampColumn)) { logger.warn("Existing audit table {} does not contain column {}. Creating", auditTableName, auditTimeStampColumn); workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(auditTimeStampColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(auditTimeStampTypeName); workUnit.setSize(0); workUnit.setDecimalSize(0); alterTableChangeUnits.add(workUnit); } //seesionuser if (!sessionUserSQL.isEmpty()) { if (!auditColumnMap.containsKey(sessionUserColumn)) { logger.warn("Existing audit table {} does not contain column {}. Creating", auditTableName, sessionUserColumn); workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setColumnName(sessionUserColumn); workUnit.setTableName(auditTableName); workUnit.setTypeName(sessionUserTypeName); workUnit.setSize(sessionUserDataSize); workUnit.setDecimalSize(0); alterTableChangeUnits.add(workUnit); } } //add or alter columns for (ColumnDef baseColumn : baseTableDef.getColumns()) { if (auditColumnMap.containsKey(baseColumn.name)) { //existing column ColumnDef auditColumn = auditColumnMap.get(baseColumn.name); if (auditColumn.getTypeName().equalsIgnoreCase(baseColumn.getTypeName()) && auditColumn.getSize() >= baseColumn.getSize() && auditColumn.getDecimalSize() >= baseColumn.getDecimalSize()) { //nothing to do } else if (auditColumn.getTypeName().equalsIgnoreCase(baseColumn.getTypeName()) && (auditColumn.getSize() < baseColumn.getSize() || auditColumn.getDecimalSize() < baseColumn.getDecimalSize())) { //type is the same, but size increased workUnit = new DBChangeUnit(DBChangeType.alterColumnSize); workUnit.setTableName(auditTableName); workUnit.setColumnName(baseColumn.getName()); workUnit.setTypeName(baseColumn.getTypeName()); workUnit.setSize(baseColumn.getSize()); workUnit.setDecimalSize(baseColumn.getDecimalSize()); alterTableChangeUnits.add(workUnit); } else { //type changes or size shrunk. Rename existing column //and create new column in its place. This requires //the column rename to be done as a sepereate command //from the other column changes. (At least it does on //postgres. int i = 1; do { newColumnName = String.format("%s_prev%d", auditColumn.getName(), i); i++; } while (auditColumnMap.containsKey(newColumnName)); //rename the old version of the audit column renameColumnChangeUnits.add((new DBChangeUnit(DBChangeType.begin))); workUnit = new DBChangeUnit(DBChangeType.alterTable); workUnit.setTableName(auditTableName); renameColumnChangeUnits.add(workUnit); workUnit = new DBChangeUnit(DBChangeType.alterColumnName); workUnit.setTableName(auditTableName); workUnit.setColumnName(auditColumn.getName()); workUnit.setNewColumnName(newColumnName); workUnit.setTypeName(auditColumn.getTypeName()); workUnit.setSize(auditColumn.getSize()); workUnit.setDecimalSize(auditColumn.getDecimalSize()); renameColumnChangeUnits.add(workUnit); renameColumnChangeUnits.add((new DBChangeUnit(DBChangeType.end))); //now add the new version of the column workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setTableName(auditTableName); workUnit.setColumnName(baseColumn.getName()); workUnit.setTypeName(baseColumn.getTypeName()); workUnit.setSize(baseColumn.getSize()); workUnit.setDecimalSize(baseColumn.getDecimalSize()); alterTableChangeUnits.add(workUnit); } } else { //new column workUnit = new DBChangeUnit(DBChangeType.addColumn); workUnit.setTableName(auditTableName); workUnit.setColumnName(baseColumn.getName()); workUnit.setTypeName(baseColumn.getTypeName()); workUnit.setSize(baseColumn.getSize()); workUnit.setDecimalSize(baseColumn.getDecimalSize()); alterTableChangeUnits.add(workUnit); } } //end of table alterTableChangeUnits.add(new DBChangeUnit(DBChangeType.end)); //add the workUnits to the return value if (!renameColumnChangeUnits.isEmpty()) { tableChangeUnits.addAll(renameColumnChangeUnits); } if (alterTableChangeUnits.size() > 3) { tableChangeUnits.addAll(alterTableChangeUnits); } } //begin trigger changes tableChangeUnits.add(new DBChangeUnit(DBChangeType.begin)); workUnit = new DBChangeUnit(DBChangeType.createTriggers); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); tableChangeUnits.add(workUnit); //insert trigger workUnit = new DBChangeUnit(DBChangeType.fireOnInsert); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); workUnit.setFiresTrigger(hasTriggerType(baseTableName, ConfigAttributeTypes.auditinsert)); tableChangeUnits.add(workUnit); //update trigger workUnit = new DBChangeUnit(DBChangeType.fireOnUpdate); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); workUnit.setFiresTrigger(hasTriggerType(baseTableName, ConfigAttributeTypes.auditupdate)); tableChangeUnits.add(workUnit); //delete trigger workUnit = new DBChangeUnit(DBChangeType.fireOnDelete); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); workUnit.setFiresTrigger(hasTriggerType(baseTableName, ConfigAttributeTypes.auditdelete)); tableChangeUnits.add(workUnit); //now add the columns that will be included in the trigger //and set whether or not they will cause it to fire (default is true) for (ColumnDef baseColumnDef : baseTableDef.getColumns()) { workUnit = new DBChangeUnit(DBChangeType.addTriggerColumn); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); workUnit.setColumnName(baseColumnDef.getName()); if (isColumnExcluded(baseTableDef.getName(), baseColumnDef.getName())) { workUnit.setFiresTrigger(Boolean.FALSE); } tableChangeUnits.add(workUnit); } //add the audit tracking columns //action workUnit = new DBChangeUnit(DBChangeType.addTriggerAction); workUnit.setColumnName(auditActionColumn); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); tableChangeUnits.add(workUnit); //user workUnit = new DBChangeUnit(DBChangeType.addTriggerUser); workUnit.setColumnName(auditUserColumn); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); tableChangeUnits.add(workUnit); //timestamp workUnit = new DBChangeUnit(DBChangeType.addTriggerTimeStamp); workUnit.setColumnName(auditTimeStampColumn); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); tableChangeUnits.add(workUnit); //sessionuser if (!sessionUserSQL.isEmpty()) { workUnit = new DBChangeUnit(DBChangeType.addTriggerSessionUser); workUnit.setColumnName(sessionUserColumn); workUnit.setTableName(baseTableName); workUnit.setAuditTableName(auditTableName); tableChangeUnits.add(workUnit); } //end trigger changes tableChangeUnits.add(new DBChangeUnit(DBChangeType.end)); return tableChangeUnits; }