3 Commits

5 changed files with 40 additions and 288 deletions

BIN
google-gson-build.tar.xz LFS Normal file

Binary file not shown.

View File

@@ -1,3 +1,13 @@
-------------------------------------------------------------------
Fri Mar 28 05:58:22 UTC 2025 - Fridrich Strba <fstrba@suse.com>
- Rewrite the build system for ant to avoid potential build cycles
with upcoming Maven 4
- Removed patches:
* no-template-plugin.patch
* osgi-export-internal.patch
+ factored into the ant build already
-------------------------------------------------------------------
Mon Apr 29 14:47:02 UTC 2024 - Fridrich Strba <fstrba@suse.com>

View File

@@ -1,7 +1,7 @@
#
# spec file for package google-gson
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -23,14 +23,13 @@ Summary: Java lib for conversion of Java objects into JSON representation
License: Apache-2.0
URL: https://github.com/google/gson
Source0: https://github.com/google/gson/archive/gson-parent-%{version}.tar.gz
Patch0: osgi-export-internal.patch
# Remove dependency on unavailable templating-maven-plugin
Patch1: no-template-plugin.patch
Source1: %{name}-build.tar.xz
BuildRequires: ant
BuildRequires: fdupes
BuildRequires: glassfish-annotation-api
BuildRequires: java-devel >= 9
BuildRequires: maven-local
BuildRequires: mvn(javax.annotation:jsr250-api)
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires: javapackages-local >= 6
BuildRequires: jsr-305
# The automatic requires would be java-headless >= 9, but the
# binaries are java 8 compatible
%define __requires_exclude java-headless
@@ -50,50 +49,37 @@ Summary: API documentation for %{name}
This package contains the API documentation for %{name}.
%prep
%setup -q -n gson-gson-parent-%{version}
%patch -P 0 -p1
%patch -P 1 -p1
# remove unnecessary dependency on parent POM
%pom_remove_parent
# presence of these files breaks builds with Java 8
# find -name "module-info.java" -print -delete
# Use felix maven-bundle-plugin only for OSGi metadata
%pom_remove_plugin :bnd-maven-plugin gson
%pom_remove_plugin :templating-maven-plugin gson
%pom_remove_plugin :copy-rename-maven-plugin gson
%pom_remove_plugin :proguard-maven-plugin gson
%pom_add_plugin "org.apache.felix:maven-bundle-plugin" gson "<configuration>
<instructions>
<_include>bnd.bnd</_include>
</instructions>
</configuration>
<executions>
<execution>
<id>create-manifest</id>
<phase>process-classes</phase>
<goals><goal>manifest</goal></goals>
</execution>
</executions>"
%pom_xpath_set "pom:plugins/pom:plugin[pom:artifactId[text()='maven-compiler-plugin']]/pom:configuration" "<release>8</release>"
%setup -q -n gson-gson-parent-%{version} -a1
%build
%{mvn_build} -f -- \
-Dproject.build.outputTimestamp=$(date -u -d @${SOURCE_DATE_EPOCH:-$(date +%%s)} +%%Y-%%m-%%dT%%H:%%M:%%SZ) \
-Dsource=8
mkdir -p lib
build-jar-repository -s lib jsr-305 glassfish-annotation-api
ant package javadoc
%install
%mvn_install
# jar
install -dm 0755 %{buildroot}%{_javadir}/%{name}
install -pm 0644 gson/target/gson-%{version}.jar %{buildroot}%{_javadir}/%{name}/gson.jar
install -pm 0644 extras/target/gson-extras-%{version}.jar %{buildroot}%{_javadir}/%{name}/gson-extras.jar
# pom
install -dm 0755 %{buildroot}%{_mavenpomdir}/%{name}
%mvn_install_pom gson/pom.xml %{buildroot}%{_mavenpomdir}/%{name}/gson.pom
%add_maven_depmap %{name}/gson.pom %{name}/gson.jar
%mvn_install_pom extras/pom.xml %{buildroot}%{_mavenpomdir}/%{name}/gson-extras.pom
%add_maven_depmap %{name}/gson-extras.pom %{name}/gson-extras.jar
# javadoc
install -dm 0755 %{buildroot}%{_javadocdir}/%{name}
for i in gson extras; do
cp -r ${i}/target/site/apidocs %{buildroot}%{_javadocdir}/%{name}/${i}
done
%fdupes -s %{buildroot}%{_javadocdir}
%files -f .mfiles
%license LICENSE
%doc README.md CHANGELOG.md UserGuide.md
%files javadoc -f .mfiles-javadoc
%files javadoc
%{_javadocdir}/%{name}
%license LICENSE
%changelog

