コード例 #1
0
ファイル: JoObject.java プロジェクト: nowelium/Jo
  public JoObject call(JoCall call) {
    JoMessage message = call.getMessage();
    String slotName = message.getName();
    if (hasSlot(slotName)) {
      return call(getSlot(slotName), message.getArguments());
    }

    Collection<JoSlot> values = objectSlot.values();
    for (JoSlot _slot : values) {
      Class<? extends JoSlot> clazz = _slot.getClass();
      if (!clazz.isAnnotationPresent(Nullable.class)) {
        continue;
      }
      Nullable nullable = clazz.getAnnotation(Nullable.class);
      if (!nullable.value()) {
        continue;
      }

      JoObject child = _slot.getBlock().call(null, null);
      if (child.hasSlot(slotName)) {
        return call(child.getSlot(slotName), message.getArguments());
      }
    }
    throw new NoSuchMethodError(slotName);
  }
コード例 #2
0
ファイル: JoObject.java プロジェクト: nowelium/Jo
 @Override
 public JoObject call(JoObject object, JoArguments arguments) {
   return self.createClone();
 }
コード例 #3
0
ファイル: JoObject.java プロジェクト: nowelium/Jo
 @Override
 public JoObject call(JoObject object, JoArguments parameter) {
   object.setSlot(object.toString(), parameter.get(0));
   return object;
 }