You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/11/30 12:06:10 UTC

svn commit: r1717228 - in /openmeetings: branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/ branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ branches/3.1.x/openmeetings-core/sr...

Author: solomax
Date: Mon Nov 30 11:06:09 2015
New Revision: 1717228

URL: http://svn.apache.org/viewvc?rev=1717228&view=rev
Log:
[OPENMEETINGS-1279] file upload somehow works, need more testing and better error handling

Removed:
    openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/AbstractUploadController.java
    openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/UploadController.java
    openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/UploadCompleteMessage.java
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/AbstractUploadController.java
    openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/UploadCompleteMessage.java
Modified:
    openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
    openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx
    openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
    openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
    openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx
    openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
    openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml
    openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
    openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java

Modified: openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java Mon Nov 30 11:06:09 2015
@@ -18,7 +18,10 @@
  */
 package org.apache.openmeetings.core.data.file;
 
+import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadTempFilesDir;
 import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
 import java.io.InputStream;
@@ -33,8 +36,6 @@ import org.apache.openmeetings.core.docu
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.StoredFile;
 import org.apache.openmeetings.util.crypt.MD5;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
@@ -44,8 +45,7 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class FileProcessor {
-
-	private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, OpenmeetingsVariables.webAppRootKey);
+	private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, webAppRootKey);
 
 	//Spring loaded Beans
 	@Autowired
