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 200634 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/bugzilla/tests/EncodingTest.java (-2 / +2 lines)
Lines 41-47 Link Here
41
	 * different encoding (though it may not be legible)
41
	 * different encoding (though it may not be legible)
42
	 */
42
	 */
43
	public void testDifferentReportEncoding() throws CoreException {
43
	public void testDifferentReportEncoding() throws CoreException {
44
		init222();
44
		init222(true);
45
		repository.setCharacterEncoding("UTF-8");
45
		repository.setCharacterEncoding("UTF-8");
46
		BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingId(repository, "57",
46
		BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingId(repository, "57",
47
				new NullProgressMonitor());
47
				new NullProgressMonitor());
Lines 59-65 Link Here
59
	}
59
	}
60
60
61
	public void testProperEncodingUponPost() throws CoreException {
61
	public void testProperEncodingUponPost() throws CoreException {
62
		init222();
62
		init222(true);
63
		repository.setCharacterEncoding("UTF-8");
63
		repository.setCharacterEncoding("UTF-8");
64
		BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingId(repository, "57",
64
		BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingId(repository, "57",
65
				new NullProgressMonitor());
65
				new NullProgressMonitor());
(-)src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java (-18 / +24 lines)
Lines 51-69 Link Here
51
//	3.1		 1		rob.elves@eclipse.org	tests@mylar.eclipse.org
51
//	3.1		 1		rob.elves@eclipse.org	tests@mylar.eclipse.org
52
52
53
	public void testReassign222() throws CoreException {
53
	public void testReassign222() throws CoreException {
54
		init222();
54
		init222(true);
55
		String taskNumber = "92";
55
		String taskNumber = "92";
56
		doReassignOld(taskNumber, "user@mylar.eclipse.org");
56
		doReassignOld(taskNumber, "user@mylar.eclipse.org");
57
	}
57
	}
58
58
59
	public void testReassign30() throws CoreException {
59
	public void testReassign30() throws CoreException {
60
		init30();
60
		init30(true);
61
		String taskNumber = "5";
62
		doReassignOld(taskNumber, "tests@mylyn.eclipse.org");
63
	}
64
65
	public void testReassign30MemoryonlyPassword() throws CoreException {
66
		init30(false);
61
		String taskNumber = "5";
67
		String taskNumber = "5";
62
		doReassignOld(taskNumber, "tests@mylyn.eclipse.org");
68
		doReassignOld(taskNumber, "tests@mylyn.eclipse.org");
63
	}
69
	}
64
70
65
	public void testReassign31() throws CoreException {
71
	public void testReassign31() throws CoreException {
66
		init31();
72
		init31(false);
67
		String taskNumber = "1";
73
		String taskNumber = "1";
68
74
69
		TasksUiPlugin.getTaskDataManager().clear();
75
		TasksUiPlugin.getTaskDataManager().clear();
Lines 178-184 Link Here
178
	}
184
	}
179
185
180
	public void testSubTaskHasIncoming() throws CoreException {
186
	public void testSubTaskHasIncoming() throws CoreException {
181
		init30();
187
		init30(true);
182
		String taskNumber = "6";
188
		String taskNumber = "6";
183
		BugzillaTask task = generateLocalTaskAndDownload(taskNumber);
189
		BugzillaTask task = generateLocalTaskAndDownload(taskNumber);
184
		assertNotNull(task);
190
		assertNotNull(task);
Lines 188-194 Link Here
188
	}
194
	}
189
195
190
	public void testFocedQuerySynchronization() throws CoreException {
196
	public void testFocedQuerySynchronization() throws CoreException {
191
		init222();
197
		init222(true);
192
		TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
198
		TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
193
		TasksUiPlugin.getTaskDataManager().clear();
199
		TasksUiPlugin.getTaskDataManager().clear();
194
		assertEquals(0, taskList.getAllTasks().size());
200
		assertEquals(0, taskList.getAllTasks().size());
Lines 214-220 Link Here
214
	}
220
	}
215
221
216
	public void testCreateTaskFromExistingId() throws Exception {
222
	public void testCreateTaskFromExistingId() throws Exception {
217
		init222();
223
		init222(true);
218
		try {
224
		try {
219
			connector.createTaskFromExistingId(repository, "9999", new NullProgressMonitor());
225
			connector.createTaskFromExistingId(repository, "9999", new NullProgressMonitor());
220
			fail();
226
			fail();
Lines 233-239 Link Here
233
	}
239
	}
234
240
235
	public void testAnonymousRepositoryAccess() throws Exception {
241
	public void testAnonymousRepositoryAccess() throws Exception {
236
		init218();
242
		init218(true);
237
		assertNotNull(repository);
243
		assertNotNull(repository);
238
		repository.setAuthenticationCredentials("", "");
244
		repository.setAuthenticationCredentials("", "");
239
		// test anonymous task retrieval
245
		// test anonymous task retrieval
Lines 271-277 Link Here
271
	}
277
	}
272
278
273
	public void testUpdate() throws Exception {
279
	public void testUpdate() throws Exception {
274
		init222();
280
		init222(true);
275
		String taskNumber = "3";
281
		String taskNumber = "3";
276
		TasksUiPlugin.getTaskDataManager().clear();
282
		TasksUiPlugin.getTaskDataManager().clear();
277
		assertEquals(0, TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks().size());
283
		assertEquals(0, TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks().size());
Lines 288-294 Link Here
288
	}
294
	}
289
295
290
	public void testUpdateWithSubTasks() throws Exception {
296
	public void testUpdateWithSubTasks() throws Exception {
291
		init222();
297
		init222(true);
292
		String taskNumber = "23";
298
		String taskNumber = "23";
293
		TasksUiPlugin.getTaskDataManager().clear();
299
		TasksUiPlugin.getTaskDataManager().clear();
294
		assertEquals(0, TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks().size());
300
		assertEquals(0, TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks().size());
Lines 298-304 Link Here
298
	}
304
	}
299
305
300
	public void testContextAttachFailure() throws Exception {
306
	public void testContextAttachFailure() throws Exception {
301
		init218();
307
		init218(true);
302
		BugzillaTask task = this.generateLocalTaskAndDownload("3");
308
		BugzillaTask task = this.generateLocalTaskAndDownload("3");
303
		assertNotNull(task);
309
		assertNotNull(task);
304
		assertNotNull(TasksUiPlugin.getTaskDataManager().getNewTaskData(task.getRepositoryUrl(), task.getTaskId()));
310
		assertNotNull(TasksUiPlugin.getTaskDataManager().getNewTaskData(task.getRepositoryUrl(), task.getTaskId()));
Lines 318-324 Link Here
318
	}
324
	}
319
325
320
	public void testSynchronize() throws CoreException {
326
	public void testSynchronize() throws CoreException {
321
		init222();
327
		init222(true);
322
328
323
		TasksUiPlugin.getTaskDataManager().clear();
329
		TasksUiPlugin.getTaskDataManager().clear();
324
330
Lines 378-384 Link Here
378
	}
384
	}
379
385
380
	public void testUniqueQueryHitObjects() {
386
	public void testUniqueQueryHitObjects() {
381
		init222();
387
		init222(true);
382
		BugzillaRepositoryQuery query1 = new BugzillaRepositoryQuery(IBugzillaConstants.TEST_BUGZILLA_222_URL,
388
		BugzillaRepositoryQuery query1 = new BugzillaRepositoryQuery(IBugzillaConstants.TEST_BUGZILLA_222_URL,
383
				"queryurl", "description1");
389
				"queryurl", "description1");
384
		BugzillaTask query1Hit = new BugzillaTask(IBugzillaConstants.TEST_BUGZILLA_222_URL, "1", "description1");
390
		BugzillaTask query1Hit = new BugzillaTask(IBugzillaConstants.TEST_BUGZILLA_222_URL, "1", "description1");
Lines 405-411 Link Here
405
	}
411
	}
406
412
407
	public void testAttachToExistingReport() throws Exception {
413
	public void testAttachToExistingReport() throws Exception {
408
		init222();
414
		init222(true);
409
		String taskNumber = "33";
415
		String taskNumber = "33";
410
		BugzillaTask task = generateLocalTaskAndDownload(taskNumber);
416
		BugzillaTask task = generateLocalTaskAndDownload(taskNumber);
411
		RepositoryTaskData taskData = TasksUiPlugin.getTaskDataManager().getNewTaskData(task.getRepositoryUrl(),
417
		RepositoryTaskData taskData = TasksUiPlugin.getTaskDataManager().getNewTaskData(task.getRepositoryUrl(),
Lines 497-503 Link Here
497
503
498
	public void testSynchChangedReports() throws Exception {
504
	public void testSynchChangedReports() throws Exception {
499
505
500
		init222();
506
		init222(true);
501
		String taskID = "4";
507
		String taskID = "4";
502
		BugzillaTask task4 = generateLocalTaskAndDownload(taskID);
508
		BugzillaTask task4 = generateLocalTaskAndDownload(taskID);
503
		RepositoryTaskData taskData4 = TasksUiPlugin.getTaskDataManager().getEditableCopy(task4.getRepositoryUrl(),
509
		RepositoryTaskData taskData4 = TasksUiPlugin.getTaskDataManager().getEditableCopy(task4.getRepositoryUrl(),
Lines 575-581 Link Here
575
581
576
	public void testIncomingWhenOfflineDeleted() throws Exception {
582
	public void testIncomingWhenOfflineDeleted() throws Exception {
577
583
578
		init222();
584
		init222(true);
579
		BugzillaTask task7 = generateLocalTaskAndDownload("7");
585
		BugzillaTask task7 = generateLocalTaskAndDownload("7");
580
		RepositoryTaskData recentTaskData = TasksUiPlugin.getTaskDataManager().getNewTaskData(task7.getRepositoryUrl(),
586
		RepositoryTaskData recentTaskData = TasksUiPlugin.getTaskDataManager().getNewTaskData(task7.getRepositoryUrl(),
581
				task7.getTaskId());
587
				task7.getTaskId());
Lines 618-624 Link Here
618
	}
624
	}
619
625
620
	public void testTimeTracker222() throws Exception {
626
	public void testTimeTracker222() throws Exception {
621
		init222();
627
		init222(true);
622
		timeTracker(15, true);
628
		timeTracker(15, true);
623
	}
629
	}
624
630
Lines 635-641 Link Here
635
	// }
641
	// }
636
642
637
	public void testTimeTracker218() throws Exception {
643
	public void testTimeTracker218() throws Exception {
638
		init218();
644
		init218(true);
639
		timeTracker(20, false);
645
		timeTracker(20, false);
640
	}
646
	}
641
647
Lines 724-730 Link Here
724
	 * Ensure obsoletes and patches are marked as such by the parser.
730
	 * Ensure obsoletes and patches are marked as such by the parser.
725
	 */
731
	 */
726
	public void testAttachmentAttributes() throws Exception {
732
	public void testAttachmentAttributes() throws Exception {
727
		init222();
733
		init222(true);
728
		int bugId = 19;
734
		int bugId = 19;
729
		String taskNumber = "" + bugId;
735
		String taskNumber = "" + bugId;
730
		BugzillaTask task = generateLocalTaskAndDownload(taskNumber);
736
		BugzillaTask task = generateLocalTaskAndDownload(taskNumber);
(-)src/org/eclipse/mylyn/bugzilla/tests/AbstractBugzillaTest.java (-14 / +14 lines)
Lines 70-104 Link Here
70
		manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
70
		manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
71
	}
71
	}
72
72
73
	protected void init31() {
73
	protected void init31(boolean useKeyring) {
74
		init(IBugzillaConstants.TEST_BUGZILLA_31_URL);
74
		init(IBugzillaConstants.TEST_BUGZILLA_31_URL, useKeyring);
75
	}
75
	}
76
76
77
	protected void init30() {
77
	protected void init30(boolean useKeyring) {
78
		init(IBugzillaConstants.TEST_BUGZILLA_30_URL);
78
		init(IBugzillaConstants.TEST_BUGZILLA_30_URL, useKeyring);
79
	}
79
	}
80
80
81
	protected void init222() {
81
	protected void init222(boolean useKeyring) {
82
		init(IBugzillaConstants.TEST_BUGZILLA_222_URL);
82
		init(IBugzillaConstants.TEST_BUGZILLA_222_URL, useKeyring);
83
	}
83
	}
84
84
85
	protected void init2201() {
85
	protected void init2201(boolean useKeyring) {
86
		init(IBugzillaConstants.TEST_BUGZILLA_2201_URL);
86
		init(IBugzillaConstants.TEST_BUGZILLA_2201_URL, useKeyring);
87
	}
87
	}
88
88
89
	protected void init220() {
89
	protected void init220(boolean useKeyring) {
90
		init(IBugzillaConstants.TEST_BUGZILLA_220_URL);
90
		init(IBugzillaConstants.TEST_BUGZILLA_220_URL, useKeyring);
91
	}
91
	}
92
92
93
	protected void init218() {
93
	protected void init218(boolean useKeyring) {
94
		init(IBugzillaConstants.TEST_BUGZILLA_218_URL);
94
		init(IBugzillaConstants.TEST_BUGZILLA_218_URL, useKeyring);
95
	}
95
	}
96
96
97
	@SuppressWarnings("deprecation")
97
	@SuppressWarnings("deprecation")
98
	protected void init(String url) {
98
	protected void init(String url, boolean useKeyring) {
99
		repository = new TaskRepository(DEFAULT_KIND, url);
99
		repository = new TaskRepository(DEFAULT_KIND, url);
100
		Credentials credentials = TestUtil.readCredentials();
100
		Credentials credentials = TestUtil.readCredentials();
101
		repository.setAuthenticationCredentials(credentials.username, credentials.password);
101
		repository.setAuthenticationCredentials(credentials.username, credentials.password, useKeyring);
102
102
103
		repository.setTimeZoneId("Canada/Eastern");
103
		repository.setTimeZoneId("Canada/Eastern");
104
		assertNotNull(manager);
104
		assertNotNull(manager);
(-)src/org/eclipse/mylyn/tasks/core/TaskRepository.java (-11 / +147 lines)
Lines 85-90 Link Here
85
85
86
	private String cachedUserName;
86
	private String cachedUserName;
87
87
88
	public static final String SAVE_PASSWORD = "org.eclipse.mylyn.tasklist.repositories.save.password";
89
90
	public static final String SAVE_HTTP_PASSWORD = "org.eclipse.mylyn.tasklist.repositories.save.http.password";
91
92
	public static final String SAVE_PROXY_PASSWORD = "org.eclipse.mylyn.tasklist.repositories.save.proxy.password";
93
94
	private boolean isCachedUserPassword;
95
96
	private String cachedUserPassword;
97
98
	private boolean isCachedProxyUserName;
99
100
	private String cachedProxyUserName;
101
	
102
	private boolean isCachedProxyUserPassword;
103
104
	private String cachedProxyUserPassword;
105
106
	private boolean isCachedHttpUserName;
107
108
	private String cachedHttpUserName;
109
	
110
	private boolean isCachedHttpUserPassword;
111
112
	private String cachedHttpUserPassword;
113
	
88
	static {
114
	static {
89
		URL url = null;
115
		URL url = null;
90
		try {
116
		try {
Lines 159-192 Link Here
159
	public String getUserName() {
185
	public String getUserName() {
160
		// NOTE: if anonymous, user name is "" string so we won't go to keyring
186
		// NOTE: if anonymous, user name is "" string so we won't go to keyring
161
		if (!isCachedUserName) {
187
		if (!isCachedUserName) {
162
			cachedUserName = getUserNameFromKeyRing();
188
			cachedUserName = getAuthInfo(AUTH_USERNAME);
163
			isCachedUserName = true;
189
			isCachedUserName = true;
164
		}
190
		}
165
		return cachedUserName;
191
		return cachedUserName;
166
	}
192
	}
167
193
168
	private String getUserNameFromKeyRing() {
169
		return getAuthInfo(AUTH_USERNAME);
170
	}
171
172
	public String getPassword() {
194
	public String getPassword() {
173
		return getAuthInfo(AUTH_PASSWORD);
195
		if (!isCachedUserPassword) {
196
			if (!isSavePassword()) {
197
				cachedUserPassword = "";
198
			} else {
199
				cachedUserPassword = getAuthInfo(AUTH_PASSWORD);
200
				isCachedUserPassword = true;
201
			}
202
		}
203
		return cachedUserPassword;
174
	}
204
	}
175
205
176
	public String getProxyUsername() {
206
	public String getProxyUsername() {
177
		return getAuthInfo(PROXY_USERNAME);
207
		if (!isCachedProxyUserName) {
208
			cachedProxyUserName = getAuthInfo(PROXY_USERNAME);
209
			isCachedProxyUserName = true;
210
		}
211
		return cachedProxyUserName;
178
	}
212
	}
179
213
180
	public String getProxyPassword() {
214
	public String getProxyPassword() {
181
		return getAuthInfo(PROXY_PASSWORD);
215
		if (!isCachedProxyUserPassword) {
216
			if (!isSaveProxyPassword()) {
217
				cachedProxyUserPassword = "";
218
			} else {
219
				cachedProxyUserPassword = getAuthInfo(PROXY_PASSWORD);
220
				isCachedProxyUserPassword = true;
221
			}
222
		}
223
		return cachedProxyUserPassword;
182
	}
224
	}
183
225
184
	public String getHttpUser() {
226
	public String getHttpUser() {
185
		return getAuthInfo(AUTH_HTTP_USERNAME);
227
		if (!isCachedHttpUserName) {
228
			cachedHttpUserName = getAuthInfo(AUTH_HTTP_USERNAME);
229
			isCachedHttpUserName = true;
230
		}
231
		return cachedHttpUserName;
186
	}
232
	}
187
233
188
	public String getHttpPassword() {
234
	public String getHttpPassword() {
189
		return getAuthInfo(AUTH_HTTP_PASSWORD);
235
		if (!isCachedHttpUserPassword) {
236
			if (!isSaveHttpPassword()) {
237
				cachedHttpUserPassword = "";
238
			} else {
239
				cachedHttpUserPassword = getAuthInfo(AUTH_HTTP_PASSWORD);
240
				isCachedHttpUserPassword = true;
241
			}
242
		}
243
		return cachedHttpUserPassword;
190
	}
244
	}
191
245
192
	public void setAuthenticationCredentials(String username, String password) {
246
	public void setAuthenticationCredentials(String username, String password) {
Lines 203-208 Link Here
203
		setCredentials(username, password, AUTH_HTTP_USERNAME, AUTH_HTTP_PASSWORD);
257
		setCredentials(username, password, AUTH_HTTP_USERNAME, AUTH_HTTP_PASSWORD);
204
	}
258
	}
205
259
260
	public void setAuthenticationCredentials(String username, String password, boolean savePassword) {
261
		if (savePassword)
262
			setCredentials(username, password, AUTH_USERNAME, AUTH_PASSWORD);
263
		else
264
			setCredentials(username, "", AUTH_USERNAME, AUTH_PASSWORD);
265
		cachedUserName = username;
266
		isCachedUserName = true;
267
		cachedUserPassword = password;
268
		isCachedUserPassword = true;
269
 	}
270
271
	public void setProxyAuthenticationCredentials(String username, String password, boolean savePassword) {
272
		if (savePassword)
273
			setCredentials(username, password, PROXY_USERNAME, PROXY_PASSWORD);
274
		else
275
			setCredentials(username, "", PROXY_USERNAME, PROXY_PASSWORD);
276
		cachedProxyUserName = username;
277
		isCachedProxyUserName = true;
278
		cachedProxyUserPassword = password;
279
		isCachedProxyUserPassword = true;
280
	}
281
	public void setHttpAuthenticationCredentials(String username, String password, boolean savePassword) {
282
		if (savePassword)
283
			setCredentials(username, password, AUTH_HTTP_USERNAME, AUTH_HTTP_PASSWORD);
284
		else
285
			setCredentials(username, "", AUTH_HTTP_USERNAME, AUTH_HTTP_PASSWORD);
286
		cachedHttpUserName = username;
287
		isCachedHttpUserName = true;
288
		cachedHttpUserPassword = password;
289
		isCachedHttpUserPassword = true;
290
	}
291
206
	private void setCredentials(String username, String password, String userProperty, String passwordProperty) {
292
	private void setCredentials(String username, String password, String userProperty, String passwordProperty) {
207
		Map<String, String> map = getAuthInfo();
293
		Map<String, String> map = getAuthInfo();
208
		if (map == null) {
294
		if (map == null) {
Lines 231-237 Link Here
231
					Map<String, String> headlessCreds = getAuthInfo();
317
					Map<String, String> headlessCreds = getAuthInfo();
232
					headlessCreds.clear();
318
					headlessCreds.clear();
233
				}
319
				}
234
				isCachedUserName = false;
320
				isCachedUserName = false;				
321
				isCachedProxyUserName = false;
322
				isCachedHttpUserName = false;
323
				isCachedUserPassword = false;
324
				isCachedProxyUserPassword = false;
325
				isCachedHttpUserPassword = false;
235
			} catch (CoreException e) {
326
			} catch (CoreException e) {
236
				StatusHandler.fail(e, "could not flush authorization credentials", true);
327
				StatusHandler.fail(e, "could not flush authorization credentials", true);
237
			}
328
			}
Lines 468-471 Link Here
468
		return getProperty(OFFLINE) != null && "true".equals(getProperty(OFFLINE));
559
		return getProperty(OFFLINE) != null && "true".equals(getProperty(OFFLINE));
469
	}
560
	}
470
561
562
	public void setSavePassword(boolean b) {
563
		properties.put(SAVE_PASSWORD, String.valueOf(b));
564
	}
565
566
	public boolean isSavePassword() {
567
		return getProperty(SAVE_PASSWORD) != null && "true".equals(getProperty(SAVE_PASSWORD));
568
	}
569
570
	public void setSaveHttpPassword(boolean b) {
571
		properties.put(SAVE_HTTP_PASSWORD, String.valueOf(b));
572
	}
573
574
	public boolean isSaveHttpPassword() {
575
		return getProperty(SAVE_HTTP_PASSWORD) != null && "true".equals(getProperty(SAVE_HTTP_PASSWORD));
576
	}
577
578
	public void setSaveProxyPassword(boolean b) {
579
		properties.put(SAVE_PROXY_PASSWORD, String.valueOf(b));
580
	}
581
582
	public boolean isSaveProxyPassword() {
583
		return getProperty(SAVE_PROXY_PASSWORD) != null && "true".equals(getProperty(SAVE_PROXY_PASSWORD));
584
	}
585
586
	public String getCachedPassword() {
587
		if (isCachedUserPassword)
588
			return cachedUserPassword;
589
		else
590
			return null;
591
	}
592
593
	public String getCachedHttpPassword() {
594
		if (isCachedHttpUserPassword)
595
			return cachedHttpUserPassword;
596
		else
597
			return null;
598
	}
599
600
	public String getCachedProxyPassword() {
601
		if (isCachedProxyUserPassword)
602
			return cachedProxyUserPassword;
603
		else
604
			return null;
605
	}
606
471
}
607
}
(-)src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java (-13 / +15 lines)
Lines 358-382 Link Here
358
358
359
	@Override
359
	@Override
360
	public void updateProperties(TaskRepository repository) {
360
	public void updateProperties(TaskRepository repository) {
361
		repository.setProperty(IBugzillaConstants.REPOSITORY_SETTING_SHORT_LOGIN,
361
		if(needsAdvanced() || needsEncoding()){
362
				String.valueOf(cleanQAContact.getSelection()));
362
			repository.setProperty(IBugzillaConstants.REPOSITORY_SETTING_SHORT_LOGIN,
363
		repository.setProperty(IBugzillaConstants.BUGZILLA_LANGUAGE_SETTING,
363
					String.valueOf(cleanQAContact.getSelection()));
364
				languageSettingCombo.getText());
364
			repository.setProperty(IBugzillaConstants.BUGZILLA_LANGUAGE_SETTING,
365
		
365
					languageSettingCombo.getText());
366
366
//		if (cachedConfigButton.getSelection()) {
367
//		if (cachedConfigButton.getSelection()) {
367
//			repository.setProperty(IBugzillaConstants.PROPERTY_CONFIGTIMESTAMP, "");
368
//			repository.setProperty(IBugzillaConstants.PROPERTY_CONFIGTIMESTAMP, "");
368
//		} else {
369
//		} else {
369
//			repository.setProperty(IBugzillaConstants.PROPERTY_CONFIGTIMESTAMP,
370
//			repository.setProperty(IBugzillaConstants.PROPERTY_CONFIGTIMESTAMP,
370
//					IBugzillaConstants.TIMESTAMP_NOT_AVAILABLE);
371
//					IBugzillaConstants.TIMESTAMP_NOT_AVAILABLE);
371
//		}
372
//		}
372
		if (!autodetectPlatformOS.getSelection()) {
373
			if (!autodetectPlatformOS.getSelection()) {
373
			repository.setProperty(IBugzillaConstants.BUGZILLA_DEF_PLATFORM,
374
				repository.setProperty(IBugzillaConstants.BUGZILLA_DEF_PLATFORM,
374
					String.valueOf(defaultPlatformCombo.getItem(defaultPlatformCombo.getSelectionIndex())));
375
						String.valueOf(defaultPlatformCombo.getItem(defaultPlatformCombo.getSelectionIndex())));
375
			repository.setProperty(IBugzillaConstants.BUGZILLA_DEF_OS,
376
				repository.setProperty(IBugzillaConstants.BUGZILLA_DEF_OS,
376
					String.valueOf(defaultOSCombo.getItem(defaultOSCombo.getSelectionIndex())));
377
						String.valueOf(defaultOSCombo.getItem(defaultOSCombo.getSelectionIndex())));
377
		} else {
378
			} else {
378
			repository.removeProperty(IBugzillaConstants.BUGZILLA_DEF_PLATFORM);
379
				repository.removeProperty(IBugzillaConstants.BUGZILLA_DEF_PLATFORM);
379
			repository.removeProperty(IBugzillaConstants.BUGZILLA_DEF_OS);
380
				repository.removeProperty(IBugzillaConstants.BUGZILLA_DEF_OS);
381
			}
380
		}
382
		}
381
	}
383
	}
382
384
(-)src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java (+40 lines)
Lines 37-42 Link Here
37
import org.eclipse.jface.wizard.WizardDialog;
37
import org.eclipse.jface.wizard.WizardDialog;
38
import org.eclipse.mylyn.context.core.ContextCorePlugin;
38
import org.eclipse.mylyn.context.core.ContextCorePlugin;
39
import org.eclipse.mylyn.internal.context.core.ContextPreferenceContstants;
39
import org.eclipse.mylyn.internal.context.core.ContextPreferenceContstants;
40
import org.eclipse.mylyn.internal.tasks.core.IRepositoryConstants;
40
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
41
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
41
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
42
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
42
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
43
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
Lines 62-67 Link Here
62
import org.eclipse.mylyn.internal.tasks.ui.util.TaskListWriter;
63
import org.eclipse.mylyn.internal.tasks.ui.util.TaskListWriter;
63
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiExtensionReader;
64
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiExtensionReader;
64
import org.eclipse.mylyn.internal.tasks.ui.views.TaskRepositoriesView;
65
import org.eclipse.mylyn.internal.tasks.ui.views.TaskRepositoriesView;
66
import org.eclipse.mylyn.internal.tasks.ui.wizards.EditCredentialsWizard;
65
import org.eclipse.mylyn.internal.tasks.ui.wizards.EditRepositoryWizard;
67
import org.eclipse.mylyn.internal.tasks.ui.wizards.EditRepositoryWizard;
66
import org.eclipse.mylyn.monitor.core.StatusHandler;
68
import org.eclipse.mylyn.monitor.core.StatusHandler;
67
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
69
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
Lines 79-84 Link Here
79
import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel;
81
import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel;
80
import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState;
82
import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState;
81
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorFactory;
83
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorFactory;
84
import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositorySettingsPage;
82
import org.eclipse.mylyn.web.core.WebClientUtil;
85
import org.eclipse.mylyn.web.core.WebClientUtil;
83
import org.eclipse.swt.graphics.Image;
86
import org.eclipse.swt.graphics.Image;
84
import org.eclipse.swt.widgets.Shell;
87
import org.eclipse.swt.widgets.Shell;
Lines 1076-1079 Link Here
1076
		}
1079
		}
1077
	}
1080
	}
1078
1081
1082
	public static void testAndSetMemoryOnlyPassword(TaskRepository repository) throws Exception {
1083
		AbstractRepositoryConnector connector = getRepositoryManager().getRepositoryConnector(
1084
				repository.getConnectorKind());
1085
		boolean userManaged = true;
1086
		if (connector != null) {
1087
			userManaged = connector.isUserManaged();
1088
		}
1089
		if (!repository.isAnonymous()
1090
				&& userManaged
1091
				&& !repository.isOffline()
1092
				&& (!repository.isSavePassword() && repository.getCachedPassword() == null)) {
1093
			credentialsWizards(repository, "Please enter memoronly credentials.");
1094
		}
1095
}
1096
1097
private static void credentialsWizards(TaskRepository repository, String message) throws Exception {
1098
	if (AbstractRepositorySettingsPage.getSingle()!= null) {
1099
		throw new Exception("AbstractRepositorySettingsPage alredy used");
1100
	}
1101
	try {
1102
		EditCredentialsWizard wizard = new EditCredentialsWizard(repository);
1103
		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
1104
		if (shell != null && !shell.isDisposed()) {
1105
			WizardDialog dialog = new WizardDialog(shell, wizard);
1106
			dialog.create();
1107
			dialog.setErrorMessage(message);
1108
			dialog.setBlockOnOpen(true);
1109
			if (dialog.open() == Dialog.CANCEL) {
1110
				dialog.close();
1111
				StatusHandler.log("credentialsWizards canceled -> repository set offline " + repository.getProperty(IRepositoryConstants.PROPERTY_LABEL), repository);
1112
				repository.setOffline(true);
1113
			}
1114
		}
1115
	} catch (Exception e) {
1116
		StatusHandler.fail(e, e.getMessage(), true);
1117
	}
1118
}
1079
}
1119
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java (-3 / +15 lines)
Lines 57-74 Link Here
57
			repository.setVersion(abstractRepositorySettingsPage.getVersion());
57
			repository.setVersion(abstractRepositorySettingsPage.getVersion());
58
			repository.setCharacterEncoding(abstractRepositorySettingsPage.getCharacterEncoding());
58
			repository.setCharacterEncoding(abstractRepositorySettingsPage.getCharacterEncoding());
59
			repository.setAuthenticationCredentials(abstractRepositorySettingsPage.getUserName(),
59
			repository.setAuthenticationCredentials(abstractRepositorySettingsPage.getUserName(),
60
					abstractRepositorySettingsPage.getPassword());
60
					abstractRepositorySettingsPage.getPassword(),
61
					abstractRepositorySettingsPage.getSavePassword());
62
			repository.setSavePassword(abstractRepositorySettingsPage.getSavePassword());
63
61
			repository.setRepositoryLabel(abstractRepositorySettingsPage.getRepositoryLabel());
64
			repository.setRepositoryLabel(abstractRepositorySettingsPage.getRepositoryLabel());
62
			repository.setAnonymous(abstractRepositorySettingsPage.isAnonymousAccess());
65
			repository.setAnonymous(abstractRepositorySettingsPage.isAnonymousAccess());
63
			repository.setHttpAuthenticationCredentials(abstractRepositorySettingsPage.getHttpAuthUserId(),
66
			repository.setHttpAuthenticationCredentials(abstractRepositorySettingsPage.getHttpAuthUserId(),
64
					abstractRepositorySettingsPage.getHttpAuthPassword());
67
					abstractRepositorySettingsPage.getHttpAuthPassword(),abstractRepositorySettingsPage.getSaveHttpPassword());
68
			repository.setSaveHttpPassword(abstractRepositorySettingsPage.getSaveHttpPassword());
65
69
66
			repository.setProperty(TaskRepository.PROXY_USEDEFAULT,
70
			repository.setProperty(TaskRepository.PROXY_USEDEFAULT,
67
					String.valueOf(abstractRepositorySettingsPage.getUseDefaultProxy()));
71
					String.valueOf(abstractRepositorySettingsPage.getUseDefaultProxy()));
68
			repository.setProperty(TaskRepository.PROXY_HOSTNAME, abstractRepositorySettingsPage.getProxyHostname());
72
			repository.setProperty(TaskRepository.PROXY_HOSTNAME, abstractRepositorySettingsPage.getProxyHostname());
69
			repository.setProperty(TaskRepository.PROXY_PORT, abstractRepositorySettingsPage.getProxyPort());
73
			repository.setProperty(TaskRepository.PROXY_PORT, abstractRepositorySettingsPage.getProxyPort());
70
			repository.setProxyAuthenticationCredentials(abstractRepositorySettingsPage.getProxyUserName(),
74
			repository.setProxyAuthenticationCredentials(abstractRepositorySettingsPage.getProxyUserName(),
71
					abstractRepositorySettingsPage.getProxyPassword());
75
					abstractRepositorySettingsPage.getProxyPassword(),abstractRepositorySettingsPage.getSaveProxyPassword());
76
			repository.setSaveProxyPassword(abstractRepositorySettingsPage.getSaveProxyPassword());
72
77
73
			abstractRepositorySettingsPage.updateProperties(repository);
78
			abstractRepositorySettingsPage.updateProperties(repository);
74
			TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository);
79
			TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository);
Lines 99-102 Link Here
99
	public TaskRepository getRepository() {
104
	public TaskRepository getRepository() {
100
		return repository;
105
		return repository;
101
	}
106
	}
107
108
	@Override
109
	public void dispose() {
110
		// ignore
111
		super.dispose();
112
		abstractRepositorySettingsPage.dispose();		
113
	}
102
}
114
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/ScheduledTaskListSynchJob.java (+26 lines)
Lines 55-60 Link Here
55
		this.taskListManager = taskListManager;
55
		this.taskListManager = taskListManager;
56
		this.setSystem(true);
56
		this.setSystem(true);
57
		this.setPriority(Job.BUILD);
57
		this.setPriority(Job.BUILD);
58
59
		if (repositories == null) {
60
			repositories = TasksUiPlugin.getRepositoryManager().getAllRepositories();
61
		}
62
63
		for (final TaskRepository repository : repositories) {
64
			try {
65
				TasksUiPlugin.testAndSetMemoryOnlyPassword(repository);
66
			} catch (Exception e) {
67
				// TODO Auto-generated catch block
68
				e.printStackTrace();
69
			}
70
		}
58
	}
71
	}
59
72
60
	public ScheduledTaskListSynchJob(TaskListManager taskListManager) {
73
	public ScheduledTaskListSynchJob(TaskListManager taskListManager) {
Lines 62-67 Link Here
62
		this.taskListManager = taskListManager;
75
		this.taskListManager = taskListManager;
63
		this.setPriority(Job.BUILD);
76
		this.setPriority(Job.BUILD);
64
		this.scheduleDelay = -1;
77
		this.scheduleDelay = -1;
78
79
		if (repositories == null) {
80
			repositories = TasksUiPlugin.getRepositoryManager().getAllRepositories();
81
		}
82
83
		for (final TaskRepository repository : repositories) {
84
			try {
85
				TasksUiPlugin.testAndSetMemoryOnlyPassword(repository);
86
			} catch (Exception e) {
87
				// TODO Auto-generated catch block
88
				e.printStackTrace();
89
			}
90
		}
65
	}
91
	}
66
92
67
	@Override
93
	@Override
(-)src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java (-22 / +191 lines)
Lines 24-29 Link Here
24
import org.eclipse.jface.preference.StringFieldEditor;
24
import org.eclipse.jface.preference.StringFieldEditor;
25
import org.eclipse.jface.wizard.WizardPage;
25
import org.eclipse.jface.wizard.WizardPage;
26
import org.eclipse.mylyn.internal.tasks.core.IRepositoryConstants;
26
import org.eclipse.mylyn.internal.tasks.core.IRepositoryConstants;
27
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
27
import org.eclipse.mylyn.monitor.core.StatusHandler;
28
import org.eclipse.mylyn.monitor.core.StatusHandler;
28
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
29
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
29
import org.eclipse.mylyn.tasks.core.TaskRepository;
30
import org.eclipse.mylyn.tasks.core.TaskRepository;
Lines 188-193 Link Here
188
189
189
	private Hyperlink manageAccountHyperlink;
190
	private Hyperlink manageAccountHyperlink;
190
191
192
	private boolean onlyAuthenticationCredentials;
193
194
	protected Button savePasswordButton;
195
	
196
	protected Button saveHttpPasswordButton;
197
	
198
	protected Button saveProxyPasswordButton;
199
	
200
	private static AbstractRepositorySettingsPage single;
201
191
	public AbstractRepositorySettingsPage(String title, String description, AbstractRepositoryConnectorUi repositoryUi) {
202
	public AbstractRepositorySettingsPage(String title, String description, AbstractRepositoryConnectorUi repositoryUi) {
192
		super(title);
203
		super(title);
193
		super.setTitle(title);
204
		super.setTitle(title);
Lines 202-207 Link Here
202
		setNeedsProxy(true);
213
		setNeedsProxy(true);
203
		setNeedsValidation(true);
214
		setNeedsValidation(true);
204
		setNeedsAdvanced(true);
215
		setNeedsAdvanced(true);
216
		setOnlyAuthenticationCredentials(true);
217
		single = this;
205
	}
218
	}
206
219
207
	@Override
220
	@Override
Lines 212-217 Link Here
212
				toolkit.dispose();
225
				toolkit.dispose();
213
			}
226
			}
214
		}
227
		}
