/** * Gets the content from Alfresco DMS. * * @param reference not null {@link Reference} * @param store the store. * @return not null {@link Document} * @throws RemoteException If the {@link Reference} is not equivalent to an existing {@link Node}. * @throws DMSException if an error occurs in DMS back end */ private Document getContent(Reference reference, Store store) throws RemoteException, DMSException { Validate.notNull(reference); Validate.notNull(store); /** Get the content service. */ final ContentServiceSoapBindingStub contentService = this.getContentService(); Document result = null; /** Read the content from the respository. */ Content[] readResult; readResult = contentService.read( new Predicate(new Reference[] {reference}, store, null), Constants.PROP_CONTENT); Content content = readResult[0]; if (readResult != null && content != null && content.getUrl() != null) { final String fileName = this.getName(content.getUrl()); File tempFile = new File(ResourcesLocator.getResourcesTempDir() + fileName); /** Get the content from the download servlet using the URL and display it. */ /** Copy content in a temporary direcoty. */ ContentUtils.copyContentToFile(content, tempFile); try { FileInputStream fin; fin = new FileInputStream(tempFile); int bytesCount = (int) tempFile.length(); byte[] contentBytes = new byte[bytesCount]; fin.read(contentBytes); result = new Document(fileName, content.getFormat().getMimetype(), contentBytes); fin.close(); this.deleteTempFile(tempFile); } catch (IOException e) { String message = "IO Error: "; LOG.error(message, e); DMSFault dmsFault = new DMSFault(); dmsFault.setMessage(message); throw new DMSException(message, dmsFault, e); } } return result; }