[jboss-svn-commits] JBL Code SVN: r21012 - in labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools: src/org/guvnor/tools and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jul 11 17:37:37 EDT 2008


Author: john.graham at jboss.org
Date: 2008-07-11 17:37:37 -0400 (Fri, 11 Jul 2008)
New Revision: 21012

Modified:
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavException.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java
   labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java
Log:
Refactor to use Guvnor revision numbers and date/time stamps

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF	2008-07-11 21:37:37 UTC (rev 21012)
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.guvnor.tools;singleton:=true
-Bundle-Version: 0.6.0.200807101720
+Bundle-Version: 0.6.0.200807111736
 Bundle-Activator: org.guvnor.tools.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/GuvnorDecorator.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -31,7 +31,7 @@
 				}
 				GuvnorMetadataProps props = GuvnorMetadataUtils.getGuvnorMetadata(resource);
 				if (props.getVersion() != null) {
-					decoration.addSuffix(" " + props.getVersion());
+					decoration.addSuffix(" " + props.getRevision() + ", " + props.getVersion());
 				}
 			}
 		} catch (Exception e) {

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/ResourceChangeListener.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -6,8 +6,13 @@
 import org.eclipse.core.resources.IResourceChangeListener;
 import org.eclipse.core.resources.IResourceDelta;
 import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
 import org.guvnor.tools.utils.GuvnorMetadataUtils;
 import org.guvnor.tools.utils.PlatformUtils;
 
@@ -15,9 +20,6 @@
 
 	public void resourceChanged(IResourceChangeEvent event) {
 		try {
-			//TODO: Need to handle delete and move events as well
-			// For delete, we just remove any corresponding guvnor metadata
-			// Not clear what to do about moves...
 			event.getDelta().accept(new IResourceDeltaVisitor() {
 				public boolean visit(IResourceDelta delta) throws CoreException {
 					try {
@@ -27,18 +29,25 @@
 						if (delta.getKind() == IResourceDelta.CHANGED) {
 							handleResourceChanged(delta.getResource());
 						}
+						if (delta.getKind() == IResourceDelta.REMOVED) {
+							handleResourceDelete(delta.getResource());
+						}
+						if (delta.getMovedFromPath() != null) {
+							handleResourceMoved(delta.getResource(), delta.getMovedFromPath());
+						}
 					} catch (Exception e) {
 						Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
 					}
 					return true;
 				}
 			});
-		} catch (CoreException e) {
+		} catch (Exception e) {
 			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
 		}
 	}
 	
 	private void handleResourceAdded(IResource resource) throws Exception {
+//System.out.println("Added: " + resource.getFullPath().toString());
 		if (GuvnorMetadataUtils.isGuvnorMetadata(resource)) {
 			// Look for the corresponding file
 			IFile target = GuvnorMetadataUtils.getGuvnorControlledResource(resource);
@@ -59,4 +68,44 @@
 			PlatformUtils.updateDecoration();
 		}
 	}
+	
+	private void handleResourceDelete(IResource resource) throws CoreException {
+//System.out.println("Deleted: " + resource.getFullPath().toString());
+		final IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata(resource);
+		if (mdFile == null) {
+			return;
+		}
+		final IWorkspace ws = mdFile.getWorkspace();
+		Display display = PlatformUI.getWorkbench().getDisplay();
+		display.syncExec(new Runnable() {
+			public void run() {
+				try {
+					ws.delete(new IResource[] { mdFile }, true, null);
+				} catch (CoreException e) {
+					Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+				}
+			}
+			
+		});
+	}
+	
+	private void handleResourceMoved(final IResource resource, IPath fromPath) throws Exception {
+//System.out.println("Moved: " + resource.getFullPath().toString() + " from " + fromPath.toString());
+//System.out.println(GuvnorMetadataUtils.isGuvnorResourceCurrent(resource));
+		IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata(fromPath);
+		if (mdFile == null) {
+			return;
+		}
+		final GuvnorMetadataProps mdProps = GuvnorMetadataUtils.loadGuvnorMetadata(mdFile);
+		Display display = PlatformUI.getWorkbench().getDisplay();
+		display.syncExec(new Runnable() {
+			public void run() {
+				try {
+					GuvnorMetadataUtils.setGuvnorMetadataProps(resource.getFullPath(), mdProps);
+				} catch (Exception e) {
+					Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+				}
+			}
+		});
+	}
 }

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -55,7 +55,6 @@
 			}
 			try {
 				client.putResource(props.getFullpath(), selectedFile.getContents());
-				client.closeResponse();
 			} catch (WebDavException wde) {
 				if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
 					// If not an authentication failure, we don't know what to do with it
@@ -65,14 +64,13 @@
 									authenticateForServer(props.getRepository(), client); 
 				if (retry) {
 					client.putResource(props.getFullpath(), selectedFile.getContents());
-					client.closeResponse();
 				}
 			}
 			GuvnorMetadataUtils.markCurrentGuvnorResource(selectedFile);
 			ResourceProperties resProps = client.queryProperties(props.getFullpath());
-			client.closeResponse();
 			GuvnorMetadataProps mdProps = GuvnorMetadataUtils.getGuvnorMetadata(selectedFile);
 			mdProps.setVersion(resProps.getLastModifiedDate());