228
		single = null;
215
	}
229
	}
216
230
217
	public void createControl(Composite parent) {
231
	public void createControl(Composite parent) {
Lines 254-259 Link Here
254
		FillLayout layout = new FillLayout();
268
		FillLayout layout = new FillLayout();
255
		compositeContainer.setLayout(layout);
269
		compositeContainer.setLayout(layout);
256
270
271
		if (!onlyAuthenticationCredentials()) {
272
			Label infoLabel = new Label(compositeContainer, SWT.NONE);			
273
			infoLabel.setImage(TasksUiImages.getImage(TasksUiImages.WARNING));
274
			infoLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_CENTER));
275
			infoLabel = new Label(compositeContainer, SWT.NONE);
276
			infoLabel.setText("\nIf you Cancel this Dialog this will disable the Repository!\n\n");
277
		}
278
257
		new Label(compositeContainer, SWT.NONE).setText(LABEL_SERVER);
279
		new Label(compositeContainer, SWT.NONE).setText(LABEL_SERVER);
258
		serverUrlCombo = new Combo(compositeContainer, SWT.DROP_DOWN);
280
		serverUrlCombo = new Combo(compositeContainer, SWT.DROP_DOWN);
259
		serverUrlCombo.addModifyListener(new ModifyListener() {
281
		serverUrlCombo.addModifyListener(new ModifyListener() {
Lines 304-309 Link Here
304
		};
326
		};
305
		// repositoryLabelEditor.setErrorMessage("error");
327
		// repositoryLabelEditor.setErrorMessage("error");
306
328
329
		if (!onlyAuthenticationCredentials()) {
330
			serverUrlCombo.setEnabled(false);
331
			repositoryLabelEditor.setEnabled(false, compositeContainer);
332
		}
333
307
		if (needsAnonymousLogin()) {
334
		if (needsAnonymousLogin()) {
308
			anonymousButton = new Button(compositeContainer, SWT.CHECK);
335
			anonymousButton = new Button(compositeContainer, SWT.CHECK);
309
			GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(anonymousButton);
336
			GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(anonymousButton);
Lines 354-359 Link Here
354
			}
381
			}
355
		};
382
		};
