Example #1
0
  @Override
  public void doFilter(MgoRequest request, FilterChain chain) throws LASDataException {
    if (request instanceof AppRequest) {
      AppRequest appRequest = (AppRequest) request;
      LASClassSchema classSchema = appRequest.getClassSchema();
      if (classSchema != null) {
        LASClassBind bindTo = classSchema.getBindTo();
        if (bindTo != null) {
          LASClassSchema bindToSchema =
              classSchemaManager.get(new ObjectId(bindTo.getBindApp()), bindTo.getClassName());
          if (bindToSchema != null) {
            appRequest.setClassSchema(bindToSchema);
            checkPermission(request, bindTo);
            if (log.isDebugEnabled()) {
              log.debug(
                  "Mapped to BindTo ClassSchema, appId: {}, className: {}",
                  ((AppRequest) request).getClassSchema().getAppId(),
                  ((AppRequest) request).getClassSchema().getClassName());
            }
          } else {
            //                    classSchema.setBindTo(null);
            //                    Map<String, Object> map = new HashMap<>();
            //                    map.put("_id", classSchema.getId());
            //
            //                    Map update = new HashMap();
            //                    HashMap<String, Object> value = new HashMap<>();
            //                    value.put(LASClassSchema.DB_FIELD_NAME.bindTo.name(), 1);
            //
            //                    update.put("$unset", value);
            //                    classSchemaManager.update(map, update);

            throw new LASDataException(
                LASDataException.BIND_TO_CLASS_NOT_FOUND, "bind to class not found.");
          }
        }
      }
    }
    chain.doFilter(request);
  }