Skip to content

Commit

Permalink
WELD-374, jlr part
Browse files Browse the repository at this point in the history
  • Loading branch information
nickarls committed Mar 28, 2010
1 parent 22d3668 commit 6942e60
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 33 deletions.
Expand Up @@ -564,7 +564,7 @@ public WeldConstructor<T> getNoArgsWeldConstructor()
@Override
public String toString()
{
return Names.toString(getJavaClass(), getAnnotations(), getActualTypeArguments());
return Names.classToString(getJavaClass(), getAnnotations(), getActualTypeArguments());
}

public String getSimpleName()
Expand Down
Expand Up @@ -40,6 +40,7 @@
import org.jboss.weld.logging.messages.ReflectionMessage;
import org.jboss.weld.manager.BeanManagerImpl;
import org.jboss.weld.resources.ClassTransformer;
import org.jboss.weld.util.Names;
import org.jboss.weld.util.reflection.HierarchyDiscovery;
import org.jboss.weld.util.reflection.Reflections;
import org.jboss.weld.util.reflection.SecureReflections;
Expand Down Expand Up @@ -283,7 +284,7 @@ public boolean equals(Object other)
@Override
public String toString()
{
return new StringBuilder().append("constructor ").append(constructor.toString()).toString();
return Names.constructorToString(getDelegate(), getAnnotations(), getActualTypeArguments(), getParameters());
}

public ConstructorSignature getSignature()
Expand Down
Expand Up @@ -30,6 +30,7 @@
import org.jboss.weld.introspector.WeldClass;
import org.jboss.weld.introspector.WeldField;
import org.jboss.weld.resources.ClassTransformer;
import org.jboss.weld.util.Names;
import org.jboss.weld.util.reflection.HierarchyDiscovery;
import org.jboss.weld.util.reflection.SecureReflections;

Expand Down Expand Up @@ -132,7 +133,7 @@ public String getPropertyName()
@Override
public String toString()
{
return new StringBuilder().append("field ").append(getDeclaringType().getName()).append(".").append(field.getName()).toString();
return Names.fieldToString(getDelegate(), getAnnotations(), getActualTypeArguments());
}

public boolean isGeneric()
Expand Down
Expand Up @@ -39,6 +39,7 @@
import org.jboss.weld.introspector.WeldParameter;
import org.jboss.weld.logging.messages.ReflectionMessage;
import org.jboss.weld.resources.ClassTransformer;
import org.jboss.weld.util.Names;
import org.jboss.weld.util.collections.ArrayListSupplier;
import org.jboss.weld.util.reflection.HierarchyDiscovery;
import org.jboss.weld.util.reflection.Reflections;
Expand Down Expand Up @@ -216,7 +217,7 @@ public String getPropertyName()
@Override
public String toString()
{
return new StringBuilder().append(method.toString()).toString();
return Names.methodToString(getDelegate(), getAnnotations(), getActualTypeArguments(), getParameters());
}

public MethodSignature getSignature()
Expand Down
Expand Up @@ -30,6 +30,7 @@
import org.jboss.weld.introspector.WeldClass;
import org.jboss.weld.introspector.WeldParameter;
import org.jboss.weld.resources.ClassTransformer;
import org.jboss.weld.util.Names;
import org.jboss.weld.util.reflection.HierarchyDiscovery;

/**
Expand Down Expand Up @@ -139,7 +140,7 @@ public String getName()
@Override
public String toString()
{
return new StringBuilder().append("parameter ").append(position).append(" of ").append(declaringMember.toString()).toString();
return Names.parameterToString(getJavaClass(), getAnnotations(), getActualTypeArguments());
}

public AnnotatedCallable<X> getDeclaringCallable()
Expand Down
98 changes: 70 additions & 28 deletions impl/src/main/java/org/jboss/weld/util/Names.java
Expand Up @@ -17,6 +17,9 @@
package org.jboss.weld.util;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.ArrayList;
Expand All @@ -31,6 +34,7 @@
* Utility class to produce friendly names e.g. for debugging
*
* @author Pete Muir
* @author Nicklas Karlsson
*
*/
public class Names
Expand Down Expand Up @@ -65,17 +69,35 @@ public static String scopeTypeToString(Class<? extends Annotation> scopeType)
}
return result.toString();
}
public static String toString(Class<?> rawType, Set<Annotation> annotations, Type[] actualTypeArguments)

public static String classToString(Class<?> rawType, Set<Annotation> annotations, Type[] actualTypeArguments)
{
if (actualTypeArguments.length > 0)
{
return new StringBuilder().append(Names.annotationsToString(annotations)).append(" ").append(rawType.getName()).append("<").append(Arrays.asList(actualTypeArguments)).append(">").toString();
}
else
{
return new StringBuilder().append(Names.annotationsToString(annotations)).append(" ").append(rawType.getName()).toString();
}
return new NamesStringBuilder("class").add(modifiersToString(rawType.getModifiers())).add(annotationsToString(annotations)).add(rawType.getName()).add(typesToString(actualTypeArguments)).toString();
}

