Browse Source

* Correct registration of metadata resource in case rdoConnectionInURL is specified

git-svn-id: trunk@42263 -
michael 6 years ago
parent
commit
4cb612252a
1 changed files with 9 additions and 4 deletions
  1. 9 4
      packages/fcl-web/src/restbridge/sqldbrestbridge.pp

+ 9 - 4
packages/fcl-web/src/restbridge/sqldbrestbridge.pp

@@ -670,15 +670,20 @@ begin
     end;
     end;
   if (rdoConnectionInURL in DispatchOptions) then
   if (rdoConnectionInURL in DispatchOptions) then
     begin
     begin
-    C:=Strings.GetRestString(rpMetadataResourceName);
-    FMetadataRoute:=HTTPRouter.RegisterRoute(res+C,@HandleMetaDataRequest);
-    FMetadataItemRoute:=HTTPRouter.RegisterRoute(res+C+'/:id',@HandleMetaDataRequest);
+    // Both connection/metadata and /metadata must work.
+    // connection/metadata is handled by HandleRequest (FindSpecialResource)
+    // /metadata must be handled here.
+    if (rdoExposeMetadata in DispatchOptions) then
+      begin
+      C:=Strings.GetRestString(rpMetadataResourceName);
+      FMetadataRoute:=HTTPRouter.RegisterRoute(res+C,@HandleMetaDataRequest);
+      FMetadataItemRoute:=HTTPRouter.RegisterRoute(res+C+'/:id',@HandleMetaDataRequest);
+      end;
     Res:=Res+':connection/';
     Res:=Res+':connection/';
     end;
     end;
   Res:=Res+':resource';
   Res:=Res+':resource';
   FListRoute:=HTTPRouter.RegisterRoute(res,@HandleRequest);
   FListRoute:=HTTPRouter.RegisterRoute(res,@HandleRequest);
   FItemRoute:=HTTPRouter.RegisterRoute(Res+'/:id',@HandleRequest);
   FItemRoute:=HTTPRouter.RegisterRoute(Res+'/:id',@HandleRequest);
-
 end;
 end;
 
 
 function TSQLDBRestDispatcher.GetInputFormat(IO : TRestIO) : String;
 function TSQLDBRestDispatcher.GetInputFormat(IO : TRestIO) : String;