public void importFirmware( String manExtID, String modelExtID, String fromVersion, String toVersion, String filename) throws Exception { ManagementBeanFactory factory = this.getManagementBeanFactory(); try { ModelBean modelBean = factory.createModelBean(); UpdateImageBean bean = factory.createUpdateImageBean(); Manufacturer manufacturer = modelBean.getManufacturerByExternalID(manExtID); Model model = modelBean.getModelByManufacturerModelID(manufacturer, modelExtID); Image image_1 = bean.getImageByVersionID(model, fromVersion); if (image_1 == null) { image_1 = bean.newImageInstance(model, fromVersion, true, fromVersion); } Image image_2 = bean.getImageByVersionID(model, toVersion); if (image_2 == null) { image_2 = bean.newImageInstance(model, toVersion, true, toVersion); } File file_1_to_2 = new File(filename); InputStream in_1_to_2 = new FileInputStream(file_1_to_2); // Test case #1 Update update_1_to_2 = bean.getUpdate(model, fromVersion, toVersion); if (update_1_to_2 != null) { update_1_to_2.setBinary(in_1_to_2); } else { update_1_to_2 = bean.newUpdateInstance(image_1, image_2, in_1_to_2); } update_1_to_2.setStatus(bean.getImageUpdateStatus(Image.STATUS_RELEASED)); factory.beginTransaction(); bean.update(update_1_to_2); factory.commit(); this.getSetup().getConsole().println(" [" + fromVersion + " -> " + toVersion + "]"); // // Caution: must release the Hibernate Session, otherwise will throw the // floowing exception: // java.lang.UnsupportedOperationException: Blob may not be manipulated // from creating session // } catch (Exception e) { factory.rollback(); throw e; } finally { factory.release(); } }