public static String fieldToString(Field field, Set<Annotation> annotations, Type[] actualTypeArguments)
{
return new NamesStringBuilder("field in " + field.getDeclaringClass().getName()).add(modifiersToString(field.getModifiers())).add(annotationsToString(annotations)).add(field.getType().getName()).add(typesToString(actualTypeArguments)).add(field.getName()).toString();
}

public static String methodToString(Method method, Set<Annotation> annotations, Type[] actualTypeArguments, List<?> parameters)
{
return new NamesStringBuilder("method in " + method.getDeclaringClass().getName()).add(modifiersToString(method.getModifiers())).add(annotationsToString(annotations)).add(method.getName()).add(typesToString(actualTypeArguments)).add(parametersToString(parameters)).toString();
}

private static String parametersToString(List<?> parameters)
{
return "(" + iterableToString(parameters, ", ") + ")";
}

public static String constructorToString(Constructor<?> constructor, Set<Annotation> annotations, Type[] actualTypeArguments, List<?> parameters)
{
return new NamesStringBuilder("constructor for " + constructor.getDeclaringClass().getName()).add(modifiersToString(constructor.getModifiers())).add(annotationsToString(annotations)).add(constructor.getName()).add(typesToString(actualTypeArguments)).add(parametersToString(parameters)).toString();
}

public static String parameterToString(Class<?> rawType, Set<Annotation> annotations, Type[] actualTypeArguments)
{
return new NamesStringBuilder().add(modifiersToString(rawType.getModifiers())).add(annotationsToString(annotations)).add(rawType.getName()).add(typesToString(actualTypeArguments)).toString();
}

/**
Expand All @@ -94,6 +116,27 @@ public static int count(final Iterable<?> iterable)
return count;
}

private static String modifiersToString(int modifiers)
{
return iterableToString(parseModifiers(modifiers), " ");
}

private static String iterableToString(Iterable<?> items, String delimiter)
{
StringBuffer stringBuffer = new StringBuffer();
int i = 0;
for (Object item : items)
{
if (i > 0)
{
stringBuffer.append(delimiter);
}
stringBuffer.append(item);
i++;
}
return stringBuffer.toString();
}

/**
* Parses a reflection modifier to a list of string
*
Expand Down Expand Up @@ -153,13 +196,17 @@ private static List<String> parseModifiers(int modifier)
}
return modifiers;
}
public static String typesToString(Set<? extends Type> types)

public static String typesToString(Type[] actualTypeArguments)
{
if (actualTypeArguments.length == 0)
{
return "";
}
StringBuilder buffer = new StringBuilder();
int i = 0;
buffer.append("[");
for (Type type : types)
buffer.append("<");
for (Type type : actualTypeArguments)
{
if (i > 0)
{
Expand All @@ -175,26 +222,21 @@ public static String typesToString(Set<? extends Type> types)
}
i++;
}
buffer.append("]");
buffer.append(">");
return buffer.toString();
}

public static String annotationsToString(Iterable<Annotation> annotations)
{
StringBuilder builder = new StringBuilder();
int i = 0;
for (Annotation annotation : annotations)
{
if (i > 0)
{
builder.append(" ");
}
builder.append(" ");
builder.append("@").append(annotation.annotationType().getSimpleName());
i++;
}
return builder.toString();
return builder.toString().trim();
}

/**
* Gets a string representation from an array of annotations
*
Expand All @@ -205,7 +247,7 @@ public static String annotationsToString(Annotation[] annotations)
{
return annotationsToString(Arrays.asList(annotations));
}

public static String version(Package pkg)
{
if (pkg == null)
Expand All @@ -217,9 +259,9 @@ public static String version(Package pkg)
return version(pkg.getImplementationVersion());
}
}

public static String version(String version)
{
{
if (version != null)
{
StringBuilder builder = new StringBuilder();
Expand All @@ -245,7 +287,7 @@ else if (version.indexOf(".") > 0)
}
else
{
builder.append(version);
builder.append(version);
}
return builder.toString();
}
Expand Down
32 changes: 32 additions & 0 deletions impl/src/main/java/org/jboss/weld/util/NamesStringBuilder.java
@@ -0,0 +1,32 @@
package org.jboss.weld.util;

public class NamesStringBuilder
{
private StringBuilder stringBuilder = new StringBuilder();

public NamesStringBuilder(String context)
{
stringBuilder.append("[");
stringBuilder.append(context);
stringBuilder.append("]");
}

public NamesStringBuilder()
{
}

public NamesStringBuilder add(String text)
{
if (text != null && !"".equals(text))
{
stringBuilder.append(" ");
stringBuilder.append(text);
}
return this;
}

public String toString()
{
return stringBuilder.toString().trim();
}
}

0 comments on commit 6942e60

Please sign in to comment.