### Question:
OperatingSystemToImage implements Function<OperatingSystem, Image> { @Override public Image apply(OperatingSystem operatingSystem) { checkNotNull(operatingSystem, "operatingSystem"); final SoftwareLicense defaultSoftwareLicense = SoftwareLicense.builder().softwareDescription(SoftwareDescription.builder().build()).build(); SoftwareLicense softwareLicense = fromNullable(operatingSystem.getSoftwareLicense()).or(defaultSoftwareLicense); Optional<String> optOSReferenceCode = fromNullable(softwareLicense.getSoftwareDescription().getReferenceCode()); Optional<String> optVersion = fromNullable(softwareLicense.getSoftwareDescription().getVersion()); Optional<String> optLongDescription = fromNullable(softwareLicense.getSoftwareDescription().getLongDescription()); OsFamily osFamily = OsFamily.UNRECOGNIZED; String osVersion = UNRECOGNIZED; Integer bits = null; if (optOSReferenceCode.isPresent()) { String operatingSystemReferenceCode = optOSReferenceCode.get(); osFamily = OperatingSystems.osFamily().apply(operatingSystemReferenceCode); bits = OperatingSystems.bits().apply(operatingSystemReferenceCode); } if (optVersion.isPresent()) { osVersion = OperatingSystems.version().apply(optVersion.get()); } if (osFamily == OsFamily.UNRECOGNIZED) { logger.debug("Cannot determine os family for item: %s", operatingSystem); } if (osVersion == null) { logger.debug("Cannot determine os version for item: %s", operatingSystem); } if (bits == null) { logger.debug("Cannot determine os bits for item: %s", operatingSystem); } org.jclouds.compute.domain.OperatingSystem os = org.jclouds.compute.domain.OperatingSystem.builder() .description(optLongDescription.or(UNRECOGNIZED)) .family(osFamily) .version(osVersion) .is64Bit(Objects.equal(bits, 64)) .build(); return new ImageBuilder() .ids(optOSReferenceCode.or(operatingSystem.getId())) .description(optOSReferenceCode.or(UNRECOGNIZED)) .operatingSystem(os) .status(Image.Status.AVAILABLE) .build(); }  @Override Image apply(OperatingSystem operatingSystem);  }### Answer:
@Test public void testOperatingSystemToImage() { OperatingSystem operatingSystem = OperatingSystem.builder() .id("UBUNTU_12_64") .softwareLicense(SoftwareLicense.builder() .softwareDescription(SoftwareDescription.builder() .version("12.04-64 Minimal for CCI") .referenceCode("UBUNTU_12_64") .longDescription("Ubuntu Linux 12.04 LTS Precise Pangolin - Minimal Install (64 bit)") .build()) .build()) .build(); Image image = new OperatingSystemToImage().apply(operatingSystem); assertEquals(image.getId(), operatingSystem.getId()); String referenceCode = operatingSystem.getSoftwareLicense().getSoftwareDescription().getReferenceCode(); assertEquals(image.getDescription(), referenceCode); assertTrue(image.getOperatingSystem().getFamily().toString().equalsIgnoreCase("UBUNTU")); assertEquals(image.getOperatingSystem().getVersion(), "12.04"); assertEquals(image.getOperatingSystem().is64Bit(), true); assertEquals(image.getStatus(), Image.Status.AVAILABLE); }