Author: pete.muir(a)jboss.org
Date: 2010-02-16 16:08:57 -0500 (Tue, 16 Feb 2010)
New Revision: 5852
Removed:
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/FacadeBeanResolvableTransformer.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableTransformer.java
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/manager/BeanManagerImpl.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeInterceptorResolver.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java
Log:
Simplify resolution a bit
Deleted:
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/FacadeBeanResolvableTransformer.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/FacadeBeanResolvableTransformer.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/FacadeBeanResolvableTransformer.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -1,95 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat, Inc., and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.weld.bean.builtin;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.enterprise.inject.Any;
-
-import org.jboss.weld.literal.AnyLiteral;
-import org.jboss.weld.resolution.ForwardingResolvable;
-import org.jboss.weld.resolution.Resolvable;
-import org.jboss.weld.resolution.ResolvableTransformer;
-
-/**
- * AnnotatedItem transformer which can be used for FacadeBeans
- *
- * @author Pete Muir
- *
- */
-public class FacadeBeanResolvableTransformer implements ResolvableTransformer
-{
-
- private static final Set<Annotation> DEFAULT_QUALIFIERS =
Collections.<Annotation>singleton( AnyLiteral.INSTANCE );
-
- private final Class<?> clazz;
- private final HashSet<Type> types;
-
- public FacadeBeanResolvableTransformer(Class<?> clazz)
- {
- this.clazz = clazz;
- this.types = new HashSet<Type>();
- types.add(clazz);
- }
-
- public Resolvable transform(final Resolvable resolvable)
- {
- if (resolvable.isAssignableTo(clazz))
- {
- return new ForwardingResolvable()
- {
-
- @Override
- protected Resolvable delegate()
- {
- return resolvable;
- }
-
- @Override
- public Set<Annotation> getQualifiers()
- {
- return Collections.unmodifiableSet(DEFAULT_QUALIFIERS);
- }
-
- @Override
- public Set<Type> getTypes()
- {
- return Collections.unmodifiableSet(types);
- }
-
- @Override
- public boolean isAssignableTo(Class<?> c)
- {
- return c.isAssignableFrom(clazz);
- }
-
- @Override
- public boolean isAnnotationPresent(Class<? extends Annotation>
annotationType)
- {
- return Any.class.equals(annotationType);
- }
-
- };
- }
- return resolvable;
- }
-
-}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java 2010-02-16
19:13:20 UTC (rev 5851)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -66,7 +66,7 @@
public T get()
{
- Bean<?> bean = getBeanManager().getBean(new
ResolvableBuilder().setType(getType()).addQualifiers(getQualifiers()).setDeclaringBean(getInjectionPoint().getBean()).create());
+ Bean<?> bean = getBeanManager().getBean(new
ResolvableBuilder(getType()).addQualifiers(getQualifiers()).setDeclaringBean(getInjectionPoint().getBean()).create());
// Push in an empty CC to ensure that we don't get the CC of whatever is
injecting the bean containing the Instance injection point
try
{
Modified: core/trunk/impl/src/main/java/org/jboss/weld/manager/BeanManagerImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/manager/BeanManagerImpl.java 2010-02-16
19:13:20 UTC (rev 5851)
+++ core/trunk/impl/src/main/java/org/jboss/weld/manager/BeanManagerImpl.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -543,7 +543,7 @@
public Set<Bean<?>> getBeans(Type beanType, Annotation... qualifiers)
{
- return beanResolver.resolve(new
ResolvableBuilder().setType(beanType).addQualifiers(qualifiers).create());
+ return beanResolver.resolve(new
ResolvableBuilder(beanType).addQualifiers(qualifiers).create());
}
public Set<Bean<?>> getBeans(InjectionPoint injectionPoint)
@@ -555,7 +555,7 @@
{
Container.instance().services().get(CurrentInjectionPoint.class).push(injectionPoint);
}
- return beanResolver.resolve(new
ResolvableBuilder().setInjectionPoint(injectionPoint).create());
+ return beanResolver.resolve(new ResolvableBuilder(injectionPoint).create());
}
finally
{
@@ -798,7 +798,7 @@
{
if (!injectionPoint.isDelegate())
{
- Bean<?> resolvedBean = getBean(new
ResolvableBuilder().setInjectionPoint(injectionPoint).create());
+ Bean<?> resolvedBean = getBean(new
ResolvableBuilder(injectionPoint).create());
return getReference(injectionPoint, resolvedBean, creationalContext);
}
else
@@ -863,7 +863,7 @@
*/
public List<Interceptor<?>> resolveInterceptors(InterceptionType type,
Annotation... interceptorBindings)
{
- return new ArrayList<Interceptor<?>>(interceptorResolver.resolve(new
InterceptorResolvableBuilder().setInterceptionType(type).setType(Object.class).addQualifiers(interceptorBindings).create()));
+ return new ArrayList<Interceptor<?>>(interceptorResolver.resolve(new
InterceptorResolvableBuilder(Object.class).setInterceptionType(type).addQualifiers(interceptorBindings).create()));
}
/**
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvableBuilder.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -11,7 +11,6 @@
import java.util.Set;
import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InterceptionType;
import org.jboss.weld.Container;
@@ -21,6 +20,16 @@
public class InterceptorResolvableBuilder extends ResolvableBuilder
{
+ public InterceptorResolvableBuilder()
+ {
+ super();
+ }
+
+ public InterceptorResolvableBuilder(Type type)
+ {
+ super(type);
+ }
+
private InterceptionType interceptionType;
@Override
@@ -85,20 +94,6 @@
}
@Override
- public InterceptorResolvableBuilder setInjectionPoint(InjectionPoint injectionPoint)
- {
- super.setInjectionPoint(injectionPoint);
- return this;
- }
-
- @Override
- public InterceptorResolvableBuilder setType(Type type)
- {
- super.setType(type);
- return this;
- }
-
- @Override
public InterceptorResolvable create()
{
if (qualifiers.size() == 0)
Deleted:
core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -1,117 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat, Inc., and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.weld.resolution;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.enterprise.inject.New;
-
-import org.jboss.weld.literal.NewLiteral;
-import org.jboss.weld.util.reflection.HierarchyDiscovery;
-
-/**
- * @author pmuir
- *
- */
-public class NewResolvableTransformer implements ResolvableTransformer
-{
-
- public Resolvable transform(final Resolvable element)
- {
- if (element.isAnnotationPresent(New.class) && element.getJavaClass() !=
null)
- {
- New originalNewAnnotation = element.getAnnotation(New.class);
- if (originalNewAnnotation.value().equals(New.class))
- {
- final Set<Annotation> bindings = new
HashSet<Annotation>(element.getQualifiers());
- final New newNewAnnotation = new NewLiteral()
- {
-
- @Override
- public Class<?> value()
- {
- return element.getJavaClass();
- }
-
- };
- bindings.remove(originalNewAnnotation);
- bindings.add(newNewAnnotation);
- return new ForwardingResolvable()
- {
-
- @Override
- protected Resolvable delegate()
- {
- return element;
- }
-
- @Override
- public Set<Annotation> getQualifiers()
- {
- return bindings;
- }
-
- @Override
- public <A extends Annotation> A getAnnotation(Class<A>
annotationType)
- {
- if (annotationType.equals(New.class))
- {
- return annotationType.cast(newNewAnnotation);
- }
- else
- {
- return delegate().getAnnotation(annotationType);
- }
- }
-
- };
- }
- else
- {
- final Class<?> javaClass = originalNewAnnotation.value();
- final Set<Type> typeClosure = new
HierarchyDiscovery(javaClass).getTypeClosure();
- return new ForwardingResolvable()
- {
-
- @Override
- protected Resolvable delegate()
- {
- return element;
- }
-
- @Override
- public Class<?> getJavaClass()
- {
- return javaClass;
- }
-
- @Override
- public Set<Type> getTypes()
- {
- return typeClosure;
- }
-
- };
- }
- }
- return element;
- }
-
-}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableBuilder.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -23,17 +23,24 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import javax.enterprise.event.Event;
+import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.New;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
+import javax.inject.Provider;
import org.jboss.weld.Container;
import org.jboss.weld.exceptions.ForbiddenArgumentException;
+import org.jboss.weld.literal.AnyLiteral;
import org.jboss.weld.literal.DefaultLiteral;
+import org.jboss.weld.literal.NewLiteral;
import org.jboss.weld.metadata.cache.MetaAnnotationStore;
import org.jboss.weld.util.reflection.Reflections;
@@ -53,45 +60,39 @@
this.mappedQualifiers = new HashMap<Class<? extends Annotation>,
Annotation>();
}
- public ResolvableBuilder setType(Type type)
+ public ResolvableBuilder(Type type)
{
- if (rawType != null)
+ this();
+ if (type != null)
{
- throw new IllegalStateException("Cannot change type once set");
+ this.rawType = Reflections.getRawType(type);
+ if (rawType == null)
+ {
+ throw new ForbiddenArgumentException(CANNOT_EXTRACT_RAW_TYPE, type);
+ }
+ this.types.add(type);
}
- if (type == null)
- {
- throw new IllegalArgumentException("type cannot be null");
- }
- this.rawType = Reflections.getRawType(type);
- if (rawType == null)
- {
- throw new ForbiddenArgumentException(CANNOT_EXTRACT_RAW_TYPE, type);
- }
- this.types.add(type);
- return this;
}
-
- public ResolvableBuilder setInjectionPoint(InjectionPoint injectionPoint)
+
+ public ResolvableBuilder(InjectionPoint injectionPoint)
{
- setType(injectionPoint.getType());
+ this(injectionPoint.getType());
addQualifiers(injectionPoint.getQualifiers());
setDeclaringBean(injectionPoint.getBean());
- return this;
}
-
+
public ResolvableBuilder setDeclaringBean(Bean<?> declaringBean)
{
this.declaringBean = declaringBean;
return this;
}
-
+
public ResolvableBuilder addType(Type type)
{
this.types.add(type);
return this;
}
-
+
public ResolvableBuilder addTypes(Set<Type> types)
{
this.types.addAll(types);
@@ -104,17 +105,64 @@
{
this.qualifiers.add(DefaultLiteral.INSTANCE);
}
+ if (Reflections.isAssignableFrom(Event.class, types))
+ {
+ return createFacade(Event.class);
+ }
+ else if (Reflections.isAssignableFrom(Instance.class, types))
+ {
+ return createFacade(Instance.class);
+ }
+ else if (Reflections.isAssignableFrom(Provider.class, types))
+ {
+ return createFacade(Provider.class);
+ }
+ else
+ {
+ return new ResolvableImpl(rawType, types, qualifiers, mappedQualifiers,
declaringBean);
+ }
+ }
+
+ private Resolvable createFacade(Class<?> rawType)
+ {
+ Set<Annotation> qualifiers = Collections.<Annotation>
singleton(AnyLiteral.INSTANCE);
+ Set<Type> types = Collections.<Type> singleton(rawType);
return new ResolvableImpl(rawType, types, qualifiers, mappedQualifiers,
declaringBean);
}
public ResolvableBuilder addQualifier(Annotation qualifier)
{
+ // Handle the @New qualifier special case
+ if (qualifier.annotationType().equals(New.class))
+ {
+ New newQualifier = New.class.cast(qualifier);
+ if (newQualifier.value().equals(New.class) && rawType == null)
+ {
+ throw new IllegalStateException("Cannot transform @New when there is no
known raw type");
+ }
+ else if (newQualifier.value().equals(New.class))
+ {
+ qualifier = new NewLiteral()
+ {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Class<?> value()
+ {
+ return rawType;
+ }
+
+ };
+ }
+ }
+
checkQualifier(qualifier);
this.qualifiers.add(qualifier);
this.mappedQualifiers.put(qualifier.annotationType(), qualifier);
return this;
}
-
+
public ResolvableBuilder addQualifierIfAbsent(Annotation qualifier)
{
if (!qualifiers.contains(qualifier))
@@ -215,5 +263,4 @@
}
-
}
Deleted:
core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableTransformer.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableTransformer.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableTransformer.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -1,24 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat, Inc., and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.weld.resolution;
-
-public interface ResolvableTransformer<R extends Resolvable>
-{
-
- public R transform(R element);
-
-}
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -26,7 +26,6 @@
import javax.enterprise.util.TypeLiteral;
import javax.inject.Provider;
-import org.jboss.weld.bean.builtin.FacadeBeanResolvableTransformer;
import org.jboss.weld.manager.BeanManagerImpl;
import org.jboss.weld.util.Beans;
import org.jboss.weld.util.reflection.Reflections;
@@ -45,7 +44,6 @@
private static final Class<Provider<?>> PROVIDER_TYPE = new
TypeLiteral<Provider<?>>() {}.getRawType();
private static final Class<Event<?>> EVENT_TYPE = new
TypeLiteral<Event<?>>() {}.getRawType();
- private final Set<ResolvableTransformer<Resolvable>> transformers;
private final BeanManagerImpl beanManager;
private final ConcurrentMap<Set<Bean<?>>, Set<Bean<?>>>
disambiguatedBeans;
@@ -88,11 +86,6 @@
super(beans);
this.beanManager = beanManager;
this.disambiguatedBeans = new MapMaker().makeComputingMap(new
BeanDisambiguation(beanManager));
- transformers = new HashSet<ResolvableTransformer<Resolvable>>();
- transformers.add(new FacadeBeanResolvableTransformer(EVENT_TYPE));
- transformers.add(new FacadeBeanResolvableTransformer(INSTANCE_TYPE));
- transformers.add(new FacadeBeanResolvableTransformer(PROVIDER_TYPE));
- transformers.add(new NewResolvableTransformer());
}
@Override
@@ -116,12 +109,6 @@
}
@Override
- protected Iterable<ResolvableTransformer<Resolvable>> getTransformers()
- {
- return transformers;
- }
-
- @Override
protected Set<T> sortResult(Set<T> matched)
{
return matched;
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -16,7 +16,6 @@
*/
package org.jboss.weld.resolution;
-import java.util.Collections;
import java.util.Set;
import org.jboss.weld.bean.DisposalMethod;
@@ -60,12 +59,6 @@
}
@Override
- protected Iterable<ResolvableTransformer<Resolvable>> getTransformers()
- {
- return Collections.emptySet();
- }
-
- @Override
protected Set<DisposalMethod<?, ?>> sortResult(Set<DisposalMethod<?,
?>> matched)
{
return matched;
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeInterceptorResolver.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeInterceptorResolver.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeInterceptorResolver.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -17,7 +17,6 @@
package org.jboss.weld.resolution;
-import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
@@ -74,12 +73,6 @@
return matched;
}
- @Override
- protected Iterable<ResolvableTransformer<InterceptorResolvable>>
getTransformers()
- {
- return Collections.emptySet();
- }
-
public BeanManagerImpl getManager()
{
return manager;
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -16,7 +16,6 @@
*/
package org.jboss.weld.resolution;
-import java.util.Collections;
import java.util.Set;
import javax.enterprise.inject.spi.ObserverMethod;
@@ -61,12 +60,6 @@
}
@Override
- protected Iterable<ResolvableTransformer<Resolvable>> getTransformers()
- {
- return Collections.emptySet();
- }
-
- @Override
protected Set<ObserverMethod<?>>
sortResult(Set<ObserverMethod<?>> matched)
{
return matched;
Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java 2010-02-16
19:13:20 UTC (rev 5851)
+++
core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java 2010-02-16
21:08:57 UTC (rev 5852)
@@ -130,7 +130,7 @@
*/
public Set<T> resolve(R resolvable)
{
- return Collections.unmodifiableSet(resolved.get(new
Key<R>(transform(resolvable))));
+ return Collections.unmodifiableSet(resolved.get(new Key<R>(resolvable)));
}
/**
@@ -154,17 +154,6 @@
return result;
}
- protected R transform(R resolvable)
- {
- for (ResolvableTransformer<R> transformer : getTransformers())
- {
- resolvable = transformer.transform(resolvable);
- }
- return resolvable;
- }
-
- protected abstract Iterable<ResolvableTransformer<R>> getTransformers();
-
protected abstract Set<T> filterResult(Set<T> matched);
protected abstract Set<T> sortResult(Set<T> matched);