[sonar] Port to current guava

Michael Šimáček msimacek at fedoraproject.org
Thu Mar 19 16:26:41 UTC 2015


commit a74db553c9df197199d3121de822e6a4c3f82827
Author: Michael Simacek <msimacek at redhat.com>
Date:   Thu Mar 19 17:24:41 2015 +0100

    Port to current guava

 0001-Port-to-guava-16.patch                        |  85 ----------
 ...le.patch => 0001-Remove-oracle-DB-support.patch |  24 ++-
 0002-Port-to-guava-18.patch                        | 175 +++++++++++++++++++++
 ...tion.patch => 0003-Never-thrown-exception.patch |   6 +-
 sonar.spec                                         |  13 +-
 5 files changed, 205 insertions(+), 98 deletions(-)
---
diff --git a/sonar-3.2-remove-oracle.patch b/0001-Remove-oracle-DB-support.patch
similarity index 59%
rename from sonar-3.2-remove-oracle.patch
rename to 0001-Remove-oracle-DB-support.patch
index 605a880..fbd0a8c 100644
--- a/sonar-3.2-remove-oracle.patch
+++ b/0001-Remove-oracle-DB-support.patch
@@ -1,6 +1,17 @@
---- sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java	2012-08-06 08:44:37.000000000 +0200
-+++ sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java-gil	2012-08-14 15:50:55.007615657 +0200
-@@ -26,7 +26,6 @@
+From 41503865641fba80dc93ada9cca5da0b8be88320 Mon Sep 17 00:00:00 2001
+From: Michael Simacek <msimacek at redhat.com>
+Date: Thu, 19 Mar 2015 17:15:52 +0100
+Subject: [PATCH 1/3] Remove oracle DB support
+
+---
+ .../java/org/sonar/core/persistence/DatabaseCommands.java    | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java b/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java
+index 0e9f726..6e313b7 100644
+--- a/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java
++++ b/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java
+@@ -26,7 +26,6 @@ import org.dbunit.dataset.datatype.IDataTypeFactory;
  import org.dbunit.ext.h2.H2DataTypeFactory;
  import org.dbunit.ext.mssql.MsSqlDataTypeFactory;
  import org.dbunit.ext.mysql.MySqlDataTypeFactory;
@@ -8,7 +19,7 @@
  import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory;
  import org.sonar.core.persistence.dialect.Dialect;
  import org.sonar.core.persistence.dialect.MsSql;
-@@ -61,7 +60,6 @@
+@@ -61,7 +60,6 @@ public abstract class DatabaseCommands {
          org.sonar.core.persistence.dialect.H2.ID, H2,
          MsSql.ID, MSSQL,
          MySql.ID, MYSQL,
@@ -16,7 +27,7 @@
          PostgreSql.ID, POSTGRESQL).get(dialect.getId());
  
      return Preconditions.checkNotNull(command, "Unknown database: " + dialect);
-@@ -81,16 +79,6 @@
+@@ -81,16 +79,6 @@ public abstract class DatabaseCommands {
      }
    };
  
