Skip to content

Commit

Permalink
Replace the use of Gson's internal newParametrizedTypeWithOwner
Browse files Browse the repository at this point in the history
since this class is an internal one, it can be changed without notice.
Replacing this with a simple implementation of ParameterizedType.
  • Loading branch information
cbosdo committed Mar 28, 2024
1 parent d3b19b2 commit 5f2afb5
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 6 deletions.
9 changes: 3 additions & 6 deletions src/main/java/com/suse/salt/netapi/utils/ClientUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@
import java.lang.reflect.Type;
import java.util.Scanner;

import static com.google.gson.internal.$Gson$Types.newParameterizedTypeWithOwner;

import com.suse.salt.netapi.client.SaltClient;
import com.suse.utils.ParameterizedTypeImpl;

/**
* Utilities for {@link SaltClient}.
Expand Down Expand Up @@ -61,11 +60,9 @@ public static String streamToString(InputStream inputStream) {
* @param rawType the raw type
* @param typeArguments the type arguments
* @return the parameterized type object
* @see com.google.gson.internal.$Gson$Types#newParameterizedTypeWithOwner
*/
public static ParameterizedType parameterizedType(Type ownerType, Type rawType,
Type... typeArguments) {
return newParameterizedTypeWithOwner(ownerType, rawType, typeArguments);
public static ParameterizedType parameterizedType(Type ownerType, Type rawType, Type... typeArguments) {
return new ParameterizedTypeImpl(ownerType, rawType, typeArguments);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Copyright (c) 2024 SUSE LLC
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.suse.salt.netapi.utils;

import java.lang.reflect.Type;

/** Implementation of Java's ParametrizedType for internal use */
public class ParameterizedTypeImpl implements java.lang.reflect.ParameterizedType {

private final Type owner;
private final Type raw;
private final Type[] argumentsTypes;

/**
* Construct a parametrized type
*
* @param ownerIn the ownerIn type
* @param rawTypeIn the raw type
* @param argumentsTypesIn the arguments actual types
*/
public ParameterizedTypeImpl(Type ownerIn, Type rawTypeIn, Type[] argumentsTypesIn) {
owner = ownerIn;
raw = rawTypeIn;
argumentsTypes = argumentsTypesIn;
}

/**
* Construct a parametrized type for a single argument
*
* @param ownerIn the ownerIn type
* @param rawTypeIn the raw type
* @param argumentTypeIn the argument actual types
*/
public ParameterizedTypeImpl(Type ownerIn, Type rawTypeIn, Type argumentTypeIn) {
this(ownerIn, rawTypeIn, new Type[]{argumentTypeIn});
}

@Override
public Type[] getActualTypeArguments() {
return argumentsTypes;
}

@Override
public Type getRawType() {
return raw;
}

@Override
public Type getOwnerType() {
return owner;
}
}

0 comments on commit 5f2afb5

Please sign in to comment.