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 54288 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]
Fixed patch, now fetchResource() has less parameters
Clipboard-attachment (text/plain), 33.00 KB, created by
Erkki Lindpere
on 2006-11-21 15:48:11 EST
(
hide
)
Description:
Fixed patch, now fetchResource() has less parameters
Filename:
MIME Type:
Creator:
Erkki Lindpere
Created:
2006-11-21 15:48:11 EST
Size:
33.00 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylar.tasks.web >Index: src/org/eclipse/mylar/internal/tasks/web/WebRepositorySettingsPage.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.web/src/org/eclipse/mylar/internal/tasks/web/WebRepositorySettingsPage.java,v >retrieving revision 1.1 >diff -u -r1.1 WebRepositorySettingsPage.java >--- src/org/eclipse/mylar/internal/tasks/web/WebRepositorySettingsPage.java 10 Nov 2006 02:29:02 -0000 1.1 >+++ src/org/eclipse/mylar/internal/tasks/web/WebRepositorySettingsPage.java 21 Nov 2006 20:38:27 -0000 >@@ -18,6 +18,8 @@ > import org.eclipse.jface.util.IPropertyChangeListener; > import org.eclipse.jface.util.PropertyChangeEvent; > import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage; >+import org.eclipse.mylar.internal.tasks.web.restui.EHttpMethod; >+import org.eclipse.mylar.internal.tasks.web.restui.RESTRequestEditor; > import org.eclipse.mylar.tasks.core.RepositoryTemplate; > import org.eclipse.mylar.tasks.core.TaskRepository; > import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi; >@@ -32,6 +34,7 @@ > import org.eclipse.swt.widgets.Text; > import org.eclipse.ui.forms.events.ExpansionAdapter; > import org.eclipse.ui.forms.events.ExpansionEvent; >+import org.eclipse.ui.forms.widgets.ColumnLayout; > import org.eclipse.ui.forms.widgets.ExpandableComposite; > import org.eclipse.ui.forms.widgets.FormToolkit; > import org.eclipse.ui.forms.widgets.Section; >@@ -56,8 +59,14 @@ > > private Text queryPatternText; > >+ private Text loginFormUrlText; >+ >+ private Text loginTokenPatternText; >+ > private ParametersEditor parametersEditor; > >+ private RESTRequestEditor loginRequestEditor; >+ > private FormToolkit toolkit = new FormToolkit(Display.getCurrent()); > > private Map<String, String> oldProperties; >@@ -84,6 +93,22 @@ > newTaskText.setText(template.newTaskUrl); > queryUrlText.setText(template.taskQueryUrl); > queryPatternText.setText(template.getAttribute(WebRepositoryConnector.PROPERTY_QUERY_REGEXP)); >+ loginFormUrlText >+ .setText(nvl(template.getAttribute(WebRepositoryConnector.PROPERTY_LOGIN_FORM_URL))); >+ loginTokenPatternText.setText(nvl(template >+ .getAttribute(WebRepositoryConnector.PROPERTY_LOGIN_TOKEN_REGEXP))); >+ String method = template.getAttribute(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD); >+ if (method != null) { >+ try { >+ loginRequestEditor.setMethod(EHttpMethod.valueOf(method)); >+ } catch (IllegalArgumentException e1) { >+ loginRequestEditor.setMethod(null); >+ } >+ } else { >+ loginRequestEditor.setMethod(null); >+ } >+ loginRequestEditor.setUrl(nvl(template >+ .getAttribute(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_URL))); > > parametersEditor.removeAll(); > >@@ -114,20 +139,32 @@ > newTaskText.setText(getTextProperty(WebRepositoryConnector.PROPERTY_TASK_CREATION_URL)); > queryUrlText.setText(getTextProperty(WebRepositoryConnector.PROPERTY_QUERY_URL)); > queryPatternText.setText(getTextProperty(WebRepositoryConnector.PROPERTY_QUERY_REGEXP)); >+ loginFormUrlText.setText(getTextProperty(WebRepositoryConnector.PROPERTY_LOGIN_FORM_URL)); >+ loginTokenPatternText.setText(getTextProperty(WebRepositoryConnector.PROPERTY_LOGIN_TOKEN_REGEXP)); >+ try { >+ loginRequestEditor.setMethod(EHttpMethod >+ .valueOf(getTextProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD))); >+ } catch (IllegalArgumentException e) { >+ // ignore >+ } >+ loginRequestEditor.setUrl(getTextProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_URL)); > > oldProperties = repository.getProperties(); > parametersEditor.addParams(oldProperties, new LinkedHashMap<String, String>()); > } > } > >- private String getTextProperty(String name) { >- String value = repository.getProperty(name); >+ private String nvl(String value) { > if (value == null) { > return ""; > } > return value; > } > >+ private String getTextProperty(String name) { >+ return nvl(repository.getProperty(name)); >+ } >+ > protected boolean isValidUrl(String name) { > return true; > } >@@ -153,6 +190,13 @@ > gridData_1.minimumHeight = 80; > parametersEditor.setLayoutData(gridData_1); > >+ createAdvancedComposite(parent, composite); >+ createLoginComposite(parent, composite); >+ >+ return composite; >+ } >+ >+ private void createAdvancedComposite(Composite parent, final Composite composite) { > ExpandableComposite expComposite = toolkit.createExpandableComposite(composite, Section.COMPACT > | Section.TWISTIE | Section.TITLE_BAR); > expComposite.clientVerticalSpacing = 0; >@@ -201,8 +245,59 @@ > GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); > gridData.heightHint = 40; > queryPatternText.setLayoutData(gridData); >+ } > >- return composite; >+ private void createLoginComposite(final Composite parent, final Composite composite) { >+ ExpandableComposite expComposite = toolkit.createExpandableComposite(composite, Section.COMPACT >+ | Section.TWISTIE | Section.TITLE_BAR); >+ expComposite.clientVerticalSpacing = 0; >+ GridData gridData_2 = new GridData(SWT.FILL, SWT.FILL, true, false); >+ gridData_2.horizontalIndent = -5; >+ expComposite.setLayoutData(gridData_2); >+ expComposite.setFont(parent.getFont()); >+ expComposite.setBackground(parent.getBackground()); >+ expComposite.setText("&Login Configuration (Expert)"); >+ expComposite.addExpansionListener(new ExpansionAdapter() { >+ public void expansionStateChanged(ExpansionEvent e) { >+ composite.layout(); >+ } >+ }); >+ >+ Composite loginComposite = toolkit.createComposite(expComposite, SWT.BORDER); >+ loginComposite.setLayout(new ColumnLayout()); >+ Section loginTokenSection = toolkit.createSection(loginComposite, Section.TWISTIE | Section.TITLE_BAR); >+ loginTokenSection.setText("Step 1. Retrieve login token (optional)"); >+ Composite composite2 = toolkit.createComposite(loginTokenSection); >+ GridLayout gridLayout2 = new GridLayout(); >+ gridLayout2.numColumns = 2; >+ gridLayout2.verticalSpacing = 0; >+ composite2.setLayout(gridLayout2); >+ >+ Label queryUrlLabel = toolkit.createLabel(composite2, "Login &Page URL:", SWT.NONE); >+ queryUrlLabel.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false)); >+ >+ loginFormUrlText = new Text(composite2, SWT.BORDER); >+ loginFormUrlText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); >+ >+ Label queryPatternLabel = toolkit.createLabel(composite2, "Login &Token Pattern:", SWT.NONE); >+ queryPatternLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true)); >+ >+ loginTokenPatternText = new Text(composite2, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.WRAP); >+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); >+ gridData.heightHint = 40; >+ loginTokenPatternText.setLayoutData(gridData); >+ >+ loginTokenSection.setClient(composite2); >+ >+ Section loginRequestSection = toolkit.createSection(loginComposite, Section.TWISTIE | Section.TITLE_BAR >+ | Section.EXPANDED); >+ loginRequestSection.setText("Step 2. Login request"); >+ >+ loginRequestEditor = new RESTRequestEditor(loginRequestSection, SWT.NONE); >+ toolkit.adapt(loginRequestEditor); >+ loginRequestSection.setClient(loginRequestEditor); >+ >+ expComposite.setClient(loginComposite); > } > > public void propertyChange(PropertyChangeEvent event) { >@@ -218,6 +313,15 @@ > repository.setProperty(WebRepositoryConnector.PROPERTY_TASK_CREATION_URL, newTaskText.getText()); > repository.setProperty(WebRepositoryConnector.PROPERTY_QUERY_URL, queryUrlText.getText()); > repository.setProperty(WebRepositoryConnector.PROPERTY_QUERY_REGEXP, queryPatternText.getText()); >+ repository.setProperty(WebRepositoryConnector.PROPERTY_LOGIN_FORM_URL, loginFormUrlText.getText()); >+ repository.setProperty(WebRepositoryConnector.PROPERTY_LOGIN_TOKEN_REGEXP, loginTokenPatternText.getText()); >+ EHttpMethod method = loginRequestEditor.getMethod(); >+ if (method == null) { >+ repository.removeProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD); >+ } else { >+ repository.setProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD, method.name()); >+ } >+ repository.setProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_URL, loginRequestEditor.getUrl()); > > if (oldProperties != null) { > for (Map.Entry<String, String> e : oldProperties.entrySet()) { >Index: src/org/eclipse/mylar/internal/tasks/web/WebRepositoryConnector.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.web/src/org/eclipse/mylar/internal/tasks/web/WebRepositoryConnector.java,v >retrieving revision 1.6 >diff -u -r1.6 WebRepositoryConnector.java >--- src/org/eclipse/mylar/internal/tasks/web/WebRepositoryConnector.java 20 Nov 2006 18:39:50 -0000 1.6 >+++ src/org/eclipse/mylar/internal/tasks/web/WebRepositoryConnector.java 21 Nov 2006 20:38:27 -0000 >@@ -14,18 +14,24 @@ > import java.io.IOException; > import java.io.UnsupportedEncodingException; > import java.net.Proxy; >+import java.net.URL; > import java.net.URLDecoder; > import java.util.ArrayList; > import java.util.Collections; >+import java.util.HashMap; > import java.util.List; > import java.util.Map; > import java.util.Set; >+import java.util.StringTokenizer; > import java.util.regex.Matcher; > import java.util.regex.Pattern; > > import org.apache.commons.httpclient.Header; > import org.apache.commons.httpclient.HttpClient; >+import org.apache.commons.httpclient.HttpException; >+import org.apache.commons.httpclient.HttpMethod; > import org.apache.commons.httpclient.methods.GetMethod; >+import org.apache.commons.httpclient.methods.PostMethod; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.IStatus; >@@ -34,6 +40,7 @@ > import org.eclipse.mylar.internal.tasks.core.WebQueryHit; > import org.eclipse.mylar.internal.tasks.core.WebTask; > import org.eclipse.mylar.internal.tasks.ui.RetrieveTitleFromUrlJob; >+import org.eclipse.mylar.internal.tasks.web.restui.EHttpMethod; > import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector; > import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery; > import org.eclipse.mylar.tasks.core.AbstractRepositoryTask; >@@ -60,6 +67,14 @@ > > public static final String PROPERTY_QUERY_REGEXP = "queryPattern"; > >+ public static final String PROPERTY_LOGIN_FORM_URL = "loginFormUrl"; >+ >+ public static final String PROPERTY_LOGIN_TOKEN_REGEXP = "loginTokenPattern"; >+ >+ public static final String PROPERTY_LOGIN_REQUEST_METHOD = "loginRequestMethod"; >+ >+ public static final String PROPERTY_LOGIN_REQUEST_URL = "loginRequestUrl"; >+ > public static final String PARAM_PREFIX = "param_"; > > public static final String PARAM_SERVER_URL = "serverUrl"; >@@ -68,6 +83,8 @@ > > public static final String PARAM_PASSWORD = "password"; > >+ public static final String PARAM_LOGIN_TOKEN = "loginToken"; >+ > public String getRepositoryType() { > return WebTask.REPOSITORY_TYPE; > } >@@ -151,18 +168,24 @@ > public IStatus performQuery(AbstractRepositoryQuery query, TaskRepository repository, IProgressMonitor monitor, > QueryHitCollector resultCollector) { > if (query instanceof WebQuery) { >- String repositoryUser = repository.getUserName(); >- String repositoryPassword = repository.getPassword(); >- > WebQuery webQuery = (WebQuery) query; > Map<String, String> queryParameters = webQuery.getQueryParameters(); > String queryUrl = evaluateParams(query.getUrl(), queryParameters, repository); > String queryPattern = evaluateParams(webQuery.getQueryPattern(), queryParameters, repository); > String taskPrefix = evaluateParams(webQuery.getTaskPrefix(), queryParameters, repository); >+ Map<String, String> loginParams = new HashMap<String, String>(); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_FORM_URL, evaluateParams(repository >+ .getProperty(WebRepositoryConnector.PROPERTY_LOGIN_FORM_URL), queryParameters, repository)); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_TOKEN_REGEXP, evaluateParams(repository >+ .getProperty(WebRepositoryConnector.PROPERTY_LOGIN_TOKEN_REGEXP), queryParameters, repository)); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD, evaluateParams(repository >+ .getProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD), queryParameters, repository)); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_URL, repository >+ .getProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_URL)); > > try { > // if (regexp != null && regexp.trim().length() > 0) { >- return performQuery(fetchResource(queryUrl, repositoryUser, repositoryPassword, repository.getProxy()), queryPattern, >+ return performQuery(fetchResource(queryUrl, queryParameters, loginParams, repository), queryPattern, > taskPrefix, monitor, resultCollector, repository); > // } else { > // return performRssQuery(queryUrl, taskPrefix, repositoryUrl, >@@ -275,39 +298,81 @@ > * "Could not fetch resource: " + queryUrl, ex); } } > */ > >- public static String fetchResource(String url, String user, String password, Proxy proxySettings) throws IOException { >+ public static String fetchResource(String url, Map<String, String> params, Map<String, String> loginParams, TaskRepository repository) throws IOException { > HttpClient client = new HttpClient(); >- WebClientUtil.setupHttpClient(client, proxySettings, url, user, password); >+ WebClientUtil.setupHttpClient(client, repository.getProxy(), url, repository.getUserName(), repository.getPassword()); > >- GetMethod get = new GetMethod(url); >- try { >- client.executeMethod(get); >- Header refreshHeader = get.getResponseHeader("Refresh"); >- >- if (refreshHeader != null) { >- String value = refreshHeader.getValue(); >- int n = value.indexOf(";url="); >- if (n != -1) { >- value = value.substring(n + 5); >- int requestPath; >- if (value.charAt(0) == '/') { >- int colonSlashSlash = url.indexOf("://"); >- requestPath = url.indexOf('/', colonSlashSlash + 3); >- } else { >- requestPath = url.lastIndexOf('/'); >+ if (loginParams != null) { >+ String loginFormUrl = loginParams.get(PROPERTY_LOGIN_FORM_URL); >+ if (loginFormUrl != null && !"".equals(loginFormUrl)) { >+ GetMethod get = new GetMethod(loginFormUrl); >+ String loginFormPage = null; >+ try { >+ client.executeMethod(get); >+ Header locationHeader = get.getResponseHeader("Location"); >+ if (locationHeader != null) { >+ get = new GetMethod(locationHeader.getValue()); >+ client.executeMethod(get); > } >- >- String refreshUrl; >- if (requestPath == -1) { >- refreshUrl = url + "/" + value; >- } else { >- refreshUrl = url.substring(0, requestPath + 1) + value; >+ refreshIfNeeded(loginFormUrl, client, get); >+ loginFormPage = get.getResponseBodyAsString(); >+ } catch (Exception e) { >+ // ignore >+ e.printStackTrace(); >+ } finally { >+ get.releaseConnection(); >+ } >+ if (loginFormPage != null) { >+ String loginTokenPattern = loginParams.get(PROPERTY_LOGIN_TOKEN_REGEXP); >+ if (loginTokenPattern != null && !"".equals(loginTokenPattern)) { >+ Pattern p = Pattern.compile(loginTokenPattern); >+ Matcher m = p.matcher(loginFormPage); >+ if (m.find()) { >+ // TODO is it ok to modify the params map? >+ params.put(PARAM_PREFIX + PARAM_LOGIN_TOKEN, m.group(1)); >+ } > } >- >- get = new GetMethod(refreshUrl); >- client.executeMethod(get); > } > } >+ HttpMethod method = null; >+ try { >+ String loginUrlStr = loginParams.get(PROPERTY_LOGIN_REQUEST_URL); >+ loginUrlStr = evaluateParams(loginUrlStr, params, repository); >+ switch (EHttpMethod.valueOf(loginParams.get(PROPERTY_LOGIN_REQUEST_METHOD))) { >+ case GET: >+ method = new GetMethod(loginUrlStr); >+ break; >+ case POST: >+ String query = new URL(loginUrlStr).getQuery(); >+ if (query != null) { >+ StringTokenizer tokenizer = new StringTokenizer(query, "&"); >+ method = new PostMethod(loginUrlStr.substring(0, loginUrlStr.indexOf(query) - 1)); >+ while (tokenizer.hasMoreTokens()) { >+ String nameValuePair = tokenizer.nextToken(); >+ String[] nv = nameValuePair.split("="); >+ if (nv.length < 2) { >+ ((PostMethod) method).addParameter(nv[0], ""); >+ } else { >+ ((PostMethod) method).addParameter(nv[0], nv[1]); >+ } >+ } >+ } >+ break; >+ } >+ client.executeMethod(method); >+ } catch (Exception e) { >+ // ignore >+ } finally { >+ if (method != null) { >+ method.releaseConnection(); >+ } >+ } >+ } >+ >+ GetMethod get = new GetMethod(url); >+ try { >+ client.executeMethod(get); >+ get = refreshIfNeeded(url, client, get); > return get.getResponseBodyAsString(); > > } finally { >@@ -315,6 +380,37 @@ > } > } > >+ private static GetMethod refreshIfNeeded(String url, HttpClient client, GetMethod get) throws IOException, >+ HttpException { >+ Header refreshHeader = get.getResponseHeader("Refresh"); >+ >+ if (refreshHeader != null) { >+ String value = refreshHeader.getValue(); >+ int n = value.indexOf(";url="); >+ if (n != -1) { >+ value = value.substring(n + 5); >+ int requestPath; >+ if (value.charAt(0) == '/') { >+ int colonSlashSlash = url.indexOf("://"); >+ requestPath = url.indexOf('/', colonSlashSlash + 3); >+ } else { >+ requestPath = url.lastIndexOf('/'); >+ } >+ >+ String refreshUrl; >+ if (requestPath == -1) { >+ refreshUrl = url + "/" + value; >+ } else { >+ refreshUrl = url.substring(0, requestPath + 1) + value; >+ } >+ >+ get = new GetMethod(refreshUrl); >+ client.executeMethod(get); >+ } >+ } >+ return get; >+ } >+ > public static String evaluateParams(String value, Map<String, String> params, TaskRepository repository) { > return evaluateParams(evaluateParams(value, params), repository); > } >Index: src/org/eclipse/mylar/internal/tasks/web/WebQueryWizardPage.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.web/src/org/eclipse/mylar/internal/tasks/web/WebQueryWizardPage.java,v >retrieving revision 1.4 >diff -u -r1.4 WebQueryWizardPage.java >--- src/org/eclipse/mylar/internal/tasks/web/WebQueryWizardPage.java 20 Nov 2006 18:39:50 -0000 1.4 >+++ src/org/eclipse/mylar/internal/tasks/web/WebQueryWizardPage.java 21 Nov 2006 20:38:26 -0000 >@@ -10,6 +10,7 @@ > > import java.io.IOException; > import java.util.ArrayList; >+import java.util.HashMap; > import java.util.LinkedHashMap; > import java.util.List; > import java.util.Map; >@@ -316,7 +317,21 @@ > final List<AbstractQueryHit> queryHits = new ArrayList<AbstractQueryHit>(); > try { > if(webPage==null) { >- webPage = WebRepositoryConnector.fetchResource(evaluatedUrl, repository.getUserName(), repository.getPassword(), repository.getProxy()); >+ HashMap<String, String> loginParams = new HashMap<String, String>(); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_FORM_URL, WebRepositoryConnector >+ .evaluateParams(repository.getProperty(WebRepositoryConnector.PROPERTY_LOGIN_FORM_URL), >+ params, repository)); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_TOKEN_REGEXP, WebRepositoryConnector >+ .evaluateParams(repository >+ .getProperty(WebRepositoryConnector.PROPERTY_LOGIN_TOKEN_REGEXP), params, >+ repository)); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD, WebRepositoryConnector >+ .evaluateParams(repository >+ .getProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_METHOD), params, >+ repository)); >+ loginParams.put(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_URL, repository >+ .getProperty(WebRepositoryConnector.PROPERTY_LOGIN_REQUEST_URL)); >+ webPage = WebRepositoryConnector.fetchResource(evaluatedUrl, params, loginParams, repository); > } > > QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList()) { >Index: .project >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.web/.project,v >retrieving revision 1.1 >diff -u -r1.1 .project >--- .project 10 Nov 2006 02:13:18 -0000 1.1 >+++ .project 21 Nov 2006 20:38:25 -0000 >@@ -24,5 +24,6 @@ > <natures> > <nature>org.eclipse.pde.PluginNature</nature> > <nature>org.eclipse.jdt.core.javanature</nature> >+ <nature>org.eclipse.jem.beaninfo.BeanInfoNature</nature> > </natures> > </projectDescription> >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.web/plugin.xml,v >retrieving revision 1.2 >diff -u -r1.2 plugin.xml >--- plugin.xml 10 Nov 2006 21:37:23 -0000 1.2 >+++ plugin.xml 21 Nov 2006 20:38:25 -0000 >@@ -141,6 +141,56 @@ > <attribute name="queryPattern" > value="<tr .+?<a href="view.php\?id=(.+?)">.+?<td class="left">(.+?)</td></tr>"/> > </repository> >+ <repository >+ anonymous="true" >+ label="ChangeLogic (anonymous)" >+ repositoryKind="web" >+ urlNewTask="${serverUrl}/index.php?event=Add_task" >+ urlRepository="http://changelogic.araneaframework.org" >+ urlTask="${serverUrl}/index.php?event=Show_public_task&task_id=" >+ urlTaskQuery="${serverUrl}/index.php?event=Show_public_task_list"> >+ <attribute >+ name="queryPattern" >+ value="<a href="index.php\?event\=Show_public_task&amp;task_id\=.+?&amp;project_id\=0">(.+?)</a>.+?</td>.+?<td>.+?</td>.+?<td>.+?</td>.+?<td>.+?</td>.+?<td>(.+?)</td>"> >+ </attribute> >+ <attribute >+ name="loginFormUrl" >+ value="${serverUrl}"> >+ </attribute> >+ </repository> >+ <repository >+ anonymous="false" >+ label="ChangeLogic (private)" >+ repositoryKind="web" >+ urlNewTask="${serverUrl}/index.php?event=Add_task&project_id=${projectId}" >+ urlRepository="http://changelogic.araneaframework.org" >+ urlTask="${serverUrl}/index.php?event=Show_task&task_id=" >+ urlTaskQuery="${serverUrl}/index.php?event=Show_task_list&project_id=${projectId}"> >+ <attribute >+ name="loginFormUrl" >+ value="${serverUrl}"> >+ </attribute> >+ <attribute >+ name="loginTokenPattern" >+ value="<form name="Login_form" method="POST" action="index.php\?event\=Login&amp;project_id\=0&amp;link_uid\=(\p{Alnum}+?)\"(?:.*?)>"> >+ </attribute> >+ <attribute >+ name="loginRequestMethod" >+ value="POST"> >+ </attribute> >+ <attribute >+ name="loginRequestUrl" >+ value="${serverUrl}/index.php?event=Login&link_uid=${loginToken}&username=${userId}&password=${password}"> >+ </attribute> >+ <attribute >+ name="queryPattern" >+ value="<a href="index.php\?event\=Show_task&amp;task_id\=.+?&amp;project_id\=${projectId}&amp;recent_list_id=.+?">(.+?)</a>.+?</td>.+?<td>.+?</td>.+?<td>.+?</td>.+?<td>.+?</td>.+?<td>.+?</td>.+?<td>(.+?)</td>"> >+ </attribute> >+ <attribute >+ name="param_projectId" >+ value="1"> >+ </attribute> >+ </repository> > </extension> > > </plugin> >Index: src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeContentProvider.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeContentProvider.java >diff -N src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeContentProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeContentProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,28 @@ >+/******************************************************************************* >+ * Copyright (c) 2005, 2006 Erkki Lindpere and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Erkki Lindpere - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.mylar.internal.tasks.web.restui; >+ >+import org.eclipse.jface.viewers.IStructuredContentProvider; >+import org.eclipse.jface.viewers.Viewer; >+ >+public class MethodTypeContentProvider implements IStructuredContentProvider { >+ >+ public Object[] getElements(Object inputElement) { >+ return EHttpMethod.values(); >+ } >+ >+ public void dispose() { >+ } >+ >+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { >+ } >+ >+} >Index: .refactorings/2006/11/47/refactorings.index >=================================================================== >RCS file: .refactorings/2006/11/47/refactorings.index >diff -N .refactorings/2006/11/47/refactorings.index >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .refactorings/2006/11/47/refactorings.index 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1 @@ >+1164139617968 Extract method 'refreshIfNeeded' >Index: src/org/eclipse/mylar/internal/tasks/web/restui/EHttpMethod.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/web/restui/EHttpMethod.java >diff -N src/org/eclipse/mylar/internal/tasks/web/restui/EHttpMethod.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/web/restui/EHttpMethod.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,20 @@ >+/******************************************************************************* >+ * Copyright (c) 2005, 2006 Erkki Lindpere and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Erkki Lindpere - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.mylar.internal.tasks.web.restui; >+ >+/** >+ * Represents a subset of HTTP methods: GET and POST >+ * >+ * @author Erkki Lindpere >+ */ >+public enum EHttpMethod { >+ GET, POST >+} >Index: src/org/eclipse/mylar/internal/tasks/web/restui/RESTRequestEditor.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/web/restui/RESTRequestEditor.java >diff -N src/org/eclipse/mylar/internal/tasks/web/restui/RESTRequestEditor.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/web/restui/RESTRequestEditor.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,88 @@ >+/******************************************************************************* >+ * Copyright (c) 2005, 2006 Erkki Lindpere and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Erkki Lindpere - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.mylar.internal.tasks.web.restui; >+ >+import org.eclipse.jface.viewers.ComboViewer; >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.StructuredSelection; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.layout.GridLayout; >+import org.eclipse.swt.widgets.Combo; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Label; >+import org.eclipse.swt.widgets.Text; >+ >+public class RESTRequestEditor extends Composite { >+ >+ private Label urlLabel = null; >+ >+ private Text urlText = null; >+ >+ private Combo methodCombo = null; >+ >+ private ComboViewer comboViewer = null; >+ >+ public RESTRequestEditor(Composite parent, int style) { >+ super(parent, style); >+ initialize(); >+ } >+ >+ private void initialize() { >+ GridData gridData = new GridData(); >+ gridData.grabExcessHorizontalSpace = true; >+ gridData.verticalAlignment = GridData.CENTER; >+ gridData.horizontalAlignment = GridData.FILL; >+ GridLayout gridLayout = new GridLayout(); >+ gridLayout.numColumns = 3; >+ createMethodCombo(); >+ urlLabel = new Label(this, SWT.NONE); >+ urlLabel.setText("URL:"); >+ urlText = new Text(this, SWT.BORDER); >+ urlText.setLayoutData(gridData); >+ this.setLayout(gridLayout); >+ } >+ >+ /** >+ * This method initializes methodCombo >+ * >+ */ >+ private void createMethodCombo() { >+ methodCombo = new Combo(this, SWT.NONE); >+ comboViewer = new ComboViewer(methodCombo); >+ comboViewer.setContentProvider(new MethodTypeContentProvider()); >+ comboViewer.setInput(new Object()); >+ comboViewer.setLabelProvider(new MethodTypeLabelProvider()); >+ } >+ >+ public String getUrl() { >+ return urlText.getText(); >+ } >+ >+ public void setUrl(String url) { >+ urlText.setText(url); >+ } >+ >+ public EHttpMethod getMethod() { >+ return (EHttpMethod) ((IStructuredSelection) comboViewer.getSelection()).getFirstElement(); >+ } >+ >+ public void setMethod(EHttpMethod method) { >+ ISelection selection = null; >+ if (method == null) { >+ selection = new StructuredSelection(); >+ } else { >+ selection = new StructuredSelection(method); >+ } >+ comboViewer.setSelection(selection); >+ } >+} >Index: .refactorings/2006/11/47/refactorings.history >=================================================================== >RCS file: .refactorings/2006/11/47/refactorings.history >diff -N .refactorings/2006/11/47/refactorings.history >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .refactorings/2006/11/47/refactorings.history 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,4 @@ >+<?xml version="1.0" encoding="utf-8"?> >+<session version="1.0"> >+<refactoring comment="Extract method 'private static GetMethod refreshIfNeeded(String url,HttpClient client,GetMethod get) throws IOException, HttpException ' from 'org.eclipse.mylar.internal.tasks.web.WebRepositoryConnector.fetchResource()' to 'org.eclipse.mylar.internal.tasks.web.WebRepositoryConnector' - Original project: 'org.eclipse.mylar.tasks.web' - Method name: 'refreshIfNeeded' - Destination type: 'org.eclipse.mylar.internal.tasks.web.WebRepositoryConnector' - Declared visibility: 'private' - Declare thrown runtime exceptions - Generate method comment" comments="true" description="Extract method 'refreshIfNeeded'" destination="0" exceptions="true" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src<org.eclipse.mylar.internal.tasks.web{WebRepositoryConnector.java" name="refreshIfNeeded" replace="false" selection="15304 741" stamp="1164139617968" version="1.0" visibility="2"/> >+</session> >Index: src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeLabelProvider.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeLabelProvider.java >diff -N src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeLabelProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/web/restui/MethodTypeLabelProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,26 @@ >+/******************************************************************************* >+ * Copyright (c) 2005, 2006 Erkki Lindpere and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Erkki Lindpere - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.mylar.internal.tasks.web.restui; >+ >+import org.eclipse.jface.viewers.LabelProvider; >+ >+public class MethodTypeLabelProvider extends LabelProvider { >+ >+ @Override >+ public String getText(Object element) { >+ if (element instanceof EHttpMethod) { >+ EHttpMethod type = (EHttpMethod) element; >+ return type.name(); >+ } >+ return super.getText(element); >+ } >+ >+}
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