public static boolean addResourceToGuvnor ( String repLoc , String targetLoc , IFile selectedFile ) { boolean res = false ; try { String fullPath = targetLoc + selectedFile . getName ( ) ; IWebDavClient client = WebDavServerCache . getWebDavClient ( repLoc ) ; if ( client == null ) { client = WebDavClientFactory . createClient ( new URL ( repLoc ) ) ; WebDavServerCache . cacheWebDavClient ( repLoc , client ) ; } try { // res = client.createResource(fullPath, selectedFile.getContents(), false); // Hack: When creating a file, if the actual contents are passed first, // the client hangs for about 20 seconds when closing the InputStream. // Don't know why... // But, if the file is created with empty contents, and then the contents // set, the operation is fast (less than a couple of seconds) res = client . createResource ( fullPath , new ByteArrayInputStream ( new byte [ 0 ] ) , false ) ; if ( res ) { client . putResource ( fullPath , selectedFile . getContents ( ) ) ; } } catch ( WebDavException wde ) { if ( wde . getErrorCode ( ) != IResponse . SC_UNAUTHORIZED ) { // If not an authentication failure, we don't know what to do with it throw wde ; } boolean retry = PlatformUtils . getInstance ( ) . authenticateForServer ( repLoc , client ) ; if ( retry ) { // res = client.createResource(fullPath, selectedFile.getContents(), false); // See Hack note immediately above... res = client . createResource ( fullPath , new ByteArrayInputStream ( new byte [ 0 ] ) , false ) ; if ( res ) { client . putResource ( fullPath , selectedFile . getContents ( ) ) ; } } } if ( res ) { GuvnorMetadataUtils . markCurrentGuvnorResource ( selectedFile ) ; ResourceProperties resProps = client . queryProperties ( fullPath ) ; GuvnorMetadataProps mdProps = new GuvnorMetadataProps ( selectedFile . getName ( ) , repLoc , fullPath , resProps . getLastModifiedDate ( ) , resProps . getRevision ( ) ) ; GuvnorMetadataUtils . setGuvnorMetadataProps ( selectedFile . getFullPath ( ) , mdProps ) ; } } catch ( Exception e ) { Activator . getDefault ( ) . displayError ( IStatus . ERROR , e . getMessage ( ) , e , true ) ; } return res ; }
Adds a resource to Guvnor .