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 / +55 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 120-125 Link Here
120
		
123
		
121
		new Label(composite, SWT.NONE);
124
		new Label(composite, SWT.NONE);
122
125
126
		Label loginPageUrlLabel = new Label(composite, SWT.NONE);
127
		loginPageUrlLabel.setText("Login Page URL:");
128
129
		loginPageUrlText = new Text(composite, SWT.BORDER);
130
		loginPageUrlText.addModifyListener(new ModifyListener() {
131
			public void modifyText(final ModifyEvent e) {
132
				webPage = null;
133
			}
134
		});
135
		loginPageUrlText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
136
		new Label(composite, SWT.NONE);
137
138
		Label loginTokenRegexpLabel = new Label(composite, SWT.NONE);
139
		loginTokenRegexpLabel.setText("Login token regexp:");
140
		loginTokenRegexpLabel.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, true));
141
142
		loginTokenRegexpText = new Text(composite, SWT.BORDER);
143
		loginTokenRegexpText.addModifyListener(new ModifyListener() {
144
			public void modifyText(final ModifyEvent e) {
145
				webPage = null;
146
			}
147
		});
148
		GridData gridDataLTRT = new GridData(SWT.FILL, SWT.FILL, true, true);
149
		gridDataLTRT.heightHint = 39;
150
		loginTokenRegexpText.setLayoutData(gridDataLTRT);
151
		new Label(composite, SWT.NONE);
152
153
		Label loginUrlLabel = new Label(composite, SWT.NONE);
154
		loginUrlLabel.setText("Login URL:");
155
156
		loginUrlText = new Text(composite, SWT.BORDER);
157
		loginUrlText.addModifyListener(new ModifyListener() {
158
			public void modifyText(final ModifyEvent e) {
159
				webPage = null;
160
			}
161
		});
162
		loginUrlText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
163
		new Label(composite, SWT.NONE);
164
123
		Label queryUrlLabel = new Label(composite, SWT.NONE);
165
		Label queryUrlLabel = new Label(composite, SWT.NONE);
124
		queryUrlLabel.setText("URL:");
166
		queryUrlLabel.setText("URL:");
125
167
Lines 195-202 Link Here
195
		String queryUrl = queryUrlText.getText();
237
		String queryUrl = queryUrlText.getText();
196
		String taskPrefix = taskPrefixText.getText();
238
		String taskPrefix = taskPrefixText.getText();
197
		String regexp = regexpText.getText();
239
		String regexp = regexpText.getText();
240
		String loginUrl = loginUrlText.getText();
241
		String loginPageUrl = loginPageUrlText.getText();
242
		String loginTokenRegexp = loginTokenRegexpText.getText();
198
		return new WebQuery(description, queryUrl, taskPrefix, regexp, 
243
		return new WebQuery(description, queryUrl, taskPrefix, regexp, 
199
				TasksUiPlugin.getTaskListManager().getTaskList(), repository.getUrl());
244
				TasksUiPlugin.getTaskListManager().getTaskList(), repository.getUrl(), loginUrl, loginPageUrl, loginTokenRegexp);
200
	}
245
	}
201
246
202
	synchronized void updatePreview() {
247
	synchronized void updatePreview() {
Lines 204-210 Link Here
204
			updatePreviewJob = new UpdatePreviewJob("Updating preview");
249
			updatePreviewJob = new UpdatePreviewJob("Updating preview");
205
			updatePreviewJob.setPriority(Job.DECORATE);
250
			updatePreviewJob.setPriority(Job.DECORATE);
206
		}
251
		}
207
		updatePreviewJob.setParams(queryUrlText.getText(), regexpText.getText());
252
		updatePreviewJob.setParams(queryUrlText.getText(), regexpText.getText(), loginUrlText.getText(), loginPageUrlText.getText(), loginTokenRegexpText.getText());
208
		if(!updatePreviewJob.isActive()) {
253
		if(!updatePreviewJob.isActive()) {
209
			updatePreviewJob.schedule();
254
			updatePreviewJob.schedule();
210
		}
255
		}
