Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 150673 | Differences between
and this patch

Collapse All | Expand All

(-)plugin.xml (-1 / +7 lines)
Lines 81-86 Link Here
81
    id="org.eclipse.internet"
81
    id="org.eclipse.internet"
82
    name="%preferenceInternetTitle"
82
    name="%preferenceInternetTitle"
83
    class="org.eclipse.wst.server.ui.internal.webbrowser.InternetPreferencePage"/>
83
    class="org.eclipse.wst.server.ui.internal.webbrowser.InternetPreferencePage"/>
84
  <page
85
        category="org.eclipse.wst.server.ui.preferencePage"
86
        class="org.eclipse.wst.server.ui.internal.WorkinprogressPage"
87
        id="org.eclipse.wst.server.ui.workinprogress.preferencePage"
88
        name="Work in progress">
89
  </page>
84
</extension>
90
</extension>
85
91
86
<extension point="org.eclipse.ui.keywords">
92
<extension point="org.eclipse.ui.keywords">
Lines 350-353 Link Here
350
     icon="icons/obj16/web_module.gif"/>
356
     icon="icons/obj16/web_module.gif"/>
351
</extension>
357
</extension>
352
358
353
</plugin>
359
</plugin>
(-)serverui/org/eclipse/wst/server/ui/internal/WorkinprogressPage.java (+64 lines)
Added Link Here
1
package org.eclipse.wst.server.ui.internal;
2
3
import org.eclipse.jface.preference.PreferencePage;
4
import org.eclipse.swt.SWT;
5
import org.eclipse.swt.layout.GridData;
6
import org.eclipse.swt.layout.GridLayout;
7
import org.eclipse.swt.widgets.Button;
8
import org.eclipse.swt.widgets.Composite;
9
import org.eclipse.swt.widgets.Control;
10
import org.eclipse.ui.IWorkbench;
11
import org.eclipse.ui.IWorkbenchPreferencePage;
12
import org.eclipse.wst.server.core.internal.ServerPreferences;
13
14
public class WorkinprogressPage extends PreferencePage implements IWorkbenchPreferencePage {
15
16
	protected ServerPreferences preferences;
17
	
18
	protected Button useWorkinprogressDeltaProcessing;
19
20
	public WorkinprogressPage() {
21
		super();
22
		
23
		preferences = ServerPreferences.getInstance();
24
	}
25
26
	protected Control createContents(Composite parent) {
27
		initializeDialogUnits(parent);
28
29
		Composite composite = new Composite(parent, SWT.NONE);
30
		GridLayout layout = new GridLayout();
31
		layout.horizontalSpacing = convertHorizontalDLUsToPixels(4);
32
		layout.verticalSpacing = convertVerticalDLUsToPixels(4);
33
		layout.marginWidth = 0;
34
		layout.marginHeight = 0;
35
		layout.numColumns = 3;
36
		composite.setLayout(layout);
37
		GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL);
38
		composite.setLayoutData(data);
39
40
		useWorkinprogressDeltaProcessing = new Button(composite, SWT.CHECK);
41
		useWorkinprogressDeltaProcessing.setText("Use resource deltas to compute module publish state");
42
		data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
43
		data.horizontalSpan = 3;
44
		useWorkinprogressDeltaProcessing.setLayoutData(data);
45
		useWorkinprogressDeltaProcessing.setSelection(preferences.isWorkinprogressDeltaProcessing());
46
47
		return null;
48
	}
49
50
	public void init(IWorkbench workbench) {
51
		// TODO Auto-generated method stub
52
53
	}
54
55
	public boolean performOk() {
56
		preferences.setWorkinprogressDeltaProcessing(useWorkinprogressDeltaProcessing.getSelection());
57
		
58
		return true;
59
	}
60
61
	protected void performDefaults() {
62
		useWorkinprogressDeltaProcessing.setSelection(preferences.isDefaultWorkinprogressDeltaProcessing());
63
	}
