@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); }