337846 Proposed fix to rescan watched repos before any artifact install or refresh
diff --git a/org.eclipse.virgo.kernel.deployer/src/main/java/org/eclipse/virgo/kernel/deployer/core/internal/PipelinedApplicationDeployer.java b/org.eclipse.virgo.kernel.deployer/src/main/java/org/eclipse/virgo/kernel/deployer/core/internal/PipelinedApplicationDeployer.java
index b349822..748f6c0 100644
--- a/org.eclipse.virgo.kernel.deployer/src/main/java/org/eclipse/virgo/kernel/deployer/core/internal/PipelinedApplicationDeployer.java
+++ b/org.eclipse.virgo.kernel.deployer/src/main/java/org/eclipse/virgo/kernel/deployer/core/internal/PipelinedApplicationDeployer.java
@@ -12,9 +12,19 @@
 package org.eclipse.virgo.kernel.deployer.core.internal;
 
 import java.io.File;
+import java.lang.management.ManagementFactory;
 import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
+
+import javax.management.InstanceNotFoundException;
+import javax.management.JMX;
+import javax.management.MBeanException;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
 
 import org.osgi.framework.Version;
 
@@ -42,6 +52,7 @@
 import org.eclipse.virgo.kernel.install.environment.InstallEnvironmentFactory;
 import org.eclipse.virgo.kernel.install.pipeline.Pipeline;
 import org.eclipse.virgo.medic.eventlog.EventLogger;
+import org.eclipse.virgo.repository.management.Repository;
 import org.eclipse.virgo.util.common.Tree;
 import org.eclipse.virgo.util.io.PathReference;
 
@@ -133,6 +144,7 @@
     }
 
     private DeploymentIdentity doInstall(URI normalisedUri, DeploymentOptions deploymentOptions) throws DeploymentException {
+        updateWatchedRepositories();
         synchronized (this.monitor) {
             InstallArtifact existingArtifact = this.ram.get(normalisedUri);
 
@@ -549,13 +561,41 @@
     }
 
     private void stopArtifact(InstallArtifact installArtifact) throws DeploymentException {
-
         installArtifact.stop();
-
     }
 
     private void uninstallArtifact(InstallArtifact installArtifact) throws DeploymentException {
         installArtifact.uninstall();
     }
+    
+    private void updateWatchedRepositories(){
+        MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
+        try {
+            Set<ObjectName> objectNames = mBeanServer.queryNames(new ObjectName("org.eclipse.virgo.kernel:type=Repository,*"), null);
+            for (ObjectName objectName : objectNames) {
+                Repository repo = JMX.newMXBeanProxy(mBeanServer, objectName, Repository.class);
+                if(repo != null && "Watched".equals(repo.type())){
+                    try {
+                        mBeanServer.invoke(objectName, "forceCheck", new Object[0], new String[0]);
+                    } catch (InstanceNotFoundException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    } catch (ReflectionException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    } catch (MBeanException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    }
+                }
+            }
+        } catch (MalformedObjectNameException e1) {
+            // TODO Auto-generated catch block
+            e1.printStackTrace();
+        } catch (NullPointerException e1) {
+            // TODO Auto-generated catch block
+            e1.printStackTrace();
+        }
+    }
 
 }