356
383
384
		savePasswordButton = new Button(compositeContainer, SWT.CHECK);
385
		GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(savePasswordButton);
386
387
		savePasswordButton.setText("Save Password");
388
		savePasswordButton.addSelectionListener(new SelectionAdapter() {
389
			@Override
390
			public void widgetSelected(SelectionEvent e) {
391
				setSavePassword(savePasswordButton.getSelection());
392
				isPageComplete();
393
			}
394
		});
395
357
		if (repository != null) {
396
		if (repository != null) {
358
			try {
397
			try {
359
				String repositoryLabel = repository.getProperty(IRepositoryConstants.PROPERTY_LABEL);
398
				String repositoryLabel = repository.getProperty(IRepositoryConstants.PROPERTY_LABEL);
Lines 378-383 Link Here
378
			}
417
			}
379
		}
418
		}
380
419
420
		if (repository != null) {
421
			savePasswordButton.setSelection(repository.isSavePassword());
422
		} else {
423
			savePasswordButton.setSelection(false);
424
		}
425
381
		// TODO: put this back if we can't get the info from all connectors
426
		// TODO: put this back if we can't get the info from all connectors
382
		// if (needsTimeZone()) {
427
		// if (needsTimeZone()) {
383
		// Label timeZoneLabel = new Label(container, SWT.NONE);
