You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by so...@apache.org on 2015/09/01 22:44:42 UTC
zest-java git commit: ZEST-118 typematching should now work with all
HasTypes, not just ModelDescriptors
Repository: zest-java
Updated Branches:
refs/heads/develop 1d6f2bb24 -> 2c479d8a3
ZEST-118 typematching should now work with all HasTypes, not just ModelDescriptors
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/2c479d8a
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/2c479d8a
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/2c479d8a
Branch: refs/heads/develop
Commit: 2c479d8a308cc0857ff42f4974e010fa8610743b
Parents: 1d6f2bb
Author: Kent Sølvsten <so...@apache.org>
Authored: Tue Sep 1 22:44:26 2015 +0200
Committer: Kent Sølvsten <so...@apache.org>
Committed: Tue Sep 1 22:44:26 2015 +0200
----------------------------------------------------------------------
.../zest/runtime/structure/TypeLookup.java | 36 ++++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-java/blob/2c479d8a/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookup.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookup.java b/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookup.java
index 615c42f..6947b73 100755
--- a/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookup.java
+++ b/core/runtime/src/main/java/org/apache/zest/runtime/structure/TypeLookup.java
@@ -37,6 +37,7 @@ import org.apache.zest.api.entity.EntityDescriptor;
import org.apache.zest.api.object.ObjectDescriptor;
import org.apache.zest.api.service.NoSuchServiceException;
import org.apache.zest.api.service.ServiceReference;
+import org.apache.zest.api.type.HasTypes;
import org.apache.zest.api.value.ValueDescriptor;
import org.apache.zest.spi.module.ModelModule;
@@ -62,8 +63,8 @@ public class TypeLookup
private final Map<Class<?>, ModelModule<ValueDescriptor>> valueModels;
private final Map<Class<?>, List<ModelModule<EntityDescriptor>>> allEntityModels;
private final Map<Class<?>, ModelModule<EntityDescriptor>> unambiguousEntityModels;
- private final Map<Class, ServiceReference<?>> serviceReferences;
- private final Map<Class, List<ServiceReference<?>>> servicesReferences;
+ private final Map<Type, ServiceReference<?>> serviceReferences;
+ private final Map<Type, List<ServiceReference<?>>> servicesReferences;
/**
* Create a new TypeLookup bound to the given ModuleInstance.
@@ -253,8 +254,8 @@ public class TypeLookup
if( result == null )
{
result = concat(
- allEntities().filter( new ExactTypeMatching<>( type ) ),
- allEntities().filter( new AssignableFromTypeMatching<>( type ) )
+ allEntities().filter( ref -> new ExactTypeMatching<>( type ).test( ref.model() ) ),
+ allEntities().filter( ref -> new AssignableFromTypeMatching<>( type ).test( ref.model() ) )
).distinct().collect( Collectors.toList() );
allEntityModels.put( type, result );
}
@@ -283,7 +284,7 @@ public class TypeLookup
serviceReference = first( lookupServiceReferences( serviceType ) );
if( serviceReference != null )
{
- serviceReferences.put( (Class) serviceType, serviceReference );
+ serviceReferences.put( serviceType, serviceReference );
}
}
@@ -321,13 +322,12 @@ public class TypeLookup
{
serviceRefs = concat(
allServices()
- .filter( ref -> ref.types().anyMatch( clazz -> clazz.equals( type ) ) ),
+ .filter( new ExactTypeMatching<>( type ) ),
allServices()
- .filter( ref -> ref.types().anyMatch(
- t -> !( t.equals( type ) ) && ((Class)type).isAssignableFrom( t ) )
+ .filter( new AssignableFromTypeMatching<>( type )
)
).distinct().collect( Collectors.toList() );
- servicesReferences.put( (Class) type, serviceRefs );
+ servicesReferences.put( type, serviceRefs );
}
List<ServiceReference<T>> result = new ArrayList<>();
//noinspection unchecked
@@ -412,7 +412,7 @@ public class TypeLookup
)
{
List<ModelModule<T>> models = modelModules.stream()
- .filter( matching )
+ .filter( ref -> matching.test( ref.model() ) )
.filter( new SameVisibility<>() )
.distinct()
.collect( Collectors.toList() );
@@ -428,8 +428,8 @@ public class TypeLookup
return models.get( 0 );
}
- private static abstract class TypeMatching<T extends ModelDescriptor>
- implements Predicate<ModelModule<T>>
+ private static abstract class TypeMatching<T extends HasTypes>
+ implements Predicate<T>
{
protected final Type lookedUpType;
@@ -439,11 +439,11 @@ public class TypeLookup
}
@Override
- public final boolean test( ModelModule<T> model )
+ public final boolean test( T model )
{
if( lookedUpType instanceof Class )
{
- return model.model().types().anyMatch( checkMatch( lookedUpType ) );
+ return model.types().anyMatch( checkMatch( lookedUpType ) );
}
else
{
@@ -453,12 +453,12 @@ public class TypeLookup
// First check Foo
ParameterizedType parameterizedType = (ParameterizedType) lookedUpType;
Type rawType = parameterizedType.getRawType();
- if( !model.model().types().anyMatch( checkMatch( rawType ) ) )
+ if( !model.types().anyMatch( checkMatch( rawType ) ) )
{
return false;
}
// Then check Bar
- return interfacesOf( model.model().types() ).anyMatch( intf -> intf.equals( lookedUpType ) );
+ return interfacesOf( model.types() ).anyMatch( intf -> intf.equals( lookedUpType ) );
}
else if( lookedUpType instanceof WildcardType )
{
@@ -471,7 +471,7 @@ public class TypeLookup
protected abstract Predicate<Type> checkMatch( Type matchTo );
}
- private static final class ExactTypeMatching<T extends ModelDescriptor> extends TypeMatching<T>
+ private static final class ExactTypeMatching<T extends HasTypes> extends TypeMatching<T>
{
private ExactTypeMatching( Type lookedUpType )
{
@@ -484,7 +484,7 @@ public class TypeLookup
}
}
- private static final class AssignableFromTypeMatching<T extends ModelDescriptor> extends TypeMatching<T>
+ private static final class AssignableFromTypeMatching<T extends HasTypes> extends TypeMatching<T>
{
private AssignableFromTypeMatching( Type lookedUpType )
{