+ protected void uploadFile(Session session, File file, String remoteFile) {
+ try {
+ upload(session, new FileInputStream(file), file.length(), file
+ .getPath(), file.toString(), remoteFile);
+ } catch (FileNotFoundException e) {
+ throw new SlcException("Cannot upload " + file, e);
+ }
+ }
+
+ protected void uploadResource(Session session, Resource resource) {
+ String targetPath = remotePath != null ? remotePath : remoteDir + '/'
+ + resource.getFilename();
+ try {
+ File lFile = resource.getFile();
+ uploadFile(session, lFile, targetPath);
+ } catch (IOException e) {
+ // no underlying file found
+ // load the resource in memory before transferring it
+ InputStream in = null;
+ try {
+ byte[] arr;
+ String path;
+ if (resource instanceof ByteArrayResource) {
+ arr = ((ByteArrayResource) resource).getByteArray();
+ path = "bytearray";
+ } else {
+ in = resource.getInputStream();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ IOUtils.copy(in, out);
+ arr = out.toByteArray();
+ path = resource.getURL().getPath();
+ if (path.startsWith("/"))
+ path = path.substring(1);
+ }
+ ByteArrayInputStream content = new ByteArrayInputStream(arr);
+ upload(session, content, arr.length, path, resource.toString(),
+ targetPath);
+ arr = null;
+ } catch (IOException e1) {
+ throw new SlcException("Can not interpret resource "
+ + localResource, e1);
+ } finally {
+ IOUtils.closeQuietly(in);
+ // no need to close byte arrays streams
+ }
+ }
+ }
+
+ protected void upload(Session session, InputStream in, long size,
+ String path, String sourceDesc, String remoteFile) {