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

Collapse All | Expand All

(-)src/org/eclipse/mylar/internal/sandbox/web/WebQuery.java (-1 / +21 lines)
Lines 20-33 Link Here
20
20
21
	private final String regexp;
21
	private final String regexp;
22
	private final String taskPrefix;
22
	private final String taskPrefix;
23
	private final String loginUrl;
24
	private final String loginPageUrl;
25
	private final String loginTokenRegexp;
23
26
24
	public WebQuery(String description, String queryUrl, String taskPrefix, String regexp, 
27
	public WebQuery(String description, String queryUrl, String taskPrefix, String regexp, 
25
			TaskList taskList, String repositoryUrl) {
28
			TaskList taskList, String repositoryUrl, String loginUrl, String loginPageUrl, String loginTokenRegexp) {
26
		super(description, taskList);
29
		super(description, taskList);
27
		this.taskPrefix = taskPrefix;
30
		this.taskPrefix = taskPrefix;
28
31
29
		this.regexp = regexp;
32
		this.regexp = regexp;
30
		
33
		
34
		this.loginUrl = loginUrl;
35
		
36
		this.loginPageUrl = loginPageUrl;
37
		
38
		this.loginTokenRegexp = loginTokenRegexp;
39
		
31
		setUrl(queryUrl);
40
		setUrl(queryUrl);
32
		setRepositoryUrl(repositoryUrl);
41
		setRepositoryUrl(repositoryUrl);
33
	}
42
	}
Lines 44-47 Link Here
44
		return this.taskPrefix;
53
		return this.taskPrefix;
45
	}
54
	}
46
55
56
	public String getLoginUrl() {
57
		return loginUrl;
58
	}
59
60
	public String getLoginPageUrl() {
61
		return loginPageUrl;
62
	}
63
64
	public String getLoginTokenRegexp() {
65
		return loginTokenRegexp;
66
	}
47
}
67
}
(-)src/org/eclipse/mylar/internal/sandbox/web/WebQueryWizardPage.java (-4 / +61 lines)
Lines 63-68 Link Here
63
	private AbstractRepositoryConnector connector;
63
	private AbstractRepositoryConnector connector;
64
	private WebQuery query;
64
	private WebQuery query;
65
	private UpdatePreviewJob updatePreviewJob;
65
	private UpdatePreviewJob updatePreviewJob;
66
	private Text loginUrlText;
67
	private Text loginPageUrlText;
68
	private Text loginTokenRegexpText;
66
69
67
	public WebQueryWizardPage(TaskRepository repository) {
70
	public WebQueryWizardPage(TaskRepository repository) {
68
		this(repository, null);
71
		this(repository, null);
Lines 107-112 Link Here
107
					queryUrlText.setText(template.taskQueryUrl);
110
					queryUrlText.setText(template.taskQueryUrl);
108
					regexpText.setText(template.getAttribute(WebRepositoryConnector.TASK_REGEXP));
111
					regexpText.setText(template.getAttribute(WebRepositoryConnector.TASK_REGEXP));
109
					taskPrefixText.setText(template.taskPrefixUrl);
112
					taskPrefixText.setText(template.taskPrefixUrl);
113
					loginPageUrlText.setText(template.repositoryUrl);
114
					loginTokenRegexpText.setText(template.getAttribute(WebRepositoryConnector.LOGIN_TOKEN_REGEXP));
115
					loginUrlText.setText(template.getAttribute(WebRepositoryConnector.LOGIN_URL));
110
					// }
116
					// }
111
					return;
117
					return;
112
				}
118
				}
Lines 120-125 Link Here
120
		
126
		
121
		new Label(composite, SWT.NONE);
127
		new Label(composite, SWT.NONE);
122
128
129
		Label loginPageUrlLabel = new Label(composite, SWT.NONE);
130
		loginPageUrlLabel.setText("Login Page URL:");
131
132
		loginPageUrlText = new Text(composite, SWT.BORDER);
133
		loginPageUrlText.addModifyListener(new ModifyListener() {
134
			public void modifyText(final ModifyEvent e) {
135
				webPage = null;
136
			}
137
		});
138
		loginPageUrlText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
139
		new Label(composite, SWT.NONE);
140
141
		Label loginTokenRegexpLabel = new Label(composite, SWT.NONE);
142
		loginTokenRegexpLabel.setText("Login token regexp:");
143
		loginTokenRegexpLabel.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, true));
144
145
		loginTokenRegexpText = new Text(composite, SWT.BORDER);
