The following code demonstrates how to reclassify a sealed file using the reclassify
method. The content to reclassify can be provided as any type of java.io.InputStream
; this example uses a file input stream. The sample code changes the labels of the classification and then writes the resulting reclassified stream out as a file.
import static oracle.irm.engine.content.sealing.SealingOperationsInstance.peek; import static oracle.irm.engine.content.sealing.SealingOperationsInstance.reclassify; import static oracle.irm.engine.core.classification.ClassificationFactory.createClassification; import static oracle.irm.engine.core.general.LabelFactory.createLabel; import java.io.FileInputStream; import java.io.FileOutputStream; import java.net.Authenticator; import java.net.PasswordAuthentication; import java.util.Collections; import java.util.Locale; import oracle.irm.engine.content.sealing.ContentDescription; import oracle.irm.engine.core.classification.Classification; import oracle.irm.engine.core.general.Label; public class ReclassifyFile { public static void main(String[] args) throws Exception { // The user name and password are provided on the command line. In a production // system these details should be provided in a more secure manner, such // as prompting from the console, or reading from a secure source. final String username = args[0]; final String password = args[1]; // Configure an authenticator to provide the credentials for any network access Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password.toCharArray()); } }); // The file to reclassify String filename = args[2]; // The output file name String reclassifiedFilename = args[3]; // The label to apply to the classification String labelName = args[4]; // Peek the contents of the file to obtain the current classification FileInputStream originalFileStream = new FileInputStream(filename); ContentDescription contentDescription = peek(originalFileStream); // Close the file stream originalFileStream.close(); // Extract the classification from the content description Classification classification = contentDescription.getClassification(); // Replace the labels with the one specified Label label = createLabel(Locale.ENGLISH, labelName, null); classification = createClassification( classification.getId(), classification.getSystem(), classification.getKeySet(), classification.getUri(), classification.getClassificationTime(), Collections.singleton(label), classification.getCookie()); // Reclassify the sealed file with the new classification originalFileStream = new FileInputStream(filename); FileOutputStream reclassifiedFileStream = new FileOutputStream(reclassifiedFilename); reclassify(originalFileStream, reclassifiedFileStream, classification); // Close the streams originalFileStream.close(); reclassifiedFileStream.close(); } }