64
}
(-).settings/org.eclipse.jdt.core.prefs (-7 / +7 lines)
Lines 1-4 Link Here
1
#Sun May 07 20:56:17 EDT 2006
1
#Fri Aug 18 14:43:33 EDT 2006
2
eclipse.preferences.version=1
2
eclipse.preferences.version=1
3
org.eclipse.jdt.core.builder.cleanOutputFolder=clean
3
org.eclipse.jdt.core.builder.cleanOutputFolder=clean
4
org.eclipse.jdt.core.builder.duplicateResourceTask=error
4
org.eclipse.jdt.core.builder.duplicateResourceTask=error
Lines 8-30 Link Here
8
org.eclipse.jdt.core.circularClasspath=error
8
org.eclipse.jdt.core.circularClasspath=error
9
org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
9
org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
10
org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
10
org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
11
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
11
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
12
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
12
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
13
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
13
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
14
org.eclipse.jdt.core.compiler.compliance=1.4
14
org.eclipse.jdt.core.compiler.compliance=1.5
15
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
15
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
16
org.eclipse.jdt.core.compiler.debug.localVariable=generate
16
org.eclipse.jdt.core.compiler.debug.localVariable=generate
17
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
17
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
18
org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
18
org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
19
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
19
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
20
org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
20
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
21
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
21
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
22
org.eclipse.jdt.core.compiler.problem.deprecation=ignore
22
org.eclipse.jdt.core.compiler.problem.deprecation=ignore
23
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
23
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
24
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
24
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
25
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
25
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
26
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
26
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
27
org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
27
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
28
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
28
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
29
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
29
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
30
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
30
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
Lines 69-74 Link Here
69
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
69
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
70
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
70
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
71
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
71
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
72
org.eclipse.jdt.core.compiler.source=1.3
72
org.eclipse.jdt.core.compiler.source=1.5
73
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
73
org.eclipse.jdt.core.incompatibleJDKLevel=ignore
74
org.eclipse.jdt.core.incompleteClasspath=error
74
org.eclipse.jdt.core.incompleteClasspath=error
(-).settings/org.eclipse.jdt.ui.prefs (-1 / +2 lines)
Lines 1-3 Link Here
1
#Sun May 07 20:56:13 EDT 2006
1
#Fri Aug 18 14:43:32 EDT 2006
2
eclipse.preferences.version=1
2
eclipse.preferences.version=1
3
internal.default.compliance=default
3
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\n<templates/>
4
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\n<templates/>
(-)servercore/org/eclipse/wst/server/core/model/ModuleDelegate.java (+3 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.wst.server.core.model;
11
package org.eclipse.wst.server.core.model;
12
12
13
import org.eclipse.core.resources.IResourceDelta;
13
import org.eclipse.core.runtime.CoreException;
14
import org.eclipse.core.runtime.CoreException;
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.wst.server.core.IModule;
16
import org.eclipse.wst.server.core.IModule;
Lines 109-112 Link Here
109
	 * @throws CoreException thrown if there is a problem getting the members
110
	 * @throws CoreException thrown if there is a problem getting the members
110
	 */
111
	 */
111
	public abstract IModuleResource[] members() throws CoreException;
112
	public abstract IModuleResource[] members() throws CoreException;
113
	
114
	public abstract IModuleResourceDelta getModuleResourceDelta(IResourceDelta workspaceDelta) throws CoreException;
112
}
115
}
(-)servercore/org/eclipse/wst/server/core/internal/ResourceManager.java (-18 / +89 lines)
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");
(-)servercore/org/eclipse/wst/server/core/internal/ServerPreferences.java (+15 lines)
Lines 27-32 Link Here
27
	private static final String PREF_MACHINE_SPEED = "machine-speed";
27
	private static final String PREF_MACHINE_SPEED = "machine-speed";
28
28
29
	private static final String PREF_SYNC_ON_STARTUP = "sync-on-startup";
29
	private static final String PREF_SYNC_ON_STARTUP = "sync-on-startup";
30
	
31
	private static final String PREF_WORKINPROGRESS_DELTA_PROCESSING = "delta-processing";
30
32
31
	private Preferences preferences;
33
	private Preferences preferences;
32
34
Lines 291-296 Link Here
291
		preferences.setValue(PREF_AUTO_PUBLISH_REMOTE_TIME, auto);
293
		preferences.setValue(PREF_AUTO_PUBLISH_REMOTE_TIME, auto);
292
		ServerPlugin.getInstance().savePluginPreferences();
294
		ServerPlugin.getInstance().savePluginPreferences();
293
	}
295
	}
296
	
297
	public boolean isWorkinprogressDeltaProcessing() {
298
		return preferences.getBoolean(PREF_WORKINPROGRESS_DELTA_PROCESSING);
299
	}