View File

@@ -1,222 +0,0 @@
--- a/gson/src/main/java-templates/com/google/gson/internal/GsonBuildConfig.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2018 The Gson authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.gson.internal;
-
-/**
- * Build configuration for Gson. This file is automatically populated by
- * templating-maven-plugin and .java/.class files are generated for use in Gson.
- *
- * @author Inderjeet Singh
- */
-public final class GsonBuildConfig {
- // Based on https://stackoverflow.com/questions/2469922/generate-a-version-java-file-in-maven
-
- /** This field is automatically populated by Maven when a build is triggered */
- public static final String VERSION = "${project.version}";
-
- private GsonBuildConfig() { }
-}
--- a/gson/src/main/java/com/google/gson/Gson.java
+++ b/gson/src/main/java/com/google/gson/Gson.java
@@ -37,7 +37,6 @@ import java.util.concurrent.atomic.AtomicLongArray;
import com.google.gson.internal.ConstructorConstructor;
import com.google.gson.internal.Excluder;
-import com.google.gson.internal.GsonBuildConfig;
import com.google.gson.internal.Primitives;
import com.google.gson.internal.Streams;
import com.google.gson.internal.bind.ArrayTypeAdapter;
@@ -462,7 +461,7 @@ public final class Gson {
return candidate;
}
}
- throw new IllegalArgumentException("GSON (" + GsonBuildConfig.VERSION + ") cannot handle " + type);
+ throw new IllegalArgumentException("GSON cannot handle " + type);
} finally {
threadCalls.remove(type);
@@ -704,10 +703,6 @@ public final class Gson {
((TypeAdapter<Object>) adapter).write(writer, src);
} catch (IOException e) {
throw new JsonIOException(e);
- } catch (AssertionError e) {
- AssertionError error = new AssertionError("AssertionError (GSON " + GsonBuildConfig.VERSION + "): " + e.getMessage());
- error.initCause(e);
- throw error;
} finally {
writer.setLenient(oldLenient);
writer.setHtmlSafe(oldHtmlSafe);
@@ -784,10 +779,6 @@ public final class Gson {
Streams.write(jsonElement, writer);
} catch (IOException e) {
throw new JsonIOException(e);
- } catch (AssertionError e) {
- AssertionError error = new AssertionError("AssertionError (GSON " + GsonBuildConfig.VERSION + "): " + e.getMessage());
- error.initCause(e);
- throw error;
} finally {
writer.setLenient(oldLenient);
writer.setHtmlSafe(oldHtmlSafe);
@@ -945,10 +936,6 @@ public final class Gson {
} catch (IOException e) {
// TODO(inder): Figure out whether it is indeed right to rethrow this as JsonSyntaxException
throw new JsonSyntaxException(e);
- } catch (AssertionError e) {
- AssertionError error = new AssertionError("AssertionError (GSON " + GsonBuildConfig.VERSION + "): " + e.getMessage());
- error.initCause(e);
- throw error;
} finally {
reader.setLenient(oldLenient);
}
--- a/gson/src/test/java/com/google/gson/functional/GsonVersionDiagnosticsTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2018 Gson Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.gson.functional;
-
-import java.io.IOException;
-import java.util.regex.Pattern;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.TypeAdapter;
-import com.google.gson.stream.JsonReader;
-import com.google.gson.stream.JsonWriter;
-
-import junit.framework.TestCase;
-
-/**
- * Functional tests to validate printing of Gson version on AssertionErrors
- *
- * @author Inderjeet Singh
- */
-public class GsonVersionDiagnosticsTest extends TestCase {
- private static final Pattern GSON_VERSION_PATTERN = Pattern.compile("(\\(GSON \\d\\.\\d\\.\\d)(?:[-.][A-Z]+)?\\)$");
-
- private Gson gson;
-
- @Before
- public void setUp() {
- gson = new GsonBuilder().registerTypeAdapter(TestType.class, new TypeAdapter<TestType>() {
- @Override public void write(JsonWriter out, TestType value) {
- throw new AssertionError("Expected during serialization");
- }
- @Override public TestType read(JsonReader in) throws IOException {
- throw new AssertionError("Expected during deserialization");
- }
- }).create();
- }
-
- @Test
- public void testVersionPattern() {
- assertTrue(GSON_VERSION_PATTERN.matcher("(GSON 2.8.5)").matches());
- assertTrue(GSON_VERSION_PATTERN.matcher("(GSON 2.8.5-SNAPSHOT)").matches());
- }
-
- @Test
- public void testAssertionErrorInSerializationPrintsVersion() {
- try {
- gson.toJson(new TestType());
- fail();
- } catch (AssertionError expected) {
- ensureAssertionErrorPrintsGsonVersion(expected);
- }
- }
-
- @Test
- public void testAssertionErrorInDeserializationPrintsVersion() {
- try {
- gson.fromJson("{'a':'abc'}", TestType.class);
- fail();
- } catch (AssertionError expected) {
- ensureAssertionErrorPrintsGsonVersion(expected);
- }
- }
-
- private void ensureAssertionErrorPrintsGsonVersion(AssertionError expected) {
- String msg = expected.getMessage();
- // System.err.println(msg);
- int start = msg.indexOf("(GSON");
- assertTrue(start > 0);
- int end = msg.indexOf("):") + 1;
- assertTrue(end > 0 && end > start + 6);
- String version = msg.substring(start, end);
- // System.err.println(version);
- assertTrue(GSON_VERSION_PATTERN.matcher(version).matches());
- }
-
- private static final class TestType {
- @SuppressWarnings("unused")
- String a;
- }
-}
--- a/gson/src/test/java/com/google/gson/internal/GsonBuildConfigTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2018 The Gson authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.gson.internal;
-
-import static org.junit.Assert.assertFalse;
-
-import org.junit.Test;
-
-/**
- * Unit tests for {@code GsonBuildConfig}
- *
- * @author Inderjeet Singh
- */
-public class GsonBuildConfigTest {
-
- @Test
- public void testEnsureGsonBuildConfigGetsUpdatedToMavenVersion() {
- assertFalse("${project.version}".equals(GsonBuildConfig.VERSION));
- }
-}

View File

@@ -1,25 +0,0 @@
From ad012fa6acc53560a07d05676aa22d1afc66bf22 Mon Sep 17 00:00:00 2001
From: Mat Booth <mat.booth@redhat.com>
Date: Thu, 27 Aug 2020 10:52:58 +0100
Subject: [PATCH 2/4] Also export internal packages in OSGi metadata
---
gson/bnd.bnd | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gson/bnd.bnd b/gson/bnd.bnd
index 7706d8a..8469930 100644
--- a/gson/bnd.bnd
+++ b/gson/bnd.bnd
@@ -13,4 +13,7 @@ Import-Package: sun.misc;resolution:=optional,*
com.google.gson,\
com.google.gson.annotations,\
com.google.gson.reflect,\
- com.google.gson.stream
+ com.google.gson.stream,\
+ com.google.gson.internal;x-internal:=true,\
+ com.google.gson.internal.bind;x-internal:=true,\
+ com.google.gson.internal.bind.util;x-internal:=true
--
2.26.2