Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package org.apache.beam.sdk.schemas.utils;

import static org.apache.beam.sdk.util.ByteBuddyUtils.getClassLoadingStrategy;
import static org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions.checkNotNull;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
Expand Down Expand Up @@ -63,9 +62,9 @@
import org.apache.beam.sdk.schemas.utils.ByteBuddyUtils.InjectPackageStrategy;
import org.apache.beam.sdk.schemas.utils.ByteBuddyUtils.TypeConversion;
import org.apache.beam.sdk.schemas.utils.ByteBuddyUtils.TypeConversionsFactory;
import org.apache.beam.sdk.util.Preconditions;
import org.apache.beam.sdk.util.common.ReflectHelpers;
import org.apache.beam.sdk.values.TypeDescriptor;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Lists;
import org.checkerframework.checker.nullness.qual.Nullable;

Expand Down Expand Up @@ -189,7 +188,7 @@ private static boolean matchConstructor(
Collectors.toMap(
f ->
ReflectUtils.stripGetterPrefix(
Preconditions.checkNotNull(
Preconditions.checkArgumentNotNull(
f.getMethod(), JavaBeanUtils.GETTER_WITH_NULL_METHOD_ERROR)
.getName()),
Function.identity()));
Expand Down Expand Up @@ -249,7 +248,7 @@ private static boolean matchConstructor(
for (FieldValueTypeInformation type : schemaTypes) {
String autoValueFieldName =
ReflectUtils.stripGetterPrefix(
Preconditions.checkNotNull(
Preconditions.checkArgumentNotNull(
type.getMethod(), JavaBeanUtils.GETTER_WITH_NULL_METHOD_ERROR)
.getName());

Expand Down Expand Up @@ -347,11 +346,10 @@ public ByteCodeAppender appender(final Target implementationTarget) {

TypeConversion<Type> convertType = typeConversionsFactory.createTypeConversion(true);
for (int i = 0; i < setters.size(); ++i) {
Method setterMethod = checkNotNull(setters.get(i).getMethod());
Parameter parameter = setterMethod.getParameters()[0];
FieldValueTypeInformation setterType = setters.get(i);
Method setterMethod = Preconditions.checkStateNotNull(setterType.getMethod());
ForLoadedType convertedType =
new ForLoadedType(
(Class) convertType.convert(TypeDescriptor.of(parameter.getParameterizedType())));
new ForLoadedType((Class) convertType.convert(setterType.getType()));

StackManipulation readParameter =
new StackManipulation.Compound(
Expand All @@ -366,7 +364,7 @@ public ByteCodeAppender appender(final Target implementationTarget) {
Duplication.SINGLE,
typeConversionsFactory
.createSetterConversions(readParameter)
.convert(TypeDescriptor.of(parameter.getType())),
.convert(setterType.getType()),
MethodInvocation.invoke(new ForLoadedMethod(setterMethod)),
Removal.SINGLE);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@
import org.apache.beam.sdk.schemas.FieldValueHaver;
import org.apache.beam.sdk.schemas.FieldValueSetter;
import org.apache.beam.sdk.schemas.FieldValueTypeInformation;
import org.apache.beam.sdk.util.Preconditions;
import org.apache.beam.sdk.util.common.ReflectHelpers;
import org.apache.beam.sdk.values.TypeDescriptor;
import org.apache.beam.sdk.values.TypeParameter;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Function;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Verify;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Collections2;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
Expand Down Expand Up @@ -275,7 +275,7 @@ public TypeConversion<StackManipulation> createSetterConversions(StackManipulati
public abstract static class TypeConversion<T> {
public T convert(TypeDescriptor<?> typeDescriptor) {
if (typeDescriptor.isArray()
&& !Preconditions.checkNotNull(typeDescriptor.getComponentType())
&& !Preconditions.checkArgumentNotNull(typeDescriptor.getComponentType())
.getRawType()
.equals(byte.class)) {
// Byte arrays are special, so leave those alone.
Expand Down Expand Up @@ -363,31 +363,31 @@ protected ConvertType(boolean returnRawTypes) {
@Override
protected Type convertArray(TypeDescriptor<?> type) {
TypeDescriptor<?> ret =
createCollectionType(Preconditions.checkNotNull(type.getComponentType()));
createCollectionType(Preconditions.checkArgumentNotNull(type.getComponentType()));
return returnRawTypes ? ret.getRawType() : ret.getType();
}

@Override
protected Type convertCollection(TypeDescriptor<?> type) {
TypeDescriptor<?> ret =
createCollectionType(
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type)));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type)));
return returnRawTypes ? ret.getRawType() : ret.getType();
}

@Override
protected Type convertList(TypeDescriptor<?> type) {
TypeDescriptor<?> ret =
createCollectionType(
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type)));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type)));
return returnRawTypes ? ret.getRawType() : ret.getType();
}

@Override
protected Type convertIterable(TypeDescriptor<?> type) {
TypeDescriptor<?> ret =
createIterableType(
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type)));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type)));
return returnRawTypes ? ret.getRawType() : ret.getType();
}

