From 26182b2060876572aa2ca3e1f39795e66042ad3b Mon Sep 17 00:00:00 2001 From: David McKnight Date: Tue, 2 Mar 2010 20:26:17 +0000 Subject: [PATCH] [293914] [dstore] NPE is thrown during the remote search --- .../dstore/search/DStoreSearchService.java | 5 ++++- .../core/servicesubsystem/SearchJob.java | 22 +++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/search/DStoreSearchService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/search/DStoreSearchService.java index 47d2ba490cc..e906299898e 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/search/DStoreSearchService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/search/DStoreSearchService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 IBM Corporation and others. + * Copyright (c) 2006, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,6 +21,7 @@ * David McKnight (IBM) - [255390] don't assume one update means the search is done * David McKnight (IBM) - [261644] [dstore] remote search improvements * David McKnight (IBM) - [243495] [api] New: Allow file name search in Remote Search to not be case sensitive + * David McKnight (IBM) - [293914] [dstore] NPE is thrown during the remote search *******************************************************************************/ package org.eclipse.rse.internal.services.dstore.search; @@ -135,6 +136,8 @@ public class DStoreSearchService extends AbstractDStoreService implements ISearc catch (Exception e) { config.setStatus(IHostSearchConstants.CANCELLED); + if (monitor != null) + monitor.setCanceled(true); } } } diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/SearchJob.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/SearchJob.java index ad25e514f23..82d4f22600d 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/SearchJob.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/SearchJob.java @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved. + * Copyright (c) 2006, 2010 IBM Corporation and others. All rights reserved. * This program and the accompanying materials are made available under the terms * of the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html @@ -12,6 +12,7 @@ * * Contributors: * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API + * David McKnight (IBM) - [293914] [dstore] NPE is thrown during the remote search ********************************************************************************/ package org.eclipse.rse.subsystems.files.core.servicesubsystem; @@ -20,6 +21,10 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.rse.core.RSECorePlugin; +import org.eclipse.rse.core.events.ISystemResourceChangeEvents; +import org.eclipse.rse.core.events.SystemResourceChangeEvent; +import org.eclipse.rse.core.model.ISystemRegistry; import org.eclipse.rse.internal.subsystems.files.core.SystemFileResources; import org.eclipse.rse.services.files.IFileService; import org.eclipse.rse.services.search.IHostSearchResultConfiguration; @@ -44,9 +49,18 @@ public class SearchJob extends Job protected IStatus run(IProgressMonitor monitor) { _searchService.search(_searchConfig, _fileService, monitor); - - OutputRefresh refresh = new OutputRefresh(_searchConfig); - Display.getDefault().asyncExec(refresh); + if (!monitor.isCanceled()){ + OutputRefresh refresh = new OutputRefresh(_searchConfig); + Display.getDefault().asyncExec(refresh); + } + else { + Display.getDefault().asyncExec(new Runnable(){ + public void run(){ + ISystemRegistry registry = RSECorePlugin.getTheSystemRegistry(); + registry.fireEvent(new SystemResourceChangeEvent(_searchConfig, ISystemResourceChangeEvents.EVENT_SEARCH_FINISHED, null)); + } + }); + } monitor.done(); return Status.OK_STATUS; }