300
301
	public boolean isDefaultWorkinprogressDeltaProcessing() {
302
		return false;
303
	}
304
	
305
	public void setWorkinprogressDeltaProcessing(boolean workinprogress) {
306
		preferences.setValue(PREF_WORKINPROGRESS_DELTA_PROCESSING, workinprogress);
307
		ServerPlugin.getInstance().savePluginPreferences();
308
	}
294
309
295
	/**
310
	/**
296
	 * Set the default values.
311
	 * Set the default values.
(-)META-INF/MANIFEST.MF (-1 / +2 lines)
Lines 15-19 Link Here
15
 org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
15
 org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
16
 org.eclipse.core.expressions;bundle-version="[3.2.0,4.0.0)",
16
 org.eclipse.core.expressions;bundle-version="[3.2.0,4.0.0)",
17
 org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
17
 org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
18
 org.eclipse.update.core;resolution:=optional;bundle-version="[3.2.0,4.0.0)"
18
 org.eclipse.update.core;bundle-version="[3.2.0,4.0.0)";resolution:=optional,
19
 org.eclipse.wst.common.modulecore
19
Eclipse-LazyStart: true
20
Eclipse-LazyStart: true
(-)servercore/org/eclipse/wst/server/core/internal/ModuleFolder2.java (+81 lines)
Added Link Here
1
package org.eclipse.wst.server.core.internal;
2
3
import java.io.File;
4
import java.util.List;
5
6
import org.eclipse.core.resources.IContainer;
7
import org.eclipse.core.resources.IFile;
8
import org.eclipse.core.resources.IFolder;
9
import org.eclipse.core.runtime.CoreException;
10
import org.eclipse.core.runtime.IPath;
11
import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode;
12
import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode.Entry;
13
import org.eclipse.wst.server.core.model.IModuleFolder;
14
import org.eclipse.wst.server.core.model.IModuleResource;
15
16
/**
17
 * IModuleFolder implementation that populates members lazily, when requested.
18
 * #members() is not thread-safe.
19
 */
20
public class ModuleFolder2 implements IModuleFolder {
21
22
	private final VirtualTreeNode folder;
23
	private IModuleResource[] members;
24
	
25
	public ModuleFolder2(VirtualTreeNode folder) {
26
		this.folder = folder;
27
	}
28
29
	public IModuleResource[] members() {
30
		if (members == null) {
31
			try {
32
				List<VirtualTreeNode> children = folder.members();
33
				members = new IModuleResource[children.size()];
34
				int i = 0;
35
				for (VirtualTreeNode child : children) {
36
					members[i++] = newModuleResource(child);
37
				}
38
			} catch (CoreException e) {
39
				// TODO log
40
			}
41
		}
42
		return members;
43
	}
44
45
	public IPath getModuleRelativePath() {
46
		// TODO cache
47
		return folder.getRuntimePath().removeLastSegments(1).makeRelative();
48
	}
49
50
	public String getName() {
51
		// TODO cache
52
		return folder.getRuntimePath().lastSegment();
53
	}
54
55
	public Object getAdapter(Class adapter) {
56
		List<Entry> resolvedEntries = folder.getResolvedEntries();
57
		if (resolvedEntries == null || resolvedEntries.size() == 0) return null;
58
		if (IContainer.class.equals(adapter) || IFolder.class.equals(adapter)) {
59
			return resolvedEntries.get(0).getResource();
60
		}
61
		return null;
62
	}
63
64
	public static IModuleResource newModuleResource(VirtualTreeNode node) {
65
		IModuleResource result;
66
		if (node.isFolder()) {
67
			result = new ModuleFolder2(node);
68
		} else {
69
			IPath path = node.getRuntimePath().removeLastSegments(1).makeRelative();
70
			List<Entry> resolvedEntries = node.getResolvedEntries();
71
			IFile ifile = (IFile) resolvedEntries.get(0).getResource();
72
			if (ifile != null) {
73
				result = new ModuleFile(ifile, ifile.getName(), path);
74
			} else {
75
				File file = resolvedEntries.get(0).getFile();
76
				result = new ModuleFile(file, file.getName(), path);
77
			}
78
		}
79
		return result;
80
	}
81
}

Return to bug 150673