johnzon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Struberg <strub...@yahoo.de.INVALID>
Subject Re: [johnzon] branch master updated: JOHNZON-226 use own Array.length
Date Tue, 30 Jul 2019 12:27:38 GMT
Btw, I don't think Mapper and JSON-B must be independent of our jsonp impl. I cannot think
of any legit use.
With older EE7 servers you might have jsonp, but then we require EE8. But every EE8 server
always also comes with JSON-B as requirement. So what use case do you think of?

LieGrue,
strub


> Am 30.07.2019 um 14:19 schrieb Mark Struberg <struberg@yahoo.de.INVALID>:
> 
> 
> Will do.
> LieGrue,
> strub
> 
> 
>> Am 29.07.2019 um 23:12 schrieb Romain Manni-Bucau <rmannibucau@gmail.com>:
>> 
>> Hmm, this breaks the isolation between our modules - jsonp impl must stay
>> switchable in mapper and jsonb modules.
>> 
>> Can we just duplicate the class - the old shade+relocation hack is fine for
>> me?
>> 
>> Also, does Foo[] match Object[] or do we have some regression - think we
>> should harness such an utility with an exhaustive test kit?
>> 
>> Romain
>> 
>> 
>> ---------- Forwarded message ---------
>> De : <struberg@apache.org>
>> Date: lun. 29 juil. 2019 à 23:08
>> Subject: [johnzon] branch master updated: JOHNZON-226 use own Array.length
>> To: commits@johnzon.apache.org <commits@johnzon.apache.org>
>> 
>> 
>> This is an automated email from the ASF dual-hosted git repository.
>> 
>> struberg pushed a commit to branch master
>> in repository https://gitbox.apache.org/repos/asf/johnzon.git
>> 
>> 
>> The following commit(s) were added to refs/heads/master by this push:
>>    new 41e0fdc  JOHNZON-226 use own Array.length
>> 41e0fdc is described below
>> 
>> commit 41e0fdc50c59153a03e49e85afac534949ece4e6
>> Author: Mark Struberg <struberg@apache.org>
>> AuthorDate: Mon Jul 29 22:49:54 2019 +0200
>> 
>>   JOHNZON-226 use own Array.length
>> ---
>> .../apache/johnzon/core/JsonArrayBuilderImpl.java  |  4 ++-
>> .../org/apache/johnzon/core}/util/ArrayUtil.java   | 36
>> +++++++++++++++++++++-
>> .../org/apache/johnzon/jsonb/JohnzonJsonb.java     | 15 ++++-----
>> .../java/org/apache/johnzon/mapper/Mapper.java     |  2 +-
>> .../johnzon/mapper/MappingGeneratorImpl.java       | 35
>> ++-------------------
>> 5 files changed, 49 insertions(+), 43 deletions(-)
>> 
>> diff --git
>> a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
>> b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
>> index f105eaf..effd30a 100644
>> ---
>> a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
>> +++
>> b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
>> @@ -33,6 +33,8 @@ import java.util.Collections;
>> import java.util.List;
>> import java.util.Map;
>> 
>> +import org.apache.johnzon.core.util.ArrayUtil;
>> +
>> class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable {
>>    private List<JsonValue> tmpList;
>>    private BufferStrategy.BufferProvider<char[]> bufferProvider;
>> @@ -223,7 +225,7 @@ class JsonArrayBuilderImpl implements JsonArrayBuilder,
>> Serializable {
>>        } else if (value instanceof Collection) {
>>            add(new JsonArrayBuilderImpl(Collection.class.cast(value),
>> bufferProvider).build());
>>        } else if (value.getClass().isArray()) {
>> -            final int length = Array.getLength(value);
>> +            final int length = ArrayUtil.getArrayLength(value);
>>            final Collection<Object> collection = new ArrayList<>(length);
>>            for (int i = 0; i < length; i++) {
>>                collection.add(Array.get(value, i));
>> diff --git
>> a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/util/ArrayUtil.java
>> b/johnzon-core/src/main/java/org/apache/johnzon/core/util/ArrayUtil.java
>> similarity index 75%
>> rename from
>> johnzon-mapper/src/main/java/org/apache/johnzon/mapper/util/ArrayUtil.java
>> rename to
>> johnzon-core/src/main/java/org/apache/johnzon/core/util/ArrayUtil.java
>> index a7a6c57..646c112 100644
>> ---
>> a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/util/ArrayUtil.java
>> +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/util/ArrayUtil.java
>> @@ -14,7 +14,7 @@
>> * See the License for the specific language governing permissions and
>> * limitations under the License.
>> */
>> -package org.apache.johnzon.mapper.util;
>> +package org.apache.johnzon.core.util;
>> 
>> import java.util.AbstractList;
>> import java.util.List;
>> @@ -27,6 +27,40 @@ public final class ArrayUtil {
>>        // utility class ct
>>    }
>> 
>> +    public static int getArrayLength(Object array) {
>> +        // Note: all types of multidimensional arrays are instanceof
>> Object[]
>> +        if (array instanceof Object[]) {
>> +            return ((Object[]) array).length;
>> +        }
>> +        if (array instanceof boolean[]) {
>> +            return ((boolean[])array).length;
>> +        }
>> +        if (array instanceof byte[]) {
>> +            return ((byte[])array).length;
>> +        }
>> +        if (array instanceof char[]) {
>> +            return ((char[]) array).length;
>> +        }
>> +        if (array instanceof short[]) {
>> +            return ((short[]) array).length;
>> +        }
>> +        if (array instanceof int[]) {
>> +            return ((int[]) array).length;
>> +        }
>> +        if (array instanceof long[]) {
>> +            return ((long[]) array).length;
>> +        }
>> +        if (array instanceof float[]) {
>> +            return ((float[]) array).length;
>> +        }
>> +        if (array instanceof double[]) {
>> +            return ((double[]) array).length;
>> +        }
>> +
>> +        throw new IllegalArgumentException("This is not an array! " +
>> array);
>> +    }
>> +
>> +
>>    public static List<Integer> asList(final int[] vals) {
>>        return new AbstractList<Integer>() {
>>            @Override
>> diff --git
>> a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
>> b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
>> index a9adada..7965519 100644
>> --- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
>> +++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
>> @@ -18,6 +18,7 @@
>> */
>> package org.apache.johnzon.jsonb;
>> 
>> +import org.apache.johnzon.core.util.ArrayUtil;
>> import org.apache.johnzon.jsonb.api.experimental.JsonbExtension;
>> import org.apache.johnzon.jsonb.extension.JsonValueReader;
>> import org.apache.johnzon.jsonb.extension.JsonValueWriter;
>> @@ -254,43 +255,43 @@ public class JohnzonJsonb implements Jsonb,
>> AutoCloseable, JsonbExtension {
>>        final Class<?> componentType =
>> object.getClass().getComponentType();
>>        Object[] array;
>>        if (int.class == componentType) {
>> -            final int length = Array.getLength(object);
>> +            final int length = ArrayUtil.getArrayLength(object);
>>            array = new Integer[length];
>>            for (int i = 0; i < length; i++) {
>>                array[i] = Array.getInt(object, i);
>>            }
>>        } else if (double.class == componentType) {
>> -            final int length = Array.getLength(object);
>> +            final int length = ArrayUtil.getArrayLength(object);
>>            array = new Integer[length];
>>            for (int i = 0; i < length; i++) {
>>                array[i] = Array.getDouble(object, i);
>>            }
>>        } else if (byte.class == componentType) {
>> -            final int length = Array.getLength(object);
>> +            final int length = ArrayUtil.getArrayLength(object);
>>            array = new Integer[length];
>>            for (int i = 0; i < length; i++) {
>>                array[i] = Array.getByte(object, i);
>>            }
>>        } else if (char.class == componentType) {
>> -            final int length = Array.getLength(object);
>> +            final int length = ArrayUtil.getArrayLength(object);
>>            array = new Integer[length];
>>            for (int i = 0; i < length; i++) {
>>                array[i] = Array.getChar(object, i);
>>            }
>>        } else if (float.class == componentType) {
>> -            final int length = Array.getLength(object);
>> +            final int length = ArrayUtil.getArrayLength(object);
>>            array = new Integer[length];
>>            for (int i = 0; i < length; i++) {
>>                array[i] = Array.getFloat(object, i);
>>            }
>>        } else if (long.class == componentType) {
>> -            final int length = Array.getLength(object);
>> +            final int length = ArrayUtil.getArrayLength(object);
>>            array = new Integer[length];
>>            for (int i = 0; i < length; i++) {
>>                array[i] = Array.getLong(object, i);
>>            }
>>        } else if (short.class == componentType) {
>> -            final int length = Array.getLength(object);
>> +            final int length = ArrayUtil.getArrayLength(object);
>>            array = new Integer[length];
>>            for (int i = 0; i < length; i++) {
>>                array[i] = Array.getShort(object, i);
>> diff --git
>> a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
>> b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
>> index 1027fca..b95935e 100644
>> --- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
>> +++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
>> @@ -53,7 +53,7 @@ import javax.json.stream.JsonGeneratorFactory;
>> 
>> import org.apache.johnzon.mapper.internal.JsonPointerTracker;
>> import org.apache.johnzon.mapper.reflection.JohnzonCollectionType;
>> -import org.apache.johnzon.mapper.util.ArrayUtil;
>> +import org.apache.johnzon.core.util.ArrayUtil;
>> 
>> public class Mapper implements Closeable {
>> 
>> diff --git
>> a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
>> b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
>> index 1b4d4e8..27de775 100644
>> ---
>> a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
>> +++
>> b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
>> @@ -21,6 +21,7 @@ package org.apache.johnzon.mapper;
>> import static java.util.Collections.emptyList;
>> 
>> import org.apache.johnzon.mapper.internal.JsonPointerTracker;
>> +import org.apache.johnzon.core.util.ArrayUtil;
>> 
>> import javax.json.JsonValue;
>> import javax.json.stream.JsonGenerator;
>> @@ -470,7 +471,7 @@ public class MappingGeneratorImpl implements
>> MappingGenerator {
>>     * @param key either the attribute key or {@code null} if the array
>> should be rendered without key
>>     */
>>    private void writeArray(Class<?> type, Adapter itemConverter, String
>> key, Object arrayValue, Collection<String> ignoredProperties,
>> JsonPointerTracker jsonPointer) {
>> -        final int length = getArrayLength(arrayValue);
>> +        final int length = ArrayUtil.getArrayLength(arrayValue);
>>        if (length == 0 && config.isSkipEmptyArray()) {
>>            return;
>>        }
>> @@ -582,38 +583,6 @@ public class MappingGeneratorImpl implements
>> MappingGenerator {
>>        generator.writeEnd();
>>    }
>> 
>> -    private int getArrayLength(Object array) {
>> -        // Note: all types of multidimensional arrays are instanceof
>> Object[]
>> -        if (array instanceof Object[]) {
>> -            return ((Object[]) array).length;
>> -        }
>> -        if (array instanceof boolean[]) {
>> -            return ((boolean[])array).length;
>> -        }
>> -        if (array instanceof byte[]) {
>> -            return ((byte[])array).length;
>> -        }
>> -        if (array instanceof char[]) {
>> -            return ((char[]) array).length;
>> -        }
>> -        if (array instanceof short[]) {
>> -            return ((short[]) array).length;
>> -        }
>> -        if (array instanceof int[]) {
>> -            return ((int[]) array).length;
>> -        }
>> -        if (array instanceof long[]) {
>> -            return ((long[]) array).length;
>> -        }
>> -        if (array instanceof float[]) {
>> -            return ((float[]) array).length;
>> -        }
>> -        if (array instanceof double[]) {
>> -            return ((double[]) array).length;
>> -        }
>> -
>> -        throw new IllegalArgumentException("This is not an array! " +
>> array);
>> -    }
>> 
>>    private void writeItem(final Object o, final Collection<String>
>> ignoredProperties, JsonPointerTracker jsonPointer) {
>>        if (o == null) {
> 


Mime
View raw message