List of usage examples for org.apache.commons.fileupload FileItem getInputStream
InputStream getInputStream() throws IOException;
From source file:org.eclipse.che.api.vfs.server.VirtualFileSystemImpl.java
public static Response uploadZip(VirtualFile parent, Iterator<FileItem> formData) throws ForbiddenException, ConflictException, ServerException { try {//w w w.j a v a 2s . c o m FileItem contentItem = null; boolean overwrite = false; boolean skipFirstLevel = false; while (formData.hasNext()) { FileItem item = formData.next(); if (!item.isFormField()) { if (contentItem == null) { contentItem = item; } else { throw new ServerException("More then one upload file is found but only one should be. "); } } else if ("overwrite".equals(item.getFieldName())) { overwrite = Boolean.parseBoolean(item.getString().trim()); } else if ("skipFirstLevel".equals(item.getFieldName())) { skipFirstLevel = Boolean.parseBoolean(item.getString().trim()); } } if (contentItem == null) { throw new ServerException("Cannot find file for upload. "); } try { importZip(parent, contentItem.getInputStream(), overwrite, skipFirstLevel); } catch (IOException ioe) { throw new ServerException(ioe.getMessage(), ioe); } return Response.ok("", MediaType.TEXT_HTML).build(); } catch (ForbiddenException | ConflictException | ServerException e) { HtmlErrorFormatter.sendErrorAsHTML(e); // never thrown throw e; } }
From source file:org.eclipse.che.ide.ext.datasource.server.ssl.KeyStoreObject.java
public void addNewKey(String alias, Iterator<FileItem> uploadedFilesIterator) throws Exception { PrivateKey privateKey = null; Certificate[] certs = null;/*w w w. j a v a 2 s . c o m*/ while (uploadedFilesIterator.hasNext()) { FileItem fileItem = uploadedFilesIterator.next(); if (!fileItem.isFormField()) { if ("keyFile".equals(fileItem.getFieldName())) { KeyFactory kf = KeyFactory.getInstance("RSA"); privateKey = kf.generatePrivate(new PKCS8EncodedKeySpec(fileItem.get())); } if ("certFile".equals(fileItem.getFieldName())) { CertificateFactory cf = CertificateFactory.getInstance("X.509"); certs = cf.generateCertificates(fileItem.getInputStream()).toArray(new Certificate[] {}); } } } if (privateKey == null || certs == null) { throw new WebApplicationException( Response.ok("<pre>Can't find input file.</pre>", MediaType.TEXT_HTML).build()); } keystore.setKeyEntry(alias, privateKey, keyStorePassword.toCharArray(), certs); save(); }
From source file:org.eclipse.che.ide.ext.datasource.server.ssl.TrustStoreObject.java
public void addNewServerCACert(String alias, Iterator<FileItem> uploadedFilesIterator) throws Exception { Certificate[] certs = null;/*from w ww.j a va2s. c om*/ while (uploadedFilesIterator.hasNext()) { FileItem fileItem = uploadedFilesIterator.next(); if (!fileItem.isFormField()) { if ("certFile".equals(fileItem.getFieldName())) { CertificateFactory cf = CertificateFactory.getInstance("X.509"); certs = cf.generateCertificates(fileItem.getInputStream()).toArray(new Certificate[] {}); } } } if (certs == null) { throw new WebApplicationException( Response.ok("<pre>Can't find input file.</pre>", MediaType.TEXT_HTML).build()); } keystore.setCertificateEntry(alias, certs[0]); save(); }
From source file:org.eclipse.dirigible.runtime.content.ContentImporterServlet.java
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response)/*from w w w. j ava 2s. c om*/ */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (!PermissionsUtils.isUserInRole(request, IRoles.ROLE_OPERATOR)) { String err = String.format(PermissionsUtils.PERMISSION_ERR, "Import"); logger.error(err); throw new ServletException(err); } boolean isMultipart = ServletFileUpload.isMultipartContent(request); boolean override = Boolean.parseBoolean(request.getParameter(PARAMETER_OVERRIDE)) || Boolean.parseBoolean(request.getHeader(HEADER_OVERRIDE)); try { if (isMultipart) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> items = upload.parseRequest(request); logger.debug("Importing multiple content..."); for (FileItem fileItem : items) { logger.debug("Importing " + fileItem.getFieldName()); InputStream in = fileItem.getInputStream(); importZipAndUpdate(in, request, override); logger.debug("Content imported."); } } catch (FileUploadException e) { logger.error(e.getMessage(), e); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); } } else { logger.debug("Importing single content..."); InputStream in = request.getInputStream(); importZipAndUpdate(in, request, override); logger.debug("Content imported."); } } catch (Exception e) { logger.error(e.getMessage(), e); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); } }
From source file:org.eclipse.dirigible.runtime.content.DataImporterServlet.java
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response)/* www . j av a2s . c o m*/ */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (!PermissionsUtils.isUserInRole(request, IRoles.ROLE_OPERATOR)) { String err = String.format(PermissionsUtils.PERMISSION_ERR, "Data Import"); logger.error(err); throw new ServletException(err); } boolean isMultipart = ServletFileUpload.isMultipartContent(request); try { if (isMultipart) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> items = upload.parseRequest(request); logger.debug("Importing multiple data files..."); for (FileItem fileItem : items) { logger.debug("Importing " + fileItem.getFieldName()); InputStream in = fileItem.getInputStream(); importData(fileItem.getFieldName(), in, request); logger.debug("Data imported."); } } catch (FileUploadException e) { logger.error(e.getMessage(), e); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } else { logger.debug("Importing single data file..."); String tableName = request.getParameter(PARAMETER_TABLE); if ((tableName == null) || "".equals(tableName)) { logger.error(PARAMETER_TABLE_ERR); throw new ServletException(PARAMETER_TABLE_ERR); } InputStream in = request.getInputStream(); importData(tableName + ".dsv", in, request); logger.debug("Data imported."); } } catch (Exception e) { logger.error(e.getMessage(), e); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } }
From source file:org.eclipse.dirigible.runtime.content.ProjectImporterServlet.java
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response)//from w ww . ja va 2 s .c om */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (!PermissionsUtils.isUserInRole(request, IRoles.ROLE_OPERATOR)) { String err = String.format(PermissionsUtils.PERMISSION_ERR, "Import"); logger.debug(err); throw new ServletException(err); } boolean isMultipart = ServletFileUpload.isMultipartContent(request); boolean override = Boolean.parseBoolean(request.getParameter(PARAMETER_OVERRIDE)) || Boolean.parseBoolean(request.getHeader(HEADER_OVERRIDE)); try { if (isMultipart) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> items = upload.parseRequest(request); logger.debug("Importing multiple content..."); for (FileItem fileItem : items) { logger.debug("Importing " + fileItem.getFieldName()); InputStream in = fileItem.getInputStream(); importZipAndUpdate(in, request, override); logger.debug("Content imported."); } } catch (FileUploadException e) { logger.error(e.getMessage(), e); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } else { logger.debug("Importing single content..."); InputStream in = request.getInputStream(); importZipAndUpdate(in, request, override); logger.debug("Content imported."); } } catch (Exception e) { logger.error(e.getMessage(), e); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); } }
From source file:org.eclipse.kura.web.server.servlet.FileServlet.java
private void doPostCommand(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { UploadRequest upload = new UploadRequest(this.m_diskFileItemFactory); try {//from w w w. j a v a2 s. com upload.parse(req); } catch (FileUploadException e) { s_logger.error("Error parsing the file upload request"); throw new ServletException("Error parsing the file upload request", e); } // BEGIN XSRF - Servlet dependent code Map<String, String> formFields = upload.getFormFields(); try { GwtXSRFToken token = new GwtXSRFToken(formFields.get("xsrfToken")); KuraRemoteServiceServlet.checkXSRFToken(req, token); } catch (Exception e) { throw new ServletException("Security error: please retry this operation correctly.", e); } // END XSRF security check List<FileItem> fileItems = null; InputStream is = null; File localFolder = new File(System.getProperty("java.io.tmpdir")); OutputStream os = null; try { fileItems = upload.getFileItems(); if (fileItems.size() > 0) { FileItem item = fileItems.get(0); is = item.getInputStream(); byte[] bytes = IOUtils.toByteArray(is); ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(bytes)); int entries = 0; long total = 0; ZipEntry ze = zis.getNextEntry(); while (ze != null) { byte[] buffer = new byte[BUFFER]; String expectedFilePath = new StringBuilder(localFolder.getPath()).append(File.separator) .append(ze.getName()).toString(); String fileName = validateFileName(expectedFilePath, localFolder.getPath()); File newFile = new File(fileName); if (newFile.isDirectory()) { newFile.mkdirs(); ze = zis.getNextEntry(); continue; } if (newFile.getParent() != null) { File parent = new File(newFile.getParent()); parent.mkdirs(); } FileOutputStream fos = new FileOutputStream(newFile); int len; while (total + BUFFER <= tooBig && (len = zis.read(buffer)) > 0) { fos.write(buffer, 0, len); total += len; } fos.flush(); fos.close(); entries++; if (entries > tooMany) { throw new IllegalStateException("Too many files to unzip."); } if (total > tooBig) { throw new IllegalStateException("File being unzipped is too big."); } ze = zis.getNextEntry(); } zis.closeEntry(); zis.close(); } } catch (IOException e) { throw e; } catch (GwtKuraException e) { throw new ServletException("File is outside extraction target directory."); } finally { if (os != null) { try { os.close(); } catch (IOException e) { s_logger.warn("Cannot close output stream", e); } } if (is != null) { try { is.close(); } catch (IOException e) { s_logger.warn("Cannot close input stream", e); } } if (fileItems != null) { for (FileItem fileItem : fileItems) { fileItem.delete(); } } } }
From source file:org.eclipse.kura.web.server.servlet.FileServlet.java
private void doPostDeployUpload(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServiceLocator locator = ServiceLocator.getInstance(); DeploymentAgentService deploymentAgentService; try {/*from ww w.ja va 2 s . c om*/ deploymentAgentService = locator.getService(DeploymentAgentService.class); } catch (GwtKuraException e) { s_logger.error("Error locating DeploymentAgentService", e); throw new ServletException("Error locating DeploymentAgentService", e); } // Check that we have a file upload request boolean isMultipart = ServletFileUpload.isMultipartContent(req); if (!isMultipart) { s_logger.error("Not a file upload request"); throw new ServletException("Not a file upload request"); } UploadRequest upload = new UploadRequest(this.m_diskFileItemFactory); try { upload.parse(req); } catch (FileUploadException e) { s_logger.error("Error parsing the file upload request", e); throw new ServletException("Error parsing the file upload request", e); } // BEGIN XSRF - Servlet dependent code Map<String, String> formFields = upload.getFormFields(); try { GwtXSRFToken token = new GwtXSRFToken(formFields.get("xsrfToken")); KuraRemoteServiceServlet.checkXSRFToken(req, token); } catch (Exception e) { throw new ServletException("Security error: please retry this operation correctly.", e); } // END XSRF security check List<FileItem> fileItems = null; InputStream is = null; File localFile = null; OutputStream os = null; boolean successful = false; try { fileItems = upload.getFileItems(); if (fileItems.size() != 1) { s_logger.error("expected 1 file item but found {}", fileItems.size()); throw new ServletException("Wrong number of file items"); } FileItem item = fileItems.get(0); String filename = item.getName(); is = item.getInputStream(); String filePath = System.getProperty("java.io.tmpdir") + File.separator + filename; localFile = new File(filePath); if (localFile.exists()) { if (localFile.delete()) { s_logger.error("Cannot delete file: {}", filePath); throw new ServletException("Cannot delete file: " + filePath); } } try { localFile.createNewFile(); localFile.deleteOnExit(); } catch (IOException e) { s_logger.error("Cannot create file: {}", filePath, e); throw new ServletException("Cannot create file: " + filePath); } try { os = new FileOutputStream(localFile); } catch (FileNotFoundException e) { s_logger.error("Cannot find file: {}", filePath, e); throw new ServletException("Cannot find file: " + filePath, e); } s_logger.info("Copying uploaded package file to file: {}", filePath); try { IOUtils.copy(is, os); } catch (IOException e) { s_logger.error("Failed to copy deployment package file: {}", filename, e); throw new ServletException("Failed to copy deployment package file: " + filename, e); } try { os.close(); } catch (IOException e) { s_logger.warn("Cannot close output stream", e); } URL url = localFile.toURI().toURL(); String sUrl = url.toString(); s_logger.info("Installing package..."); try { deploymentAgentService.installDeploymentPackageAsync(sUrl); successful = true; } catch (Exception e) { s_logger.error("Package installation failed", e); throw new ServletException("Package installation failed", e); } } catch (IOException e) { throw e; } catch (ServletException e) { throw e; } finally { if (os != null) { try { os.close(); } catch (IOException e) { s_logger.warn("Cannot close output stream", e); } } if (localFile != null && !successful) { try { localFile.delete(); } catch (Exception e) { s_logger.warn("Cannot delete file"); } } if (is != null) { try { is.close(); } catch (IOException e) { s_logger.warn("Cannot close input stream", e); } } if (fileItems != null) { for (FileItem fileItem : fileItems) { fileItem.delete(); } } } }
From source file:org.eclipse.lyo.oslc.am.resource.ResourceService.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean isFileUpload = ServletFileUpload.isMultipartContent(request); String contentType = request.getContentType(); if (!isFileUpload && (RioStore.rdfFormatFromContentType(contentType) == null)) { throw new RioServiceException(IConstants.SC_UNSUPPORTED_MEDIA_TYPE); }// w w w .j ava 2s. c o m InputStream content = request.getInputStream(); if (isFileUpload) { // being uploaded from a web page try { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); @SuppressWarnings("unchecked") List<FileItem> items = upload.parseRequest(request); // find the first (and only) file resource in the post Iterator<FileItem> iter = items.iterator(); while (iter.hasNext()) { FileItem item = iter.next(); if (item.isFormField()) { // this is a form field, maybe we can accept a title or descr? } else { content = item.getInputStream(); contentType = item.getContentType(); } } } catch (Exception e) { throw new RioServiceException(e); } } RioStore store = this.getStore(); if (RioStore.rdfFormatFromContentType(contentType) != null) { try { String resUri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); Resource resource = new Resource(resUri); List<RioStatement> statements = store.parse(resUri, content, contentType); resource.addStatements(statements); String userUri = getUserUri(request.getRemoteUser()); // if it parsed, then add it to the store. store.update(resource, userUri); // now get it back, to find OslcResource returnedResource = store.getOslcResource(resource.getUri()); Date created = returnedResource.getCreated(); String eTag = returnedResource.getETag(); response.setStatus(IConstants.SC_CREATED); response.setHeader(IConstants.HDR_LOCATION, resource.getUri()); response.setHeader(IConstants.HDR_LAST_MODIFIED, StringUtils.rfc2822(created)); response.setHeader(IConstants.HDR_ETAG, eTag); } catch (RioServerException e) { throw new RioServiceException(IConstants.SC_BAD, e); } } else if (IAmConstants.CT_APP_X_VND_MSPPT.equals(contentType) || isFileUpload) { try { ByteArrayInputStream bais = isToBais(content); String uri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); Resource resource = new Resource(uri); resource.addRdfType(IAmConstants.OSLC_AM_TYPE_RESOURCE); resource.addRdfType(IAmConstants.RIO_AM_PPT_DECK); String id = resource.getIdentifier(); String deckTitle = "PPT Deck " + id; resource.setTitle(deckTitle); resource.setDescription("A Power Point Deck"); String sourceUri = getBaseUrl() + '/' + IAmConstants.SERVICE_SOURCE + '/' + id; resource.setSource(sourceUri); resource.setSourceContentType(contentType); String userUri = getUserUri(request.getRemoteUser()); store.storeBinaryResource(bais, id); bais.reset(); SlideShow ppt = new SlideShow(bais); Dimension pgsize = ppt.getPageSize(); Slide[] slide = ppt.getSlides(); for (int i = 0; i < slide.length; i++) { String slideTitle = extractTitle(slide[i]); String slideUri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); Resource slideResource = new Resource(slideUri); slideResource.addRdfType(IAmConstants.OSLC_AM_TYPE_RESOURCE); slideResource.addRdfType(IAmConstants.RIO_AM_PPT_SLIDE); String slideId = slideResource.getIdentifier(); slideResource.setTitle(slideTitle); sourceUri = getBaseUrl() + '/' + IAmConstants.SERVICE_SOURCE + '/' + slideId; slideResource.setSource(sourceUri); slideResource.setSourceContentType(IConstants.CT_IMAGE_PNG); store.update(slideResource, userUri); BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); graphics.setPaint(Color.white); graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); slide[i].draw(graphics); ByteArrayOutputStream out = new ByteArrayOutputStream(); javax.imageio.ImageIO.write(img, "png", out); ByteArrayInputStream is = new ByteArrayInputStream(out.toByteArray()); store.storeBinaryResource(is, slideId); out.close(); is.close(); try { RioValue v = new RioValue(RioValueType.URI, slideResource.getUri()); resource.appendToSeq(IConstants.RIO_NAMESPACE + "slides", v); } catch (UnrecognizedValueTypeException e) { // log this? don't want to throw away everything, since this should never happen } } store.update(resource, userUri); // now get it back, to find eTag and creator stuff OslcResource returnedResource = store.getOslcResource(resource.getUri()); Date created = returnedResource.getCreated(); String eTag = returnedResource.getETag(); response.setStatus(IConstants.SC_CREATED); response.setHeader(IConstants.HDR_LOCATION, resource.getUri()); response.setHeader(IConstants.HDR_LAST_MODIFIED, StringUtils.rfc2822(created)); response.setHeader(IConstants.HDR_ETAG, eTag); } catch (RioServerException e) { throw new RioServiceException(IConstants.SC_BAD, e); } } else { // must be a binary or unknown format, treat as black box // normally a service provider will understand this and parse it appropriately // however this server will accept any blank box resource try { String uri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); Resource resource = new Resource(uri); String id = resource.getIdentifier(); resource.setTitle("Resource " + id); resource.setDescription("A binary resource"); String sourceUri = getBaseUrl() + IAmConstants.SERVICE_SOURCE + '/' + id; resource.setSource(sourceUri); resource.setSourceContentType(contentType); String userUri = getUserUri(request.getRemoteUser()); store.update(resource, userUri); store.storeBinaryResource(content, id); // now get it back, to find eTag and creator stuff OslcResource returnedResource = store.getOslcResource(resource.getUri()); Date created = returnedResource.getCreated(); String eTag = returnedResource.getETag(); response.setStatus(IConstants.SC_CREATED); response.setHeader(IConstants.HDR_LOCATION, resource.getUri()); response.setHeader(IConstants.HDR_LAST_MODIFIED, StringUtils.rfc2822(created)); response.setHeader(IConstants.HDR_ETAG, eTag); } catch (RioServerException e) { throw new RioServiceException(IConstants.SC_BAD, e); } } }
From source file:org.eclipse.lyo.samples.sharepoint.adapter.ResourceService.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("entered do Post for /resource"); boolean isFileUpload = ServletFileUpload.isMultipartContent(request); String contentType = request.getContentType(); if (!isFileUpload && !IConstants.CT_RDF_XML.equals(contentType)) { throw new ShareServiceException(IConstants.SC_UNSUPPORTED_MEDIA_TYPE); }//ww w .j a va 2 s .c o m InputStream content = request.getInputStream(); if (isFileUpload) { // being uploaded from a web page try { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); @SuppressWarnings("unchecked") List<FileItem> items = upload.parseRequest(request); // find the first (and only) file resource in the post Iterator<FileItem> iter = items.iterator(); while (iter.hasNext()) { FileItem item = iter.next(); if (item.isFormField()) { // this is a form field, maybe we can accept a title or descr? } else { content = item.getInputStream(); contentType = item.getContentType(); } } } catch (Exception e) { throw new ShareServiceException(e); } } ShareStore store = this.getStore(); if (ShareStore.rdfFormatFromContentType(contentType) != null) { try { String resUri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); SharepointResource resource = new SharepointResource(resUri); List<ShareStatement> statements = store.parse(resUri, content, contentType); resource.addStatements(statements); String userUri = getUserUri(request.getRemoteUser()); // if it parsed, then add it to the store. store.update(resource, userUri); // now get it back, to find OslcResource returnedResource = store.getOslcResource(resource.getUri()); Date created = returnedResource.getCreated(); String eTag = returnedResource.getETag(); response.setStatus(IConstants.SC_CREATED); response.setHeader(IConstants.HDR_LOCATION, resource.getUri()); response.setHeader(IConstants.HDR_LAST_MODIFIED, StringUtils.rfc2822(created)); response.setHeader(IConstants.HDR_ETAG, eTag); } catch (ShareServerException e) { throw new ShareServiceException(IConstants.SC_BAD, e); } } else if (IAmConstants.CT_APP_X_VND_MSPPT.equals(contentType) || isFileUpload) { try { ByteArrayInputStream bais = isToBais(content); String uri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); SharepointResource resource = new SharepointResource(uri); resource.addRdfType(IAmConstants.OSLC_AM_TYPE_RESOURCE); resource.addRdfType(IAmConstants.RIO_AM_PPT_DECK); String id = resource.getIdentifier(); String deckTitle = "PPT Deck " + id; resource.setTitle(deckTitle); resource.setDescription("A Power Point Deck"); String sourceUri = getBaseUrl() + '/' + IAmConstants.SERVICE_SOURCE + '/' + id; resource.setSource(sourceUri); resource.setSourceContentType(contentType); String userUri = getUserUri(request.getRemoteUser()); store.storeBinaryResource(bais, id); bais.reset(); SlideShow ppt = new SlideShow(bais); Dimension pgsize = ppt.getPageSize(); Slide[] slide = ppt.getSlides(); for (int i = 0; i < slide.length; i++) { String slideTitle = extractTitle(slide[i]); String slideUri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); SharepointResource slideResource = new SharepointResource(slideUri); slideResource.addRdfType(IAmConstants.OSLC_AM_TYPE_RESOURCE); slideResource.addRdfType(IAmConstants.RIO_AM_PPT_SLIDE); String slideId = slideResource.getIdentifier(); slideResource.setTitle(slideTitle); sourceUri = getBaseUrl() + '/' + IAmConstants.SERVICE_SOURCE + '/' + slideId; slideResource.setSource(sourceUri); slideResource.setSourceContentType(IConstants.CT_IMAGE_PNG); store.update(slideResource, userUri); BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); graphics.setPaint(Color.white); graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); slide[i].draw(graphics); ByteArrayOutputStream out = new ByteArrayOutputStream(); javax.imageio.ImageIO.write(img, "png", out); ByteArrayInputStream is = new ByteArrayInputStream(out.toByteArray()); store.storeBinaryResource(is, slideId); out.close(); is.close(); try { ShareValue v = new ShareValue(ShareValueType.URI, slideResource.getUri()); resource.appendToSeq(IConstants.SHARE_NAMESPACE + "slides", v); } catch (UnrecognizedValueTypeException e) { // log this? don't want to throw away everything, since this should never happen } } store.update(resource, userUri); // now get it back, to find eTag and creator stuff OslcResource returnedResource = store.getOslcResource(resource.getUri()); Date created = returnedResource.getCreated(); String eTag = returnedResource.getETag(); response.setStatus(IConstants.SC_CREATED); response.setHeader(IConstants.HDR_LOCATION, resource.getUri()); response.setHeader(IConstants.HDR_LAST_MODIFIED, StringUtils.rfc2822(created)); response.setHeader(IConstants.HDR_ETAG, eTag); } catch (ShareServerException e) { throw new ShareServiceException(IConstants.SC_BAD, e); } } else { // must be a binary or unknown format, treat as black box // normally a service provider will understand this and parse it appropriately // however this server will accept any blank box resource try { String uri = store.nextAvailableUri(IAmConstants.SERVICE_RESOURCE); SharepointResource resource = new SharepointResource(uri); String id = resource.getIdentifier(); resource.setTitle("Resource " + id); resource.setDescription("A binary resource"); String sourceUri = getBaseUrl() + IAmConstants.SERVICE_SOURCE + '/' + id; resource.setSource(sourceUri); resource.setSourceContentType(contentType); String userUri = getUserUri(request.getRemoteUser()); store.update(resource, userUri); store.storeBinaryResource(content, id); // now get it back, to find eTag and creator stuff OslcResource returnedResource = store.getOslcResource(resource.getUri()); Date created = returnedResource.getCreated(); String eTag = returnedResource.getETag(); response.setStatus(IConstants.SC_CREATED); response.setHeader(IConstants.HDR_LOCATION, resource.getUri()); response.setHeader(IConstants.HDR_LAST_MODIFIED, StringUtils.rfc2822(created)); response.setHeader(IConstants.HDR_ETAG, eTag); } catch (ShareServerException e) { throw new ShareServiceException(IConstants.SC_BAD, e); } } }