@@ -59,124 +59,93 @@ public class FileProcessor {
 	@Autowired
 	private GeneratePDF generatePDF;
 
-	public ConverterProcessResultList processFile(Long userId, Long roomId, 
-			boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName, 
-			String externalFileId, String externalType) throws Exception {
-		
+	//FIXME TODO this method need to be refactored to throw exceptions
+	public ConverterProcessResultList processFile(Long userId, FileExplorerItem f, InputStream is) throws Exception {
 		ConverterProcessResultList returnError = new ConverterProcessResultList();
 		
-		int dotidx = fileSystemName.lastIndexOf('.');
+		int dotidx = f.getName().lastIndexOf('.');
 
-        // Generate a random string to prevent any problems with
-        // foreign characters and duplicates
-        Date d = new Date();
-        String newFileSystemName = MD5.do_checksum("FILE_" + d.getTime());
-
-        String newFileExtDot = fileSystemName.substring(dotidx, fileSystemName.length()).toLowerCase();
-        String newFileExt = newFileExtDot.substring(1);
-        log.debug("newFileExt: " + newFileExt);
-        StoredFile storedFile = new StoredFile(newFileSystemName, newFileExt); 
-
-        // Check variable to see if this file is a presentation
-        // check if this is a a file that can be converted by
-        // openoffice-service
-        boolean canBeConverted = storedFile.isConvertable();
-        boolean isPdf = storedFile.isPdf();
-        boolean isImage = storedFile.isImage();
-        boolean isChart = storedFile.isChart();
-        boolean isAsIs = storedFile.isAsIs();
-        boolean isVideo = storedFile.isVideo();
-
-        log.debug("isAsIs: " + isAsIs);
-
-        // add outputfolders for profiles
-        // if it is a presenation it will be copied to another place
-        if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
-        	returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
-            return returnError;
-        }
-
-        File completeName = new File(
-        	isAsIs ? OmFileHelper.getUploadFilesDir() : OmFileHelper.getUploadTempFilesDir()
-        	, newFileSystemName + newFileExtDot);
-        log.debug("writing file to: " + completeName);
-        FileHelper.copy(is, completeName);
-        is.close();
-
-        Long ownerId = null;
-        if (parentFolderId == -2) {
-            parentFolderId = 0L;
-            ownerId = userId;
-        }
-        if (isOwner) {
-            ownerId = userId;
-        }
-
-        String fileHashName = newFileSystemName + newFileExtDot;
-        Boolean isPresentation = false;
-        if (canBeConverted || isPdf) {
-            // In case of a presentation the hash is a folder-name
-            fileHashName = newFileSystemName;
-            isPresentation = true;
-        }
-        if (isImage) {
-            fileHashName = newFileSystemName + ".jpg";
-        }
-        if (isVideo) {
-            fileHashName = newFileSystemName + ".flv";
-        }
-
-        FileExplorerItem fileExplorerItem = fileExplorerItemDao.get(parentFolderId);
-
-        if (fileExplorerItem != null) {
-            if (Type.Folder != fileExplorerItem.getType()) {
-                parentFolderId = 0L;
-            }
-        }
-
-        Long fileId = fileExplorerItemDao.add(
-                fileSystemName, fileHashName, // The Hashname of the file
-                parentFolderId, ownerId, roomId, userId, false, // isFolder
-                isImage, isPresentation, "", false, isChart, 
-                externalFileId, externalType);
-        log.debug("fileId: " + fileId);
-        
-        
-        
-        log.debug("canBeConverted: " + canBeConverted);
-        if (canBeConverted) {
-            // convert to pdf, thumbs, swf and xml-description
-            returnError = generatePDF.convertPDF(newFileSystemName, "files", true, completeName);
-        } else if (isPdf) {
-            // convert to thumbs, swf and xml-description
-            returnError = generatePDF.convertPDF(newFileSystemName, "files", false, completeName);
-        } else if (isChart) {
-            log.debug("uploaded chart file");
-        } else if (isImage && !isAsIs) {
-            // convert it to JPG
-            log.debug("##### convert it to JPG: ");
-            returnError = generateImage.convertImage(newFileSystemName, newFileExtDot, "files",
-                    newFileSystemName, false);
-        } else if (isAsIs) {
-        	ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
-            returnError.addItem("processThumb", processThumb);
-        } else if (isVideo) {
-        	List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(fileId, completeName.getCanonicalPath());
-        	
-        	int i=0;
-        	for (ConverterProcessResult returnMap : returnList) {
-        		returnError.addItem("processFLV "+i, returnMap);
-        	}
-        	
-        }
-        
-        // has to happen at the end, otherwise it will be overwritten
-        //cause the variable is new initialized
-        returnError.setCompleteName(completeName.getName());
-        returnError.setFileExplorerItemId(fileId);
-        
-		return returnError;
+		// Generate a random string to prevent any problems with
+		// foreign characters and duplicates
+		String newName = MD5.do_checksum("FILE_" + new Date().getTime());
+
+		String extDot = f.getName().substring(dotidx, f.getName().length()).toLowerCase();
+		String ext = extDot.substring(1);
+		log.debug("file extension: " + ext);
+		StoredFile storedFile = new StoredFile(newName, ext); 
+
+		// Check variable to see if this file is a presentation
+		// check if this is a a file that can be converted by
+		// openoffice-service
+		boolean canBeConverted = storedFile.isConvertable();
+		boolean isPdf = storedFile.isPdf();
+		boolean isImage = storedFile.isImage();
+		boolean isChart = storedFile.isChart();
+		boolean isAsIs = storedFile.isAsIs();
+		boolean isVideo = storedFile.isVideo();
+
+		log.debug("isAsIs: " + isAsIs);
+
+		// add outputfolders for profiles
+		// if it is a presenation it will be copied to another place
+		if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
+			returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
+			return returnError;
+		}
+
+		File completeName = new File(isAsIs ? getUploadFilesDir() : getUploadTempFilesDir(), newName + extDot);
+		log.debug("writing file to: " + completeName);
+		FileHelper.copy(is, completeName);
+		is.close();
+
+		String hash = newName + extDot;
+		if (isImage) {
+			hash = newName + ".jpg";
+			f.setType(Type.Image);
+		} else if (isVideo) {
+			hash = newName + ".flv";
+			f.setType(Type.Video);
+		} else if (isChart) {
+			f.setType(Type.PollChart);
+		} else if (isPdf || canBeConverted) {
+			hash = newName;
+			f.setType(Type.Presentation);
+		}
+		f.setHash(hash);
+
+		f = fileExplorerItemDao.update(f);
+		log.debug("fileId: " + f.getId());
 		
+		log.debug("canBeConverted: " + canBeConverted);
+		if (canBeConverted) {
+			// convert to pdf, thumbs, swf and xml-description
+			returnError = generatePDF.convertPDF(newName, "files", true, completeName);
+		} else if (isPdf) {
+			// convert to thumbs, swf and xml-description
+			returnError = generatePDF.convertPDF(newName, "files", false, completeName);
+		} else if (isChart) {
+			log.debug("uploaded chart file");
+		} else if (isImage && !isAsIs) {
+			// convert it to JPG
+			log.debug("##### convert it to JPG: ");
+			returnError = generateImage.convertImage(newName, extDot, "files", newName, false);
+		} else if (isAsIs) {
+			ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
+			returnError.addItem("processThumb", processThumb);
+		} else if (isVideo) {
+			List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(f.getId(), completeName.getCanonicalPath());
+			
+			int i = 0;
+			for (ConverterProcessResult returnMap : returnList) {
+				returnError.addItem("processFLV " + i, returnMap);
+			}
+		}
+		
+		// has to happen at the end, otherwise it will be overwritten
+		//cause the variable is new initialized
+		returnError.setCompleteName(completeName.getName());
+		returnError.setFileExplorerItemId(f.getId());
+		
+		return returnError;
 	}
-	
 }