428
		// Label timeZoneLabel = new Label(container, SWT.NONE);
Lines 555-564 Link Here
555
					httpAuthComp);
600
					httpAuthComp);
556
			((RepositoryStringFieldEditor) httpAuthPasswordEditor).getTextControl().setEchoChar('*');
601
			((RepositoryStringFieldEditor) httpAuthPasswordEditor).getTextControl().setEchoChar('*');
557
602
603
			saveHttpPasswordButton = new Button(httpAuthComp, SWT.CHECK);
604
			GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(saveHttpPasswordButton);
605
606
			saveHttpPasswordButton.setText("Save Http Password");
607
			saveHttpPasswordButton.addSelectionListener(new SelectionAdapter() {
608
				@Override
609
				public void widgetSelected(SelectionEvent e) {
610
					setSaveHttpPassword(saveHttpPasswordButton.getSelection());
611
					isPageComplete();
612
				}
613
			});
614
558
			httpAuthUserNameEditor.setEnabled(httpAuthButton.getSelection(), httpAuthComp);
615
			httpAuthUserNameEditor.setEnabled(httpAuthButton.getSelection(), httpAuthComp);
559
			httpAuthPasswordEditor.setEnabled(httpAuthButton.getSelection(), httpAuthComp);
616
			httpAuthPasswordEditor.setEnabled(httpAuthButton.getSelection(), httpAuthComp);