Expand Down Expand Up @@ -426,12 +426,20 @@ protected Type convertDefault(TypeDescriptor<?> type) {
return returnRawTypes ? type.getRawType() : type.getType();
}

public static TypeDescriptor<?> primitiveToWrapper(TypeDescriptor<?> typeDescriptor) {
Class<?> cls = typeDescriptor.getRawType();
if (cls.isPrimitive()) {
return TypeDescriptor.of(ClassUtils.primitiveToWrapper(cls));
} else {
return typeDescriptor;
}
}

@SuppressWarnings("unchecked")
private <ElementT> TypeDescriptor<Collection<ElementT>> createCollectionType(
TypeDescriptor<?> componentType) {
TypeDescriptor<ElementT> wrappedComponentType =
(TypeDescriptor<ElementT>)
TypeDescriptor.of(ClassUtils.primitiveToWrapper(componentType.getRawType()));
(TypeDescriptor<ElementT>) primitiveToWrapper(componentType);
return new TypeDescriptor<Collection<ElementT>>() {}.where(
new TypeParameter<ElementT>() {}, wrappedComponentType);
}
Expand All @@ -440,8 +448,7 @@ private <ElementT> TypeDescriptor<Collection<ElementT>> createCollectionType(
private <ElementT> TypeDescriptor<Iterable<ElementT>> createIterableType(
TypeDescriptor<?> componentType) {
TypeDescriptor<ElementT> wrappedComponentType =
(TypeDescriptor<ElementT>)
TypeDescriptor.of(ClassUtils.primitiveToWrapper(componentType.getRawType()));
(TypeDescriptor<ElementT>) primitiveToWrapper(componentType);
return new TypeDescriptor<Iterable<ElementT>>() {}.where(
new TypeParameter<ElementT>() {}, wrappedComponentType);
}
Expand Down Expand Up @@ -670,12 +677,12 @@ protected StackManipulation convertArray(TypeDescriptor<?> type) {
// return isComponentTypePrimitive ? Arrays.asList(ArrayUtils.toObject(value))
// : Arrays.asList(value);

TypeDescriptor<?> componentType = Preconditions.checkNotNull(type.getComponentType());
TypeDescriptor<?> componentType = Preconditions.checkArgumentNotNull(type.getComponentType());
ForLoadedType loadedArrayType = new ForLoadedType(type.getRawType());
StackManipulation readArrayValue = readValue;
// Row always expects to get an Iterable back for array types. Wrap this array into a
// List using Arrays.asList before returning.
if (Preconditions.checkNotNull(loadedArrayType.getComponentType()).isPrimitive()) {
if (Preconditions.checkArgumentNotNull(loadedArrayType.getComponentType()).isPrimitive()) {
// Arrays.asList doesn't take primitive arrays, so convert first using ArrayUtils.toObject.
readArrayValue =
new Compound(
Expand Down Expand Up @@ -723,7 +730,7 @@ protected StackManipulation convertArray(TypeDescriptor<?> type) {
@Override
protected StackManipulation convertIterable(TypeDescriptor<?> type) {
TypeDescriptor<?> componentType =
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type));
Type convertedComponentType = getFactory().createTypeConversion(true).convert(componentType);

final TypeDescriptor<?> finalComponentType = ReflectUtils.boxIfPrimitive(componentType);
Expand All @@ -744,7 +751,7 @@ protected StackManipulation convertIterable(TypeDescriptor<?> type) {
@Override
protected StackManipulation convertCollection(TypeDescriptor<?> type) {
TypeDescriptor<?> componentType =
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type));
Type convertedComponentType = getFactory().createTypeConversion(true).convert(componentType);
final TypeDescriptor<?> finalComponentType = ReflectUtils.boxIfPrimitive(componentType);
if (!finalComponentType.hasUnresolvedParameters()) {
Expand All @@ -764,7 +771,7 @@ protected StackManipulation convertCollection(TypeDescriptor<?> type) {
@Override
protected StackManipulation convertList(TypeDescriptor<?> type) {
TypeDescriptor<?> componentType =
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type));
Type convertedComponentType = getFactory().createTypeConversion(true).convert(componentType);
final TypeDescriptor<?> finalComponentType = ReflectUtils.boxIfPrimitive(componentType);
if (!finalComponentType.hasUnresolvedParameters()) {
Expand Down Expand Up @@ -1017,7 +1024,7 @@ protected StackManipulation convertArray(TypeDescriptor<?> type) {
.build()
.asErasure();

TypeDescriptor<?> componentType = Preconditions.checkNotNull(type.getComponentType());
TypeDescriptor<?> componentType = Preconditions.checkArgumentNotNull(type.getComponentType());
Type rowElementType = getFactory().createTypeConversion(false).convert(componentType);
final TypeDescriptor<?> arrayElementType = ReflectUtils.boxIfPrimitive(componentType);
StackManipulation readTransformedValue = readValue;
Expand Down Expand Up @@ -1076,7 +1083,7 @@ protected StackManipulation convertArray(TypeDescriptor<?> type) {
@Override
protected StackManipulation convertIterable(TypeDescriptor<?> type) {
final TypeDescriptor<?> iterableElementType =
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type));
Type rowElementType = getFactory().createTypeConversion(false).convert(iterableElementType);
if (!iterableElementType.hasUnresolvedParameters()) {
ForLoadedType conversionFunction =
Expand All @@ -1096,7 +1103,7 @@ protected StackManipulation convertIterable(TypeDescriptor<?> type) {
@Override
protected StackManipulation convertCollection(TypeDescriptor<?> type) {
final TypeDescriptor<?> collectionElementType =
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type));
Type rowElementType = getFactory().createTypeConversion(false).convert(collectionElementType);

if (!collectionElementType.hasUnresolvedParameters()) {
Expand All @@ -1117,7 +1124,7 @@ protected StackManipulation convertCollection(TypeDescriptor<?> type) {
@Override
protected StackManipulation convertList(TypeDescriptor<?> type) {
final TypeDescriptor<?> collectionElementType =
Preconditions.checkNotNull(ReflectUtils.getIterableComponentType(type));
Preconditions.checkArgumentNotNull(ReflectUtils.getIterableComponentType(type));
Type rowElementType = getFactory().createTypeConversion(false).convert(collectionElementType);

StackManipulation readTrasformedValue = readValue;
Expand Down Expand Up @@ -1147,9 +1154,9 @@ protected StackManipulation convertList(TypeDescriptor<?> type) {
@Override
protected StackManipulation convertMap(TypeDescriptor<?> type) {
final TypeDescriptor<?> keyElementType =
Preconditions.checkNotNull(ReflectUtils.getMapType(type, 0));
Preconditions.checkArgumentNotNull(ReflectUtils.getMapType(type, 0));
final TypeDescriptor<?> valueElementType =
Preconditions.checkNotNull(ReflectUtils.getMapType(type, 1));
Preconditions.checkArgumentNotNull(ReflectUtils.getMapType(type, 1));
Type rowKeyType = getFactory().createTypeConversion(false).convert(keyElementType);
Type rowValueType = getFactory().createTypeConversion(false).convert(valueElementType);

Expand Down Expand Up @@ -1510,25 +1517,25 @@ public ByteCodeAppender appender(final Target implementationTarget) {
// Push all creator parameters on the stack.
TypeConversion<Type> convertType = typeConversionsFactory.createTypeConversion(true);
for (int i = 0; i < parameters.size(); i++) {
Parameter parameter = parameters.get(i);
FieldValueTypeInformation fieldType =
fields.get(Preconditions.checkStateNotNull(fieldMapping.get(i)));
ForLoadedType convertedType =
new ForLoadedType(
(Class) convertType.convert(TypeDescriptor.of(parameter.getType())));
new ForLoadedType((Class) convertType.convert(fieldType.getType()));

// The instruction to read the parameter. Use the fieldMapping to reorder parameters as
// necessary.
StackManipulation readParameter =
new StackManipulation.Compound(
MethodVariableAccess.REFERENCE.loadFrom(1),
IntegerConstant.forValue(Preconditions.checkNotNull(fieldMapping.get(i))),
IntegerConstant.forValue(Preconditions.checkStateNotNull(fieldMapping.get(i))),
ArrayAccess.REFERENCE.load(),
TypeCasting.to(convertedType));
stackManipulation =
new StackManipulation.Compound(
stackManipulation,
typeConversionsFactory
.createSetterConversions(readParameter)
.convert(TypeDescriptor.of(parameter.getParameterizedType())));
.convert(fieldType.getType()));
}
stackManipulation =
new StackManipulation.Compound(
Expand Down
Loading
Loading