[jboss-svn-commits] JBL Code SVN: r21041 - in labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools: META-INF and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jul 15 11:43:32 EDT 2008
Author: john.graham at jboss.org
Date: 2008-07-15 11:43:32 -0400 (Tue, 15 Jul 2008)
New Revision: 21041
Added:
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.options
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DeleteAction.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/DebugHttpClient.java
Modified:
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.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/DisconnectAction.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/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/views/RepositoryView.java
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java
Log:
Delete action; refactor actions to accept multiple resources
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.options
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.options (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/.options 2008-07-15 15:43:32 UTC (rev 21041)
@@ -0,0 +1 @@
+org.guvnor.tools/debugHttpClient=false
\ No newline at end of file
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-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF 2008-07-15 15:43:32 UTC (rev 21041)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.guvnor.tools;singleton:=true
-Bundle-Version: 0.6.0.200807121723
+Bundle-Version: 0.6.0.200807141651
Bundle-Activator: org.guvnor.tools.Activator
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties 2008-07-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.properties 2008-07-15 15:43:32 UTC (rev 21041)
@@ -27,4 +27,5 @@
action.popup.showhistory = Show History
action.popup.compareversion = Compare with Version...
action.popup.switchversion = Switch to Version...
-action.popup.disconnect = Disconnect
\ No newline at end of file
+action.popup.disconnect = Disconnect
+action.popup.delete = Delete...
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml 2008-07-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/plugin.xml 2008-07-15 15:43:32 UTC (rev 21041)
@@ -105,6 +105,12 @@
label="%action.popup.disconnect"
menubarPath="org.guvnor.tools.popupmenu/group1">
</action>
+ <action class="org.guvnor.tools.actions.DeleteAction"
+ enablesFor="1"
+ id="org.guvnor.tools.actions.deleteaction"
+ label="%action.popup.delete"
+ menubarPath="org.guvnor.tools.popupmenu/group1">
+ </action>
<action class="org.guvnor.tools.actions.SwitchVersionAction"
enablesFor="1"
id="org.guvnor.tools.actions.switchversionaction"
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java 2008-07-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/Activator.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -6,6 +6,7 @@
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -130,4 +131,8 @@
public static final String IMG_GUVCONTROLLED = "guvnor_controlled.gif";
public static final String IMG_GUVLOCADD = "guvnor_rep_add.gif";
public static final String IMG_GUVREPWIZBAN = "guvnor_rep_wizban.gif";
+
+ public boolean useDebugHttpClient() {
+ return Boolean.parseBoolean(Platform.getDebugOption("org.guvnor.tools/debugHttpClient"));
+ }
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.java 2008-07-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/AddAction.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -1,5 +1,7 @@
package org.guvnor.tools.actions;
+import java.util.Iterator;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.action.IAction;
@@ -10,13 +12,14 @@
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
import org.guvnor.tools.utils.GuvnorMetadataUtils;
import org.guvnor.tools.utils.PlatformUtils;
import org.guvnor.tools.wizards.AddResourceWizard;
public class AddAction implements IObjectActionDelegate {
- private IStructuredSelection sel;
+ private IStructuredSelection selectedItems;
private IWorkbenchPart targetPart;
/**
@@ -37,9 +40,9 @@
* @see IActionDelegate#run(IAction)
*/
public void run(IAction action) {
- assert(targetPart != null && sel != null);
+ assert(targetPart != null && selectedItems != null);
AddResourceWizard wiz = new AddResourceWizard();
- wiz.init(Activator.getDefault().getWorkbench(), sel);
+ wiz.init(Activator.getDefault().getWorkbench(), selectedItems);
WizardDialog dialog = new WizardDialog(targetPart.getSite().getShell(), wiz);
dialog.create();
if (dialog.open() == WizardDialog.OK) {
@@ -50,21 +53,32 @@
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
+ @SuppressWarnings("unchecked")
public void selectionChanged(IAction action, ISelection selection) {
// Reset state to default
- sel = null;
- action.setEnabled(false);
+ selectedItems = null;
+ action.setEnabled(true);
// See if we should enable for the selection
try {
if (selection instanceof IStructuredSelection) {
- sel = (IStructuredSelection)selection;
- if (sel.getFirstElement() instanceof IFile) {
- IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata((IFile)sel.getFirstElement());
- if (mdFile == null) {
- action.setEnabled(true);
+ IStructuredSelection sel = (IStructuredSelection)selection;
+ for (Iterator<Object> it = sel.iterator(); it.hasNext();) {
+ Object oneSelection = it.next();
+ if (oneSelection instanceof IFile) {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.
+ getGuvnorMetadata((IFile)oneSelection);
+ if (props != null) {
+ action.setEnabled(false);
+ break;
+ }
}
}
- }
+ if (action.isEnabled()) {
+ selectedItems = sel;
+ }
+ } else {
+ action.setEnabled(false);
+ }
} 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-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/CommitAction.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -1,6 +1,7 @@
package org.guvnor.tools.actions;
import java.net.URL;
+import java.util.Iterator;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
@@ -23,8 +24,7 @@
public class CommitAction implements IObjectActionDelegate {
- private IFile selectedFile;
- private GuvnorMetadataProps props;
+ private IStructuredSelection selectedItems;
/**
* Constructor for Action1.
@@ -42,12 +42,20 @@
/**
* @see IActionDelegate#run(IAction)
*/
+ @SuppressWarnings("unchecked")
public void run(IAction action) {
- if (selectedFile == null
- || props == null) {
- return;
+ assert(selectedItems != null);
+ for (Iterator it = selectedItems.iterator(); it.hasNext();) {
+ Object oneSelection = it.next();
+ if (oneSelection instanceof IFile) {
+ processCommit((IFile)oneSelection);
+ }
}
+ }
+
+ private void processCommit(IFile selectedFile) {
try {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.getGuvnorMetadata(selectedFile);
IWebDavClient client = WebDavServerCache.getWebDavClient(props.getRepository());
if (client == null) {
client = WebDavClientFactory.createClient(new URL(props.getRepository()));
@@ -77,29 +85,36 @@
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
}
-
+
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
+ @SuppressWarnings("unchecked")
public void selectionChanged(IAction action, ISelection selection) {
// Reset state to default
- selectedFile = null;
- props = null;
- action.setEnabled(false);
+ selectedItems = null;
+ action.setEnabled(true);
// See if we should enable for the selection
try {
if (selection instanceof IStructuredSelection) {
IStructuredSelection sel = (IStructuredSelection)selection;
- if (sel.getFirstElement() instanceof IFile) {
- IFile theFile = (IFile)sel.getFirstElement();
- props = GuvnorMetadataUtils.getGuvnorMetadata(theFile);
- if (props != null
- && !GuvnorMetadataUtils.isGuvnorResourceCurrent(theFile)) {
- selectedFile = theFile;
- action.setEnabled(true);
+ for (Iterator<Object> it = sel.iterator(); it.hasNext();) {
+ Object oneSelection = it.next();
+ if (oneSelection instanceof IFile) {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.
+ getGuvnorMetadata((IFile)oneSelection);
+ if (props == null) {
+ action.setEnabled(false);
+ break;
+ }
}
}
- }
+ if (action.isEnabled()) {
+ selectedItems = sel;
+ }
+ } else {
+ action.setEnabled(false);
+ }
} catch (Exception e) {
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DeleteAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DeleteAction.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DeleteAction.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -0,0 +1,121 @@
+package org.guvnor.tools.actions;
+
+import java.net.URL;
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.webdav.IResponse;
+import org.guvnor.tools.Activator;
+import org.guvnor.tools.utils.GuvnorMetadataProps;
+import org.guvnor.tools.utils.GuvnorMetadataUtils;
+import org.guvnor.tools.utils.PlatformUtils;
+import org.guvnor.tools.utils.webdav.IWebDavClient;
+import org.guvnor.tools.utils.webdav.WebDavClientFactory;
+import org.guvnor.tools.utils.webdav.WebDavException;
+import org.guvnor.tools.utils.webdav.WebDavServerCache;
+
+public class DeleteAction implements IObjectActionDelegate {
+
+ private IStructuredSelection selectedItems;
+
+ /**
+ * Constructor for Action1.
+ */
+ public DeleteAction() {
+ super();
+ }
+
+ /**
+ * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+ */
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ }
+
+ /**
+ * @see IActionDelegate#run(IAction)
+ */
+ @SuppressWarnings("unchecked")
+ public void run(IAction action) {
+ if (selectedItems == null) {
+ return;
+ }
+ for (Iterator it = selectedItems.iterator(); it.hasNext();) {
+ Object oneItem = it.next();
+ if (oneItem instanceof IFile) {
+ processDelete((IFile)oneItem);
+ }
+ }
+ DisconnectAction dsAction = new DisconnectAction();
+ dsAction.disconnect(selectedItems);
+ PlatformUtils.refreshRepositoryView();
+ }
+
+ private void processDelete(IFile selectedFile) {
+ try {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.getGuvnorMetadata(selectedFile);
+ assert(props != null);
+ IWebDavClient client = WebDavServerCache.getWebDavClient(props.getRepository());
+ if (client == null) {
+ client = WebDavClientFactory.createClient(new URL(props.getRepository()));
+ WebDavServerCache.cacheWebDavClient(props.getRepository(), client);
+ }
+ try {
+ client.deleteResource(props.getFullpath());
+ } 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(props.getRepository(), client);
+ if (retry) {
+ client.deleteResource(props.getFullpath());
+ }
+ }
+
+ } catch (Exception e) {
+ Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
+ }
+ }
+
+ /**
+ * @see IActionDelegate#selectionChanged(IAction, ISelection)
+ */
+ @SuppressWarnings("unchecked")
+ public void selectionChanged(IAction action, ISelection selection) {
+ // Reset state to default
+ selectedItems = null;
+ action.setEnabled(true);
+ // See if we should enable for the selection
+ try {
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection sel = (IStructuredSelection)selection;
+ for (Iterator<Object> it = sel.iterator(); it.hasNext();) {
+ Object oneSelection = it.next();
+ if (oneSelection instanceof IFile) {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.
+ getGuvnorMetadata((IFile)oneSelection);
+ if (props == null) {
+ action.setEnabled(false);
+ break;
+ }
+ }
+ }
+ if (action.isEnabled()) {
+ selectedItems = sel;
+ }
+ } else {
+ action.setEnabled(false);
+ }
+ } 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/DisconnectAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DisconnectAction.java 2008-07-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/DisconnectAction.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -1,7 +1,10 @@
package org.guvnor.tools.actions;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
@@ -18,7 +21,7 @@
public class DisconnectAction implements IObjectActionDelegate {
- private IFile selectedFile;
+ private IStructuredSelection selectedItems;
/**
* Constructor for Action1.
@@ -37,42 +40,64 @@
* @see IActionDelegate#run(IAction)
*/
public void run(IAction action) {
- if (selectedFile == null) {
+ if (selectedItems == null) {
return;
}
- IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata(selectedFile);
- if (mdFile == null) {
- return;
+ disconnect(selectedItems);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void disconnect(IStructuredSelection files) {
+ List<IFile> toDelete = new ArrayList<IFile>();
+ for (Iterator<Object> it = files.iterator(); it.hasNext();) {
+ Object oneSelection = it.next();
+ if (oneSelection instanceof IFile) {
+ IFile mdFile = GuvnorMetadataUtils.findGuvnorMetadata((IFile)oneSelection);
+ if (mdFile != null) {
+ toDelete.add(mdFile);
+ }
+ }
}
try {
- IWorkspace ws = mdFile.getWorkspace();
- ws.delete(new IResource[] { mdFile }, true, null);
+ IFile[] mdFiles = new IFile[toDelete.size()];
+ toDelete.toArray(mdFiles);
+ IWorkspace ws = Activator.getDefault().getWorkspace();
+ ws.delete(mdFiles, true, null);
PlatformUtils.updateDecoration();
} catch (CoreException e) {
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
}
-
+
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
+ @SuppressWarnings("unchecked")
public void selectionChanged(IAction action, ISelection selection) {
// Reset state to default
- selectedFile = null;
- action.setEnabled(false);
+ selectedItems = null;
+ action.setEnabled(true);
// See if we should enable for the selection
try {
if (selection instanceof IStructuredSelection) {
IStructuredSelection sel = (IStructuredSelection)selection;
- if (sel.getFirstElement() instanceof IFile) {
- GuvnorMetadataProps props = GuvnorMetadataUtils.
- getGuvnorMetadata((IFile)sel.getFirstElement());
- if (props != null) {
- selectedFile = (IFile)sel.getFirstElement();
- action.setEnabled(true);
+ for (Iterator<Object> it = sel.iterator(); it.hasNext();) {
+ Object oneSelection = it.next();
+ if (oneSelection instanceof IFile) {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.
+ getGuvnorMetadata((IFile)oneSelection);
+ if (props == null) {
+ action.setEnabled(false);
+ break;
+ }
}
}
- }
+ if (action.isEnabled()) {
+ selectedItems = sel;
+ }
+ } else {
+ action.setEnabled(false);
+ }
} 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/UpdateAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java 2008-07-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/actions/UpdateAction.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.util.Iterator;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
@@ -25,8 +26,7 @@
public class UpdateAction implements IObjectActionDelegate {
- private IFile selectedFile;
- private GuvnorMetadataProps props;
+ private IStructuredSelection selectedItems;
/**
* Constructor for Action1.
@@ -45,13 +45,21 @@
* @throws Exception
* @see IActionDelegate#run(IAction)
*/
+ @SuppressWarnings("unchecked")
public void run(IAction action) {
- if (selectedFile == null
- || props == null) {
- return;
+ assert(selectedItems != null);
+ for (Iterator it = selectedItems.iterator(); it.hasNext();) {
+ Object oneItem = it.next();
+ if (oneItem instanceof IFile) {
+ processUpdate((IFile)oneItem);
+ }
}
+ }
+
+ private void processUpdate(IFile selectedFile) {
IResponse response = null;
try {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.getGuvnorMetadata(selectedFile);
IWebDavClient client = WebDavServerCache.getWebDavClient(props.getRepository());
if (client == null) {
client = WebDavClientFactory.createClient(new URL(props.getRepository()));
@@ -95,27 +103,36 @@
}
}
}
-
+
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
+ @SuppressWarnings("unchecked")
public void selectionChanged(IAction action, ISelection selection) {
// Reset state to default
- selectedFile = null;
- props = null;
- action.setEnabled(false);
+ selectedItems = null;
+ action.setEnabled(true);
// See if we should enable for the selection
try {
if (selection instanceof IStructuredSelection) {
IStructuredSelection sel = (IStructuredSelection)selection;
- if (sel.getFirstElement() instanceof IFile) {
- props = GuvnorMetadataUtils.getGuvnorMetadata((IFile)sel.getFirstElement());
- if (props != null) {
- selectedFile = (IFile)sel.getFirstElement();
- action.setEnabled(true);
+ for (Iterator<Object> it = sel.iterator(); it.hasNext();) {
+ Object oneSelection = it.next();
+ if (oneSelection instanceof IFile) {
+ GuvnorMetadataProps props = GuvnorMetadataUtils.
+ getGuvnorMetadata((IFile)oneSelection);
+ if (props == null) {
+ action.setEnabled(false);
+ break;
+ }
}
}
- }
+ if (action.isEnabled()) {
+ selectedItems = sel;
+ }
+ } else {
+ action.setEnabled(false);
+ }
} catch (Exception e) {
Activator.getDefault().writeLog(IStatus.ERROR, e.getMessage(), e);
}
Added: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/DebugHttpClient.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/DebugHttpClient.java (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/DebugHttpClient.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -0,0 +1,18 @@
+package org.guvnor.tools.utils.webdav;
+
+import java.io.IOException;
+
+import org.eclipse.webdav.http.client.HttpClient;
+import org.eclipse.webdav.http.client.Request;
+import org.eclipse.webdav.http.client.Response;
+
+public class DebugHttpClient extends HttpClient {
+
+ @Override
+ public Response invoke(Request request) throws IOException {
+ System.out.println(request.toString());
+ Response response = super.invoke(request);
+ System.out.println(response.toString());
+ return response;
+ }
+}
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-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/IWebDavClient.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -113,4 +113,11 @@
* @throws Exception Various WebDav errors can occur (See IResponse for details)
*/
public IResponse getResourceVersions(String resource) throws Exception;
+
+ /**
+ * Deletes a resource in the repository.
+ * @param resource The resource to delete
+ * @throws Exception Various WebDav errors can occur (See IResponse for details)
+ */
+ public void deleteResource(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-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/utils/webdav/WebDavClient.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -34,7 +34,12 @@
* @param serverUrl The WebDav repository location (server)
*/
/** package */ WebDavClient(URL serverUrl) {
- HttpClient httpClient = new HttpClient();
+ HttpClient httpClient = null;
+ if (Activator.getDefault().useDebugHttpClient()) {
+ httpClient = new DebugHttpClient();
+ } else {
+ httpClient = new HttpClient();
+ }
platformAuthenticator = new WebDavAuthenticator(serverUrl);
httpClient.setAuthenticator(platformAuthenticator);
client = new RemoteDAVClient(new WebDAVFactory(), httpClient);
@@ -323,6 +328,29 @@
return getResourceInputStream(apiVer);
}
+ /*
+ * (non-Javadoc)
+ * @see org.guvnor.tools.utils.webdav.IWebDavClient#deleteResource(java.lang.String)
+ */
+ public void deleteResource(String resource) throws Exception {
+ IResponse response = null;
+ try {
+ ILocator locator = WebDAVFactory.locatorFactory.newLocator(resource);
+ response = client.delete(locator, createContext());
+ if (response.getStatusCode() != IResponse.SC_NO_CONTENT
+ && response.getStatusCode() != IResponse.SC_OK) {
+ throw new WebDavException(response);
+ }
+ } finally {
+ if (response != null) {
+ response.close();
+ }
+ }
+ }
+
+ /**
+ * Converts the WedDav resource path to a Guvnor "API path."
+ */
private String changeToAPICall(String path) {
return path.replaceFirst("/webdav/", "/api/");
}
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-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/views/RepositoryView.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -46,6 +46,7 @@
import org.guvnor.tools.utils.GuvnorMetadataUtils;
import org.guvnor.tools.utils.PlatformUtils;
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.WebDavServerCache;
import org.guvnor.tools.views.model.TreeObject;
@@ -168,18 +169,27 @@
File metaFile = GuvnorMetadataUtils.
getGuvnorMetadataFile(metaPath.toOSString(), node.getName());
metaFile.deleteOnExit();
- GuvnorMetadataProps mdProps =
- new GuvnorMetadataProps(node.getName(),
- node.getGuvnorRepository().getLocation(),
- node.getFullPath(),
- node.getResourceProps().getLastModifiedDate(),
- node.getResourceProps().getRevision());
- GuvnorMetadataUtils.writeGuvnorMetadataProps(metaFile, mdProps);
+ GuvnorMetadataUtils.writeGuvnorMetadataProps(metaFile, getGuvnorMetadataProps(node));
res.add(metaFile.getAbsolutePath());
return res;
}
+ private GuvnorMetadataProps getGuvnorMetadataProps(TreeObject node) throws Exception {
+ GuvnorRepository rep = node.getGuvnorRepository();
+ IWebDavClient webdav = WebDavServerCache.getWebDavClient(rep.getLocation());
+ if (webdav == null) {
+ webdav = WebDavClientFactory.createClient(new URL(rep.getLocation()));
+ WebDavServerCache.cacheWebDavClient(rep.getLocation(), webdav);
+ }
+ ResourceProperties props = webdav.queryProperties(node.getFullPath());
+ return new GuvnorMetadataProps(node.getName(),
+ node.getGuvnorRepository().getLocation(),
+ node.getFullPath(),
+ props.getLastModifiedDate(),
+ props.getRevision());
+ }
+
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu");
menuMgr.setRemoveAllWhenShown(true);
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-15 15:41:26 UTC (rev 21040)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/src/org/guvnor/tools/wizards/AddResourceWizard.java 2008-07-15 15:43:32 UTC (rev 21041)
@@ -1,6 +1,7 @@
package org.guvnor.tools.wizards;
import java.net.URL;
+import java.util.Iterator;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
@@ -22,12 +23,12 @@
public class AddResourceWizard extends Wizard implements INewWizard, IGuvnorWizard {
- private IFile selectedFile;
-
private SelectGuvnorRepPage selectRepPage;
private GuvnorMainConfigPage mainConfigPage;
private SelectGuvnorFolderPage selectFolderPage;
+ private IStructuredSelection selectedItems;
+
private GuvWizardModel model;
public AddResourceWizard() {
@@ -39,12 +40,7 @@
}
public void init(IWorkbench workbench, IStructuredSelection selection) {
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection sel = (IStructuredSelection)selection;
- if (sel.getFirstElement() instanceof IFile) {
- selectedFile = (IFile)sel.getFirstElement();
- }
- }
+ selectedItems = selection;
}
@Override
@@ -82,7 +78,7 @@
return null;
}
- private void setDuplicateFileError() {
+ private void setDuplicateFileError(IFile selectedFile) {
selectFolderPage.setErrorMessage(selectedFile.getName() +
" already exists in folder " +
model.getTargetLocation());
@@ -90,9 +86,7 @@
super.getContainer().updateButtons();
}
- @Override
- public boolean performFinish() {
- assert(selectedFile != null);
+ private boolean processSelectedFile(IFile selectedFile) {
boolean res = false;
try {
String fullPath = model.getTargetLocation() + selectedFile.getName();
@@ -104,7 +98,7 @@
try {
res = client.createResource(fullPath, selectedFile.getContents(), false);
if (!res) {
- setDuplicateFileError();
+ setDuplicateFileError(selectedFile);
}
} catch (WebDavException wde) {
if (wde.getErrorCode() != IResponse.SC_UNAUTHORIZED) {
@@ -116,7 +110,7 @@
if (retry) {
res = client.createResource(fullPath, selectedFile.getContents());
if (!res) {
- setDuplicateFileError();
+ setDuplicateFileError(selectedFile);
}
}
}
@@ -137,7 +131,24 @@
return res;
}
+ @SuppressWarnings("unchecked")
@Override
+ public boolean performFinish() {
+ boolean res = true;
+ assert(selectedItems != null);
+ for (Iterator it = selectedItems.iterator(); it.hasNext();) {
+ Object oneItem = it.next();
+ if (oneItem instanceof IFile) {
+ res = processSelectedFile((IFile)oneItem);
+ if (!res) {
+ break;
+ }
+ }
+ }
+ return res;
+ }
+
+ @Override
public boolean canFinish() {
return model.getRepLocation() != null
&& model.getTargetLocation() != null;
More information about the jboss-svn-commits
mailing list