617
			saveHttpPasswordButton.setEnabled(httpAuthButton.getSelection());
560
618
561
			setHttpAuth(oldHttpAuthPassword != null && oldHttpAuthUserId != null && !oldHttpAuthPassword.equals("")
619
			if (repository != null) {
620
				saveHttpPasswordButton.setSelection(repository.isSaveHttpPassword());
621
			} else {
622
				saveHttpPasswordButton.setSelection(false);
623
			}
624
			setHttpAuth(oldHttpAuthPassword != null && oldHttpAuthUserId != null
562
					&& !oldHttpAuthUserId.equals(""));
625
					&& !oldHttpAuthUserId.equals(""));
563
626
564
			httpAuthExpComposite.setExpanded(httpAuthButton.getSelection());
627
			httpAuthExpComposite.setExpanded(httpAuthButton.getSelection());
Lines 640-645 Link Here
640
703
641
		updateHyperlinks();
704
		updateHyperlinks();
642
705
706
		if (!onlyAuthenticationCredentials()) {
707
			httpAuthExpComposite.setExpanded(true);
708
			proxyExpComposite.setExpanded(true);
709
		}
710
643
		setControl(compositeContainer);
711
		setControl(compositeContainer);
644
	}
712
	}
645
713
Lines 777-784 Link Here
777
		// httpAuthPasswordEditor).setEnabled(httpAuthButton.getSelection(),
