
net.peachjean.commons.base.constructor.ConstructorSignatures Maven / Gradle / Ivy
The newest version!
package net.peachjean.commons.base.constructor;
import java.lang.annotation.Annotation;
import java.util.Set;
import javax.lang.model.element.TypeElement;
import com.google.common.base.Optional;
import com.google.common.collect.Sets;
public class ConstructorSignatures
{
private ConstructorSignatures(){}
public static Class>[] forService(Class> serviceType)
{
Optional args = getConstructorArgs(serviceType);
if(!args.isPresent())
{
throw new IllegalArgumentException("No constructor signature defined for " + serviceType.getName());
}
return args.get().value();
}
private static Optional getConstructorArgs(final Class> serviceType)
{
for(Annotation annotation: serviceType.getAnnotations())
{
if(annotation instanceof ConstructorSignature)
{
return Optional.of((ConstructorSignature) annotation);
}
Optional applied = getConstructorArgs(annotation.getClass());
if(applied.isPresent())
{
return applied;
}
}
return Optional.absent();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy