Bug 355110 - NPE in RemoteIndexerTask.run() when using the local indexing provider
diff --git a/rdt/org.eclipse.ptp.rdt.core/.settings/.api_filters b/rdt/org.eclipse.ptp.rdt.core/.settings/.api_filters
index 9f52ca2..52d7fe1 100644
--- a/rdt/org.eclipse.ptp.rdt.core/.settings/.api_filters
+++ b/rdt/org.eclipse.ptp.rdt.core/.settings/.api_filters
@@ -1,5 +1,12 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component id="org.eclipse.ptp.rdt.core" version="2">
+<?xml version="1.0" encoding="UTF-8"?><component id="org.eclipse.ptp.rdt.core" version="2">
+    <resource path="src/org/eclipse/ptp/internal/rdt/core/index/RemoteIndexerTask.java" type="org.eclipse.ptp.internal.rdt.core.index.RemoteIndexerTask">
+        <filter id="574619656">
+            <message_arguments>
+                <message_argument value="IPDOMIndexerTask"/>
+                <message_argument value="RemoteIndexerTask"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <resource path="src/org/eclipse/ptp/internal/rdt/core/model/Macro.java" type="org.eclipse.ptp.internal.rdt.core.model.Macro">
         <filter id="574619656">
             <message_arguments>
@@ -8,4 +15,4 @@
             </message_arguments>
         </filter>
     </resource>
-</component>
+</component>
\ No newline at end of file
diff --git a/rdt/org.eclipse.ptp.rdt.core/src/org/eclipse/ptp/internal/rdt/core/index/RemoteIndexerTask.java b/rdt/org.eclipse.ptp.rdt.core/src/org/eclipse/ptp/internal/rdt/core/index/RemoteIndexerTask.java
index 7bda229..3c38939 100755
--- a/rdt/org.eclipse.ptp.rdt.core/src/org/eclipse/ptp/internal/rdt/core/index/RemoteIndexerTask.java
+++ b/rdt/org.eclipse.ptp.rdt.core/src/org/eclipse/ptp/internal/rdt/core/index/RemoteIndexerTask.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
+ * Copyright (c) 2008, 2011 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
@@ -72,30 +72,38 @@
 
 	public void run(IProgressMonitor monitor) throws InterruptedException {
 		IIndexLifecycleService service = fIndexServiceProvider.getIndexLifeCycleService();
-		IProject project = fIndexer.getProject().getProject();
 
-		Scope scope = new Scope(project);
-		
-		IndexBuildSequenceController projectStatus = IndexBuildSequenceController.getIndexBuildSequenceController(fIndexer.getProject().getProject());
-		
-		if (fUpdate) {
-			// notify listeners
-			for (IRemoteFastIndexerListener listener : RemoteFastIndexer.getRemoteFastIndexerListeners()) {
-				listener.indexerUpdating(new RemoteFastIndexerUpdateEvent(IRemoteFastIndexerUpdateEvent.EventType.EVENT_UPDATE, this, scope));
+		if (service != null) {
+			IProject project = fIndexer.getProject().getProject();
+
+			Scope scope = new Scope(project);
+
+			IndexBuildSequenceController projectStatus = IndexBuildSequenceController
+					.getIndexBuildSequenceController(fIndexer.getProject().getProject());
+
+			if (fUpdate) {
+				// notify listeners
+				for (IRemoteFastIndexerListener listener : RemoteFastIndexer.getRemoteFastIndexerListeners()) {
+					listener.indexerUpdating(new RemoteFastIndexerUpdateEvent(
+							IRemoteFastIndexerUpdateEvent.EventType.EVENT_UPDATE, this, scope));
+				}
+
+				// perform the indexer update
+				service.update(scope, Arrays.<ICElement> asList(fAdded), Arrays.<ICElement> asList(fChanged),
+						Arrays.<ICElement> asList(fRemoved), monitor, this);
+			} else {
+				// notify listeners
+				for (IRemoteFastIndexerListener listener : RemoteFastIndexer.getRemoteFastIndexerListeners()) {
+					listener.indexerUpdating(new RemoteFastIndexerUpdateEvent(
+							IRemoteFastIndexerUpdateEvent.EventType.EVENT_REINDEX, this, scope));
+				}
+
+				// perform the re-index
+				service.reindex(scope, fIndexServiceProvider.getIndexLocation(), Arrays.<ICElement> asList(fAdded),
+						monitor, this);
 			}
-			
-			// perform the indexer update
-			service.update(scope, Arrays.<ICElement>asList(fAdded), Arrays.<ICElement>asList(fChanged), Arrays.<ICElement>asList(fRemoved), monitor, this);
-		} else {
-			// notify listeners
-			for (IRemoteFastIndexerListener listener : RemoteFastIndexer.getRemoteFastIndexerListeners()) {
-				listener.indexerUpdating(new RemoteFastIndexerUpdateEvent(IRemoteFastIndexerUpdateEvent.EventType.EVENT_REINDEX, this, scope));
-			}
-			
-			// perform the re-index
-			service.reindex(scope, fIndexServiceProvider.getIndexLocation(), Arrays.<ICElement>asList(fAdded), monitor, this);
+			projectStatus.setIndexCompleted();
 		}
-		projectStatus.setIndexCompleted();
 	}
 
 	/* (non-Javadoc)