845
		// httpAuthPasswordEditor).setEnabled(httpAuthButton.getSelection(),
778
		// advancedComp);
846
		// advancedComp);
779
847
780
		setProxyAuth(oldProxyUsername != null && oldProxyPassword != null && !oldProxyUsername.equals("")
848
		saveProxyPasswordButton = new Button(proxyAuthComp, SWT.CHECK);
781
				&& !oldProxyPassword.equals(""));
849
		GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(saveHttpPasswordButton);
850
851
		saveProxyPasswordButton.setText("Save Proxy Password");
852
		saveProxyPasswordButton.addSelectionListener(new SelectionAdapter() {
853
			@Override
854
			public void widgetSelected(SelectionEvent e) {
855
				setSaveProxyPassword(saveProxyPasswordButton.getSelection());
856
				isPageComplete();
857
			}
858
		});
859
860
		saveProxyPasswordButton.setEnabled(proxyAuthButton.getSelection());
861
862
		if (repository != null) {
863
			saveProxyPasswordButton.setSelection(repository.isSaveProxyPassword());
864
		} else {
865
			saveProxyPasswordButton.setSelection(false);
866
		}
867
868
		setProxyAuth(oldProxyUsername != null && oldProxyPassword != null && !oldProxyUsername.equals(""));
782
869
783
		setUseDefaultProxy(repository != null ? repository.isDefaultProxyEnabled() : true);
