@@ -17,14 +17,14 @@ const hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
1717 * @memberof module:@ui5/server.middleware
1818 */
1919class MiddlewareManager {
20- constructor ( { tree , resources, options = {
20+ constructor ( { graph , resources, options = {
2121 sendSAPTargetCSP : false ,
2222 serveCSPReports : false
2323 } } ) {
24- if ( ! tree || ! resources || ! resources . all || ! resources . rootProject || ! resources . dependencies ) {
24+ if ( ! graph || ! resources || ! resources . all || ! resources . rootProject || ! resources . dependencies ) {
2525 throw new Error ( "[MiddlewareManager]: One or more mandatory parameters not provided" ) ;
2626 }
27- this . tree = tree ;
27+ this . graph = graph ;
2828 this . resources = resources ;
2929 this . options = options ;
3030
@@ -44,15 +44,19 @@ class MiddlewareManager {
4444 }
4545
4646 async addMiddleware ( configuredMiddlewareName , {
47- wrapperCallback, mountPath = "/" ,
47+ customMiddleware , wrapperCallback, mountPath = "/" ,
4848 beforeMiddleware, afterMiddleware
4949 } = { } ) {
50- const middlewareInfo = middlewareRepository . getMiddleware ( configuredMiddlewareName ) ;
5150 let middlewareCallback ;
52- if ( wrapperCallback ) {
53- middlewareCallback = wrapperCallback ( middlewareInfo ) ;
51+ if ( customMiddleware ) {
52+ middlewareCallback = customMiddleware ;
5453 } else {
55- middlewareCallback = middlewareInfo . middleware ;
54+ const middlewareInfo = middlewareRepository . getMiddleware ( configuredMiddlewareName ) ;
55+ if ( wrapperCallback ) {
56+ middlewareCallback = wrapperCallback ( middlewareInfo ) ;
57+ } else {
58+ middlewareCallback = middlewareInfo . middleware ;
59+ }
5660 }
5761
5862 let middlewareName = configuredMiddlewareName ;
@@ -188,7 +192,7 @@ class MiddlewareManager {
188192 return versionInfoModule ( {
189193 resources,
190194 middlewareUtil,
191- tree : this . tree
195+ graph : this . graph
192196 } ) ;
193197 } ;
194198 }
@@ -211,47 +215,46 @@ class MiddlewareManager {
211215 }
212216
213217 async addCustomMiddleware ( ) {
214- const project = this . tree ;
215- const projectCustomMiddleware = project . server && project . server . customMiddleware ;
216- if ( ! projectCustomMiddleware || projectCustomMiddleware . length === 0 ) {
218+ const project = this . graph . getRoot ( ) ;
219+ const projectCustomMiddleware = project . getCustomMiddleware ( ) ;
220+ if ( ! projectCustomMiddleware . length === 0 ) {
217221 return ; // No custom middleware defined
218222 }
219223
220224 for ( let i = 0 ; i < projectCustomMiddleware . length ; i ++ ) {
221225 const middlewareDef = projectCustomMiddleware [ i ] ;
222226 if ( ! middlewareDef . name ) {
223- throw new Error ( `Missing name for custom middleware definition of project ${ project . metadata . name } ` +
227+ throw new Error ( `Missing name for custom middleware definition of project ${ project . getName ( ) } ` +
224228 `at index ${ i } ` ) ;
225229 }
226230 if ( middlewareDef . beforeMiddleware && middlewareDef . afterMiddleware ) {
227231 throw new Error (
228- `Custom middleware definition ${ middlewareDef . name } of project ${ project . metadata . name } ` +
232+ `Custom middleware definition ${ middlewareDef . name } of project ${ project . getName ( ) } ` +
229233 `defines both "beforeMiddleware" and "afterMiddleware" parameters. Only one must be defined.` ) ;
230234 }
231235 if ( ! middlewareDef . beforeMiddleware && ! middlewareDef . afterMiddleware ) {
232236 throw new Error (
233- `Custom middleware definition ${ middlewareDef . name } of project ${ project . metadata . name } ` +
237+ `Custom middleware definition ${ middlewareDef . name } of project ${ project . getName ( ) } ` +
234238 `defines neither a "beforeMiddleware" nor an "afterMiddleware" parameter. One must be defined.` ) ;
235239 }
236-
240+ const customMiddleware = this . graph . getExtension ( middlewareDef . name ) ;
241+ const specVersion = customMiddleware . getSpecVersion ( ) ;
237242 await this . addMiddleware ( middlewareDef . name , {
238- wrapperCallback : ( { middleware : middleware , specVersion} ) => {
239- return ( { resources, middlewareUtil} ) => {
240- const options = {
241- configuration : middlewareDef . configuration
242- } ;
243- const params = { resources, options} ;
244- if (
245- specVersion === "2.0" || specVersion === "2.1" ||
246- specVersion === "2.2" || specVersion === "2.3" ||
247- specVersion === "2.4" || specVersion === "2.5" ||
248- specVersion === "2.6"
249- ) {
250- // Supply interface to MiddlewareUtil instance starting with specVersion 2.0
251- params . middlewareUtil = middlewareUtil . getInterface ( specVersion ) ;
252- }
253- return middleware ( params ) ;
243+ customMiddleware : ( { resources, middlewareUtil} ) => {
244+ const options = {
245+ configuration : middlewareDef . configuration
254246 } ;
247+ const params = { resources, options} ;
248+ if (
249+ specVersion === "2.0" || specVersion === "2.1" ||
250+ specVersion === "2.2" || specVersion === "2.3" ||
251+ specVersion === "2.4" || specVersion === "2.5" ||
252+ specVersion === "2.6"
253+ ) {
254+ // Supply interface to MiddlewareUtil instance starting with specVersion 2.0
255+ params . middlewareUtil = middlewareUtil . getInterface ( specVersion ) ;
256+ }
257+ return customMiddleware ( params ) ;
255258 } ,
256259 mountPath : middlewareDef . mountPath ,
257260 beforeMiddleware : middlewareDef . beforeMiddleware ,
0 commit comments