Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 52749 Details for
Bug 151602
[Web connector] Support queries that require login
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
New patch, according to the logic that allows for parsing login token
mylar-sandbox-web-login-patch.txt (text/plain), 11.65 KB, created by
Erkki Lindpere
on 2006-10-26 10:06:13 EDT
(
hide
)
Description:
New patch, according to the logic that allows for parsing login token
Filename:
MIME Type:
Creator:
Erkki Lindpere
Created:
2006-10-26 10:06:13 EDT
Size:
11.65 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylar.sandbox >Index: src/org/eclipse/mylar/internal/sandbox/web/WebQuery.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/sandbox/org.eclipse.mylar.sandbox/src/org/eclipse/mylar/internal/sandbox/web/WebQuery.java,v >retrieving revision 1.3 >diff -u -r1.3 WebQuery.java >--- src/org/eclipse/mylar/internal/sandbox/web/WebQuery.java 20 Jul 2006 10:24:39 -0000 1.3 >+++ src/org/eclipse/mylar/internal/sandbox/web/WebQuery.java 26 Oct 2006 14:08:36 -0000 >@@ -20,14 +20,23 @@ > > private final String regexp; > private final String taskPrefix; >+ private final String loginUrl; >+ private final String loginPageUrl; >+ private final String loginTokenRegexp; > > public WebQuery(String description, String queryUrl, String taskPrefix, String regexp, >- TaskList taskList, String repositoryUrl) { >+ TaskList taskList, String repositoryUrl, String loginUrl, String loginPageUrl, String loginTokenRegexp) { > super(description, taskList); > this.taskPrefix = taskPrefix; > > this.regexp = regexp; > >+ this.loginUrl = loginUrl; >+ >+ this.loginPageUrl = loginPageUrl; >+ >+ this.loginTokenRegexp = loginTokenRegexp; >+ > setUrl(queryUrl); > setRepositoryUrl(repositoryUrl); > } >@@ -44,4 +53,15 @@ > return this.taskPrefix; > } > >+ public String getLoginUrl() { >+ return loginUrl; >+ } >+ >+ public String getLoginPageUrl() { >+ return loginPageUrl; >+ } >+ >+ public String getLoginTokenRegexp() { >+ return loginTokenRegexp; >+ } > } >Index: src/org/eclipse/mylar/internal/sandbox/web/WebQueryWizardPage.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/sandbox/org.eclipse.mylar.sandbox/src/org/eclipse/mylar/internal/sandbox/web/WebQueryWizardPage.java,v >retrieving revision 1.18 >diff -u -r1.18 WebQueryWizardPage.java >--- src/org/eclipse/mylar/internal/sandbox/web/WebQueryWizardPage.java 25 Oct 2006 21:46:49 -0000 1.18 >+++ src/org/eclipse/mylar/internal/sandbox/web/WebQueryWizardPage.java 26 Oct 2006 14:08:37 -0000 >@@ -63,6 +63,9 @@ > private AbstractRepositoryConnector connector; > private WebQuery query; > private UpdatePreviewJob updatePreviewJob; >+ private Text loginUrlText; >+ private Text loginPageUrlText; >+ private Text loginTokenRegexpText; > > public WebQueryWizardPage(TaskRepository repository) { > this(repository, null); >@@ -120,6 +123,45 @@ > > new Label(composite, SWT.NONE); > >+ Label loginPageUrlLabel = new Label(composite, SWT.NONE); >+ loginPageUrlLabel.setText("Login Page URL:"); >+ >+ loginPageUrlText = new Text(composite, SWT.BORDER); >+ loginPageUrlText.addModifyListener(new ModifyListener() { >+ public void modifyText(final ModifyEvent e) { >+ webPage = null; >+ } >+ }); >+ loginPageUrlText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); >+ new Label(composite, SWT.NONE); >+ >+ Label loginTokenRegexpLabel = new Label(composite, SWT.NONE); >+ loginTokenRegexpLabel.setText("Login token regexp:"); >+ loginTokenRegexpLabel.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, true)); >+ >+ loginTokenRegexpText = new Text(composite, SWT.BORDER); >+ loginTokenRegexpText.addModifyListener(new ModifyListener() { >+ public void modifyText(final ModifyEvent e) { >+ webPage = null; >+ } >+ }); >+ GridData gridDataLTRT = new GridData(SWT.FILL, SWT.FILL, true, true); >+ gridDataLTRT.heightHint = 39; >+ loginTokenRegexpText.setLayoutData(gridDataLTRT); >+ new Label(composite, SWT.NONE); >+ >+ Label loginUrlLabel = new Label(composite, SWT.NONE); >+ loginUrlLabel.setText("Login URL:"); >+ >+ loginUrlText = new Text(composite, SWT.BORDER); >+ loginUrlText.addModifyListener(new ModifyListener() { >+ public void modifyText(final ModifyEvent e) { >+ webPage = null; >+ } >+ }); >+ loginUrlText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); >+ new Label(composite, SWT.NONE); >+ > Label queryUrlLabel = new Label(composite, SWT.NONE); > queryUrlLabel.setText("URL:"); > >@@ -195,8 +237,11 @@ > String queryUrl = queryUrlText.getText(); > String taskPrefix = taskPrefixText.getText(); > String regexp = regexpText.getText(); >+ String loginUrl = loginUrlText.getText(); >+ String loginPageUrl = loginPageUrlText.getText(); >+ String loginTokenRegexp = loginTokenRegexpText.getText(); > return new WebQuery(description, queryUrl, taskPrefix, regexp, >- TasksUiPlugin.getTaskListManager().getTaskList(), repository.getUrl()); >+ TasksUiPlugin.getTaskListManager().getTaskList(), repository.getUrl(), loginUrl, loginPageUrl, loginTokenRegexp); > } > > synchronized void updatePreview() { >@@ -204,7 +249,7 @@ > updatePreviewJob = new UpdatePreviewJob("Updating preview"); > updatePreviewJob.setPriority(Job.DECORATE); > } >- updatePreviewJob.setParams(queryUrlText.getText(), regexpText.getText()); >+ updatePreviewJob.setParams(queryUrlText.getText(), regexpText.getText(), loginUrlText.getText(), loginPageUrlText.getText(), loginTokenRegexpText.getText()); > if(!updatePreviewJob.isActive()) { > updatePreviewJob.schedule(); > } >@@ -246,6 +291,9 @@ > private final class UpdatePreviewJob extends Job { > private volatile String url; > private volatile String regexp; >+ private volatile String loginUrl; >+ private volatile String loginPageUrl; >+ private volatile String loginTokenRegexp; > private volatile boolean active = false; > > private UpdatePreviewJob(String name) { >@@ -256,9 +304,12 @@ > return active; > } > >- public void setParams(String url, String regexp) { >+ public void setParams(String url, String regexp, String loginUrl, String loginPageUrl, String loginTokenRegexp) { > this.url = url; > this.regexp = regexp; >+ this.loginUrl = loginUrl; >+ this.loginPageUrl = loginPageUrl; >+ this.loginTokenRegexp = loginTokenRegexp; > } > > protected IStatus run(IProgressMonitor monitor) { >@@ -270,7 +321,7 @@ > final List<AbstractQueryHit> queryHits = new ArrayList<AbstractQueryHit>(); > try { > if(webPage==null) { >- webPage = WebRepositoryConnector.fetchResource(currentUrl, repository.getUserName(), repository.getPassword()); >+ webPage = WebRepositoryConnector.fetchResource(currentUrl, repository.getUserName(), repository.getPassword(), loginUrl, loginPageUrl, loginTokenRegexp); > } > > QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList()) { >Index: src/org/eclipse/mylar/internal/sandbox/web/WebRepositoryConnector.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/sandbox/org.eclipse.mylar.sandbox/src/org/eclipse/mylar/internal/sandbox/web/WebRepositoryConnector.java,v >retrieving revision 1.30 >diff -u -r1.30 WebRepositoryConnector.java >--- src/org/eclipse/mylar/internal/sandbox/web/WebRepositoryConnector.java 25 Oct 2006 21:46:49 -0000 1.30 >+++ src/org/eclipse/mylar/internal/sandbox/web/WebRepositoryConnector.java 26 Oct 2006 14:08:37 -0000 >@@ -137,6 +137,9 @@ > IProgressMonitor monitor, QueryHitCollector resultCollector) { > if (query instanceof WebQuery) { > String queryUrl = query.getUrl(); >+ String loginUrl = ((WebQuery) query).getLoginUrl(); >+ String loginPageUrl = ((WebQuery) query).getLoginPageUrl(); >+ String loginTokenRegexp = ((WebQuery) query).getLoginTokenRegexp(); > String regexp = ((WebQuery) query).getRegexp(); > String taskPrefix = ((WebQuery) query).getTaskPrefix(); > String repositoryUrl = query.getRepositoryUrl(); >@@ -145,8 +148,8 @@ > > try { > // if (regexp != null && regexp.trim().length() > 0) { >- return performQuery(fetchResource(queryUrl, repositoryUser, repositoryPassword), regexp, >- taskPrefix, repositoryUrl, monitor, resultCollector); >+ return performQuery(fetchResource(queryUrl, repositoryUser, repositoryPassword, loginUrl, loginPageUrl, >+ loginTokenRegexp), regexp, taskPrefix, repositoryUrl, monitor, resultCollector); > // } else { > // return performRssQuery(queryUrl, taskPrefix, repositoryUrl, repositoryUser, repositoryPassword, > // monitor, resultCollector); >@@ -269,11 +272,36 @@ > } > */ > >- public static String fetchResource(String url, String user, String password) throws IOException { >+ public static String fetchResource(String url, String user, String password, String loginUrl, String loginPageUrl, String loginTokenRegexp) throws IOException { > HttpClient client = new HttpClient(); > Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings(); > WebClientUtil.setupHttpClient(client, proxySettings, url, user, password); >- >+ >+ if (loginPageUrl != null && !"".equals(loginPageUrl)) { >+ GetMethod getLoginPage = new GetMethod(loginPageUrl); >+ try { >+ client.executeMethod(getLoginPage); >+ if (loginTokenRegexp != null && !"".equals(loginTokenRegexp)) { >+ Matcher m = Pattern.compile(loginTokenRegexp).matcher(getLoginPage.getResponseBodyAsString()); >+ if (m.find()) { >+ loginUrl = loginUrl.replaceAll("%TOKEN%", new String(m.group(1))); >+ } >+ loginUrl = loginUrl.replaceAll("%USERNAME%", user); >+ loginUrl = loginUrl.replaceAll("%PASSWORD%", password); >+ GetMethod getLogin = new GetMethod(loginUrl); >+ try { >+ client.executeMethod(getLogin); >+ } finally { >+ getLogin.releaseConnection(); >+ } >+ } >+ } catch (Exception e) { >+ // TODO: login failed, handle exception? >+ } finally { >+ getLoginPage.releaseConnection(); >+ } >+ } >+ > GetMethod get = new GetMethod(url); > try { > client.executeMethod(get); >Index: src/org/eclipse/mylar/internal/sandbox/web/WebTaskExternalizer.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/sandbox/org.eclipse.mylar.sandbox/src/org/eclipse/mylar/internal/sandbox/web/WebTaskExternalizer.java,v >retrieving revision 1.6 >diff -u -r1.6 WebTaskExternalizer.java >--- src/org/eclipse/mylar/internal/sandbox/web/WebTaskExternalizer.java 24 Aug 2006 02:05:07 -0000 1.6 >+++ src/org/eclipse/mylar/internal/sandbox/web/WebTaskExternalizer.java 26 Oct 2006 14:08:37 -0000 >@@ -44,6 +44,12 @@ > > private static final String KEY_KEY = "Key"; > >+ private static final String KEY_LOGIN_URL = "LoginURL"; >+ >+ private static final String KEY_LOGIN_PAGE_URL = "LoginPageURL"; >+ >+ private static final String KEY_LOGIN_TOKEN_REGEXP = "LoginTokenRegexp"; >+ > > @Override > public boolean canReadQuery(Node node) { >@@ -73,6 +79,9 @@ > WebQuery webQuery = (WebQuery) query; > node.setAttribute(KEY_REGEXP, webQuery.getRegexp()); > node.setAttribute(KEY_PREFIX, webQuery.getTaskPrefix()); >+ node.setAttribute(KEY_LOGIN_URL, webQuery.getLoginUrl()); >+ node.setAttribute(KEY_LOGIN_PAGE_URL, webQuery.getLoginUrl()); >+ node.setAttribute(KEY_LOGIN_TOKEN_REGEXP, webQuery.getLoginTokenRegexp()); > } > > return node; >@@ -136,9 +145,12 @@ > String taskPrefix = element.getAttribute(KEY_PREFIX); > String regexp = element.getAttribute(KEY_REGEXP); > String repositoryUrl = element.getAttribute(KEY_REPOSITORY_URL); >+ String loginUrl = element.getAttribute(KEY_LOGIN_URL); >+ String loginPageUrl = element.getAttribute(KEY_LOGIN_PAGE_URL); >+ String loginTokenRegexp = element.getAttribute(KEY_LOGIN_TOKEN_REGEXP); > > AbstractRepositoryQuery query = new WebQuery(description, queryUrl, taskPrefix, regexp, >- TasksUiPlugin.getTaskListManager().getTaskList(), repositoryUrl); >+ TasksUiPlugin.getTaskListManager().getTaskList(), repositoryUrl, loginUrl, loginPageUrl, loginTokenRegexp); > > boolean hasCaughtException = false; > NodeList list = node.getChildNodes();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 151602
:
52731
|
52732
|
52749
|
52821
|
52824
|
52838
|
54090
|
54115
|
54116
|
54122
|
54124
|
54125
|
54126
|
54128
|
54277
|
54288
|
54299
|
54456
|
54457