146
		loginTokenRegexpText.addModifyListener(new ModifyListener() {
147
			public void modifyText(final ModifyEvent e) {
148
				webPage = null;
149
			}
150
		});
151
		GridData gridDataLTRT = new GridData(SWT.FILL, SWT.FILL, true, true);
152
		gridDataLTRT.heightHint = 39;
153
		loginTokenRegexpText.setLayoutData(gridDataLTRT);
154
		new Label(composite, SWT.NONE);
155
156
		Label loginUrlLabel = new Label(composite, SWT.NONE);
157
		loginUrlLabel.setText("Login URL:");
158
159
		loginUrlText = new Text(composite, SWT.BORDER);
160
		loginUrlText.addModifyListener(new ModifyListener() {
161
			public void modifyText(final ModifyEvent e) {
162
				webPage = null;
163
			}
164
		});
165
		loginUrlText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
166
		new Label(composite, SWT.NONE);
167
123
		Label queryUrlLabel = new Label(composite, SWT.NONE);
168
		Label queryUrlLabel = new Label(composite, SWT.NONE);
124
		queryUrlLabel.setText("URL:");
169
		queryUrlLabel.setText("URL:");
125
170
Lines 186-191 Link Here
186
			queryUrlText.setText(query.getUrl());
231
			queryUrlText.setText(query.getUrl());
187
			regexpText.setText(query.getRegexp());
232
			regexpText.setText(query.getRegexp());
188
			taskPrefixText.setText(query.getTaskPrefix());
233
			taskPrefixText.setText(query.getTaskPrefix());
234
			loginPageUrlText.setText(query.getLoginPageUrl());
235
			loginTokenRegexpText.setText(query.getLoginTokenRegexp());
236
			loginUrlText.setText(query.getLoginUrl());
189
		}
237
		}
190
		sashForm.setWeights(new int[] {145, 107 });
238
		sashForm.setWeights(new int[] {145, 107 });
191
	}
239
	}
Lines 195-202 Link Here
195
		String queryUrl = queryUrlText.getText();
243
		String queryUrl = queryUrlText.getText();
196
		String taskPrefix = taskPrefixText.getText();
244
		String taskPrefix = taskPrefixText.getText();
197
		String regexp = regexpText.getText();
245
		String regexp = regexpText.getText();
246
		String loginUrl = loginUrlText.getText();
247
		String loginPageUrl = loginPageUrlText.getText();
248
		String loginTokenRegexp = loginTokenRegexpText.getText();
198
		return new WebQuery(description, queryUrl, taskPrefix, regexp, 
249
		return new WebQuery(description, queryUrl, taskPrefix, regexp, 
199
				TasksUiPlugin.getTaskListManager().getTaskList(), repository.getUrl());
250
				TasksUiPlugin.getTaskListManager().getTaskList(), repository.getUrl(), loginUrl, loginPageUrl, loginTokenRegexp);
200
	}
251
	}
201
252
202
	synchronized void updatePreview() {
253
	synchronized void updatePreview() {
Lines 204-210 Link Here
204
			updatePreviewJob = new UpdatePreviewJob("Updating preview");
255
			updatePreviewJob = new UpdatePreviewJob("Updating preview");
205
			updatePreviewJob.setPriority(Job.DECORATE);
256
			updatePreviewJob.setPriority(Job.DECORATE);
206
		}
257
		}
207
		updatePreviewJob.setParams(queryUrlText.getText(), regexpText.getText());
258
		updatePreviewJob.setParams(queryUrlText.getText(), regexpText.getText(), loginUrlText.getText(), loginPageUrlText.getText(), loginTokenRegexpText.getText());
208
		if(!updatePreviewJob.isActive()) {
259
		if(!updatePreviewJob.isActive()) {
209
			updatePreviewJob.schedule();
260
			updatePreviewJob.schedule();
210
		}
261
		}
