[jbosstools-commits] JBoss Tools SVN: r24501 - in trunk/usage: plugins/org.jboss.tools.usage/src/org/jboss/tools/usage and 3 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Aug 27 10:13:28 EDT 2010


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");
 		}



More information about the jbosstools-commits mailing list