|
|
@@ -192,24 +192,29 @@ public class ResolvePattern implements Serializable {
|
|
|
ARRAY(){
|
|
|
@Override
|
|
|
public boolean matches(Object that) {
|
|
|
- return that!=null && that.getClass().isArray();
|
|
|
+ return that != null && that.getClass().isArray();
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public boolean matchesType(IClass<?> that) {
|
|
|
return that.attributes().has(IAttribute.ARRAY);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object get(ResolveStatus _s, Object that, String name) {
|
|
|
return NativeArray.wrap(that).get(Integer.parseInt(name));
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public void set(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
NativeArray.wrap(that).set(Integer.parseInt(name), value);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object replace(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
return NativeArray.wrap(that).replace(Integer.parseInt(name), value);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public IClass<?> type(ResolveStatus _s, IClass<?> that, String name) {
|
|
|
return that.component();
|
|
|
@@ -220,28 +225,33 @@ public class ResolvePattern implements Serializable {
|
|
|
public boolean matches(Object that) {
|
|
|
return that instanceof List<?>;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public boolean matchesType(IClass<?> that) {
|
|
|
- return that!=IClass.NULL && RCompareUtils.isRawSuper(IClass.typeinfo(List.class), that);
|
|
|
+ return that != IClass.NULL && RCompareUtils.isRawSuper(IClass.typeinfo(List.class), that);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object get(ResolveStatus _s, Object that, String name) {
|
|
|
- return ((List<?>)that).get(Integer.parseInt(name));
|
|
|
+ return ((List<?>) that).get(Integer.parseInt(name));
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public void set(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
- ((List<Object>)that).set(Integer.parseInt(name), value);
|
|
|
+ ((List<Object>) that).set(Integer.parseInt(name), value);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public Object replace(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
- List<Object> list = (List<Object>)that;
|
|
|
+ List<Object> list = (List<Object>) that;
|
|
|
int index = Integer.parseInt(name);
|
|
|
Object prv = list.get(index);
|
|
|
list.set(index, value);
|
|
|
return prv;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public IClass<?> type(ResolveStatus _s, IClass<?> that, String name) {
|
|
|
return that.params().get(0);
|
|
|
@@ -252,27 +262,33 @@ public class ResolvePattern implements Serializable {
|
|
|
public boolean matches(Object that) {
|
|
|
return that instanceof Map<?,?>;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public boolean matchesType(IClass<?> that) {
|
|
|
return that!=IClass.NULL && RCompareUtils.isRawSuper(IClass.typeinfo(Map.class), that);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
public Object get(ResolveStatus status, Object that, String name) {
|
|
|
if(!((Map<String,Object>)that).containsKey(name)) {
|
|
|
status.error = true;
|
|
|
}
|
|
|
return ((Map<?,?>)that).get(name);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public void set(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
((Map<String,Object>)that).put(name, value);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public Object replace(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
return ((Map<String,Object>)that).put(name, value);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public IClass<?> type(ResolveStatus _s, IClass<?> that, String name) {
|
|
|
return that.params().get(1);
|
|
|
@@ -283,26 +299,31 @@ public class ResolvePattern implements Serializable {
|
|
|
public boolean matches(Object that) {
|
|
|
return that instanceof Matcher;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public boolean matchesType(IClass<?> that) {
|
|
|
- return that!=IClass.NULL && IClass.typeinfo(Matcher.class).isSuper(that);
|
|
|
+ return that != IClass.NULL && IClass.typeinfo(Matcher.class).isSuper(that);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object get(ResolveStatus _s, Object that, String name) {
|
|
|
- if(StringTraits.isNumber(name)) {
|
|
|
- return ((Matcher)that).group(Integer.parseInt(name));
|
|
|
+ if (StringTraits.isNumber(name)) {
|
|
|
+ return ((Matcher) that).group(Integer.parseInt(name));
|
|
|
} else {
|
|
|
- return ((Matcher)that).group(name);
|
|
|
+ return ((Matcher) that).group(name);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public void set(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
throw new UnsupportedOperationException("Matcher is immutable.");
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object replace(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
throw new UnsupportedOperationException("Matcher is immutable.");
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public IClass<?> type(ResolveStatus _s, IClass<?> that, String name) {
|
|
|
return IClass.typeinfo(String.class);
|
|
|
@@ -313,22 +334,27 @@ public class ResolvePattern implements Serializable {
|
|
|
public boolean matches(Object that) {
|
|
|
return that instanceof CharSequence;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public boolean matchesType(IClass<?> that) {
|
|
|
- return that!=IClass.NULL && IClass.typeinfo(CharSequence.class).isSuper(that);
|
|
|
+ return that != IClass.NULL && IClass.typeinfo(CharSequence.class).isSuper(that);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object get(ResolveStatus _s, Object that, String name) {
|
|
|
- return ((CharSequence)that).charAt(Integer.parseInt(name));
|
|
|
+ return ((CharSequence) that).charAt(Integer.parseInt(name));
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public void set(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
throw new UnsupportedOperationException("CharSequence is immutable.");
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object replace(ResolveStatus _s, Object that, String name, Object value) {
|
|
|
throw new UnsupportedOperationException("CharSequence is immutable.");
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public IClass<?> type(ResolveStatus _s, IClass<?> that, String name) {
|
|
|
return IClass.typeinfo(char.class);
|
|
|
@@ -339,19 +365,21 @@ public class ResolvePattern implements Serializable {
|
|
|
public boolean matches(Object that) {
|
|
|
return that != null;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public boolean matchesType(IClass<?> that) {
|
|
|
- return that!=IClass.NULL;
|
|
|
+ return that != IClass.NULL;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object get(ResolveStatus status, Object that, String name) {
|
|
|
BeanModel model = BeanModel.typefor(that);
|
|
|
Object v = model.fluent(that).get(name);
|
|
|
- if(v != null) {
|
|
|
+ if (v != null) {
|
|
|
return v;
|
|
|
}
|
|
|
Iterator<IField> f = field(model, name);
|
|
|
- if(f.hasNext()) {
|
|
|
+ if (f.hasNext()) {
|
|
|
return f.next().accessible().get(that);
|
|
|
}
|
|
|
status.error = true;
|
|
|
@@ -361,42 +389,44 @@ public class ResolvePattern implements Serializable {
|
|
|
private Iterator<IField> field(BeanModel model, String name) {
|
|
|
return model.type().fields().require(IAttribute.ANY).require(name).iterator();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public void set(ResolveStatus status, Object that, String name, Object value) {
|
|
|
BeanModel model = BeanModel.typefor(that);
|
|
|
- if(model.properties().containsKey(name)) {
|
|
|
+ if (model.properties().containsKey(name)) {
|
|
|
model.property(name).get().set(that, value);
|
|
|
return;
|
|
|
}
|
|
|
Iterator<IField> f = field(model, name);
|
|
|
- if(f.hasNext()) {
|
|
|
+ if (f.hasNext()) {
|
|
|
f.next().accessible().set(that, value);
|
|
|
return;
|
|
|
}
|
|
|
status.error = true;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public Object replace(ResolveStatus status, Object that, String name, Object value) {
|
|
|
BeanModel model = BeanModel.typefor(that);
|
|
|
- if(model.properties().containsKey(name)) {
|
|
|
+ if (model.properties().containsKey(name)) {
|
|
|
return model.property(name).get().replace(that, value);
|
|
|
}
|
|
|
Iterator<IField> f = field(model, name);
|
|
|
- if(f.hasNext()) {
|
|
|
+ if (f.hasNext()) {
|
|
|
return f.next().replace(that, value);
|
|
|
}
|
|
|
status.error = true;
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
public IClass<?> type(ResolveStatus status, IClass<?> that, String name) {
|
|
|
BeanModel model = BeanModel.typeinfo(that);
|
|
|
- if(model.properties().containsKey(name)) {
|
|
|
+ if (model.properties().containsKey(name)) {
|
|
|
return model.property(name).get().type();
|
|
|
}
|
|
|
Iterator<IField> f = field(model, name);
|
|
|
- if(f.hasNext()) {
|
|
|
+ if (f.hasNext()) {
|
|
|
return f.next().type();
|
|
|
}
|
|
|
status.error = true;
|