+			mdProps.setRevision(resProps.getRevision());
 			GuvnorMetadataUtils.setGuvnorMetadataProps(selectedFile.getFullPath(), mdProps);
 			PlatformUtils.updateDecoration();
 		} catch (Exception e) {

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/ShowHistoryAction.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -1,5 +1,6 @@
 package org.guvnor.tools.actions;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.Properties;
@@ -62,6 +63,7 @@
 			fullPath = props.getFullpath();
 		}
 		
+		IResponse response = null;
 		try {
 			IWebDavClient client = WebDavServerCache.getWebDavClient(repositoryLoc);
 			if (client == null) {
@@ -70,7 +72,8 @@
 			}
 			InputStream ins = null;
 			try {
-				ins = client.getResourceVersions(fullPath);
+				response = client.getResourceVersions(fullPath);
+				ins = response.getInputStream();
 			} catch (WebDavException wde) {
 				if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
 					// If not an authentication failure, we don't know what to do with it
@@ -79,7 +82,8 @@
 				boolean retry = PlatformUtils.getInstance().
 									authenticateForServer(repositoryLoc, client); 
 				if (retry) {
-					ins = client.getResourceVersions(fullPath);
+					response = client.getResourceVersions(fullPath);
+					ins = response.getInputStream();
 				}
 			}
 			if (ins != null) {
@@ -92,6 +96,14 @@
 			}
 		} catch (Exception e) {
 			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		} finally {
+			if (response != null) {
+				try {
+					response.close();
+				} catch (IOException ioe) {
+					Activator.getDefault().writeLog(IStatus.ERROR, ioe.getMessage(), ioe);
+				}
+			}
 		}
 	}
 

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/SwitchVersionAction.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -1,5 +1,6 @@
 package org.guvnor.tools.actions;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.Properties;
@@ -19,7 +20,6 @@
 import org.guvnor.tools.utils.PlatformUtils;
 import org.guvnor.tools.utils.VersionChooserDialog;
 import org.guvnor.tools.utils.webdav.IWebDavClient;
-import org.guvnor.tools.utils.webdav.ResourceProperties;
 import org.guvnor.tools.utils.webdav.WebDavClientFactory;
 import org.guvnor.tools.utils.webdav.WebDavException;
 import org.guvnor.tools.utils.webdav.WebDavServerCache;
@@ -62,30 +62,39 @@
 					                selectedFile.getName(), 
 					                getVersionEntries());
 		if (dialog.open() == VersionChooserDialog.OK) {
-			updateSelectedFile(dialog.getSelectedEntry().getRevision());
+			updateSelectedFile(dialog.getSelectedEntry());
 		}
  	}
 	
-	private void updateSelectedFile(String version) {
+	private void updateSelectedFile(ResourceHistoryEntry verInfo) {
+		IResponse response = null;
 		try {
-			InputStream ins = client.getResourceVersionInputStream(props.getFullpath(), version);
+			response = client.getResourceVersionInputStream(props.getFullpath(), verInfo.getRevision());
+			InputStream ins = response.getInputStream();
 			if (ins != null) {
 				selectedFile.setContents(ins, true, true, null);
-				client.closeResponse();
 				GuvnorMetadataUtils.markCurrentGuvnorResource(selectedFile);
-				ResourceProperties resProps = client.queryProperties(props.getFullpath());
-				client.closeResponse();
 				GuvnorMetadataProps mdProps = GuvnorMetadataUtils.getGuvnorMetadata(selectedFile);
-				mdProps.setVersion(resProps.getLastModifiedDate());
+				mdProps.setVersion(verInfo.getDate());
+				mdProps.setRevision(verInfo.getRevision());
 				GuvnorMetadataUtils.setGuvnorMetadataProps(selectedFile.getFullPath(), mdProps);
 				PlatformUtils.updateDecoration();
 			}
 		} catch (Exception e) {
 			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		} finally {
+			if (response != null) {
+				try {
+					response.close();
+				} catch (IOException ioe) {
+					Activator.getDefault().writeLog(IStatus.ERROR, ioe.getMessage(), ioe);
+				}
+			}
 		}
 	}
 	private ResourceHistoryEntry[] getVersionEntries() {
 		ResourceHistoryEntry[] entries = new ResourceHistoryEntry[0];
+		IResponse response = null;
 		try {
 			client = WebDavServerCache.getWebDavClient(props.getRepository());
 			if (client == null) {
@@ -94,7 +103,8 @@
 			}
 			InputStream ins = null;
 			try {
-				ins = client.getResourceVersions(props.getFullpath());
+				response = client.getResourceVersions(props.getFullpath());
+				ins = response.getInputStream();
 			} catch (WebDavException wde) {
 				if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
 					// If not an authentication failure, we don't know what to do with it
@@ -103,7 +113,8 @@
 				boolean retry = PlatformUtils.getInstance().
 									authenticateForServer(props.getRepository(), client); 
 				if (retry) {
-					ins = client.getResourceVersions(props.getFullpath());
+					response = client.getResourceVersions(props.getFullpath());
+					ins = response.getInputStream();
 				}
 			}
 			if (ins != null) {
@@ -113,6 +124,14 @@
 			}
 		} catch (Exception e) {
 			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		} finally {
+			if (response != null) {
+				try {
+					response.close();
+				} catch (IOException ioe) {
+					Activator.getDefault().writeLog(IStatus.ERROR, ioe.getMessage(), ioe);
+				}
+			}
 		}
 		return entries;
 	}

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -1,5 +1,6 @@
 package org.guvnor.tools.actions;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 
@@ -49,6 +50,7 @@
 		   || props == null) {
 			return;
 		}
