Author: adietish
Date: 2010-08-27 10:13:28 -0400 (Fri, 27 Aug 2010)
New Revision: 24501
Modified:
trunk/usage/plugins/org.jboss.tools.usage/JBoss Usage Reporter.launch
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/HttpResourceMap.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/preferences/GlobalUsageReportingSettings.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/reporting/UsageReport.java
trunk/usage/tests/org.jboss.tools.usage.test/src/org/jboss/tools/usage/test/GlobalUsageReportingSettingsTest.java
Log:
[JBIDE-6880] initial implementation finished
Modified: trunk/usage/plugins/org.jboss.tools.usage/JBoss Usage Reporter.launch
===================================================================
--- trunk/usage/plugins/org.jboss.tools.usage/JBoss Usage Reporter.launch 2010-08-27
13:54:47 UTC (rev 24500)
+++ trunk/usage/plugins/org.jboss.tools.usage/JBoss Usage Reporter.launch 2010-08-27
14:13:28 UTC (rev 24501)
@@ -6,7 +6,7 @@
<booleanAttribute key="automaticValidate" value="false"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearConfig" value="true"/>
<booleanAttribute key="clearws" value="false"/>
<booleanAttribute key="clearwslog" value="false"/>
<stringAttribute key="configLocation"
value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/JBoss Usage
Reporter"/>
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/HttpResourceMap.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/HttpResourceMap.java 2010-08-27
13:54:47 UTC (rev 24500)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/HttpResourceMap.java 2010-08-27
14:13:28 UTC (rev 24501)
@@ -2,6 +2,7 @@
import java.io.BufferedInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
@@ -20,7 +21,6 @@
static final String GET_METHOD_NAME = "GET"; //$NON-NLS-1$
protected Plugin plugin;
- protected HttpURLConnection urlConnection;
private Map<String, String> valuesMap;
private String[] keys;
@@ -38,7 +38,9 @@
protected Map<String, String> getValueMap() throws IOException {
if (valuesMap == null) {
- this.valuesMap = parse(keys, valueDelimiter, request(url), new HashMap<String,
String>());
+ HttpURLConnection urlConnection = createURLConnection(url);
+ InputStreamReader reader = request(urlConnection);
+ this.valuesMap = parse(keys, valueDelimiter, reader, new HashMap<String,
String>());
}
return valuesMap;
}
@@ -55,7 +57,7 @@
*
* @see HttpURLConnection
*/
- protected InputStreamReader request(String url) throws IOException {
+ protected InputStreamReader request(HttpURLConnection urlConnection) throws IOException
{
InputStreamReader responseReader = null;
try {
urlConnection.connect();
@@ -66,7 +68,7 @@
, UsageMessages.KillSwitchPreference_Info_HttpQuery
, url);
plugin.getLog().log(status);
- responseReader = getInputStreamReader(urlConnection.getContentType());
+ responseReader = getInputStreamReader(urlConnection.getInputStream(),
urlConnection.getContentType());
} else {
IStatus status = StatusUtils.getErrorStatus(
plugin.getBundle().getSymbolicName()
@@ -83,13 +85,13 @@
}
}
- private InputStreamReader getInputStreamReader(String contentType) throws
UnsupportedEncodingException, IOException {
+ private InputStreamReader getInputStreamReader(InputStream inputStream, String
contentType) throws UnsupportedEncodingException, IOException {
String contentTypeCharset = HttpEncodingUtils.getContentTypeCharset(contentType);
if (contentTypeCharset != null && contentTypeCharset.length() > 0) {
- return new InputStreamReader(new BufferedInputStream(urlConnection.getInputStream()),
+ return new InputStreamReader(new BufferedInputStream(inputStream),
contentTypeCharset);
} else {
- return new InputStreamReader(new
BufferedInputStream(urlConnection.getInputStream()));
+ return new InputStreamReader(new BufferedInputStream(inputStream));
}
}
@@ -118,6 +120,7 @@
* @param urlString
* the url string
* @return the http url connection
+ * @throws IOException
* @throws IOException
* Signals that an I/O exception has occurred.
*/
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/preferences/GlobalUsageReportingSettings.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/preferences/GlobalUsageReportingSettings.java 2010-08-27
13:54:47 UTC (rev 24500)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/preferences/GlobalUsageReportingSettings.java 2010-08-27
14:13:28 UTC (rev 24501)
@@ -10,7 +10,6 @@
******************************************************************************/
package org.jboss.tools.usage.preferences;
-import java.io.IOException;
import java.util.Map;
import org.eclipse.core.runtime.Plugin;
@@ -36,7 +35,7 @@
/* the delimiter that delimits the value */
private static final char VALUE_DELIMITER = '<';
- public GlobalUsageReportingSettings(Plugin plugin) throws IOException {
+ public GlobalUsageReportingSettings(Plugin plugin) {
super(REPORTING_ENABLEMENT_URL
, VALUE_DELIMITER
, plugin
@@ -45,7 +44,6 @@
, INTEGER_VALUE_KEY);
this.plugin = plugin;
- this.urlConnection = createURLConnection(REPORTING_ENABLEMENT_URL);
}
public boolean isEnabled() {
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/reporting/UsageReport.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/reporting/UsageReport.java 2010-08-27
13:54:47 UTC (rev 24500)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/reporting/UsageReport.java 2010-08-27
14:13:28 UTC (rev 24501)
@@ -10,9 +10,15 @@
******************************************************************************/
package org.jboss.tools.usage.reporting;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.window.Window;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.UIJob;
import org.jboss.tools.usage.FocusPoint;
import org.jboss.tools.usage.HttpGetRequest;
import org.jboss.tools.usage.IHttpGetRequest;
@@ -24,6 +30,7 @@
import org.jboss.tools.usage.googleanalytics.GoogleAnalyticsUrlStrategy;
import org.jboss.tools.usage.googleanalytics.IGoogleAnalyticsParameters;
import org.jboss.tools.usage.internal.JBossToolsUsageActivator;
+import org.jboss.tools.usage.preferences.GlobalUsageReportingSettings;
import org.jboss.tools.usage.util.PreferencesUtils;
import org.jboss.tools.usage.util.StatusUtils;
import org.osgi.service.prefs.BackingStoreException;
@@ -37,30 +44,30 @@
private static final String HOST_NAME = ReportingMessages.UsageReport_HostName;
-// private FocusPoint focusPoint = new FocusPoint("tools") //$NON-NLS-1$
-// .setChild(new FocusPoint("usage") //$NON-NLS-1$
-// .setChild(new FocusPoint("action") //$NON-NLS-1$
-// .setChild(new FocusPoint("wsstartup")))); //$NON-NLS-1$
+ private FocusPoint focusPoint = new FocusPoint("tools") //$NON-NLS-1$
+ .setChild(new FocusPoint("usage") //$NON-NLS-1$
+ .setChild(new FocusPoint("action") //$NON-NLS-1$
+ .setChild(new FocusPoint("wsstartup")))); //$NON-NLS-1$
- private FocusPoint focusPoint = new FocusPoint("test"); //$NON-NLS-1$
+ private GlobalUsageReportingSettings globalSettings = new
GlobalUsageReportingSettings(JBossToolsUsageActivator
+ .getDefault());
public void report() {
- UsageReportEnablementDialog dialog = new
UsageReportEnablementDialog(ReportingMessages.UsageReport_DialogTitle,
+ new ReportingJob().schedule();
+ }
+
+ private void askUser() {
+ UsageReportEnablementDialog dialog = new UsageReportEnablementDialog(
+ ReportingMessages.UsageReport_DialogTitle,
ReportingMessages.UsageReport_DialogMessage,
ReportingMessages.UsageReport_Checkbox_Text,
true,
PlatformUI.getWorkbench().getActiveWorkbenchWindow());
- if (UsageReportPreferences.isAskUser()) {
- if (dialog.open() == Window.OK) {
- UsageReportPreferences.setEnabled(dialog.isReportEnabled());
- UsageReportPreferences.setAskUser(false);
- flushPreferences();
- }
+ if (dialog.open() == Window.OK) {
+ UsageReportPreferences.setEnabled(dialog.isReportEnabled());
+ UsageReportPreferences.setAskUser(false);
+ flushPreferences();
}
-
- if (UsageReportPreferences.isEnabled()) {
- report(getTracker());
- }
}
private void flushPreferences() {
@@ -73,8 +80,10 @@
}
}
- private void report(ITracker tracker) {
- tracker.trackAsynchronously(focusPoint);
+ private void doReport() {
+ if (UsageReportPreferences.isEnabled()) {
+ getTracker().trackAsynchronously(focusPoint);
+ }
}
private ITracker getTracker() {
@@ -88,4 +97,67 @@
IHttpGetRequest httpGetRequest = new HttpGetRequest(eclipseEnvironment.getUserAgent(),
loggingAdapter);
return new Tracker(urlStrategy, httpGetRequest, loggingAdapter);
}
+
+ private class ReportingJob extends Job {
+ private ReportingJob() {
+ super("Reporting eclipse usage");
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ if (globalSettings.isEnabled()) {
+ if (UsageReportPreferences.isAskUser()) {
+ askUserAndReport();
+ } else {
+ doReport();
+ }
+ }
+ return Status.OK_STATUS;
+ }
+
+ private void askUserAndReport() {
+ Job askUserJob = new AskUserJob();
+ askUserJob.addJobChangeListener(new IJobChangeListener() {
+
+ public void sleeping(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void scheduled(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void running(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void done(IJobChangeEvent event) {
+ doReport();
+ }
+
+ public void awake(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void aboutToRun(IJobChangeEvent event) {
+ // ignore
+ }
+ });
+ askUserJob.setUser(true);
+ askUserJob.setPriority(Job.SHORT);
+ askUserJob.schedule();
+ }
+ }
+
+ private class AskUserJob extends UIJob {
+ private AskUserJob() {
+ super("Asking User to allow reporting");
+ }
+
+ @Override
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ askUser();
+ return Status.OK_STATUS;
+ }
+ }
}
Modified:
trunk/usage/tests/org.jboss.tools.usage.test/src/org/jboss/tools/usage/test/GlobalUsageReportingSettingsTest.java
===================================================================
---
trunk/usage/tests/org.jboss.tools.usage.test/src/org/jboss/tools/usage/test/GlobalUsageReportingSettingsTest.java 2010-08-27
13:54:47 UTC (rev 24500)
+++
trunk/usage/tests/org.jboss.tools.usage.test/src/org/jboss/tools/usage/test/GlobalUsageReportingSettingsTest.java 2010-08-27
14:13:28 UTC (rev 24501)
@@ -18,6 +18,7 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
import org.jboss.tools.usage.preferences.GlobalUsageReportingSettings;
import org.junit.Test;
@@ -73,7 +74,7 @@
}
@Override
- protected InputStreamReader request(String url) throws UnsupportedEncodingException {
+ protected InputStreamReader request(HttpURLConnection urlConnection) throws
UnsupportedEncodingException {
return new InputStreamReader(new
ByteArrayInputStream(getEnablementPageContent(enablementValue,
stringValue, integerValue).getBytes()), "UTF-8");
}