Lines 246-251 Link Here
246
	private final class UpdatePreviewJob extends Job {
297
	private final class UpdatePreviewJob extends Job {
247
		private volatile String url;
298
		private volatile String url;
248
		private volatile String regexp;
299
		private volatile String regexp;
300
		private volatile String loginUrl;
301
		private volatile String loginPageUrl;
302
		private volatile String loginTokenRegexp;
249
		private volatile boolean active = false;
303
		private volatile boolean active = false;
250
304
251
		private UpdatePreviewJob(String name) {
305
		private UpdatePreviewJob(String name) {
Lines 256-264 Link Here
256
			return active;
310
			return active;
257
		}
311
		}
258
312
259
		public void setParams(String url, String regexp) {
313
		public void setParams(String url, String regexp, String loginUrl, String loginPageUrl, String loginTokenRegexp) {
260
			this.url = url;
314
			this.url = url;
261
			this.regexp = regexp;
315
			this.regexp = regexp;
316
			this.loginUrl = loginUrl;
317
			this.loginPageUrl = loginPageUrl;
318
			this.loginTokenRegexp = loginTokenRegexp;
262
		}
319
		}
263
320
264
		protected IStatus run(IProgressMonitor monitor) {
321
		protected IStatus run(IProgressMonitor monitor) {
Lines 270-276 Link Here
270
				final List<AbstractQueryHit> queryHits = new ArrayList<AbstractQueryHit>();
327
				final List<AbstractQueryHit> queryHits = new ArrayList<AbstractQueryHit>();
271
				try {
328
				try {
272
					if(webPage==null) {
329
					if(webPage==null) {
273
						webPage = WebRepositoryConnector.fetchResource(currentUrl, repository.getUserName(), repository.getPassword());
330
						webPage = WebRepositoryConnector.fetchResource(currentUrl, repository.getUserName(), repository.getPassword(), loginUrl, loginPageUrl, loginTokenRegexp);
274
					}
331
					}
275
332
276
					QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList()) {
333
					QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList()) {
(-)src/org/eclipse/mylar/internal/sandbox/web/WebRepositoryConnector.java (-4 / +36 lines)
Lines 60-65 Link Here
60
	public static final String PROPERTY_TASK_PREFIX_URL = "taskprefixurl";
60
	public static final String PROPERTY_TASK_PREFIX_URL = "taskprefixurl";
61
61
62
	public static final String TASK_REGEXP = "taskRegexp";
62
	public static final String TASK_REGEXP = "taskRegexp";
63
	
64
	public static final String LOGIN_TOKEN_REGEXP = "loginTokenRegexp";
65
66
	public static final String LOGIN_URL = "loginUrl";
63
67
64
	public String getRepositoryType() {
68
	public String getRepositoryType() {
65
		return REPOSITORY_TYPE;
69
		return REPOSITORY_TYPE;
Lines 137-142 Link Here
137
			IProgressMonitor monitor, QueryHitCollector resultCollector) {
141
			IProgressMonitor monitor, QueryHitCollector resultCollector) {
138
		if (query instanceof WebQuery) {
142
		if (query instanceof WebQuery) {
139
			String queryUrl = query.getUrl();
143
			String queryUrl = query.getUrl();
144
			String loginUrl = ((WebQuery) query).getLoginUrl();
145
			String loginPageUrl = ((WebQuery) query).getLoginPageUrl();
146
			String loginTokenRegexp = ((WebQuery) query).getLoginTokenRegexp();
140
			String regexp = ((WebQuery) query).getRegexp();
147
			String regexp = ((WebQuery) query).getRegexp();
141
			String taskPrefix = ((WebQuery) query).getTaskPrefix();
148
			String taskPrefix = ((WebQuery) query).getTaskPrefix();
142
			String repositoryUrl = query.getRepositoryUrl();
149
			String repositoryUrl = query.getRepositoryUrl();
Lines 145-152 Link Here
145
			
152
			
146
			try {
153
			try {
147
//				if (regexp != null && regexp.trim().length() > 0) {
154
//				if (regexp != null && regexp.trim().length() > 0) {
148
					return performQuery(fetchResource(queryUrl, repositoryUser, repositoryPassword), regexp,
155
				return performQuery(fetchResource(queryUrl, repositoryUser, repositoryPassword, loginUrl, loginPageUrl,
149
							taskPrefix, repositoryUrl, monitor, resultCollector);
156
						loginTokenRegexp), regexp, taskPrefix, repositoryUrl, monitor, resultCollector);
150
//				} else {
157
//				} else {
151
//					return performRssQuery(queryUrl, taskPrefix, repositoryUrl, repositoryUser, repositoryPassword,
158
//					return performRssQuery(queryUrl, taskPrefix, repositoryUrl, repositoryUser, repositoryPassword,
152
//							monitor, resultCollector);
159
//							monitor, resultCollector);
Lines 269-279 Link Here
269
	}
276
	}
270
*/
277
*/
271
278
272
	public static String fetchResource(String url, String user, String password) throws IOException {
279
	public static String fetchResource(String url, String user, String password, String loginUrl, String loginPageUrl, String loginTokenRegexp) throws IOException {
273
		HttpClient client = new HttpClient();
280
		HttpClient client = new HttpClient();
274
		Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
281
		Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
275
		WebClientUtil.setupHttpClient(client, proxySettings, url, user, password);	
282
		WebClientUtil.setupHttpClient(client, proxySettings, url, user, password);	
276
		
283
284
		if (loginPageUrl != null && !"".equals(loginPageUrl)) {
285
			GetMethod getLoginPage = new GetMethod(loginPageUrl);
286
			try {
287
				client.executeMethod(getLoginPage);
288
				if (loginTokenRegexp != null && !"".equals(loginTokenRegexp)) {
289
					Matcher m = Pattern.compile(loginTokenRegexp).matcher(getLoginPage.getResponseBodyAsString());
290
					if (m.find()) {
291
						loginUrl = loginUrl.replaceAll("%TOKEN%", new String(m.group(1)));
292
					}
293
					loginUrl = loginUrl.replaceAll("%USERNAME%", user);
294
					loginUrl = loginUrl.replaceAll("%PASSWORD%", password);
295
					GetMethod getLogin = new GetMethod(loginUrl);
296
					try {
297
						client.executeMethod(getLogin);
298
					} finally {
299
						getLogin.releaseConnection();
300
					}
301
				}
302
			} catch (Exception e) {
303
				// TODO: login failed, handle exception?
304
			} finally {
305
				getLoginPage.releaseConnection();
306
			}
307
		}
308
	
277
		GetMethod get = new GetMethod(url);
309
		GetMethod get = new GetMethod(url);
278
		try {
310
		try {
279
			client.executeMethod(get);
311
			client.executeMethod(get);
(-)src/org/eclipse/mylar/internal/sandbox/web/WebTaskExternalizer.java (-1 / +13 lines)
Lines 44-49 Link Here
44
44
45
	private static final String KEY_KEY = "Key";
45
	private static final String KEY_KEY = "Key";
46
46
47
	private static final String KEY_LOGIN_URL = "LoginURL";
48
49
	private static final String KEY_LOGIN_PAGE_URL = "LoginPageURL";
50
51
	private static final String KEY_LOGIN_TOKEN_REGEXP = "LoginTokenRegexp";
52
47
53
48
	@Override
54
	@Override
49
	public boolean canReadQuery(Node node) {
55
	public boolean canReadQuery(Node node) {
Lines 73-78 Link Here
73
			WebQuery webQuery = (WebQuery) query;
79
			WebQuery webQuery = (WebQuery) query;
74
			node.setAttribute(KEY_REGEXP, webQuery.getRegexp());
80
			node.setAttribute(KEY_REGEXP, webQuery.getRegexp());
75
			node.setAttribute(KEY_PREFIX, webQuery.getTaskPrefix());
81
			node.setAttribute(KEY_PREFIX, webQuery.getTaskPrefix());
82
			node.setAttribute(KEY_LOGIN_URL, webQuery.getLoginUrl());
83
			node.setAttribute(KEY_LOGIN_PAGE_URL, webQuery.getLoginPageUrl());
84
			node.setAttribute(KEY_LOGIN_TOKEN_REGEXP, webQuery.getLoginTokenRegexp());
76
		}
85
		}
77
86
78
		return node;
87
		return node;
Lines 136-144 Link Here
136
		String taskPrefix = element.getAttribute(KEY_PREFIX);
145
		String taskPrefix = element.getAttribute(KEY_PREFIX);
137
		String regexp = element.getAttribute(KEY_REGEXP);
146
		String regexp = element.getAttribute(KEY_REGEXP);
138
		String repositoryUrl = element.getAttribute(KEY_REPOSITORY_URL);
147
		String repositoryUrl = element.getAttribute(KEY_REPOSITORY_URL);
148
		String loginUrl = element.getAttribute(KEY_LOGIN_URL);
149
		String loginPageUrl = element.getAttribute(KEY_LOGIN_PAGE_URL);
150
		String loginTokenRegexp = element.getAttribute(KEY_LOGIN_TOKEN_REGEXP);
139
		
151
		
140
		AbstractRepositoryQuery query = new WebQuery(description, queryUrl, taskPrefix, regexp, 
152
		AbstractRepositoryQuery query = new WebQuery(description, queryUrl, taskPrefix, regexp, 
141
				TasksUiPlugin.getTaskListManager().getTaskList(), repositoryUrl);
153
				TasksUiPlugin.getTaskListManager().getTaskList(), repositoryUrl, loginUrl, loginPageUrl, loginTokenRegexp);
142
		
154
		
143
		boolean hasCaughtException = false;
155
		boolean hasCaughtException = false;
144
		NodeList list = node.getChildNodes();
156
		NodeList list = node.getChildNodes();

Return to bug 151602