Skip to content

Commit

Permalink
Completed generic type parsing.
Browse files Browse the repository at this point in the history
  • Loading branch information
Rafael Winterhalter committed May 26, 2015
1 parent f9272d1 commit 8aa2180
Show file tree
Hide file tree
Showing 3 changed files with 133 additions and 145 deletions.
Expand Up @@ -2,13 +2,16 @@

import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.description.type.TypeList;
import net.bytebuddy.description.type.generic.GenericType;
import net.bytebuddy.description.type.generic.GenericTypeList;
import net.bytebuddy.implementation.bytecode.StackSize;
import net.bytebuddy.matcher.FilterableList;
import net.bytebuddy.utility.JavaMethod;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand All @@ -25,6 +28,8 @@ public interface ParameterList extends FilterableList<ParameterDescription, Para
*/
TypeList asTypeList();

GenericTypeList asTypeListGen();

/**
* Checks if all parameters in this list define both an explicit name and an explicit modifier.
*
Expand Down Expand Up @@ -132,6 +137,15 @@ public TypeList asTypeList() {
return new TypeList.Explicit(typeDescriptions);
}

@Override
public GenericTypeList asTypeListGen() {
List<GenericType> types = new ArrayList<GenericType>(parameter.length);
for (Object aParameter : parameter) {
types.add(new GenericType.LazyProjection.OfLoadedParameter(aParameter));
}
return new GenericTypeList.Explicit(types);
}

@Override
protected ParameterList wrap(List<ParameterDescription> values) {
return new Explicit(values);
Expand Down Expand Up @@ -188,6 +202,15 @@ public int size() {
public TypeList asTypeList() {
return new TypeList.ForLoadedType(parameterType);
}

@Override
public GenericTypeList asTypeListGen() {
List<GenericType> types = new ArrayList<GenericType>(parameterType.length);
for (int index = 0; index < parameterType.length; index++) {
types.add(new GenericType.LazyProjection.OfLegacyVmMethodParameter(method, index, parameterType[index]));
}
return new GenericTypeList.Explicit(types);
}
}

/**
Expand Down Expand Up @@ -241,6 +264,14 @@ public int size() {
public TypeList asTypeList() {
return new TypeList.ForLoadedType(parameterType);
}
@Override
public GenericTypeList asTypeListGen() {
List<GenericType> types = new ArrayList<GenericType>(parameterType.length);
for (int index = 0; index < parameterType.length; index++) {
types.add(new GenericType.LazyProjection.OfLegacyVmConstructorParameter(constructor, index, parameterType[index]));
}
return new GenericTypeList.Explicit(types);
}
}
}

Expand Down Expand Up @@ -304,6 +335,15 @@ public TypeList asTypeList() {
return new TypeList.Explicit(typeDescriptions);
}

@Override
public GenericTypeList asTypeListGen() {
List<GenericType> types = new ArrayList<GenericType>(parameterDescriptions.size());
for (ParameterDescription parameterDescription : parameterDescriptions) {
types.add(parameterDescription.getTypeGen());
}
return new GenericTypeList.Explicit(types);
}

@Override
protected ParameterList wrap(List<ParameterDescription> values) {
return new Explicit(values);
Expand All @@ -324,5 +364,10 @@ public boolean hasExplicitMetaData() {
public TypeList asTypeList() {
return new TypeList.Empty();
}

@Override
public GenericTypeList asTypeListGen() {
return new GenericTypeList.Empty();
}
}
}
Expand Up @@ -769,7 +769,6 @@ public static class OfLoadedParameter extends LazyProjection {
GET_GENERIC_TYPE = getGenericType;
}


private final Object parameter;

public OfLoadedParameter(Object parameter) {
Expand Down

0 comments on commit 8aa2180

Please sign in to comment.