Modified: openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Mon Nov 30 11:06:09 2015
@@ -62,7 +62,6 @@ import org.apache.openmeetings.util.Init
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.Version;
-import org.apache.openmeetings.util.process.UploadCompleteMessage;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.adapter.ApplicationAdapter;
 import org.red5.server.api.IClient;
@@ -1909,24 +1908,6 @@ public class ScopeApplicationAdapter ext
 		return 1;
 	}
 	
-	public synchronized void sendUploadCompletMessageByPublicSID(UploadCompleteMessage message, String publicSID) {
-		try {
-			//if the upload is locally, just proceed to the normal function
-			//Search for RoomClient on current server (serverId == null means it will look on the master for the RoomClient)
-			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
-			
-			if (currentClient != null) {
-				sendMessageWithClientByPublicSID(message, publicSID);
-			} else {
-				throw new Exception("Could not Find RoomClient on List publicSID: "+ publicSID);
-			}
-			
-		} catch (Exception err) {
-			log.error("[sendUploadCompletMessageByPublicSID] ", err);
-		}
-	}
-	
-
 	public synchronized void sendMessageWithClientByPublicSID(Object message, String publicSID) {
 		try {
 			// ApplicationContext appCtx = getContext().getApplicationContext();

Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx Mon Nov 30 11:06:09 2015
@@ -50,34 +50,14 @@
 		</handler>
 		
 		<method name="remoteComplete" args="tArrayValueObj">
+			if ($debug) Debug.write("remoteComplete ", tArrayValueObj);
+			this.progressBar.setValue(100);
+			this.upload.setAttribute('enabled', false);
+			this.upload.setAttribute("visible", false);
+			this.browse.setAttribute("visible", false);
+			this.txtFile.setAttribute("visible", false);
 			
-			if ($debug) Debug.write("onCompleteByRemote ",tArrayValueObj);
-			this.parent.progressBar.setValue(100);
-			this.parent.upload.setAttribute('enabled', false);
-			this.parent.upload.setAttribute("visible",false);
-			this.parent.browse.setAttribute("visible",false);
-			this.parent.txtFile.setAttribute("visible",false);
-			
-			if (this.isOnlyZip) {
-				this.parent.close();
-				return;
-			}
-			
-			if (this.isOnlyXml) {
-				parent.returnObj.sendRefresh();
-				this.parent.close();
-				return;
-			}
-			
-			if (this.isOnlyProfile) {
-				parent.returnObj.sendRefresh();
-				this.parent.close();
-				return;
-			}
-			
-			if (parent._loadToWhiteboard.getValue()) {
-				
-				if ($debug) Debug.write(tArrayValueObj);
+			if (this._loadToWhiteboard.getValue()) {
 				if (tArrayValueObj.isPresentation) {
 					var url = this.formatURL(tArrayValueObj.fileHash);
 					
@@ -90,13 +70,12 @@
 							  tArrayValueObj.fileSystemName);
 				} else if (tArrayValueObj.isImage) {
 					canvas._drawarea.parent.parent.clearAreaAndAddImage(this.generateFileLink(tArrayValueObj.fileHash),0,0,
-					  canvas.getUrl() +'DownloadHandler',
-					  tArrayValueObj.fileHash,"videoconf1","/","files",hib.conferencedomain);
+							canvas.getUrl() +'DownloadHandler',
+							tArrayValueObj.fileHash,"videoconf1","/","files",hib.conferencedomain);
 				}
 			}
 			
 			if (parent.isdefaultreturn) {
-				
 				var tempSendArray = new Array ();
 				tempSendArray[0] = 'fileslist';
 				var nowTime = new Date();
@@ -117,7 +96,7 @@
 				parent.fileExplorerRef.onClose.sendEvent();
 			}
 			
-			parent.close();
+			close();
 		</method>
 
 		<method name="cancelHandler" args="evt">
@@ -149,17 +128,17 @@
 		</method>
 	
 		<method name="errorHandler" args="evt">
-			<![CDATA[
-				if ($debug) Debug.write('errorHandler invoked: ', evt);
-				new lz.errorPopup(canvas, {error: 'HTTP-ERROR: ' + evt});
-				this.close();
-		  		var now = new Date();
-		  		var datumsString = now.getHours() + ':' + now.getMinutes();
-		  		var msg = ['fileslist', now.getHours() + ':' + now.getMinutes(), 'newfile', canvas.currentuser];
-		  		//if ($debug) Debug.write("send: ", msg);
-		  		canvas.objMessage = msg;
-		  		canvas.thishib.sendMessage.doCall();
-			]]>
+		<![CDATA[
+			if ($debug) Debug.write('errorHandler invoked: ', evt);
+			new lz.errorPopup(canvas, {error: 'HTTP-ERROR: ' + evt});
+			this.close();
+	  		var now = new Date();
+	  		var datumsString = now.getHours() + ':' + now.getMinutes();
+	  		var msg = ['fileslist', now.getHours() + ':' + now.getMinutes(), 'newfile', canvas.currentuser];
+	  		//if ($debug) Debug.write("send: ", msg);
+	  		canvas.objMessage = msg;
+	  		canvas.thishib.sendMessage.doCall();
+		]]>
 		</method>
 	
 		<method name="selectHandler" args="evt">
@@ -204,20 +183,101 @@
 		<simpleLabelButton name="upload" x="10" y="120" labelid="593" width="250" enabled="false" height="20">
 			<handler name="onclick">
 			<![CDATA[
-				//canvas.currentFileExplorer.createFile(parent.fileReference.name, parent.fileReference.data, this, /*FIXME TODO fileObj*/);
-				//FIXME TODO canvas.currentFileExplorer
-				if ($debug) Debug.write("bytes???: ", parent.fileReference.data, canvas.currentFileExplorer.getSelectedFolder(), canvas.currentFileExplorer);
+				if ($debug) Debug.write("Upload of new file", parent.fileReference.name);
+				parent.progressBar.setAttribute('visible', false);
+				parent.upload.setAttribute('enabled', false);
+				parent.browse.setAttribute('enabled', false);
+				parent.progress2.startShowing();
+				var fold = canvas.currentFileExplorer.getSelectedFolder();
+				canvas.currentFileExplorer.createFile(
+						parent.fileReference.name
+						, parent.fileReference.data
+						, parent
+						, {
+							parentId: fold.fileId
+							, name: parent.fileReference.name
+							, roomId: fold.roomId
+							, ownerId: fold.ownerId
+							, type: 'Image' //dummy, will be rewritten
+						}
+					);
+				//if ($debug) Debug.write("bytes???: ", parent.fileReference.data, canvas.currentFileExplorer.getSelectedFolder(), canvas.currentFileExplorer);
 			]]>
 			</handler>
 		</simpleLabelButton>
 		
+		<method name="createFileComplete" args="event">
+			if ($debug) Debug.write("createFileComplete::File has been created!!!!");
+			//FIXME TODO remove remoteComplete!!!!!
+			
+			if ($debug) Debug.write("createFileComplete::0");
+			this.upload.setAttribute("visible", false);
+			this.browse.setAttribute("visible", false);
+			this.txtFile.setAttribute("visible", false);
+			
+			if ($debug) Debug.write("createFileComplete::1");
+			var o = JSON.parse(event.target.data);
+			var f = o.fileExplorerItemDTO;
+			if ($debug) Debug.write("createFileComplete::2", f);
+			if (this._loadToWhiteboard.getValue()) {
+				if ($debug) Debug.write("createFileComplete::3");
+				if (f.type == 'Presentation') {
+					var url = this.formatURL(f.hash);
+					
+					var uploadmoduleimgfolderVar = '/' + f.hash;
+					
+					if ($debug) Debug.write(url);
+					
+					if ($debug) Debug.write("createFileComplete::4");
+					canvas._drawarea.loadSWFPresentationSynced(url, f.hash + ".swf",
+							  "videoconf1",uploadmoduleimgfolderVar,"files",hib.conferencedomain,1,
+							  f.name);
+				} else if (f.type == 'Image') {
+					if ($debug) Debug.write("createFileComplete::5");
+					canvas._drawarea.parent.parent.clearAreaAndAddImage(this.generateFileLink(f.hash),0,0,
+							canvas.getUrl() +'DownloadHandler',
+							f.hash,"videoconf1","/","files",hib.conferencedomain);
+				}
+			}
+			
+			if ($debug) Debug.write("createFileComplete::6");
+			/*
+				FIXME TODO investigate this
+			if (parent.isdefaultreturn) {
+				var tempSendArray = new Array ();
+				tempSendArray[0] = 'fileslist';
+				var nowTime = new Date();
+				var datumsString = nowTime.getHours()+':'+nowTime.getMinutes();
+				tempSendArray[1] = datumsString;
+				//if ($debug) Debug.write("Setting Message");
+				tempSendArray[2] = 'newfile';
+				tempSendArray[3] = canvas.currentusename;
+				//if ($debug) Debug.write("send: ",tempSendArray);
+				canvas.objMessage = tempSendArray;
+				canvas.thishib.sendMessageAll.doCall();
+			} else {
+				//FIXME TODO refresh !!! parent.returnObj.sendRefresh();
+			}
+			*/
+			
+			if ($debug) Debug.write("createFileComplete::7");
+			this.close();
+			if ($debug) Debug.write("createFileComplete::8");
+		</method>
+	
+		<method name="createFileError" args="event">
+			if ($debug) Debug.error("Error while creating the file!!!!");
+			//FIXME TODO check this
+			new lz.converterPopup(canvas.main_content._content.inner, {error: event});
+		</method>
+		
 		<view name="progress2" x="10" y="158" width="250" visibility="hidden" height="10" bgcolor="#C6CEDF">
 			<attribute name="isStarted" value="false" type="boolean" />
 			<method name="startShowing">
 				if (!this.isStarted) {
 					this.isStarted = true;
 					this.status._hide.setAttribute('started', true);
-					this.setAttribute("visibility","visible");
+					this.setAttribute("visibility", "visible");
 				} else {
 					return;
 				}

Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx Mon Nov 30 11:06:09 2015
@@ -1472,24 +1472,10 @@
 	                } else if (value.message=='desktop'){
                         canvas._drawarea.incomingScreenSharing(value);
                     } else if (value.message=='library'){
-                        
                         if (value.action == 'import') {
-                            canvas.currentUploadWindow.onCompleteByRemote(value);
+                            canvas.currentUploadWindow.remoteComplete(value);
                             return;
                         }
-                        
-                        var error = false;
-                        for (var eg in value.error){
-                            if (value.error[eg].exitValue!=0){
-	                            if ($debug) Debug.write("eg ",eg," value ",value.error[eg]);
-	                            if ($debug) Debug.write("eg ",eg," value ",value.error[eg].exitValue);
-                                error = true;
-                            }
-                        }
-                        canvas.currentUploadWindow.onCompleteByRemote(value);
-                        if (value.hasError) {
-                            new lz.converterPopup(canvas.main_content._content.inner,{error:value.error});
-                        }
                     } else if (value.message=='startStreaming'){
                         canvas._drawarea.startStreaming(value);
                     } else if (value.message=='stopStreaming'){

Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx Mon Nov 30 11:06:09 2015
@@ -220,7 +220,7 @@
 				, successCallback: createFileComplete
 				});
 		}