Lines 246-251 Link Here
246
	private final class UpdatePreviewJob extends Job {
291
	private final class UpdatePreviewJob extends Job {
247
		private volatile String url;
292
		private volatile String url;
248
		private volatile String regexp;
293
		private volatile String regexp;
294
		private volatile String loginUrl;
295
		private volatile String loginPageUrl;
296
		private volatile String loginTokenRegexp;
249
		private volatile boolean active = false;
297
		private volatile boolean active = false;
250
298
251
		private UpdatePreviewJob(String name) {
299
		private UpdatePreviewJob(String name) {
Lines 256-264 Link Here
256
			return active;
304
			return active;
257
		}
305
		}
258
306
259
		public void setParams(String url, String regexp) {
307
		public void setParams(String url, String regexp, String loginUrl, String loginPageUrl, String loginTokenRegexp) {
260
			this.url = url;
308
			this.url = url;
261
			this.regexp = regexp;
309
			this.regexp = regexp;
310
			this.loginUrl = loginUrl;
311
			this.loginPageUrl = loginPageUrl;
312
			this.loginTokenRegexp = loginTokenRegexp;
262
		}
313
		}
263
314
264
		protected IStatus run(IProgressMonitor monitor) {
315
		protected IStatus run(IProgressMonitor monitor) {
Lines 270-276 Link Here
270
				final List<AbstractQueryHit> queryHits = new ArrayList<AbstractQueryHit>();
321
				final List<AbstractQueryHit> queryHits = new ArrayList<AbstractQueryHit>();
271
				try {
322
				try {
272
					if(webPage==null) {
323
					if(webPage==null) {
273
						webPage = WebRepositoryConnector.fetchResource(currentUrl, repository.getUserName(), repository.getPassword());
324
						webPage = WebRepositoryConnector.fetchResource(currentUrl, repository.getUserName(), repository.getPassword(), loginUrl, loginPageUrl, loginTokenRegexp);
274
					}
325
					}
275
326
276
					QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList()) {
327
					QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList()) {
(-)src/org/eclipse/mylar/internal/sandbox/web/WebRepositoryConnector.java (-4 / +32 lines)
Lines 137-142 Link Here
137
			IProgressMonitor monitor, QueryHitCollector resultCollector) {
137
			IProgressMonitor monitor, QueryHitCollector resultCollector) {
138
		if (query instanceof WebQuery) {
138
		if (query instanceof WebQuery) {
139
			String queryUrl = query.getUrl();
139
			String queryUrl = query.getUrl();
140
			String loginUrl = ((WebQuery) query).getLoginUrl();
141
			String loginPageUrl = ((WebQuery) query).getLoginPageUrl();
142
			String loginTokenRegexp = ((WebQuery) query).getLoginTokenRegexp();
140
			String regexp = ((WebQuery) query).getRegexp();
143
			String regexp = ((WebQuery) query).getRegexp();
141
			String taskPrefix = ((WebQuery) query).getTaskPrefix();
144
			String taskPrefix = ((WebQuery) query).getTaskPrefix();
142
			String repositoryUrl = query.getRepositoryUrl();
145
			String repositoryUrl = query.getRepositoryUrl();
Lines 145-152 Link Here
145
			
148
			
146
			try {
149
			try {
147
//				if (regexp != null && regexp.trim().length() > 0) {
150
//				if (regexp != null && regexp.trim().length() > 0) {
148
					return performQuery(fetchResource(queryUrl, repositoryUser, repositoryPassword), regexp,
151
				return performQuery(fetchResource(queryUrl, repositoryUser, repositoryPassword, loginUrl, loginPageUrl,
149
							taskPrefix, repositoryUrl, monitor, resultCollector);
152
						loginTokenRegexp), regexp, taskPrefix, repositoryUrl, monitor, resultCollector);
150
//				} else {
153
//				} else {
151
//					return performRssQuery(queryUrl, taskPrefix, repositoryUrl, repositoryUser, repositoryPassword,
154
//					return performRssQuery(queryUrl, taskPrefix, repositoryUrl, repositoryUser, repositoryPassword,
152
//							monitor, resultCollector);
155
//							monitor, resultCollector);
Lines 269-279 Link Here
269
	}
272
	}
270
*/
273
*/
271
274
272
	public static String fetchResource(String url, String user, String password) throws IOException {
275
	public static String fetchResource(String url, String user, String password, String loginUrl, String loginPageUrl, String loginTokenRegexp) throws IOException {
273
		HttpClient client = new HttpClient();
276
		HttpClient client = new HttpClient();
274
		Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
277
		Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
275
		WebClientUtil.setupHttpClient(client, proxySettings, url, user, password);	
278
		WebClientUtil.setupHttpClient(client, proxySettings, url, user, password);	
276
		
279
280
		if (loginPageUrl != null && !"".equals(loginPageUrl)) {
281
			GetMethod getLoginPage = new GetMethod(loginPageUrl);
282
			try {
283
				client.executeMethod(getLoginPage);
284
				if (loginTokenRegexp != null && !"".equals(loginTokenRegexp)) {
285
					Matcher m = Pattern.compile(loginTokenRegexp).matcher(getLoginPage.getResponseBodyAsString());
286
					if (m.find()) {
287
						loginUrl = loginUrl.replaceAll("%TOKEN%", new String(m.group(1)));
288
					}
289
					loginUrl = loginUrl.replaceAll("%USERNAME%", user);
290
					loginUrl = loginUrl.replaceAll("%PASSWORD%", password);
291
					GetMethod getLogin = new GetMethod(loginUrl);
292
					try {
293
						client.executeMethod(getLogin);
294
					} finally {
295
						getLogin.releaseConnection();
296
					}
297
				}
298
			} catch (Exception e) {
299
				// TODO: login failed, handle exception?
300
			} finally {
301
				getLoginPage.releaseConnection();
302
			}
303
		}
304
	
277
		GetMethod get = new GetMethod(url);
305
		GetMethod get = new GetMethod(url);
278
		try {
306
		try {
279
			client.executeMethod(get);
307
			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.getLoginUrl());
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