Browse Source

fix ResolveModel

Ranides Atterwim 3 năm trước cách đây
mục cha
commit
fe9353d5ba

+ 7 - 2
assira.core/src/main/java/net/ranides/assira/reflection/ResolveModel.java

@@ -448,8 +448,8 @@ public abstract class ResolveModel extends SerializableCode {
      *
      * It will match if the object implements ResolveContext
      *
-     * Please note that it is impossible to call any method declared by ResolveContext.
-     * Every field will be accessed through context map.
+     * Every field will be accessed through context map first.
+     * If map does not contain field, we use BEAN model to resolve it.
      *
      * ResolveContext properties are handled in specific way
      * if their type is ResolveFormat or ResolvePattern.
@@ -469,6 +469,11 @@ public abstract class ResolveModel extends SerializableCode {
         @Override
         public Object get(ResolveStatus status, Object that, String name) {
             Object result = ((ResolveContext) that).getResolveMap().get(name);
+
+            if(result == null && BEAN.matches(that, name)) {
+                result = BEAN.get(status, that, name);
+            }
+
             if(result != null) {
                 if(result instanceof ResolvePattern) {
                     ResolvePattern pattern = (ResolvePattern) result;

+ 1 - 1
assira.core/src/main/java/net/ranides/assira/reflection/impl/FElements.java

@@ -182,7 +182,7 @@ public final class FElements {
      * @param stream stream
      * @return IExecutables
      */
-    public static IExecutables newExecutables(IHints hints, CQuery<IExecutable> stream) {
+    public static IExecutables<?> newExecutables(IHints hints, CQuery<IExecutable> stream) {
         return new AExecutables(hints, stream);
     }