-		var vars = UploadPostHelper.getPostData(bytes ? fileName : null, bytes, [
+		var vars = UploadPostHelper.getPostData(bytes == null ? null : fileName, bytes, [
 			{
 				name: 'file'
 				, type: 'application/json'

Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx Mon Nov 30 11:06:09 2015
@@ -81,7 +81,7 @@
 			public static function getPostData(fileName:String, byteArray:ByteArray, parameters:Array = null):ByteArray {
 				var i:int;
 				var bytes:String;
-	
+
 				var postData:ByteArray = new ByteArray();
 				postData.endian = Endian.BIG_ENDIAN;
 	
@@ -89,9 +89,6 @@
 				if(parameters == null) {
 					parameters = [];
 				}
-				if (fileName) {
-					parameters[parameters.length] = {name: 'Filename', value: fileName};
-				}
 	
 				//add parameters to postData
 				for (var j:int = 0; j < parameters.length; ++j) {
@@ -115,7 +112,7 @@
 					//add Filedata to postData
 					postData = BOUNDARY(postData);
 					postData = LINEBREAK(postData);
-					bytes = 'Content-Disposition: form-data; name="Filedata"; filename="';
+					bytes = 'Content-Disposition: form-data; name="stream"; filename="';
 					for (i = 0; i < bytes.length; ++i) {
 						postData.writeByte( bytes.charCodeAt(i) );
 					}
@@ -125,23 +122,7 @@
 					addContentType(postData, "application/octet-stream");
 					postData.writeBytes(byteArray, 0, byteArray.length);
 					postData = LINEBREAK(postData);
-		
-					//add upload filed to postData
-					postData = LINEBREAK(postData);
-					postData = BOUNDARY(postData);
-					postData = LINEBREAK(postData);
-					bytes = 'Content-Disposition: form-data; name="Upload"';
-					for (i = 0; i < bytes.length; ++i) {
-						postData.writeByte(bytes.charCodeAt(i));
-					}
-					postData = LINEBREAK(postData);
-					postData = LINEBREAK(postData);
-					bytes = 'Submit Query';
-					for (i = 0; i < bytes.length; ++i) {
-						postData.writeByte(bytes.charCodeAt(i));
-					}
-					postData = LINEBREAK(postData);
-		
+					
 					//closing boundary
 					postData = BOUNDARY(postData);
 					postData = DOUBLEDASH(postData);

Modified: openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java Mon Nov 30 11:06:09 2015
@@ -155,7 +155,7 @@ public class OmFileHelper {
 	}
 	
 	public static File getUploadTempDir() {
-		return new File(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
+		return getDir(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
 	}
 	
 	public static File getUploadTempFilesDir() {

Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml Mon Nov 30 11:06:09 2015
@@ -71,7 +71,7 @@
 		</init-param>
 		<init-param>
 			<param-name>ignorePaths</param-name>
-			<param-value>conf,css,default,docs,images,js,persistence,public,screensharing,streams,upload,uploadtemp,services,networktest.,file.,screen.,DownloadHandler</param-value>
+			<param-value>conf,css,default,docs,images,js,persistence,public,screensharing,streams,upload,uploadtemp,services,networktest.,screen.,DownloadHandler</param-value>
 		</init-param>
 	</filter>
 	<filter-mapping>

Modified: openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Mon Nov 30 11:06:09 2015
@@ -41,6 +41,7 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+import org.apache.openmeetings.core.data.file.FileProcessor;
 import org.apache.openmeetings.core.data.file.FileUtils;
 import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -55,6 +56,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -84,6 +86,8 @@ public class FileWebService {
 	private FileExplorerItemDao fileDao;
 	@Autowired
 	private FileUtils fileUtils;
+	@Autowired
+	private FileProcessor fileProcessor;
 
 	/**
 	 * deletes files or folders based on it id
@@ -173,7 +177,7 @@ public class FileWebService {
 	@Path("/")
 	public FileExplorerItemDTO add(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @Multipart(value = "file", type = MediaType.APPLICATION_JSON) @WebParam(name="file") FileExplorerItemDTO file
-			, @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream attach //TODO check this
+			, @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream stream
 			) throws ServiceException
 	{
 		try {
@@ -189,10 +193,17 @@ public class FileWebService {
 					|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/
 			if (AuthLevelUtil.hasUserLevel(rights))
 			{
-				//TODO permissions
-				//TODO attachment
 				f.setInsertedBy(userId);
-				fileDao.update(f);
+				//TODO permissions
+				if (stream != null) {
+					//TODO attachment
+					ConverterProcessResultList result = fileProcessor.processFile(userId, f, stream);
+					if (result.hasError()) {
+						throw new ServiceException(result.getLogMessage());
+					}
+				} else {
+					f = fileDao.update(f);
+				}
 				return new FileExplorerItemDTO(f);
 			} else {
 				throw new ServiceException("Insufficient permissins"); //TODO code -26

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java Mon Nov 30 11:06:09 2015
@@ -18,7 +18,10 @@
  */
 package org.apache.openmeetings.core.data.file;
 
+import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadTempFilesDir;
 import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
 import java.io.InputStream;
@@ -33,8 +36,6 @@ import org.apache.openmeetings.core.docu
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.StoredFile;
 import org.apache.openmeetings.util.crypt.MD5;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
@@ -44,8 +45,7 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class FileProcessor {
-
-	private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, OpenmeetingsVariables.webAppRootKey);
+	private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, webAppRootKey);
 
 	//Spring loaded Beans
 	@Autowired
@@ -59,124 +59,93 @@ public class FileProcessor {
 	@Autowired
 	private GeneratePDF generatePDF;
 
-	public ConverterProcessResultList processFile(Long userId, Long roomId, 
-			boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName, 
-			String externalFileId, String externalType) throws Exception {
-		
+	//FIXME TODO this method need to be refactored to throw exceptions
+	public ConverterProcessResultList processFile(Long userId, FileExplorerItem f, InputStream is) throws Exception {
 		ConverterProcessResultList returnError = new ConverterProcessResultList();
 		
-		int dotidx = fileSystemName.lastIndexOf('.');
+		int dotidx = f.getName().lastIndexOf('.');
 
-        // Generate a random string to prevent any problems with
-        // foreign characters and duplicates
-        Date d = new Date();
-        String newFileSystemName = MD5.do_checksum("FILE_" + d.getTime());
-
-        String newFileExtDot = fileSystemName.substring(dotidx, fileSystemName.length()).toLowerCase();
-        String newFileExt = newFileExtDot.substring(1);
-        log.debug("newFileExt: " + newFileExt);
-        StoredFile storedFile = new StoredFile(newFileSystemName, newFileExt); 
-
-        // Check variable to see if this file is a presentation
-        // check if this is a a file that can be converted by
-        // openoffice-service
-        boolean canBeConverted = storedFile.isConvertable();
-        boolean isPdf = storedFile.isPdf();
-        boolean isImage = storedFile.isImage();
-        boolean isChart = storedFile.isChart();
-        boolean isAsIs = storedFile.isAsIs();
-        boolean isVideo = storedFile.isVideo();
-
-        log.debug("isAsIs: " + isAsIs);
-
-        // add outputfolders for profiles
-        // if it is a presenation it will be copied to another place
-        if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
-        	returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
-            return returnError;
-        }
-
-        File completeName = new File(
-        	isAsIs ? OmFileHelper.getUploadFilesDir() : OmFileHelper.getUploadTempFilesDir()
-        	, newFileSystemName + newFileExtDot);
-        log.debug("writing file to: " + completeName);
-        FileHelper.copy(is, completeName);
-        is.close();
-
-        Long ownerId = null;
-        if (parentFolderId == -2) {
-            parentFolderId = 0L;
-            ownerId = userId;
-        }
-        if (isOwner) {
-            ownerId = userId;
-        }
-
-        String fileHashName = newFileSystemName + newFileExtDot;
-        Boolean isPresentation = false;
-        if (canBeConverted || isPdf) {
-            // In case of a presentation the hash is a folder-name
-            fileHashName = newFileSystemName;
-            isPresentation = true;
-        }
-        if (isImage) {
-            fileHashName = newFileSystemName + ".jpg";
-        }
-        if (isVideo) {
-            fileHashName = newFileSystemName + ".flv";
-        }
-
-        FileExplorerItem fileExplorerItem = fileExplorerItemDao.get(parentFolderId);
-
-        if (fileExplorerItem != null) {
-            if (Type.Folder != fileExplorerItem.getType()) {
-                parentFolderId = 0L;
-            }
-        }
-
-        Long fileId = fileExplorerItemDao.add(
-                fileSystemName, fileHashName, // The Hashname of the file
-                parentFolderId, ownerId, roomId, userId, false, // isFolder
-                isImage, isPresentation, "", false, isChart, 
-                externalFileId, externalType);
-        log.debug("fileId: " + fileId);
-        
-        
-        
-        log.debug("canBeConverted: " + canBeConverted);
-        if (canBeConverted) {
-            // convert to pdf, thumbs, swf and xml-description
-            returnError = generatePDF.convertPDF(newFileSystemName, "files", true, completeName);
-        } else if (isPdf) {
-            // convert to thumbs, swf and xml-description
-            returnError = generatePDF.convertPDF(newFileSystemName, "files", false, completeName);
-        } else if (isChart) {
-            log.debug("uploaded chart file");
-        } else if (isImage && !isAsIs) {
-            // convert it to JPG
-            log.debug("##### convert it to JPG: ");
-            returnError = generateImage.convertImage(newFileSystemName, newFileExtDot, "files",
-                    newFileSystemName, false);
-        } else if (isAsIs) {
-        	ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
-            returnError.addItem("processThumb", processThumb);
-        } else if (isVideo) {
-        	List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(fileId, completeName.getCanonicalPath());
-        	
-        	int i=0;
-        	for (ConverterProcessResult returnMap : returnList) {
-        		returnError.addItem("processFLV "+i, returnMap);
-        	}
-        	
-        }
-        
-        // has to happen at the end, otherwise it will be overwritten
-        //cause the variable is new initialized
-        returnError.setCompleteName(completeName.getName());
-        returnError.setFileExplorerItemId(fileId);
-        
-		return returnError;
+		// Generate a random string to prevent any problems with
+		// foreign characters and duplicates
+		String newName = MD5.do_checksum("FILE_" + new Date().getTime());
+
+		String extDot = f.getName().substring(dotidx, f.getName().length()).toLowerCase();
+		String ext = extDot.substring(1);
+		log.debug("file extension: " + ext);
+		StoredFile storedFile = new StoredFile(newName, ext); 
+
+		// Check variable to see if this file is a presentation
+		// check if this is a a file that can be converted by
+		// openoffice-service
+		boolean canBeConverted = storedFile.isConvertable();
+		boolean isPdf = storedFile.isPdf();
+		boolean isImage = storedFile.isImage();
+		boolean isChart = storedFile.isChart();
+		boolean isAsIs = storedFile.isAsIs();
+		boolean isVideo = storedFile.isVideo();
+
+		log.debug("isAsIs: " + isAsIs);
+
+		// add outputfolders for profiles
+		// if it is a presenation it will be copied to another place
+		if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
+			returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
+			return returnError;
+		}
+
+		File completeName = new File(isAsIs ? getUploadFilesDir() : getUploadTempFilesDir(), newName + extDot);
+		log.debug("writing file to: " + completeName);
+		FileHelper.copy(is, completeName);
+		is.close();
+
+		String hash = newName + extDot;
+		if (isImage) {
+			hash = newName + ".jpg";
+			f.setType(Type.Image);
+		} else if (isVideo) {
+			hash = newName + ".flv";
+			f.setType(Type.Video);
+		} else if (isChart) {
+			f.setType(Type.PollChart);
+		} else if (isPdf || canBeConverted) {
+			hash = newName;
+			f.setType(Type.Presentation);
+		}
+		f.setHash(hash);
+
+		f = fileExplorerItemDao.update(f);
+		log.debug("fileId: " + f.getId());
 		
+		log.debug("canBeConverted: " + canBeConverted);
+		if (canBeConverted) {
+			// convert to pdf, thumbs, swf and xml-description
+			returnError = generatePDF.convertPDF(newName, "files", true, completeName);
+		} else if (isPdf) {
+			// convert to thumbs, swf and xml-description
+			returnError = generatePDF.convertPDF(newName, "files", false, completeName);
+		} else if (isChart) {
+			log.debug("uploaded chart file");
+		} else if (isImage && !isAsIs) {
+			// convert it to JPG
+			log.debug("##### convert it to JPG: ");
+			returnError = generateImage.convertImage(newName, extDot, "files", newName, false);
+		} else if (isAsIs) {
+			ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
+			returnError.addItem("processThumb", processThumb);
+		} else if (isVideo) {
+			List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(f.getId(), completeName.getCanonicalPath());
+			
+			int i = 0;
+			for (ConverterProcessResult returnMap : returnList) {
+				returnError.addItem("processFLV " + i, returnMap);
+			}
+		}
+		
+		// has to happen at the end, otherwise it will be overwritten
+		//cause the variable is new initialized
+		returnError.setCompleteName(completeName.getName());
+		returnError.setFileExplorerItemId(f.getId());
+		
+		return returnError;
 	}
-	
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Mon Nov 30 11:06:09 2015
@@ -61,7 +61,6 @@ import org.apache.openmeetings.util.Init
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.Version;
-import org.apache.openmeetings.util.process.UploadCompleteMessage;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.adapter.ApplicationAdapter;
 import org.red5.server.api.IClient;
@@ -1899,24 +1898,6 @@ public class ScopeApplicationAdapter ext
 		return 1;
 	}
 	
-	public synchronized void sendUploadCompletMessageByPublicSID(UploadCompleteMessage message, String publicSID) {
-		try {
-			//if the upload is locally, just proceed to the normal function
-			//Search for RoomClient on current server (serverId == null means it will look on the master for the RoomClient)
-			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
-			
-			if (currentClient != null) {
-				sendMessageWithClientByPublicSID(message, publicSID);
-			} else {
-				throw new Exception("Could not Find RoomClient on List publicSID: "+ publicSID);
-			}
-			
-		} catch (Exception err) {
-			log.error("[sendUploadCompletMessageByPublicSID] ", err);
-		}
-	}
-	
-
 	public synchronized void sendMessageWithClientByPublicSID(Object message, String publicSID) {
 		try {
 			// ApplicationContext appCtx = getContext().getApplicationContext();

Modified: openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java Mon Nov 30 11:06:09 2015
@@ -155,7 +155,7 @@ public class OmFileHelper {
 	}
 	
 	public static File getUploadTempDir() {
-		return new File(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
+		return getDir(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
 	}
 	
 	public static File getUploadTempFilesDir() {

Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Mon Nov 30 11:06:09 2015
@@ -41,6 +41,7 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+import org.apache.openmeetings.core.data.file.FileProcessor;
 import org.apache.openmeetings.core.data.file.FileUtils;
 import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -55,6 +56,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -84,6 +86,8 @@ public class FileWebService {
 	private FileExplorerItemDao fileDao;
 	@Autowired
 	private FileUtils fileUtils;
+	@Autowired
+	private FileProcessor fileProcessor;
 
 	/**
 	 * deletes files or folders based on it id
@@ -173,7 +177,7 @@ public class FileWebService {
 	@Path("/")
 	public FileExplorerItemDTO add(@WebParam(name="sid") @QueryParam("sid") String sid
 			, @Multipart(value = "file", type = MediaType.APPLICATION_JSON) @WebParam(name="file") FileExplorerItemDTO file
-			, @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream attach //TODO check this
+			, @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream stream
 			) throws ServiceException
 	{
 		try {
@@ -189,10 +193,17 @@ public class FileWebService {
 					|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/
 			if (AuthLevelUtil.hasUserLevel(rights))
 			{
-				//TODO permissions
-				//TODO attachment
 				f.setInsertedBy(userId);
-				fileDao.update(f);
+				//TODO permissions
+				if (stream != null) {
+					//TODO attachment
+					ConverterProcessResultList result = fileProcessor.processFile(userId, f, stream);
+					if (result.hasError()) {
+						throw new ServiceException(result.getLogMessage());
+					}
+				} else {
+					f = fileDao.update(f);
+				}
 				return new FileExplorerItemDTO(f);
 			} else {
 				throw new ServiceException("Insufficient permissins"); //TODO code -26