+ let path = '', extKey = '';
+ if(isEmpty(extensibleViews[key]['viewParams'])){
+ path = '/' + view.viewName + '/:extensibleViewParams?';
+ extKey = view.viewName + 'Route';
+ } else {
+ path = '/' + view.viewName + view.viewParams;
+ extKey = view.viewName + view.viewParams + 'Route';
+ }
+
+ var renderComponent = (props) => {
+ let viewParams = {};
+ if(isEmpty(extensibleViews[key]['viewParams']) && props.match.params.extensibleViewParams !== undefined) {
+ viewParams = decryptParamsForView(props.match.params.extensibleViewParams);
+ }
+
+ if (Extensibility.default.hasOwnProperty(view.componentName)) {
+ let Component = Extensibility.default[view.componentName];
+ return (
+ <Component
+ {...props}
+ networkingCallback={(apiUrl, body, paramName, curViewData) => {
+ onExtensibleViewNetworkCallback(apiUrl, body, paramName, curViewData);
+ }}
+ overlayCallback={(apiUrl, body, paramName, curOverlayData,responseEventKey) => {
+ onOverlayNetworkCallback(apiUrl, body, paramName, curOverlayData, responseEventKey);
+ }}
+ messagingCallback ={(message, messageSeverity) => {
+ onExtensibleViewMessageCallback(message, messageSeverity);
+ }}
+ changeRouteCallback = {(routeParam, historyObj) => {
+ changeUrlAddress(routeParam, historyObj);
+ }}
+ networkingCallbackPromise = {(url, relativeURL, httpMethodType) => {
+ return genericRequest(url, relativeURL, httpMethodType);
+ }}
+ viewName={view.displayName}
+ viewData={extensibleViewNetworkCallbackData}
+ viewParams={viewParams}/>
+ );
+ }
+ };
+ if(isEmpty(extensibleViews[key]['isExact']) && !extensibleViews[key]['isExact']){
+ customViewList.push(
+ <Route key={extKey} path={path} render={renderComponent}/>
+ );
+ } else {
+ customViewList.push(
+ <Route key={extKey} exact path={path} render={renderComponent}/>
+ );
+ }
+
+ });
+
+ let configurableViewList = getConfigurableRoutes(configurableViewsConfig, customComponents);