GERONIMO-6745 ensure accumulate logic works in jsonbconfig git-svn-id: https://svn.apache.org/repos/asf/geronimo/specs/trunk@1864876 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/geronimo-jsonb_1.0_spec/pom.xml b/geronimo-jsonb_1.0_spec/pom.xml index 69745af..c77d779 100644 --- a/geronimo-jsonb_1.0_spec/pom.xml +++ b/geronimo-jsonb_1.0_spec/pom.xml
@@ -73,9 +73,16 @@ <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-json_1.1_spec</artifactId> - <version>1.2-SNAPSHOT</version> + <version>1.2</version> <scope>provided</scope> </dependency> + + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter</artifactId> + <version>5.5.1</version> + <scope>test</scope> + </dependency> </dependencies> <build> @@ -133,6 +140,11 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>3.0.0-M3</version> + </plugin> </plugins> </build> </project>
diff --git a/geronimo-jsonb_1.0_spec/src/main/java/javax/json/bind/JsonbConfig.java b/geronimo-jsonb_1.0_spec/src/main/java/javax/json/bind/JsonbConfig.java index 2545961..90bc630 100644 --- a/geronimo-jsonb_1.0_spec/src/main/java/javax/json/bind/JsonbConfig.java +++ b/geronimo-jsonb_1.0_spec/src/main/java/javax/json/bind/JsonbConfig.java
@@ -126,7 +126,7 @@ final T[] existing = (T[]) opt.get(); final T[] aggregated = (T[]) Array.newInstance(componentType, existing.length + values.length); System.arraycopy(existing, 0, aggregated, 0, existing.length); - System.arraycopy(values, 0, aggregated, existing.length + 1, values.length); + System.arraycopy(values, 0, aggregated, existing.length, values.length); return setProperty(key, aggregated); } return setProperty(key, values);
diff --git a/geronimo-jsonb_1.0_spec/src/test/java/org/apache/geronimo/specs/jsonb/JsonbConfigTest.java b/geronimo-jsonb_1.0_spec/src/test/java/org/apache/geronimo/specs/jsonb/JsonbConfigTest.java new file mode 100644 index 0000000..8cb24a3 --- /dev/null +++ b/geronimo-jsonb_1.0_spec/src/test/java/org/apache/geronimo/specs/jsonb/JsonbConfigTest.java
@@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.geronimo.specs.jsonb; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import javax.json.bind.JsonbConfig; +import javax.json.bind.adapter.JsonbAdapter; + +import org.junit.jupiter.api.Test; + +class JsonbConfigTest { + @Test + void accumulate() { + final JsonbConfig jsonbConfig = new JsonbConfig() + .withAdapters(new PassthroughIntegerAdapter()) + .withAdapters(new PassthroughStringAdapter()); + + final Object adapters = jsonbConfig.getProperty(JsonbConfig.ADAPTERS).orElseThrow(AssertionError::new); + assertTrue(JsonbAdapter[].class.isAssignableFrom(adapters.getClass())); + assertEquals(2, JsonbAdapter[].class.cast(adapters).length); + } + + public static class PassthroughStringAdapter implements JsonbAdapter<String, String> { + @Override + public String adaptToJson(final String obj) { + return obj; + } + + @Override + public String adaptFromJson(final String obj) { + return obj; + } + } + + public static class PassthroughIntegerAdapter implements JsonbAdapter<Integer, Integer> { + @Override + public Integer adaptToJson(final Integer obj) { + return obj; + } + + @Override + public Integer adaptFromJson(final Integer obj) { + return obj; + } + } +}