JavaImageIOMigrate implements Migrate { public ServiceDescription describe() { ServiceDescription.Builder sd = new ServiceDescription.Builder( NAME, Migrate.class.getCanonicalName()); sd.author("Andrew Jackson <Andrew.Jackson@bl.uk>"); sd.description("A wrapper for the migrations supported by the Java SE built-in ImageIO library."); sd.classname(this.getClass().getCanonicalName()); sd.version("1.0.1"); sd.tool(JavaImageIOIdentify.tool); List<MigrationPath> paths = new ArrayList<MigrationPath>(); for ( String i : JavaImageIOIdentify.unique( ImageIO.getReaderFormatNames() ) ) { for (String j : JavaImageIOIdentify.unique( ImageIO.getWriterFormatNames() )) { if (!i.equalsIgnoreCase(j) ) { MigrationPath p = new MigrationPath( format.createExtensionUri(i), format.createExtensionUri(j), null ); paths.add(p); } } } sd.paths(paths.toArray(new MigrationPath[]{})); return sd.build(); }  ServiceDescription describe(); MigrateResult migrate(DigitalObject dob, URI inputFormat,
            URI outputFormat, List<Parameter> parameters); static final String NAME; }
@Test public void testDescribe() { ServiceDescription desc = dom.describe(); assertTrue("The ServiceDescription should not be NULL.", desc != null); System.out.println("Recieved service description: " + desc.toXmlFormatted()); }