private ProductPublicationStatus publishWorkProduct( EDXLDistribution edxl, DigestType digest, WorkProductDocument currentWorkProduct) { log.debug("Creating work product for HAVE message"); ValidationUtil.validate(edxl, true); ValidationUtil.validate(digest, true); // Create a work product WorkProduct workProduct = new WorkProduct(); workProduct.setProductType(HAVE_PRODUCT_TYPE); // If updating set the work product identification if (currentWorkProduct != null && currentWorkProduct.getWorkProduct() != null) { IdentificationType id = WorkProductHelper.getIdentificationElement(currentWorkProduct.getWorkProduct()); if (id != null) { try { Integer version = Integer.parseInt(id.getVersion().getStringValue()); workProduct.setProductVersion(version); workProduct.setChecksum(id.getChecksum().getStringValue()); workProduct.setProductID(id.getIdentifier().getStringValue()); workProduct.setProductType(id.getType().getStringValue()); workProduct.setActive(id.getState() == StateType.ACTIVE); } catch (NumberFormatException e) { log.error("Error parsing version number to update HAVE message: " + e.getMessage()); } } else { log.error("Cannot find WorkProductIdentification in matching HAVE message"); } } // workProduct.setProductID(wpIDBuffer.toString()); EDXLDistributionDocument edxlDoc = EDXLDistributionDocument.Factory.newInstance(); edxlDoc.addNewEDXLDistribution().set(edxl); workProduct.setProduct(edxlDoc.xmlText().getBytes()); DigestDocument digestDoc = DigestDocument.Factory.newInstance(); digestDoc.setDigest((DigestType) digest.copy()); workProduct.setDigest(digestDoc); if (edxl.sizeOfContentObjectArray() > 0 && edxl.getContentObjectArray(0).getIncidentID() != null) { workProduct .getAssociatedInterestGroupIDs() .add(edxl.getContentObjectArray(0).getIncidentID()); } // System.out.println(WorkProductHelper.toWorkProductXmlDocument(workProduct)); // publish the work product ProductPublicationStatus status = workProductService.publishProduct(workProduct); return status; }