+		IResponse response = null;
 		try {
 			IWebDavClient client = WebDavServerCache.getWebDavClient(props.getRepository());
 			if (client == null) {
@@ -57,7 +59,8 @@
 			}
 			InputStream ins = null;
 			try {
-				ins = client.getResourceInputStream(props.getFullpath());
+				response = client.getResourceInputStream(props.getFullpath()); 
+				ins = response.getInputStream();
 			} catch (WebDavException wde) {
 				if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
 					// If not an authentication failure, we don't know what to do with it
@@ -66,22 +69,30 @@
 				boolean retry = PlatformUtils.getInstance().
 									authenticateForServer(props.getRepository(), client); 
 				if (retry) {
-					ins = client.getResourceInputStream(props.getFullpath());
+					response = client.getResourceInputStream(props.getFullpath());
+					ins = response.getInputStream();
 				}
 			}
 			if (ins != null) {
 				selectedFile.setContents(ins, true, true, null);
-				client.closeResponse();
 				GuvnorMetadataUtils.markCurrentGuvnorResource(selectedFile);
 				ResourceProperties resProps = client.queryProperties(props.getFullpath());
-				client.closeResponse();
 				GuvnorMetadataProps mdProps = GuvnorMetadataUtils.getGuvnorMetadata(selectedFile);
 				mdProps.setVersion(resProps.getLastModifiedDate());
+				mdProps.setRevision(resProps.getRevision());
 				GuvnorMetadataUtils.setGuvnorMetadataProps(selectedFile.getFullPath(), mdProps);
 				PlatformUtils.updateDecoration();
 			}
 		} catch (Exception e) {
 			Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+		} finally {
+			if (response != null) {
+				try {
+					response.close();
+				} catch (IOException ioe) {
+					Activator.getDefault().writeLog(IStatus.ERROR, ioe.getMessage(), ioe);
+				}
+			}
 		}
 	}
 

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/GuvnorWorkspaceFilePage.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -46,24 +46,25 @@
 	}
 	
 	private void addGuvnorProperties(Composite composite, GuvnorMetadataProps props) {
-		new Label(composite, SWT.NONE).setText("Local name:");
+			
+		new Label(composite, SWT.NONE).setText("Repository:");
 		Label l = new Label(composite, SWT.NONE);
-		String val = props.getFilename() != null?props.getFilename():"";
+		String val = props.getRepository() != null?props.getRepository():"";
 		l.setText(val);
 		
-		new Label(composite, SWT.NONE).setText("Repository:");
+		new Label(composite, SWT.NONE).setText("Path:");
 		l = new Label(composite, SWT.NONE);
-		val = props.getRepository() != null?props.getRepository():"";
-		l.setText(val);
+		String fullpath = props.getFullpath() != null?props.getFullpath().substring(val.length()):"";
+		l.setText(fullpath);
 		
-		new Label(composite, SWT.NONE).setText("Repository Path:");
+		new Label(composite, SWT.NONE).setText("Version:");
 		l = new Label(composite, SWT.NONE);
-		val = props.getFullpath() != null?props.getFullpath():"";
+		val = props.getVersion() != null?props.getVersion():"";
 		l.setText(val);
 		
-		new Label(composite, SWT.NONE).setText("Repository Version:");
+		new Label(composite, SWT.NONE).setText("Revision:");
 		l = new Label(composite, SWT.NONE);
-		val = props.getVersion() != null?props.getVersion():"";
+		val = props.getVersion() != null?props.getRevision():"";
 		l.setText(val);
 	}
 

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/properties/RepositoryElementPropsDialog.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -42,6 +42,8 @@
 	private String password;
 	private boolean saveInfo;
 	
+	private Label warningLabel;
+	
 	public RepositoryElementPropsDialog(Shell parentShell, TreeObject node) {
 		super(parentShell);
 		super.setShellStyle(getShellStyle() | SWT.RESIZE);
@@ -117,6 +119,7 @@
 
 			public void widgetSelected(SelectionEvent e) {
 				saveInfo = cbSavePassword.getSelection();
+				warningLabel.setEnabled(saveInfo);
 			}
 			
 		});
@@ -124,11 +127,13 @@
 		new Label(pwgroup, SWT.NONE).setText("Save user name and password");
 		
 		new Label(composite, SWT.NONE).setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		new Label(composite, SWT.WRAP).setText("NOTE: Saved passwords are stored on your computer in a file that is difficult, but not impossible, for an intruder to read.");