870
		setUseDefaultProxy(repository != null ? repository.isDefaultProxyEnabled() : true);
784
		proxyExpComposite.setExpanded(!systemProxyButton.getSelection());
871
		proxyExpComposite.setExpanded(!systemProxyButton.getSelection());
Lines 819-828 Link Here
819
			oldUsername = repositoryUserNameEditor.getStringValue();
906
			oldUsername = repositoryUserNameEditor.getStringValue();
820
			oldPassword = (repositoryPasswordEditor).getStringValue();
907
			oldPassword = (repositoryPasswordEditor).getStringValue();
821
			repositoryUserNameEditor.setStringValue("");
908
			repositoryUserNameEditor.setStringValue("");
822
			(repositoryPasswordEditor).setStringValue("");
909
			repositoryPasswordEditor.setStringValue("");
823
		} else {
910
		} else {
824
			repositoryUserNameEditor.setStringValue(oldUsername);
911
			repositoryUserNameEditor.setStringValue(oldUsername);
825
			(repositoryPasswordEditor).setStringValue(oldPassword);
912
			repositoryPasswordEditor.setStringValue(oldPassword);
826
		}
913
		}
827
914
828
		repositoryUserNameEditor.setEnabled(!selected, compositeContainer);
915
		repositoryUserNameEditor.setEnabled(!selected, compositeContainer);
Lines 839-853 Link Here
839
		httpAuthButton.setSelection(selected);
926
		httpAuthButton.setSelection(selected);
840
		if (!selected) {
927
		if (!selected) {
841
			oldHttpAuthUserId = httpAuthUserNameEditor.getStringValue();
928
			oldHttpAuthUserId = httpAuthUserNameEditor.getStringValue();
842
			oldHttpAuthPassword = (httpAuthPasswordEditor).getStringValue();
929
			oldHttpAuthPassword = httpAuthPasswordEditor.getStringValue();
843
			httpAuthUserNameEditor.setStringValue(null);
930
			httpAuthUserNameEditor.setStringValue(null);
844
			(httpAuthPasswordEditor).setStringValue(null);
931
			httpAuthPasswordEditor.setStringValue(null);
845
		} else {
932
		} else {
846
			httpAuthUserNameEditor.setStringValue(oldHttpAuthUserId);
933
			httpAuthUserNameEditor.setStringValue(oldHttpAuthUserId);
847
			(httpAuthPasswordEditor).setStringValue(oldHttpAuthPassword);
934
			httpAuthPasswordEditor.setStringValue(oldHttpAuthPassword);
848
		}
935
		}
849
		httpAuthUserNameEditor.setEnabled(selected, httpAuthComp);
936
		httpAuthUserNameEditor.setEnabled(selected, httpAuthComp);
850
		(httpAuthPasswordEditor).setEnabled(selected, httpAuthComp);
937
		httpAuthPasswordEditor.setEnabled(selected, httpAuthComp);
938
		saveHttpPasswordButton.setEnabled(selected);
851
	}
939
	}
