|
Lines 11-22
Link Here
|
| 11 |
package org.eclipse.wst.server.core.internal; |
11 |
package org.eclipse.wst.server.core.internal; |
| 12 |
|
12 |
|
| 13 |
import java.io.ByteArrayInputStream; |
13 |
import java.io.ByteArrayInputStream; |
| 14 |
import java.util.*; |
14 |
import java.util.ArrayList; |
| 15 |
|
15 |
import java.util.Arrays; |
| 16 |
import org.eclipse.core.runtime.*; |
16 |
import java.util.Comparator; |
| 17 |
import org.eclipse.core.resources.*; |
17 |
import java.util.HashMap; |
| 18 |
|
18 |
import java.util.HashSet; |
| 19 |
import org.eclipse.wst.server.core.*; |
19 |
import java.util.Iterator; |
|
|
20 |
import java.util.List; |
| 21 |
import java.util.Map; |
| 22 |
import java.util.Set; |
| 23 |
|
| 24 |
import org.eclipse.core.resources.IFile; |
| 25 |
import org.eclipse.core.resources.IFolder; |
| 26 |
import org.eclipse.core.resources.IProject; |
| 27 |
import org.eclipse.core.resources.IResource; |
| 28 |
import org.eclipse.core.resources.IResourceChangeEvent; |
| 29 |
import org.eclipse.core.resources.IResourceChangeListener; |
| 30 |
import org.eclipse.core.resources.IResourceDelta; |
| 31 |
import org.eclipse.core.resources.IResourceDeltaVisitor; |
| 32 |
import org.eclipse.core.resources.IResourceProxy; |
| 33 |
import org.eclipse.core.resources.IResourceProxyVisitor; |
| 34 |
import org.eclipse.core.resources.IWorkspace; |
| 35 |
import org.eclipse.core.resources.IncrementalProjectBuilder; |
| 36 |
import org.eclipse.core.resources.ResourcesPlugin; |
| 37 |
import org.eclipse.core.runtime.CoreException; |
| 38 |
import org.eclipse.core.runtime.IPath; |
| 39 |
import org.eclipse.core.runtime.IProgressMonitor; |
| 40 |
import org.eclipse.core.runtime.Preferences; |
| 41 |
import org.eclipse.wst.server.core.IModule; |
| 42 |
import org.eclipse.wst.server.core.IRuntime; |
| 43 |
import org.eclipse.wst.server.core.IRuntimeLifecycleListener; |
| 44 |
import org.eclipse.wst.server.core.IServer; |
| 45 |
import org.eclipse.wst.server.core.IServerLifecycleListener; |
| 46 |
import org.eclipse.wst.server.core.ServerCore; |
| 47 |
import org.eclipse.wst.server.core.ServerUtil; |
| 48 |
import org.eclipse.wst.server.core.model.IModuleResourceDelta; |
| 49 |
import org.eclipse.wst.server.core.model.ModuleDelegate; |
| 20 |
import org.eclipse.wst.server.core.model.ServerDelegate; |
50 |
import org.eclipse.wst.server.core.model.ServerDelegate; |
| 21 |
import org.eclipse.wst.server.core.util.ProjectModuleFactoryDelegate; |
51 |
import org.eclipse.wst.server.core.util.ProjectModuleFactoryDelegate; |
| 22 |
/** |
52 |
/** |
|
Lines 121-126
Link Here
|
| 121 |
Trace.trace(Trace.SEVERE, "Error responding to resource change", e); |
151 |
Trace.trace(Trace.SEVERE, "Error responding to resource change", e); |
| 122 |
} |
152 |
} |
| 123 |
|
153 |
|
|
|
154 |
if (ServerPreferences.getInstance().isWorkinprogressDeltaProcessing()) { |
| 155 |
// search for changes in deployed modules |
| 156 |
Map<IModule, Set<IServer>> modules = new HashMap<IModule, Set<IServer>>(); |
| 157 |
for (IServer server : getServers()) { |
| 158 |
if (server.getAdapter(ServerDelegate.class) == null) continue; // server has not been published yet |
| 159 |
/* |
| 160 |
* TODO server.getModules() returns root modules -- will this miss changes in child modules??? |
| 161 |
*/ |
| 162 |
for (IModule module : server.getModules()) { |
| 163 |
Set<IServer> servers = modules.get(module); |
| 164 |
if (servers == null) { |
| 165 |
servers = new HashSet<IServer>(); |
| 166 |
modules.put(module, servers); |
| 167 |
} |
| 168 |
servers.add(server); |
| 169 |
} |
| 170 |
} |
| 171 |
for (IModule module : modules.keySet()) { |
| 172 |
ModuleDelegate delegate = (ModuleDelegate) module.getAdapter(ModuleDelegate.class); |
| 173 |
if (delegate == null) continue; // module has not been published yet |
| 174 |
try { |
| 175 |
/* |
| 176 |
* The idea is to eventually use moduleDelta in background thread |
| 177 |
* to actualy publish incremental changes. Otherwise, it is possible |
| 178 |
* to implement much cheaper delegate.hasChanges(delta) which |
| 179 |
* does not deeply traverse all changes. |
| 180 |
*/ |
| 181 |
IModuleResourceDelta moduleDelta = delegate.getModuleResourceDelta(delta); |
| 182 |
if (IResourceDelta.NO_CHANGE != moduleDelta.getKind()) { |
| 183 |
for (IServer server : modules.get(module)) { |
| 184 |
((Server) server).handleModuleProjectChange(module); |
| 185 |
} |
| 186 |
} |
| 187 |
} catch (Exception e) { |
| 188 |
Trace.trace(Trace.SEVERE, "Error responding to resource change", e); |
| 189 |
} |
| 190 |
} |
| 191 |
} |
| 192 |
|
| 124 |
Trace.trace(Trace.RESOURCES, "-<- Done ServerResourceChangeListener responding to resource change -<-"); |
193 |
Trace.trace(Trace.RESOURCES, "-<- Done ServerResourceChangeListener responding to resource change -<-"); |
| 125 |
} |
194 |
} |
| 126 |
|
195 |
|
|
Lines 910-927
Link Here
|
| 910 |
// process module changes |
979 |
// process module changes |
| 911 |
ProjectModuleFactoryDelegate.handleGlobalProjectChange(project, delta); |
980 |
ProjectModuleFactoryDelegate.handleGlobalProjectChange(project, delta); |
| 912 |
|
981 |
|
| 913 |
final IModule module = ServerUtil.getModule(project); |
982 |
if (!ServerPreferences.getInstance().isWorkinprogressDeltaProcessing()) { |
| 914 |
if (module == null) |
983 |
final IModule module = ServerUtil.getModule(project); |
| 915 |
return; |
984 |
if (module == null) |
| 916 |
|
985 |
return; |
| 917 |
Trace.trace(Trace.FINEST, "- publishHandleProjectChange"); |
986 |
|
| 918 |
|
987 |
Trace.trace(Trace.FINEST, "- publishHandleProjectChange"); |
| 919 |
IServer[] servers2 = getServers(); |
988 |
|
| 920 |
if (servers2 != null) { |
989 |
IServer[] servers2 = getServers(); |
| 921 |
int size = servers2.length; |
990 |
if (servers2 != null) { |
| 922 |
for (int i = 0; i < size; i++) { |
991 |
int size = servers2.length; |
| 923 |
if (servers2[i].getAdapter(ServerDelegate.class) != null) |
992 |
for (int i = 0; i < size; i++) { |
| 924 |
((Server) servers2[i]).handleModuleProjectChange(module); |
993 |
if (servers2[i].getAdapter(ServerDelegate.class) != null) |
|
|
994 |
((Server) servers2[i]).handleModuleProjectChange(module); |
| 995 |
} |
| 925 |
} |
996 |
} |
| 926 |
} |
997 |
} |
| 927 |
Trace.trace(Trace.FINEST, "< publishHandleProjectChange"); |
998 |
Trace.trace(Trace.FINEST, "< publishHandleProjectChange"); |