@@ -33,3 +44,6 @@
    private static final DatabaseCommands MSSQL = new DatabaseCommands(new MsSqlDataTypeFactory()) {
      @Override
      public void resetPrimaryKeys(DataSource dataSource) {
+-- 
+2.1.0
+
diff --git a/0002-Port-to-guava-18.patch b/0002-Port-to-guava-18.patch
new file mode 100644
index 0000000..36f1bb2
--- /dev/null
+++ b/0002-Port-to-guava-18.patch
@@ -0,0 +1,175 @@
+From a7d7092dadf58b0e6a192b88794b158057b9c6d4 Mon Sep 17 00:00:00 2001
+From: Michael Simacek <msimacek at redhat.com>
+Date: Thu, 19 Mar 2015 17:13:05 +0100
+Subject: [PATCH 2/3] Port to guava-18
+
+---
+ .../main/java/org/sonar/core/review/ReviewDao.java |  4 +--
+ .../java/org/sonar/api/utils/HttpDownloader.java   | 34 ++++++++++++++++++----
+ .../sonar/api/utils/command/CommandExecutor.java   | 23 +++++++++++----
+ 3 files changed, 47 insertions(+), 14 deletions(-)
+
+diff --git a/sonar-core/src/main/java/org/sonar/core/review/ReviewDao.java b/sonar-core/src/main/java/org/sonar/core/review/ReviewDao.java
+index ba5572f..7a7aad7 100644
+--- a/sonar-core/src/main/java/org/sonar/core/review/ReviewDao.java
++++ b/sonar-core/src/main/java/org/sonar/core/review/ReviewDao.java
+@@ -22,7 +22,7 @@ package org.sonar.core.review;
+ import com.google.common.base.Preconditions;
+ import com.google.common.base.Predicate;
+ import com.google.common.base.Predicates;
+-import com.google.common.cache.Cache;
++import com.google.common.cache.LoadingCache;
+ import com.google.common.cache.CacheBuilder;
+ import com.google.common.cache.CacheLoader;
+ import com.google.common.collect.Collections2;
+@@ -37,7 +37,7 @@ import java.util.Collection;
+ 
+ public class ReviewDao implements BatchComponent, ServerComponent {
+   private final MyBatis mybatis;
+-  private final Cache<Long, Collection<ReviewDto>> cacheByResource;
++  private final LoadingCache<Long, Collection<ReviewDto>> cacheByResource;
+ 
+   public ReviewDao(MyBatis mybatis) {
+     this.mybatis = mybatis;
+diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java
+index 7b57626..8e4dae7 100644
+--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java
++++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java
+@@ -20,14 +20,13 @@
+ package org.sonar.api.utils;
+ 
+ import com.google.common.annotations.VisibleForTesting;
+-
+ import com.google.common.base.Joiner;
+ import com.google.common.collect.ImmutableList;
+ import com.google.common.collect.Lists;
+ import com.google.common.io.ByteStreams;
+ import com.google.common.io.CharStreams;
+ import com.google.common.io.Files;
+-import com.google.common.io.InputSupplier;
++
+ import org.apache.commons.io.FileUtils;
+ import org.slf4j.LoggerFactory;
+ import org.sonar.api.BatchComponent;
+@@ -36,8 +35,10 @@ import org.sonar.api.config.Settings;
+ import org.sonar.api.platform.Server;
+ 
+ import java.io.File;
++import java.io.FileOutputStream;
+ import java.io.IOException;
+ import java.io.InputStream;
++import java.io.InputStreamReader;
+ import java.net.Authenticator;
+ import java.net.HttpURLConnection;
+ import java.net.PasswordAuthentication;
+@@ -137,7 +138,12 @@ public class HttpDownloader extends UriReader.SchemeProcessor implements BatchCo
+   @Override
+   byte[] readBytes(URI uri) {
+     try {
+-      return ByteStreams.toByteArray(new HttpInputSupplier(uri));
++      InputStream is = null;
++      try {
++        return ByteStreams.toByteArray(is = new HttpInputSupplier(uri).getInput());
++      } finally {
++          if (is != null) is.close();
++      }
+     } catch (IOException e) {
+       throw failToDownload(uri, e);
+     }
+@@ -146,7 +152,14 @@ public class HttpDownloader extends UriReader.SchemeProcessor implements BatchCo
+   @Override
+   String readString(URI uri, Charset charset) {
+     try {
+-      return CharStreams.toString(CharStreams.newReaderSupplier(new HttpInputSupplier(uri), charset));
++      InputStream is = null;
++      try {
++        is = new HttpInputSupplier(uri).getInput();
++        InputStreamReader rdr = new InputStreamReader(is, charset);
++        return CharStreams.toString(rdr);
++      } finally {
++        if (is != null) is.close();
++      }
+     } catch (IOException e) {
+       throw failToDownload(uri, e);
+     }
+@@ -169,8 +182,17 @@ public class HttpDownloader extends UriReader.SchemeProcessor implements BatchCo
+   }
+ 
+   public void download(URI uri, File toFile) {
++    FileOutputStream fo = null;
++    InputStream is = null;
+     try {
+-      Files.copy(new HttpInputSupplier(uri), toFile);
++        try {
++          fo = new FileOutputStream(toFile);
++          is = new HttpInputSupplier(uri).getInput();
++          ByteStreams.copy(is, fo);
++        } finally {
++            if (fo != null) fo.close();
++            if (is != null) is.close();
++        }
+     } catch (IOException e) {
+       FileUtils.deleteQuietly(toFile);
+       throw failToDownload(uri, e);
+@@ -181,7 +203,7 @@ public class HttpDownloader extends UriReader.SchemeProcessor implements BatchCo
+     return new SonarException(String.format("Fail to download the file: %s (%s)", uri, getProxySynthesis(uri)), e);
+   }
+ 
+-  class HttpInputSupplier implements InputSupplier<InputStream> {
++  class HttpInputSupplier {
+     private final URI uri;
+ 
+     HttpInputSupplier(URI uri) {
+diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java
+index b5da739..bae7079 100644
+--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java
++++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/command/CommandExecutor.java
+@@ -23,6 +23,7 @@ import com.google.common.io.Closeables;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ 
++import java.io.Closeable;
+ import java.io.BufferedReader;
+ import java.io.IOException;
+ import java.io.InputStream;
+@@ -129,12 +130,22 @@ public class CommandExecutor {
+     return execute(command, new DefaultConsumer(), new DefaultConsumer(), timeoutMilliseconds);
+   }
+ 
++  private static final Logger closeablesLogger = LoggerFactory.getLogger(Closeables.class.getName());
++
++  private static void closeQuietly(Closeable closeable) {
++      try {
++          Closeables.close(closeable, true);
++      } catch (IOException e) {
++          closeablesLogger.warn("IOException should not have been thrown.", e);
++      }
++  }
++
+   private void closeStreams(Process process) {
+     if (process != null) {
+-      Closeables.closeQuietly(process.getInputStream());
+-      Closeables.closeQuietly(process.getInputStream());
+-      Closeables.closeQuietly(process.getOutputStream());
+-      Closeables.closeQuietly(process.getErrorStream());
++      closeQuietly(process.getInputStream());
++      closeQuietly(process.getInputStream());
++      closeQuietly(process.getOutputStream());
++      closeQuietly(process.getErrorStream());
+     }
+   }
+ 
+@@ -172,8 +183,8 @@ public class CommandExecutor {
+         exception = ioe;
+ 
+       } finally {
+-        Closeables.closeQuietly(br);
+-        Closeables.closeQuietly(isr);
++        closeQuietly(br);
++        closeQuietly(isr);
+       }
+     }
+ 
+-- 
+2.1.0
+
diff --git a/0001-Never-thrown-exception.patch b/0003-Never-thrown-exception.patch
similarity index 91%
rename from 0001-Never-thrown-exception.patch
rename to 0003-Never-thrown-exception.patch
index 6012129..8fa6c3d 100644
--- a/0001-Never-thrown-exception.patch
+++ b/0003-Never-thrown-exception.patch
@@ -1,7 +1,7 @@
-From 8ca8c37feee4b1b27b243f2fb69b76b725e57ebc Mon Sep 17 00:00:00 2001
+From 0351f59ff406eec7605c7954c8a4a5c50dfb3238 Mon Sep 17 00:00:00 2001
 From: Michael Simacek <msimacek at redhat.com>
 Date: Fri, 24 Oct 2014 15:55:08 +0200
-Subject: [PATCH] Never thrown exception
+Subject: [PATCH 3/3] Never thrown exception
 
 ---
  .../java/org/sonar/wsclient/connectors/HttpClient4Connector.java     | 5 -----
@@ -32,5 +32,5 @@ index 40d216d..9f7feb1 100644
    }
  
 -- 
-1.9.3
+2.1.0
 
diff --git a/sonar.spec b/sonar.spec
index db393d0..3d47bfb 100644
--- a/sonar.spec
+++ b/sonar.spec
@@ -1,15 +1,15 @@
 Name:           sonar
 Version:        3.2
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        An open platform to manage code quality
 License:        LGPLv3+
 URL:            http://www.sonarqube.org
 Source0:        https://github.com/SonarSource/sonarqube/archive/%{version}.tar.gz
 
-Patch0:        0001-Port-to-guava-16.patch
 # dbunit with (unavailable) oracle support
-Patch1:        %{name}-%{version}-remove-oracle.patch
-Patch2:        0001-Never-thrown-exception.patch
+Patch0:        0001-Remove-oracle-DB-support.patch
+Patch1:        0002-Port-to-guava-18.patch
+Patch2:        0003-Never-thrown-exception.patch
 
 BuildRequires: maven-local
 
@@ -249,7 +249,7 @@ tests.
 %prep
 %setup -q -n sonarqube-%{version}
 %patch0 -p1
-%patch1 -p0
+%patch1 -p1
 %patch2 -p1
 
 find . -name "*.bat" -delete
@@ -352,6 +352,9 @@ rm -r plugins/sonar-squid-java-plugin/test-resources/ sonar-duplications/src/tes
 %files jacoco-plugin -f .mfiles-%{name}-jacoco-plugin
 
 %changelog
+* Thu Mar 19 2015 Michael Simacek <msimacek at redhat.com> - 3.2-3
+- Port to current guava
+
 * Fri Nov 14 2014 Michael Simacek <msimacek at redhat.com> - 3.2-2
 - Fix license tag and install license file
 - Split into subpackages


More information about the scm-commits mailing list