852
940
853
	public void setUseDefaultProxy(boolean selected) {
941
	public void setUseDefaultProxy(boolean selected) {
Lines 878-886 Link Here
878
		proxyAuthButton.setEnabled(!systemProxyButton.getSelection());
966
		proxyAuthButton.setEnabled(!systemProxyButton.getSelection());
879
		if (!selected) {
967
		if (!selected) {
880
			oldProxyUsername = proxyUserNameEditor.getStringValue();
968
			oldProxyUsername = proxyUserNameEditor.getStringValue();
881
			oldProxyPassword = (proxyPasswordEditor).getStringValue();
969
			oldProxyPassword = proxyPasswordEditor.getStringValue();
882
			proxyUserNameEditor.setStringValue(null);
970
			proxyUserNameEditor.setStringValue(null);
883
			(proxyPasswordEditor).setStringValue(null);
971
			proxyPasswordEditor.setStringValue(null);
884
		} else {
972
		} else {
885
			proxyUserNameEditor.setStringValue(oldProxyUsername);
973
			proxyUserNameEditor.setStringValue(oldProxyUsername);
886
			proxyPasswordEditor.setStringValue(oldProxyPassword);
974
			proxyPasswordEditor.setStringValue(oldProxyPassword);
Lines 888-893 Link Here
888
976
889
		proxyUserNameEditor.setEnabled(selected && !systemProxyButton.getSelection(), proxyAuthComp);
977
		proxyUserNameEditor.setEnabled(selected && !systemProxyButton.getSelection(), proxyAuthComp);
890
		proxyPasswordEditor.setEnabled(selected && !systemProxyButton.getSelection(), proxyAuthComp);
978
		proxyPasswordEditor.setEnabled(selected && !systemProxyButton.getSelection(), proxyAuthComp);
979
		saveProxyPasswordButton.setEnabled(selected && !systemProxyButton.getSelection());
891
	}
980
	}
892
981
893
	protected abstract void createAdditionalControls(Composite parent);
982
	protected abstract void createAdditionalControls(Composite parent);
Lines 895-901 Link Here
895
	protected abstract boolean isValidUrl(String name);
984
	protected abstract boolean isValidUrl(String name);
896
985
897
	void updateHyperlinks() {
986
	void updateHyperlinks() {
898
		if (getServerUrl() != null && getServerUrl().length() > 0) {
987
		if (onlyAuthenticationCredentials() && getServerUrl() != null && getServerUrl().length() > 0) {
899
			TaskRepository repository = createTaskRepository();
988
			TaskRepository repository = createTaskRepository();
900
			String accountCreationUrl = TasksUiPlugin.getConnectorUi(connector.getConnectorKind())
989
			String accountCreationUrl = TasksUiPlugin.getConnectorUi(connector.getConnectorKind())
901
					.getAccountCreationUrl(repository);
990
					.getAccountCreationUrl(repository);
Lines 1027-1036 Link Here
1027
	@Override
1116
	@Override
1028
	public boolean isPageComplete() {
1117
	public boolean isPageComplete() {
1029
		String errorMessage = null;
1118
		String errorMessage = null;
1030
		String url = getServerUrl();
1119
		if (!onlyAuthenticationCredentials()) {
1031
		errorMessage = isUniqueUrl(url);
1120
			String url = getServerUrl();
1032
		if (errorMessage == null && !isValidUrl(url)) {
1121
			errorMessage = isUniqueUrl(url);
1033
			errorMessage = "Enter a valid server url";
1122
			if (errorMessage == null && !isValidUrl(url)) {
1123
				errorMessage = "Enter a valid server url";
1124
			}
1034
		}
1125
		}
1035
		if (errorMessage == null) {
1126
		if (errorMessage == null) {
1036
			errorMessage = credentialsComplete();
1127
			errorMessage = credentialsComplete();
Lines 1042-1050 Link Here
1042
1133
1043
	private String credentialsComplete() {
1134
	private String credentialsComplete() {
1044
		if ((needsAnonymousLogin() && !anonymousButton.getSelection())
1135
		if ((needsAnonymousLogin() && !anonymousButton.getSelection())
1045
				&& (repositoryUserNameEditor.getStringValue().trim().equals("") || repositoryPasswordEditor.getStringValue()
1136
				&& (repositoryUserNameEditor.getStringValue().trim().equals("") ||
1137
				(repositoryPasswordEditor.getStringValue()
1046
						.trim()
1138
						.trim()
1047
						.equals(""))) {
1139
						.equals("")) ) && savePasswordButton.getSelection()) {
1048
			return "Repository user name and password must not be blank";
1140
			return "Repository user name and password must not be blank";
1049
		}
1141
		}
1050
		return null;
1142
		return null;
Lines 1122-1142 Link Here
1122
		if (needsAnonymousLogin()) {
1214
		if (needsAnonymousLogin()) {
1123
			repository.setAnonymous(anonymousButton.getSelection());
1215
			repository.setAnonymous(anonymousButton.getSelection());
1124
		}
1216
		}
1217
		repository.setSavePassword(savePasswordButton.getSelection());
1125
		// repository.setProperty(TaskRepository.AUTH_HTTP_USERNAME,
1218
		// repository.setProperty(TaskRepository.AUTH_HTTP_USERNAME,
1126
		// getHttpAuthUserId());
1219
		// getHttpAuthUserId());
1127
		// repository.setProperty(TaskRepository.AUTH_HTTP_PASSWORD,
1220
		// repository.setProperty(TaskRepository.AUTH_HTTP_PASSWORD,
1128
		// getHttpAuthPassword());
1221
		// getHttpAuthPassword());
1129
		if (getHttpAuthUserId().length() > 0 && getHttpAuthPassword().length() > 0) {
1222
		if (getHttpAuthUserId().length() > 0 ) {
1130
			repository.setHttpAuthenticationCredentials(getHttpAuthUserId(), getHttpAuthPassword());
1223
			repository.setHttpAuthenticationCredentials(getHttpAuthUserId(), getHttpAuthPassword(), saveHttpPasswordButton.getSelection());
1131
		}
1224
		}
1225
		repository.setSavePassword(saveHttpPasswordButton.getSelection());
1132
1226
1133
		repository.setProperty(TaskRepository.PROXY_USEDEFAULT, String.valueOf(getUseDefaultProxy()));
1227
		repository.setProperty(TaskRepository.PROXY_USEDEFAULT, String.valueOf(getUseDefaultProxy()));
1134
		repository.setProperty(TaskRepository.PROXY_HOSTNAME, getProxyHostname());
1228
		repository.setProperty(TaskRepository.PROXY_HOSTNAME, getProxyHostname());
1135
		repository.setProperty(TaskRepository.PROXY_PORT, getProxyPort());
1229
		repository.setProperty(TaskRepository.PROXY_PORT, getProxyPort());
1136
1230
1137
		if (getProxyUserName().length() > 0 && getProxyPassword().length() > 0) {
1231
		if (getProxyUserName().length() > 0) {
1138
			repository.setProxyAuthenticationCredentials(getProxyUserName(), getProxyPassword());
1232
			repository.setProxyAuthenticationCredentials(getProxyUserName(), getProxyPassword(), saveProxyPasswordButton.getSelection());
1139
		}
1233
		}
1234
		repository.setSavePassword(saveProxyPasswordButton.getSelection());
1140
		// repository.setProperty(TaskRepository.PROXY_USERNAME,
1235
		// repository.setProperty(TaskRepository.PROXY_USERNAME,
1141
		// getProxyUsername());
1236
		// getProxyUsername());
1142
1237
Lines 1313-1317 Link Here
1313
		}
1408
		}
1314
1409
1315
	}
1410
	}
1411
	public void setSavePassword(boolean selected) {
1412
1413
		savePasswordButton.setSelection(selected);
1414
1415
		if (selected) {
1416
			repositoryPasswordEditor.setStringValue(oldPassword);
1417
		} else {
1418
			oldPassword = repositoryPasswordEditor.getStringValue();
1419
			repositoryPasswordEditor.setStringValue("");
1420
		}
1421
1422
		repositoryPasswordEditor.setEnabled(selected, compositeContainer);
1423
		if (getWizard() != null) {
1424
			getWizard().getContainer().updateButtons();
1425
		}
1426
	}
1427
1428
	public void setSaveHttpPassword(boolean selected) {
1429
1430
		saveHttpPasswordButton.setSelection(selected);
1431
1432
		if (selected) {
1433
			httpAuthPasswordEditor.setStringValue(oldHttpAuthPassword);
1434
		} else {
1435
			oldHttpAuthPassword = httpAuthPasswordEditor.getStringValue();
1436
			httpAuthPasswordEditor.setStringValue("");
1437
		}
1438
1439
		httpAuthPasswordEditor.setEnabled(selected, compositeContainer);
1440
		if (getWizard() != null) {
1441
			getWizard().getContainer().updateButtons();
1442
		}
1443
	}
1444
1445
	public void setSaveProxyPassword(boolean selected) {
1446
1447
		saveProxyPasswordButton.setSelection(selected);
1448
1449
		if (selected) {
1450
			proxyPasswordEditor.setStringValue(oldHttpAuthPassword);
1451
		} else {
1452
			oldHttpAuthPassword = proxyPasswordEditor.getStringValue();
1453
			proxyPasswordEditor.setStringValue("");
1454
		}
1455
1456
		proxyPasswordEditor.setEnabled(selected, compositeContainer);
1457
		if (getWizard() != null) {
1458
			getWizard().getContainer().updateButtons();
1459
		}
1460
	}
1461
1462
	public boolean onlyAuthenticationCredentials() {
1463
		return onlyAuthenticationCredentials;
1464
	}
1465
1466
	public void setOnlyAuthenticationCredentials(boolean onlyAuthenticationCredentials) {
1467
		this.onlyAuthenticationCredentials = onlyAuthenticationCredentials;
1468
	}
1469
1470
	public Boolean getSavePassword() {
1471
			return savePasswordButton.getSelection();
1472
	}
1473
1474
	public Boolean getSaveProxyPassword() {
1475
			return saveProxyPasswordButton.getSelection();
1476
	}
1477
1478
	public Boolean getSaveHttpPassword() {
1479
			return saveHttpPasswordButton.getSelection();
1480
	}
1481
1482
	public static AbstractRepositorySettingsPage getSingle() {
1483
		return single;
1484
	}
1316
1485
1317
}
1486
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditCredentialsWizard.java (+28 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.internal.tasks.ui.wizards;
10
11
import org.eclipse.mylyn.tasks.core.TaskRepository;
12
import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositorySettingsPage;
13
14
public class EditCredentialsWizard extends EditRepositoryWizard {
15
16
	public EditCredentialsWizard(TaskRepository repository)  {
17
		super(repository);
18
		AbstractRepositorySettingsPage theSettingsPage = getSettingsPage();
19
		theSettingsPage.setNeedsAnonymousLogin(false);
20
		theSettingsPage.setNeedsEncoding(false);
21
		theSettingsPage.setNeedsTimeZone(false);
22
		theSettingsPage.setNeedsProxy(true);
23
		theSettingsPage.setNeedsHttpAuth(true);		
24
		theSettingsPage.setNeedsValidation(false);
25
		theSettingsPage.setNeedsAdvanced(false);
26
		theSettingsPage.setOnlyAuthenticationCredentials(false);
27
	}
28
}

Return to bug 200634