+		warningLabel = new Label(composite, SWT.WRAP);
+		warningLabel.setText("NOTE: Saved passwords are stored on your computer in a file that is difficult, but not impossible, for an intruder to read.");
 		
 		populateSecuritySettings();
 		if (unField.getText().trim().length() == 0) {
 			cbSavePassword.setSelection(false);
+			warningLabel.setEnabled(false);
 		} else {
 			// WTF? setSelection(true) is not picked up by the control, so we have to set 
 			// this initial value explicitly. After that toggle seems to work...

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataProps.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -1,5 +1,8 @@
 package org.guvnor.tools.utils;
-
+/**
+ * Model for properties associated with Guvnor resources.
+ * @author jgraham
+ */
 public class GuvnorMetadataProps {
 	private String filename;
 	private String repository;
@@ -8,12 +11,12 @@
 	private String revision;
 	
 	public GuvnorMetadataProps(String filename, String repository,
-			                  String fullpath, String version) {
+			                  String fullpath, String version, String revision) {
 		this.filename = filename;
 		this.repository = repository;
 		this.fullpath = fullpath;
 		this.version = version;
-//		this.revision = revision;
+		this.revision = revision;
 	}
 	public String getFilename() {
 		return filename;

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/GuvnorMetadataUtils.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -28,7 +28,7 @@
 	/**
 	 * Finds the local Guvnor metadata file associated with a given resource.
 	 * @param resource The resource to locate metadata for.
-	 * @return The metadata for the given resource, null if metadata is not found.
+	 * @return The metadata file for the given resource, null if metadata is not found.
 	 */
 	public static IFile findGuvnorMetadata(IResource resource) {
 		IFile res = null;
@@ -43,23 +43,47 @@
 		return res;
 	}
 	
+	/**
+	 * Finds the local Guvnor metadata file associated with a given resource.
+	 * @param resource The resource path to locate metadata for.
+	 * @return The metadata file for the given resource, null if metadata is not found.
+	 */
+	public static IFile findGuvnorMetadata(IPath resource) {
+		IFile res = null;
+		IPath dir = resource.removeLastSegments(1);
+		IPath mdpath = dir.append(".guvnorinfo").append("." + resource.lastSegment());
+		IResource mdResource = Activator.getDefault().getWorkspace().
+											getRoot().findMember(mdpath);
+		if (mdResource != null 
+		   && mdResource.exists() 
+		   && mdResource instanceof IFile) {
+			res = (IFile)mdResource;
+		}
+		return res;
+	}
+	
 	public static boolean isGuvnorControlledResource(IResource resource) {
 		return findGuvnorMetadata(resource) != null;
 	}
 	
-	public static GuvnorMetadataProps getGuvnorMetadata(IResource resource) throws Exception {
-		IFile mdFile = findGuvnorMetadata(resource);
-		if (mdFile == null) {
-			return null;
-		}
+	public static GuvnorMetadataProps loadGuvnorMetadata(IFile mdFile) throws Exception {
 		Properties props = new Properties();
 		props.load(mdFile.getContents());
 		return new GuvnorMetadataProps(props.getProperty("filename"),
 				                       props.getProperty("repository"),
 				                       props.getProperty("fullpath"),
-				                       props.getProperty("lastmodified"));
+				                       props.getProperty("lastmodified"),
+				                       props.getProperty("revision"));
 	}
 	
+	public static GuvnorMetadataProps getGuvnorMetadata(IResource resource) throws Exception {
+		IFile mdFile = findGuvnorMetadata(resource);
+		if (mdFile == null) {
+			return null;
+		}
+		return loadGuvnorMetadata(mdFile);
+	}
+	
 	public static void writeGuvnorMetadataProps(File mdFile, 
 			                                 GuvnorMetadataProps mdProps) throws Exception {
 		FileOutputStream fos = new FileOutputStream(mdFile);
@@ -68,6 +92,7 @@
 		props.put("fullpath", 		mdProps.getFullpath());
 		props.put("filename", 		mdProps.getFilename());
 		props.put("lastmodified", 	mdProps.getVersion());
+		props.put("revision",		mdProps.getRevision());
 		props.store(fos, null);
 		fos.flush();
 		fos.close();	
@@ -101,6 +126,9 @@
 		if (mdProps.getVersion() != null) {
 			props.put("lastmodified", mdProps.getVersion());
 		}
+		if (mdProps.getRevision() != null) {
+			props.put("revision", mdProps.getRevision());
+		}
 		OutputStream os = new FileOutputStream(
 							new File(mdFile.getLocation().toOSString()));
 		props.store(os, null);

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -4,6 +4,7 @@
 import java.util.Map;
 
 import org.eclipse.webdav.IContext;
+import org.eclipse.webdav.IResponse;
 import org.eclipse.webdav.client.RemoteDAVClient;
 import org.eclipse.webdav.http.client.IAuthenticator;
 
@@ -68,19 +69,19 @@
 	/**
 	 * Get the <code>InputStream</code> of a resource from Guvnor through WebDav.
 	 * @param resource The address of the resource
-	 * @return An code>InputStream</code> for the resource
+	 * @return The <code>IResponse</code> object, which the client <b>must</b> close
 	 * @throws Exception Various WebDav errors can occur (See IResponse for details)
 	 */
-	public InputStream getResourceInputStream(String resource) throws Exception;
+	public IResponse getResourceInputStream(String resource) throws Exception;
 	
 	/**
 	 * Get the <code>InputStream</code> for a specific version of a resource from Guvnor through WebDav.
 	 * @param resource The address of the resource
 	 * @param version The version number of the resource
-	 * @return An code>InputStream</code> for the resource
+	 * @return The <code>IResponse</code> object, which the client <b>must</b> close
 	 * @throws Exception Various WebDav errors can occur (See IResponse for details)
 	 */
-	public InputStream getResourceVersionInputStream(String resource, String version) throws Exception;
+	public IResponse getResourceVersionInputStream(String resource, String version) throws Exception;
 	
 	/**
 	 * Same as createResource(resource, is, true)
@@ -108,14 +109,8 @@
 	/**
 	 * Gets all the version information for a resource
 	 * @param resource The file to get version information about
-	 * @return A stream to the version properties
+	 * @return The <code>IResponse</code> object, which the client <b>must</b> close
 	 * @throws Exception Various WebDav errors can occur (See IResponse for details)
 	 */
-	public InputStream getResourceVersions(String resource) throws Exception;
-	
-	/**
-	 * <b>Must</b> be called after server operation methods to ensure
-	 * resource clean up.
-	 */
-	public void closeResponse() throws Exception;
+	public IResponse getResourceVersions(String resource) throws Exception;
 }

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -7,6 +7,8 @@
 import java.util.Properties;
 import java.util.StringTokenizer;
 
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.webdav.IContext;
 import org.eclipse.webdav.ILocator;
 import org.eclipse.webdav.IResponse;
@@ -14,6 +16,7 @@
 import org.eclipse.webdav.client.WebDAVFactory;
 import org.eclipse.webdav.http.client.HttpClient;
 import org.eclipse.webdav.http.client.IAuthenticator;
+import org.guvnor.tools.Activator;
 
 /**
  * WebDav wrapper client.
@@ -25,17 +28,14 @@
 	private RemoteDAVClient client;
 	
 	private WebDavAuthenticator platformAuthenticator;
-	private HttpClient httpClient;
 	
-	private IResponse response;
-	
 	/**
 	 * Ctor for this wrapper WebDav client.
 	 * @param serverUrl The WebDav repository location (server)
 	 */
 	/** package */ WebDavClient(URL serverUrl) {
+		HttpClient httpClient = new HttpClient();
 		platformAuthenticator =  new WebDavAuthenticator(serverUrl);
-		httpClient = new HttpClient();
 		httpClient.setAuthenticator(platformAuthenticator);
 		client = new RemoteDAVClient(new WebDAVFactory(), httpClient);
 	}
@@ -46,9 +46,9 @@
 	 */
 	public void setSessionAuthenticator(IAuthenticator sessionAuthen) {
 		if (sessionAuthen != null) {
-			httpClient.setAuthenticator(sessionAuthen);
+			client.getHttpClient().setAuthenticator(sessionAuthen);
 		} else {
-			httpClient.setAuthenticator(platformAuthenticator);
+			client.getHttpClient().setAuthenticator(platformAuthenticator);
 		}
 	}
 	
@@ -76,26 +76,36 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#listDirectory(java.lang.String)
 	 */
 	public Map<String, ResourceProperties> listDirectory(String path) throws Exception {
-		IContext context = createContext();
-		context.put("Depth", "1");
-		ILocator locator = WebDAVFactory.locatorFactory.newLocator(path);
-		response = client.propfind(locator, context, null);
-		if (response.getStatusCode() != IResponse.SC_MULTI_STATUS) {
-			throw new WebDavException("WebDav error: " + response.getStatusCode(), 
-								     response.getStatusCode());
+		IResponse response = null;
+		try {
+			IContext context = createContext();
+			context.put("Depth", "1");
+			ILocator locator = WebDAVFactory.locatorFactory.newLocator(path);
+			response = client.propfind(locator, context, null);
+			if (response.getStatusCode() != IResponse.SC_MULTI_STATUS) {
+				throw new WebDavException(response);
+			}
+			Map<String, ResourceProperties> res = 
+				StreamProcessingUtils.parseListing(path, response.getInputStream());
+			addGuvnorResourceProperties(res, path);
+			return res;
+		} finally {
+			if (response != null) {
+				response.close();
+			}
 		}
-		Map<String, ResourceProperties> res = StreamProcessingUtils.
-												parseListing(path, response.getInputStream());
-		addGuvnorResourceProperties(res, path);
-		return res;
 	}
 	
-	private void addGuvnorResourceProperties(Map<String, ResourceProperties> props, 
+	private void addGuvnorResourceProperties(Map<String, 
+			                                ResourceProperties> props, 
 			                                String path) throws Exception {
+		IResponse response = null;
 		try {
 			String apiVer = changeToAPICall(path);
 			Properties guvProps = new Properties();
-			guvProps.load(getResourceInputStream(apiVer));
+			response = getResourceInputStream(apiVer); 
+			guvProps.load(response.getInputStream());
+			response.getInputStream();
 			for (Iterator<String> it = props.keySet().iterator(); it.hasNext();) {
 				String oneKey = it.next();
 				String val = guvProps.getProperty(oneKey);
@@ -106,10 +116,19 @@
 					String revision = tokens.nextToken();
 					resProps.setLastModifiedDate(dateStamp);
 					resProps.setRevision(revision);
-				}
+				} 
+//				else {
+//					Exception nfe = new Exception("Failed to get Guvnor properties for " + oneKey);
+//					Activator.getDefault().writeLog(IStatus.WARNING, nfe.getMessage(), nfe);
+//				}
 			}
 		} catch (Exception e) {
-//TODO: Getting some server internal errors here. Why?
+			//TODO: Getting some server internal errors here. Why?
+			Activator.getDefault().writeLog(IStatus.WARNING, e.getMessage(), e);
+		} finally {
+			if (response != null) {
+				response.close();
+			}
 		}
 	}
 	
@@ -118,36 +137,52 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#queryProperties(java.lang.String)
 	 */
 	public ResourceProperties queryProperties(String resource) throws Exception {
-		IContext context = createContext();
-		context.put("Depth", "1");
-		ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
-		response = client.propfind(locator, context, null);
-		if (response.getStatusCode() != IResponse.SC_MULTI_STATUS
-		   && response.getStatusCode() != IResponse.SC_OK) {
-			throw new WebDavException("WebDav error: " + response.getStatusCode(), 
-								     response.getStatusCode());
+		IResponse response = null;
+		try {
+			IContext context = createContext();
+			context.put("Depth", "1");
+			ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+			response = client.propfind(locator, context, null);
+			if (response.getStatusCode() != IResponse.SC_MULTI_STATUS
+			   && response.getStatusCode() != IResponse.SC_OK) {
+				throw new WebDavException(response);
+			}
+			Map<String, ResourceProperties> props = 
+				StreamProcessingUtils.parseListing("", response.getInputStream());
+			if (props.keySet().size() != 1) {
+				throw new Exception(props.keySet().size() + " entries found for " + resource);
+			}
+			String fullpath = props.keySet().iterator().next();
+			ResourceProperties res = props.get(fullpath);
+			String filename = new Path(fullpath).lastSegment();
+			addGuvnorResourceProperties(res, filename, resource);
+			return res;
+		} finally {
+			if (response != null) {
+				response.close();
+			}
 		}
-		Map<String, ResourceProperties> props = 
-			StreamProcessingUtils.parseListing("", response.getInputStream());
-		if (props.keySet().size() != 1) {
-			throw new Exception(props.keySet().size() + " entries found for " + resource);
-		}
-		String filename = props.keySet().iterator().next();
-		ResourceProperties res = props.get(filename);
-		addGuvnorResourceProperties(res, filename, resource);
-		return res;
 	}
 	
+	/**
+	 * Adds Guvnor-specific resource properties to the collection.
+	 * @param props The resource properties colleciton
+	 * @param filename The name of the resource
+	 * @param resource The full path to the resource in Guvnor
+	 * @throws Exception
+	 */
 	private void addGuvnorResourceProperties(ResourceProperties props, 
 			                                String filename, String resource) throws Exception {
 		if (props == null) {
 			return;
 		}
+		IResponse response = null;
 		try {
 			String path = resource.substring(0, resource.lastIndexOf('/'));
 			String apiVer = changeToAPICall(path);
 			Properties guvProps = new Properties();
-			guvProps.load(getResourceInputStream(apiVer));
+			response = getResourceInputStream(apiVer);
+			guvProps.load(response.getInputStream());
 			String val = guvProps.getProperty(filename);
 			if (val != null) {
 				StringTokenizer tokens = new StringTokenizer(val, ",");
@@ -155,10 +190,17 @@
 				String revision = tokens.nextToken();
 				props.setLastModifiedDate(dateStamp);
 				props.setRevision(revision);
+			} else {
+				Exception nfe = new Exception("Failed to get Guvnor properties for " + filename);
+				Activator.getDefault().writeLog(IStatus.WARNING, nfe.getMessage(), nfe);
 			}
 		} catch (Exception e) {
-//TODO: Getting some server internal errors here. Why?
-			System.out.println(e.getMessage());
+			//TODO: Getting some server internal errors here. Why?
+			Activator.getDefault().writeLog(IStatus.WARNING, e.getMessage(), e);
+		} finally {
+			if (response != null) {
+				response.close();
+			}
 		}
 	}
 	
@@ -167,7 +209,15 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceContents(java.lang.String)
 	 */
 	public String getResourceContents(String resource) throws Exception {
-		return StreamProcessingUtils.getStreamContents(getResourceInputStream(resource));
+		IResponse response = null;
+		try {
+			response = getResourceInputStream(resource);
+			return StreamProcessingUtils.getStreamContents(response.getInputStream());
+		} finally {
+			if (response != null) {
+				response.close();
+			}
+		}
 	}
 	
 	/*
@@ -183,21 +233,20 @@
 	 * (non-Javadoc)
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getInputStream(java.lang.String)
 	 */
-	public InputStream getResourceInputStream(String resource) throws Exception {
+	public IResponse getResourceInputStream(String resource) throws Exception {
 		ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
 		IResponse response = client.get(locator, createContext());
 		if (response.getStatusCode() != IResponse.SC_OK) {
-			throw new WebDavException("WebDav error: " + response.getStatusCode(), 
-									 response.getStatusCode());
+			throw new WebDavException(response);
 		}
-		return response.getInputStream();
+		return response;
 	}
 	
 	/*
 	 * (non-Javadoc)
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceVersionInputStream(java.lang.String, java.lang.String)
 	 */
-	public InputStream getResourceVersionInputStream(String resource, String version) throws Exception {
+	public IResponse getResourceVersionInputStream(String resource, String version) throws Exception {
 		String apiVer = changeToAPICall(resource) + "?version=" + version;
 		return getResourceInputStream(apiVer);
 	}
@@ -221,24 +270,28 @@
 				if (queryProperties(resource) != null) {
 					res = false;
 				}
-			} catch (Exception e) {
-				if (response.getStatusCode() != IResponse.SC_NOT_FOUND) {
-					closeResponse();
+			} catch (WebDavException e) {
+				if (e.getErrorCode() != IResponse.SC_NOT_FOUND) {
 					throw e;
 				}
 			}
-			closeResponse();
 		}
-		if (res) {
-			ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
-			IResponse response = client.put(locator, createContext(), is);
-			if (response.getStatusCode() != IResponse.SC_OK
-		       && response.getStatusCode() != IResponse.SC_CREATED) {
-				throw new WebDavException("WebDav error: " + response.getStatusCode(), 
-									     response.getStatusCode());
+		IResponse response = null;
+		try {
+			if (res) {
+				ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+				response = client.put(locator, createContext(), is);
+				if (response.getStatusCode() != IResponse.SC_OK
+		           && response.getStatusCode() != IResponse.SC_CREATED) {
+					throw new WebDavException(response);
+				}
 			}
+			return res;
+		} finally {
+			if (response != null) {
+				response.close();
+			}
 		}
-		return res;
 	}
 	
 	/*
@@ -246,12 +299,18 @@
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#putResource(java.lang.String, java.io.InputStream)
 	 */
 	public void putResource(String resource, InputStream is) throws Exception {
-		ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
-		IResponse response = client.put(locator, createContext(), is);
-		if (response.getStatusCode() != IResponse.SC_OK
-		   && response.getStatusCode() != IResponse.SC_NO_CONTENT) {
-			throw new WebDavException("WebDav error: " + response.getStatusCode(), 
-									 response.getStatusCode());
+		IResponse response = null;
+		try {
+			ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+			response = client.put(locator, createContext(), is);
+			if (response.getStatusCode() != IResponse.SC_OK
+		       && response.getStatusCode() != IResponse.SC_NO_CONTENT) {
+				throw new WebDavException(response);
+			}
+		} finally {
+			if (response != null) {
+				response.close();
+			}
 		}
 	}
 	
@@ -259,7 +318,7 @@
 	 * (non-Javadoc)
 	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#getResourceVersions(java.lang.String)
 	 */
-	public InputStream getResourceVersions(String resource) throws Exception {
+	public IResponse getResourceVersions(String resource) throws Exception {
 		String apiVer = changeToAPICall(resource) + "?version=all";
 		return getResourceInputStream(apiVer);
 	}
@@ -267,15 +326,4 @@
 	private String changeToAPICall(String path) {
 		return path.replaceFirst("/webdav/", "/api/");
 	}
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.guvnor.tools.utils.webdav.IWebDavClient#closeResponse()
-	 */
-	public void closeResponse() throws Exception {
-		if (response != null) {
-			response.close();
-			response = null;
-		}
-	}
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavException.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavException.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavException.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -1,14 +1,17 @@
 package org.guvnor.tools.utils.webdav;
 
+import org.eclipse.webdav.IResponse;
+
 public class WebDavException extends Exception {
 	
 	private static final long serialVersionUID = -2421203349714311291L;
 	
 	private int errCode;
 	
-	public WebDavException(String msg, int errCode) {
-		super(msg);
-		this.errCode = errCode;
+	public WebDavException(IResponse response) {
+		super("WebDav error: " + response.getStatusMessage() + 
+	          " (" + response.getStatusCode() + ")");
+		this.errCode = response.getStatusCode();
 	}
 	
 	public int getErrorCode() {

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -172,7 +172,8 @@
 			new GuvnorMetadataProps(node.getName(), 
 					               node.getGuvnorRepository().getLocation(),
 				                   node.getFullPath(), 
-				                   node.getResourceProps().getLastModifiedDate());
+				                   node.getResourceProps().getLastModifiedDate(),
+				                   node.getResourceProps().getRevision());
 		GuvnorMetadataUtils.writeGuvnorMetadataProps(metaFile, mdProps);
 		res.add(metaFile.getAbsolutePath());
 		
@@ -307,7 +308,6 @@
 			WebDavServerCache.cacheWebDavClient(rep.getLocation(), webdav);
 		}
 		String res = webdav.getResourceContents(node.getFullPath());
-		webdav.closeResponse();
 		return res;
 	}
 	

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/ResourceHistoryView.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -15,6 +15,8 @@
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
@@ -42,6 +44,22 @@
  */
 public class ResourceHistoryView extends ViewPart {
 	
+	class ResourceHistorySorter extends ViewerSorter {
+
+		@Override
+		public int compare(Viewer viewer, Object e1, Object e2) {
+			if (e1 instanceof ResourceHistoryEntry
+			   && e2 instanceof ResourceHistoryEntry) {
+				ResourceHistoryEntry entry1 = (ResourceHistoryEntry)e1;
+				ResourceHistoryEntry entry2 = (ResourceHistoryEntry)e2;
+				return Integer.parseInt(entry2.getRevision()) - Integer.parseInt(entry1.getRevision());
+			} else {
+				return super.compare(viewer, e1, e2);
+			}
+		}
+		
+	}
+	
 	private Label repositoryLabel;
 	private Label resourceLabel;
 	
@@ -71,6 +89,7 @@
 		
 		viewer.setContentProvider(new ResourceHistoryContentProvider(new ResourceHistoryEntry[0]));
 		viewer.setLabelProvider(new ResourceHistoryLabelProvider());
+		viewer.setSorter(new ResourceHistorySorter());
 		viewer.setInput(getViewSite());
 		
 		makeActions();
@@ -137,7 +156,6 @@
 				} catch (WebDavException wde) {
 					if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
 						// If not an authentication failure, we don't know what to do with it
-						client.closeResponse();
 						throw wde;
 					}
 					boolean retry = PlatformUtils.getInstance().
@@ -146,7 +164,6 @@
 						contents = client.getResourceVersionContents(fullPath, theEntry.getRevision());
 					}
 				}
-				client.closeResponse();
 				if (contents != null) {
 					String editorTitle = null;
 					int pos = fullPath.lastIndexOf("/");

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreeParent.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -98,7 +98,6 @@
 				Map<String, ResourceProperties> listing = null;
 				try {
 					listing = webdav.listDirectory(node.getFullPath());
-					webdav.closeResponse();
 				} catch (WebDavException wde) {
 					if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
 						// If not an authentication failure, we don't know what to do with it
@@ -108,7 +107,6 @@
 												node.getGuvnorRepository().getLocation(), webdav); 
 					if (retry) {
 						listing = webdav.listDirectory(node.getFullPath());
-						webdav.closeResponse();
 					}
 				}
 				if (listing != null) {

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/model/TreePropertyProvider.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -32,7 +32,7 @@
 			return node.getName();
 		}
 		if (id.equals("location")) {
-			return node.getFullPath();
+			return node.getFullPath().substring(node.getGuvnorRepository().getLocation().length());
 		}
 		if (id.equals("type")) {
 			if (node.getNodeType() == TreeObject.Type.REPOSITORY) {

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -103,7 +103,6 @@
 			}
 			try {
 				res = client.createResource(fullPath, selectedFile.getContents(), false);
-				client.closeResponse();
 				if (!res) {
 					setDuplicateFileError();
 				}
@@ -116,7 +115,6 @@
 									authenticateForServer(model.getRepLocation(), client); 
 				if (retry) {
 					res = client.createResource(fullPath, selectedFile.getContents());
-					client.closeResponse();
 					if (!res) {
 						setDuplicateFileError();
 					}
@@ -125,11 +123,11 @@
 			if (res) {
 				GuvnorMetadataUtils.markCurrentGuvnorResource(selectedFile);
 				ResourceProperties resProps = client.queryProperties(fullPath);
-				client.closeResponse();
 				GuvnorMetadataProps mdProps = 
 						new GuvnorMetadataProps(selectedFile.getName(),
 					                           model.getRepLocation(),
-					                           fullPath, resProps.getLastModifiedDate());
+					                           fullPath, resProps.getLastModifiedDate(),
+					                           resProps.getRevision());
 				GuvnorMetadataUtils.setGuvnorMetadataProps(selectedFile.getFullPath(), mdProps);
 				PlatformUtils.updateDecoration();
 			}

Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java	2008-07-11 18:49:36 UTC (rev 21011)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/CheckoutWizard.java	2008-07-11 21:37:37 UTC (rev 21012)
@@ -102,9 +102,7 @@
 				if (resprops == null) {
 					throw new Exception("Null resource properties for " + oneResource);
 				}
-				webdav.closeResponse();
 				String contents = webdav.getResourceContents(oneResource);
-				webdav.closeResponse();
 				IPath targetLocation = new Path(model.getTargetLocation());
 				IFile targetFile = Activator.getDefault().getWorkspace().
 									getRoot().getFile(targetLocation.append(
@@ -120,7 +118,8 @@
 				GuvnorMetadataProps mdProps = new GuvnorMetadataProps(targetFile.getName(), 
 						                                             model.getRepLocation(), 
 						                                             oneResource, 
-						                                             resprops.getLastModifiedDate());
+						                                             resprops.getLastModifiedDate(),
+						                                             resprops.getRevision());
 				GuvnorMetadataUtils.setGuvnorMetadataProps(targetFile.getFullPath(), mdProps);
 				GuvnorMetadataUtils.markCurrentGuvnorResource(targetFile);
 			}




More information about the jboss-svn-commits mailing list