in plugins/org.apache.geronimo.st.core/src/main/java/org/apache/geronimo/st/core/GeronimoServerBehaviourDelegate.java [231:291]
protected void publishModules(int kind, List modules, List deltaKind, MultiStatus multi, IProgressMonitor monitor) {
Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerBehaviourDelegate.publishModules", deltaKindToString(kind), Arrays.asList(modules).toString(), Arrays.asList(deltaKind).toString(), multi, monitor);
//
// WTP publishes modules in reverse alphabetical order which does not account for possible
// dependencies between modules. If necessary reorder the publish order of the modules
// based on any discovered dependencies.
//
if (modules != null && modules.size() > 0) {
List list = getOrderedModules(this.getServer(),modules, deltaKind);
modules = (List) list.get(0);
deltaKind = (List) list.get(1);
}
IStatus status = Status.OK_STATUS;
if (modules != null && modules.size() > 0 && getGeronimoServer().isInPlaceSharedLib()) {
List rootModules = new ArrayList<IModule>();
for(int i = 0; i < modules.size(); i++) {
IModule[] module = (IModule[]) modules.get(i);
if(!rootModules.contains(module[0])) {
rootModules.add(module[0]);
}
}
IModule[] toProcess = (IModule[])rootModules.toArray(new IModule[rootModules.size()]);
status = updateSharedLib(toProcess, ProgressUtil.getSubMonitorFor(monitor, 1000));
}
if(status.isOK()) {
if (modules == null)
return;
int size = modules.size();
if (size == 0)
return;
if (monitor.isCanceled())
return;
List rootModulesPublished = new ArrayList<IModule>();
for (int i = 0; i < size; i++) {
IModule[] module = (IModule[]) modules.get(i);
int moduleDeltaKind = ((Integer)deltaKind.get(i)).intValue();
//has the root of this module been published already?
if(!rootModulesPublished.contains(module[0])) {
status = publishModule(kind, module, moduleDeltaKind, ProgressUtil.getSubMonitorFor(monitor, 3000));
if (status != null && !status.isOK())
multi.add(status);
//cache published root modules to compare against to prevent dup redeploys
if(moduleDeltaKind != NO_CHANGE) {
rootModulesPublished.add(module[0]);
}
} else {
setModulePublishState(module, IServer.PUBLISH_STATE_NONE);
Trace.trace(Trace.INFO, "root module for " + Arrays.asList(module).toString() + " already published. Skipping.", Activator.traceCore);
}
}
} else {
multi.add(status);
}
Trace.tracePoint("Exit ", Activator.traceCore, "GeronimoServerBehaviourDelegate.publishModules");
}