Giter VIP home page Giter VIP logo

api-explorer's Introduction

Welcome to the OBP API Explorer

ABOUT

This application is used to explore the OBP API and interact with the data and services in the context of the logged in user.

LICENSE

This project is licensed under the AGPL V3 (see NOTICE) and a commercial license from TESOBE.

SETUP

The project is using sbt or Maven 3 as a build tool. See build.scala or pom.xml respectively for the dependencies.


To compile and run jetty, cd into the root directory (where this file is) and run:

$ sbt ...

compile ~;container:start; container:reload /

(Note that you first have to start sbt and then on its console start jetty with the container:start task, otherwise it will exit immediately. More here: https://github.com/siasia/xsbt-web-plugin/wiki)

In OS X, sbt can be installed with $ sudo port install sbt


Alternatively, maven can also be used:

mvn jetty:run

In case you want to specify and port as well use next command mvn -Djetty.port=8082 jetty:run

Note: You may need to add the pluginGroup to the $HOME/.m2/settings.xml

... org.mortbay.jetty ...


To run with IntelliJ IDEA

  • Make sure you have the IntelliJ Scala plugin installed.

  • Create a new folder e.g. OpenBankProject and cd there

  • git clone https://github.com/OpenBankProject/API-Explorer.git

  • In IntelliJ IDEA do File -> New -> Project from existing sources, navigate to the folder and select pom.xml

  • Alternatively you can do File -> New -> Project from VCS and checkout the project directly from github.

  • Alternatively you can do File -> Open Folder and select the folder that contains pom.xml This is the currently recommended method

  • When / if prompted for SDK, choose Java 1.8 (and Scala 2.11) otherwise keep the defaults. Use the Maven options. Do not change the project name etc.

  • If you see a message about an unmanaged pom.xml, click the option to let Maven manage it.

  • Navigate to test/scala/RunWebApp. You may see a Setup Scala SDK link. Click this and check Scala 2.11.8 or so.

  • In src/main/resources/props create a <yourloginname>.props (or default.props) for development. For localhost set api_hostname=http://127.0.0.1:8080, base_url=http://localhost:8082, dev.port=8082 and oauth keys (i.e. obp_consumer_key and obp_consumer_secret) obtained from the api (at /consumer-registration) to run OBP-API in your local environment.

  • Now Rebuild the project so everything is compiled. At this point you may need to select the SDK, see above.

  • Once you have rebuilt the project without compile errors, you should be able to RunWebApp in test/scala

  • Run RunWebApp by right clicking on it or selecting Run. The built in jetty server should start on localhost:8082

  • Browse to localhost:8082 but don't try anything else there yet.

Ubuntu

If you use Ubuntu (or a derivate) and encrypted home directories (e.g. you have ~/.Private), you might run into the following error when the project is built:

uncaught exception during compilation: java.io.IOException
[ERROR] File name too long
[ERROR] two errors found
[DEBUG] Compilation failed (CompilerInterface)

The current workaround is to move the project directory onto a different partition, e.g. under /opt/ .

PROPS FILE

There is a props file template provided at src/main/resources/props/sample.props.template. It needs to be renamed and modified or just copy and paste a new in order for the application to work.

  1. Renaming:

The sample.props.template file must be renamed for Lift to find it (https://www.assembla.com/wiki/show/liftweb/Properties). Renaming it to default.props should be the easiest way to get started.

base_url

The base_url is used to calculate the callback url to give to the Open Bank Project API server. This should just be the base url used to access the API Explorer. So if you're running a copy of the API Explorer at api-explorer.example.com over https, on the standard port, it would be "https://api-explorer.example.com". An example value for local development could be: http://127.0.0.1:8082 (8082 is the default Lift development port)

api_hostname

The api_hostname should be the base url of the Open Bank Project API. For example, https://api.openbankproject.com/api amd for local development api_hostname should be http://127.0.0.1:8080 in props file.

obp_consumer_key obp_secret_key

The keys are obtained by registering as a developer on the Open Bank Project API server located at "api_hostname".

All in all, a props file could look something like:

api_hostname=https://api.openbankproject.com/api

OR

The base url of the api to use for local: api_hostname=http://127.0.0.1:8080

obp_consumer_key=uodsifnodsfifdsliufdsliufdsfdsfsdfsx
obp_secret_key=iuesbfiyvglxzgifg7eisgei7fglesfi
base_url=http://localhost:8082

The list of Endpoints that API Explorer needs to function

Before Login:

Get API Info (root): /obp/v4.0.0/root
Get Banks: /obp/v3.1.0/banks
Get Resource Docs: /obp/v4.0.0/resource-docs/OBPv5.1.0/obp
Get Glossary of the API: /obp/v3.0.0/api/glossary
Get all Authentication Type Validations - public: /obp/v4.0.0/endpoints/authentication-type-validations
Get all JSON Schema Validations: /obp/v4.0.0/endpoints/json-schema-validations
Get Message Docs: /obp/v2.2.0/message-docs/CONNECTOR

After Login

Oauth1.0: /oauth/initiate
Oauth1.0: /oauth/token

Get private accounts at all banks (Authenticated access): /obp/v1.2.1/accounts/private
Get Entitlements for the current User: /obp/v3.0.0/my/entitlements
Get Entitlement Requests for the current User: /obp/v3.0.0/my/entitlement-requests
Get My Spaces: /obp/v4.0.0/my/spaces
Get Api Collection Endpoints: /obp/v4.0.0/api-collections//api-collection-endpoints
Get My Api Collection Endpoints: /obp/v4.0.0/my/api-collections/Favourites/api-collection-endpoints
Get My Api Collections: /obp/v4.0.0/my/api-collections
Get User (Current): /obp/v3.0.0/users/current

api-explorer's People

Contributors

akendo avatar azd325 avatar chrisjsimpson avatar constantine2nd avatar cristhtejada avatar dependabot[bot] avatar everett-tesobe avatar florind avatar hongwei1 avatar karmaking avatar kernifex avatar kjyv avatar moule3053 avatar oldbig avatar reena-cell avatar sebtesobe avatar simonredfern avatar somanole avatar tawoe avatar tgpfeiffer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

api-explorer's Issues

Get props from OS system environment, just like OBP API

Objective:

(The same as OBP API OpenBankProject/OBP-API#1208 )

Make container-like deployments easier by reading props from sys.env, we want to avoid rewriting the props file and repacking the war file like this: chrisjsimpson/obp-kubernetes#2 (comment) (<< this is to be avoided)

For docker-like environments, it is helpful instead to read runtime settings from the operating system environment vars, because we can inject these at container runtime.

pseudo Logic

pseudo code

  def getPropsValue(nameOfProperty: String): Box[String] = {
    # Replace "." with "_" (environment vars cannot include ".")
    brandSpecificPropertyName = brandSpecificPropertyName.replace('.', '_')
    # Convert to upper case
    brandSpecificPropertyName = brandSpecificPropertyName.toUpperCase()
    if (sys.env.get(brandSpecificPropertyName)) {
      
    } else {
      ..... load from props file as normal
    }
  }

Gotcha

  • Environment variables will be upper case (s.toUpperCase())
  • Environment variables cannot contain a dot ("."), therefore:
    • oauth_1.hostname becomes OAUTH_1_HOSTNAME
    • api_hostname becomes API_HOSTNAME

Improve navigation

  • Make the logo, login and dropdown navigation fixed.
  • When scrolling down, make them smaller and hide catalog description

Deprecated method "get" of Lift framework 2.6

Behaviour of method "get" of next Lift framework 3.0 release candidate

 /**
   * Exists to avoid the implicit conversion from `Box` to `Option`. Opening a
   * `Box` unsafely should be done using `openOrThrowException`.
   *
   * This method '''always''' throws an exception.
   */
  final def get: DoNotCallThisMethod = {
    throw new Exception("Attempted to open a Box incorrectly. Please use openOrThrowException.")
  }

We use deprecated method "get" in API-Explorer which will '''always''' throw an exception in next release candidate.

We need to fix those warnings.

Open Insurance definitions and taxonomy in OBP Glossary

A new Open Insurance API has been added here https://apiexplorer.open-insurance.tesobe.com/?version=OBPv4.0.0&operation_id=OBPv4_0_0-dynamicEndpoint_POST_banks_obp1_api_v1_products_PRODUCT_CODE_quote&currentTag=Offers%20API#OBPv4_0_0-dynamicEndpoint_POST_banks_obp1_api_v1_products_PRODUCT_CODE_quote

The objects in the JSON response should be referenced in the glossary as well. Here attached you find basic definitions, field type and possibile values
Template and Taxonomy.xlsx

Service request (POST) /API_Explorer-1.0/ajax_request/F577951403269AYIBAR-10/ returned 500

Hi dear developers,
i'am trying to test the API-Explorer since 3 days but still facing this issu when i click on the Log on buttons.
OBP-API and API-Explorer are handled by the same jetty9 server.
Please any hint on what might be the cause ?

Dec 10 11:05:34 ibslab jetty9[3602]: 11:05:34.222 [qtp633070006-79] DEBUG comet_trace - AJAX Request: node0yrr0yo3ikkpvxztbmtxojugf0 Map(F577951403366FF00C4 -> List(undefined))
Dec 10 11:05:34 ibslab jetty9[3602]: ==================================================================
Dec 10 11:05:34 ibslab jetty9[3602]: http://localhost:8080/API_Explorer-1.0/oauthcallback
Dec 10 11:05:34 ibslab jetty9[3602]: ==================================================================
Dec 10 11:05:34 ibslab jetty9[3602]: oauth.signpost.basic.DefaultOAuthConsumer@7e4832d6
Dec 10 11:05:34 ibslab jetty9[3602]: ==================================================================
Dec 10 11:05:34 ibslab jetty9[3602]: 11:05:34.227 [qtp633070006-79] WARN code.util.MyExceptionLogger - Exception notification failed: Failure(Could not send mail: Missing props param for 'from',Empty,Empty)
Dec 10 11:05:34 ibslab jetty9[3602]: 11:05:34.227 [qtp633070006-79] ERROR net.liftweb.http.LiftRules - Exception being returned to browser when processing /ajax_request/F577951403269AYIBAR-10/
Dec 10 11:05:34 ibslab jetty9[3602]: oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: null
Dec 10 11:05:34 ibslab jetty9[3602]: #011at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:223)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:74)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at code.lib.OAuthClient$.redirect(OAuthClient.scala:197)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at code.lib.OAuthClient$.redirectToOauthLogin(OAuthClient.scala:183)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at code.snippet.Login$$anonfun$loggedOut$2.code$snippet$Login$$anonfun$$actionJS$1(Login.scala:69)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at code.snippet.Login$$anonfun$loggedOut$2$$anonfun$apply$2.apply(Login.scala:72)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at code.snippet.Login$$anonfun$loggedOut$2$$anonfun$apply$2.apply(Login.scala:72)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$SFuncHolder$$anonfun$apply$3.apply(S.scala:157)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$SFuncHolder$$anonfun$apply$3.apply(S.scala:157)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at scala.collection.immutable.List.map(List.scala:284)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$SFuncHolder.apply(S.scala:157)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$ProxyFuncHolder.apply(S.scala:114)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftSession$$anonfun$net$liftweb$http$LiftSession$$buildFunc$1$2.apply(LiftSession.scala:783)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftSession$$anonfun$21$$anonfun$apply$37.apply(LiftSession.scala:797)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftSession$$anonfun$21$$anonfun$apply$37.apply(LiftSession.scala:797)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at scala.collection.immutable.List.map(List.scala:284)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftSession$$anonfun$21.apply(LiftSession.scala:797)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftSession$$anonfun$21.apply(LiftSession.scala:788)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at scala.collection.immutable.List.flatMap(List.scala:338)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftSession.runParams(LiftSession.scala:787)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.liftedTree2$1(LiftServlet.scala:491)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$$runAjax(LiftServlet.scala:490)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet$$anonfun$handleAjax$1.apply(LiftServlet.scala:635)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet$$anonfun$handleAjax$1.apply(LiftServlet.scala:555)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet$$anonfun$extractVersions$1.apply(LiftServlet.scala:464)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8$$anonfun$apply$9$$anonfun$apply$10$$anonfun$apply$11.apply(Vars.scala:546)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8$$anonfun$apply$9$$anonfun$apply$10.apply(Vars.scala:545)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8$$anonfun$apply$9.apply(Vars.scala:544)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8.apply(Vars.scala:543)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1.apply(Vars.scala:542)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1.apply(Vars.scala:542)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$PageStateHolder.runInContext(S.scala:228)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RenderVersion$$anonfun$15$$anonfun$apply$28$$anonfun$16.apply(LiftSession.scala:459)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.AnyVarTrait$class.doWith(AnyVar.scala:234)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.AnyVar.doWith(AnyVar.scala:89)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RenderVersion$$anonfun$15$$anonfun$apply$28.apply(LiftSession.scala:458)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RenderVersion$$anonfun$15$$anonfun$apply$28.apply(LiftSession.scala:454)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at scala.Option.map(Option.scala:146)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RenderVersion$$anonfun$15.apply(LiftSession.scala:454)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RenderVersion$$anonfun$15.apply(LiftSession.scala:453)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.common.Full.flatMap(Box.scala:612)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RenderVersion$.doWith(LiftSession.scala:453)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.extractVersions(LiftServlet.scala:464)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.handleAjax(LiftServlet.scala:555)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$$dispatchStatefulRequest(LiftServlet.scala:421)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:301)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:301)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$class.net$liftweb$http$S$$wrapQuery(S.scala:1470)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1$$anonfun$apply$37.apply(S.scala:1635)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$class.net$liftweb$http$S$$doAround(S.scala:1399)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1.apply(S.scala:1633)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$class.net$liftweb$http$S$$_nest2InnerInit(S.scala:1632)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42$$anonfun$apply$43$$anonfun$apply$44.apply(S.scala:1676)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$withReq$1.apply(S.scala:1686)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$class.withReq(S.scala:1685)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$.withReq(S.scala:47)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42$$anonfun$apply$43.apply(S.scala:1672)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42.apply(S.scala:1670)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41.apply(S.scala:1669)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1.apply(S.scala:1668)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$class.net$liftweb$http$S$$_innerInit(S.scala:1667)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49$$anonfun$apply$50$$anonfun$apply$51.apply(S.scala:1709)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49$$anonfun$apply$50.apply(S.scala:1707)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:605)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:507)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49.apply(S.scala:1706)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:605)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:520)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48.apply(S.scala:1705)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47.apply(S.scala:1704)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1.apply(S.scala:1703)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$class.net$liftweb$http$S$$_init(S.scala:1702)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$class.init(S.scala:1284)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.S$.init(S.scala:47)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.doSession$1(LiftServlet.scala:300)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.doService(LiftServlet.scala:310)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:148)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:147)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.TimeHelpers$class.calcTime(TimeHelpers.scala:346)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.Helpers$.calcTime(Helpers.scala:34)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:365)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.Helpers$.logTime(Helpers.scala:34)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:147)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftServlet.service(LiftServlet.scala:158)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(HTTPProvider.scala:72)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.URLRewriter$.doWith(Req.scala:1327)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply$mcV$sp(HTTPProvider.scala:70)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply$mcV$sp(HTTPProvider.scala:66)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.HTTPProvider$class.service(HTTPProvider.scala:60)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftFilter.service(LiftServlet.scala:928)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(ServletFilterProvider.scala:82)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ServletFilterProvider.scala:82)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ServletFilterProvider.scala:82)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$class.handleLoan$1(ServletFilterProvider.scala:59)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$class.net$liftweb$http$provider$servlet$ServletFilterProvider$$handleLoanWrappers(ServletFilterProvider.scala:63)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ServletFilterProvider.scala:82)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:77)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:77)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:611)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:610)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:609)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:608)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:607)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:507)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply$mcV$sp(ServletFilterProvider.scala:75)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:75)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:75)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:611)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:610)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:609)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:608)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:607)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:520)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.provider.servlet.ServletFilterProvider$class.doFilter(ServletFilterProvider.scala:74)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:928)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1701)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1668)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.Server.handle(Server.java:502)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at java.base/java.lang.Thread.run(Thread.java:834)
Dec 10 11:05:34 ibslab jetty9[3602]: Caused by: java.lang.NullPointerException: null
Dec 10 11:05:34 ibslab jetty9[3602]: #011at oauth.signpost.basic.DefaultOAuthProvider.closeConnection(DefaultOAuthProvider.java:54)
Dec 10 11:05:34 ibslab jetty9[3602]: #011at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:221)
Dec 10 11:05:34 ibslab jetty9[3602]: #011... 178 common frames omitted
Dec 10 11:05:34 ibslab jetty9[3602]: 11:05:34.231 [qtp633070006-79] INFO net.liftweb.util.TimeHelpers - Service request (POST) /API_Explorer-1.0/ajax_request/F577951403269AYIBAR-10/ returned 500, took 12 Milliseconds

Banks dropdown should show all available banks

Expected: When a user is logged in, and they wish to switch to another bank id , all possible bank ids should show in the banks drop down.

Current experience: When logged in. Even though the user is able to switch to another bank id, they are not all shown. The user has to know the bank id which they would not.

image
Above: only two accounts are shown, but the user wishes to switch to an account not on the list

Proposed solution:

Populate the banks dropdown with all possible bank ids, available from the /obp/v3.1.0/banks api call.

Missing name of user results in 500 after login

This does not happen when creating a new user in the API, it happens only to 'old' users. Dunno how old it must be, though. It is probably related to the display of username next to the logout link.
When that user's details in the API's database are modified, the error goes away, e.g:
update apiuser set name_ = '<NAME>' where email = '<USEREMAIL>';
I have no idea how apiuser.name_ ends up in something given by the API to the Explorer which the Explorer can show and not go 500.

The Explorer's traceback is:

Mon Oct 31 10:16:43 UTC 2016: java.lang.IllegalArgumentException: cannot construct Text with null
	at scala.xml.Atom.<init>(Atom.scala:21)
	at scala.xml.Text.<init>(Text.scala:19)
	at scala.xml.Text$.apply(Text.scala:37)
	at net.liftweb.util.CanBind$$anon$20$$anonfun$apply$16.apply(CssSel.scala:828)
	at net.liftweb.util.CanBind$$anon$20$$anonfun$apply$16.apply(CssSel.scala:828)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.immutable.List.foreach(List.scala:381)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.immutable.List.map(List.scala:285)
	at net.liftweb.util.CanBind$$anon$20.apply(CssSel.scala:828)
	at net.liftweb.util.ToCssBindPromoter$$anon$1.calculate(CssSel.scala:905)
	at net.liftweb.util.SelectorMap$SlurpedAttrs.applyRule(CssSel.scala:375)
	at net.liftweb.util.SelectorMap$SlurpedAttrs.applyRule(CssSel.scala:188)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$treatElem(CssSel.scala:577)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:611)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:609)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$run(CssSel.scala:609)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$treatElem(CssSel.scala:573)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:611)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:609)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$run(CssSel.scala:609)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$treatElem(CssSel.scala:573)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:611)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:609)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$run(CssSel.scala:609)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$treatElem(CssSel.scala:573)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:611)
	at net.liftweb.util.SelectorMap$$anonfun$net$liftweb$util$SelectorMap$$run$1.apply(CssSel.scala:609)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.util.SelectorMap.net$liftweb$util$SelectorMap$$run(CssSel.scala:609)
	at net.liftweb.util.SelectorMap.apply(CssSel.scala:605)
	at net.liftweb.util.AggregatedCssBindFunc.apply(CssSel.scala:72)
	at net.liftweb.util.AggregatedCssBindFunc.apply(CssSel.scala:65)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91$$anonfun$gotIt$1$3.apply(LiftSession.scala:1765)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91$$anonfun$gotIt$1$3.apply(LiftSession.scala:1763)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.common.Box$WithFilter.map(Box.scala:353)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91.gotIt$1(LiftSession.scala:1763)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91.apply(LiftSession.scala:1815)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91.apply(LiftSession.scala:1728)
	at net.liftweb.common.EmptyBox.openOr(Box.scala:701)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89.apply(LiftSession.scala:1726)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89.apply(LiftSession.scala:1726)
	at net.liftweb.common.EmptyBox.openOr(Box.scala:701)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86.apply(LiftSession.scala:1725)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86.apply(LiftSession.scala:1725)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$runWhitelist$1(LiftSession.scala:1715)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85.apply(LiftSession.scala:1724)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85.apply(LiftSession.scala:1724)
	at net.liftweb.http.S$class.doSnippet(S.scala:2403)
	at net.liftweb.http.S$.doSnippet(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$36.apply(LiftSession.scala:1723)
	at net.liftweb.http.LiftSession$$anonfun$36.apply(LiftSession.scala:1721)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$processSnippet(LiftSession.scala:1721)
	at net.liftweb.http.LiftSession$$anonfun$_defaultLiftTagProcessing$1.applyOrElse(LiftSession.scala:1955)
	at net.liftweb.http.LiftSession$$anonfun$_defaultLiftTagProcessing$1.applyOrElse(LiftSession.scala:1943)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
	at net.liftweb.util.NamedPF.apply(NamedPartialFunction.scala:36)
	at net.liftweb.util.NamedPF$.apply(NamedPartialFunction.scala:82)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2053)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2052)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withAttrs(S.scala:2147)
	at net.liftweb.http.S$.withAttrs(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.S$class.doSnippet(S.scala:2403)
	at net.liftweb.http.S$.doSnippet(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withCurrentSnippetNodeSeq(S.scala:2364)
	at net.liftweb.http.S$.withCurrentSnippetNodeSeq(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$processOrDefer(LiftSession.scala:2030)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2048)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2065)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2065)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2065)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2065)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2065)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2052)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2052)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withAttrs(S.scala:2147)
	at net.liftweb.http.S$.withAttrs(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.S$class.doSnippet(S.scala:2403)
	at net.liftweb.http.S$.doSnippet(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withCurrentSnippetNodeSeq(S.scala:2364)
	at net.liftweb.http.S$.withCurrentSnippetNodeSeq(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$processOrDefer(LiftSession.scala:2030)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2048)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45$$anonfun$apply$46.apply(LiftSession.scala:1142)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45$$anonfun$apply$46.apply(LiftSession.scala:1139)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45.apply(LiftSession.scala:1139)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45.apply(LiftSession.scala:1138)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1.apply(LiftSession.scala:1137)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1.apply(LiftSession.scala:1137)
	at net.liftweb.util.AnyVarTrait$class.doWith(AnyVar.scala:234)
	at net.liftweb.util.AnyVar.doWith(AnyVar.scala:89)
	at net.liftweb.http.LiftSession.processTemplate(LiftSession.scala:1136)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$51.apply(LiftSession.scala:1247)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$51.apply(LiftSession.scala:1247)
	at net.liftweb.common.EmptyBox.or(Box.scala:703)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48.apply(LiftSession.scala:1246)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48.apply(LiftSession.scala:1246)
	at net.liftweb.util.StackableMaker$class.doWith(Maker.scala:150)
	at net.liftweb.http.Factory$FactoryMaker.doWith(Factory.scala:37)
	at net.liftweb.util.StackableMaker$class.doWith(Maker.scala:141)
	at net.liftweb.http.Factory$FactoryMaker.doWith(Factory.scala:37)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47.apply(LiftSession.scala:1245)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47.apply(LiftSession.scala:1241)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$checkStatelessInSiteMap(LiftSession.scala:1185)
	at net.liftweb.http.LiftSession$$anonfun$27.apply(LiftSession.scala:1241)
	at net.liftweb.http.LiftSession$$anonfun$27.apply(LiftSession.scala:1239)
	at net.liftweb.common.EmptyBox.or(Box.scala:703)
	at net.liftweb.http.LiftSession.processRequest(LiftSession.scala:1239)
	at net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$$dispatchStatefulRequest(LiftServlet.scala:423)
	at net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:301)
	at net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:301)
	at net.liftweb.http.S$class.net$liftweb$http$S$$wrapQuery(S.scala:1470)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1$$anonfun$apply$37.apply(S.scala:1635)
	at net.liftweb.http.S$class.net$liftweb$http$S$$doAround(S.scala:1399)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1.apply(S.scala:1633)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.net$liftweb$http$S$$_nest2InnerInit(S.scala:1632)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42$$anonfun$apply$43$$anonfun$apply$44.apply(S.scala:1676)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$withReq$1.apply(S.scala:1686)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withReq(S.scala:1685)
	at net.liftweb.http.S$.withReq(S.scala:47)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42$$anonfun$apply$43.apply(S.scala:1672)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42.apply(S.scala:1670)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41.apply(S.scala:1669)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1.apply(S.scala:1668)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.net$liftweb$http$S$$_innerInit(S.scala:1667)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49$$anonfun$apply$50$$anonfun$apply$51.apply(S.scala:1709)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49$$anonfun$apply$50.apply(S.scala:1707)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:605)
	at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:507)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49.apply(S.scala:1706)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:605)
	at net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:520)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48.apply(S.scala:1705)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47.apply(S.scala:1704)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1.apply(S.scala:1703)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.net$liftweb$http$S$$_init(S.scala:1702)
	at net.liftweb.http.S$class.init(S.scala:1284)
	at net.liftweb.http.S$.init(S.scala:47)
	at net.liftweb.http.LiftServlet.doSession$1(LiftServlet.scala:300)
	at net.liftweb.http.LiftServlet.doService(LiftServlet.scala:310)
	at net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:148)
	at net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:147)
	at net.liftweb.util.TimeHelpers$class.calcTime(TimeHelpers.scala:346)
	at net.liftweb.util.Helpers$.calcTime(Helpers.scala:34)
	at net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:365)
	at net.liftweb.util.Helpers$.logTime(Helpers.scala:34)
	at net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:147)
	at net.liftweb.http.LiftServlet.service(LiftServlet.scala:158)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(HTTPProvider.scala:72)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.URLRewriter$.doWith(Req.scala:1327)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply$mcV$sp(HTTPProvider.scala:70)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply$mcV$sp(HTTPProvider.scala:66)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.provider.HTTPProvider$class.service(HTTPProvider.scala:60)
	at net.liftweb.http.LiftFilter.service(LiftServlet.scala:928)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$class.handleLoan$1(ServletFilterProvider.scala:59)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$class.net$liftweb$http$provider$servlet$ServletFilterProvider$$handleLoanWrappers(ServletFilterProvider.scala:63)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:77)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:77)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:611)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:610)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:609)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:608)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:607)
	at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:507)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply$mcV$sp(ServletFilterProvider.scala:75)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:75)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:75)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:611)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:610)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:609)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:608)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:607)
	at net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:520)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$class.doFilter(ServletFilterProvider.scala:74)
	at net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:928)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1476)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1022)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:370)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
	at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)
	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
	at java.lang.Thread.run(Thread.java:745)

Docker container ignores provided props config

Hi

i try to run docker container

docker run \
--name obpexplorer -d -p 8082:8082 \
-e "props.resource.dir=/obp-config" \
--mount type=bind,source="$(pwd)"/explorer-config,target=/obp-config \
openbankproject/api-explorer

with that props config from Docker

but it failed to find it

2022-04-15ย 15:35:03.231:INFO::main:ย Loggingย initializedย @987msย toย org.eclipse.jetty.util.log.StdErrLog
2022-04-15ย 15:35:04.636:INFO:oejs.Server:main:ย jetty-9.4.33.v20201020;ย built:ย 2020-10-20T23:39:24.803Z;ย git:ย 1be68755656cef678b79a2ef1c2ebbca99e25420;ย jvmย 14.0.2+12-46
2022-04-15ย 15:35:04.824:INFO:oejdp.ScanningAppProvider:main:ย Deploymentย monitorย [file:///var/lib/jetty/webapps/]ย atย intervalย 1
2022-04-15ย 15:35:12.590:INFO:oeja.AnnotationConfiguration:main:ย Scanningย elapsedย time=4549ms
2022-04-15ย 15:35:13.649:INFO:oejs.session:main:ย DefaultSessionIdManagerย workerName=node0
2022-04-15ย 15:35:13.650:INFO:oejs.session:main:ย Noย SessionScavengerย set,ย usingย defaults
2022-04-15ย 15:35:13.654:INFO:oejs.session:main:ย node0ย Scavengingย everyย 600000ms
2022-04-15ย 15:35:16ย mainย Propsย [ERROR]ย Failedย toย findย aย propertiesย fileย (butย propertiesย wereย accessed).ย ย Searched:ย /props/jetty.7e82a5f50c82.props,ย /props/jetty.props,ย /props/7e82a5f50c82.props,ย /props/default.props,ย /jetty.7e82a5f50c82.props,ย /jetty.props,ย /7e82a5f50c82.props,ย /default.props
2022-04-15ย 15:35:16ย mainย Bootย [INFO]ย runningย mode:ย Developmentย mode
2022-04-15ย 15:35:16ย mainย Bootย [INFO]ย externalย propsย folder:ย List()
2022-04-15ย 15:35:16ย mainย HTTPProviderย [ERROR]ย Failedย toย Boot!ย Yourย applicationย mayย notย runย properly
java.lang.Exception:ย defaultAuthProviderย mustย beย specifiedย inย theย propsย file!
	atย bootstrap.liftweb.Boot.boot(Boot.scala:128)
	atย java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nativeย Method)
	atย java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	atย java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	atย java.base/java.lang.reflect.Method.invoke(Method.java:564)
	atย net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:364)
	atย net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:362)
	atย net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:2040)
	atย net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:2040)
	atย net.liftweb.common.Full.map(Box.scala:610)
	atย net.liftweb.http.DefaultBootstrap$.boot(LiftRules.scala:2040)
	atย net.liftweb.http.provider.HTTPProvider$class.bootLift(HTTPProvider.scala:88)
	atย net.liftweb.http.LiftFilter.bootLift(LiftServlet.scala:928)
	atย net.liftweb.http.provider.servlet.ServletFilterProvider$class.init(ServletFilterProvider.scala:40)
	atย net.liftweb.http.LiftFilter.init(LiftServlet.scala:928)
	atย org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:140)
	atย org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:739)
	atย java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	atย java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
	atย java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
	atย org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:763)
	atย org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
	atย org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1457)
	atย org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1422)
	atย org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:911)
	atย org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
	atย org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
	atย org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
	atย org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:46)
	atย org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
	atย org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:517)
	atย org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:157)
	atย org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:173)
	atย org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:441)
	atย org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:66)
	atย org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:784)
	atย org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:753)
	atย org.eclipse.jetty.util.Scanner.scan(Scanner.java:641)
	atย org.eclipse.jetty.util.Scanner.doStart(Scanner.java:540)
	atย org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
	atย org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:146)
	atย org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
	atย org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:605)
	atย org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:252)
	atย org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
	atย org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
	atย org.eclipse.jetty.server.Server.start(Server.java:423)
	atย org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
	atย org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
	atย org.eclipse.jetty.server.Server.doStart(Server.java:387)
	atย org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
	atย org.eclipse.jetty.xml.XmlConfiguration.lambda$main$2(XmlConfiguration.java:1908)
	atย java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
	atย org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1857)
2022-04-15ย 15:35:16.242:INFO:oejsh.ContextHandler:main:ย Startedย o.e.j.w.WebAppContext@3967e60c{root,/,file:///tmp/jetty/jetty-0_0_0_0-8080-root_war-_-any-2717734227032265865/webapp/,AVAILABLE}{/var/lib/jetty/webapps/root.war}
2022-04-15ย 15:35:16.324:INFO:oejs.AbstractConnector:main:ย Startedย ServerConnector@2d746ce4{HTTP/1.1,ย (http/1.1)}{0.0.0.0:8080}
2022-04-15ย 15:35:16.327:INFO:oejs.Server:main:ย Startedย @14145ms

Is this a legacy container issue?

The docker API-Explorer container taken from here:
https://hub.docker.com/r/openbankproject/api-explorer

java.lang.IllegalArgumentException: For input string

Got about 200 of these this morning:



Tue Oct 24 02:08:44 UTC 2017: java.lang.reflect.InvocationTargetException
	at sun.reflect.GeneratedConstructorAccessor50.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at net.liftweb.http.UnitConstructor.makeOne(Templates.scala:369)
	at net.liftweb.http.LiftSession$$anonfun$constructFrom$1.apply(LiftSession.scala:141)
	at net.liftweb.http.LiftSession$$anonfun$constructFrom$1.apply(LiftSession.scala:140)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.http.LiftSession$.constructFrom(LiftSession.scala:140)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$instantiateOrRedirect(LiftSession.scala:1403)
	at net.liftweb.http.LiftSession$$anonfun$31$$anonfun$apply$64$$anonfun$apply$65.apply(LiftSession.scala:1535)
	at net.liftweb.http.LiftSession$$anonfun$31$$anonfun$apply$64$$anonfun$apply$65.apply(LiftSession.scala:1535)
	at net.liftweb.common.Full.flatMap(Box.scala:612)
	at net.liftweb.http.LiftSession$$anonfun$31$$anonfun$apply$64.apply(LiftSession.scala:1535)
	at net.liftweb.http.LiftSession$$anonfun$31$$anonfun$apply$64.apply(LiftSession.scala:1535)
	at net.liftweb.common.EmptyBox.or(Box.scala:703)
	at net.liftweb.http.LiftSession$$anonfun$31.apply(LiftSession.scala:1534)
	at net.liftweb.http.LiftSession$$anonfun$31.apply(LiftSession.scala:1534)
	at net.liftweb.common.EmptyBox.or(Box.scala:703)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$findSnippetInstance(LiftSession.scala:1533)
	at net.liftweb.http.LiftSession$$anonfun$net$liftweb$http$LiftSession$$locateAndCacheSnippet$1$1$$anonfun$apply$82.apply(LiftSession.scala:1698)
	at net.liftweb.http.LiftSession$$anonfun$net$liftweb$http$LiftSession$$locateAndCacheSnippet$1$1$$anonfun$apply$82.apply(LiftSession.scala:1697)
	at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:52)
	at scala.collection.immutable.Stream.flatMap(Stream.scala:489)
	at net.liftweb.util.ListHelpers$class.first(ListHelpers.scala:137)
	at net.liftweb.util.Helpers$.first(Helpers.scala:34)
	at net.liftweb.http.LiftSession$$anonfun$net$liftweb$http$LiftSession$$locateAndCacheSnippet$1$1.apply(LiftSession.scala:1696)
	at net.liftweb.http.LiftSession$$anonfun$net$liftweb$http$LiftSession$$locateAndCacheSnippet$1$1.apply(LiftSession.scala:1696)
	at net.liftweb.common.EmptyBox.or(Box.scala:703)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$locateAndCacheSnippet$1(LiftSession.scala:1695)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91.apply(LiftSession.scala:1728)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91.apply(LiftSession.scala:1728)
	at net.liftweb.common.EmptyBox.openOr(Box.scala:701)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89.apply(LiftSession.scala:1726)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89.apply(LiftSession.scala:1726)
	at net.liftweb.common.EmptyBox.openOr(Box.scala:701)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86.apply(LiftSession.scala:1725)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86.apply(LiftSession.scala:1725)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$runWhitelist$1(LiftSession.scala:1715)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85.apply(LiftSession.scala:1724)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85.apply(LiftSession.scala:1724)
	at net.liftweb.http.S$class.doSnippet(S.scala:2403)
	at net.liftweb.http.S$.doSnippet(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$36.apply(LiftSession.scala:1723)
	at net.liftweb.http.LiftSession$$anonfun$36.apply(LiftSession.scala:1721)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$processSnippet(LiftSession.scala:1721)
	at net.liftweb.http.LiftSession$$anonfun$_defaultLiftTagProcessing$1.applyOrElse(LiftSession.scala:1955)
	at net.liftweb.http.LiftSession$$anonfun$_defaultLiftTagProcessing$1.applyOrElse(LiftSession.scala:1943)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
	at net.liftweb.util.NamedPF.apply(NamedPartialFunction.scala:36)
	at net.liftweb.util.NamedPF$.apply(NamedPartialFunction.scala:82)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2053)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2052)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withAttrs(S.scala:2147)
	at net.liftweb.http.S$.withAttrs(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.S$class.doSnippet(S.scala:2403)
	at net.liftweb.http.S$.doSnippet(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withCurrentSnippetNodeSeq(S.scala:2364)
	at net.liftweb.http.S$.withCurrentSnippetNodeSeq(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$processOrDefer(LiftSession.scala:2030)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2048)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2065)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.builtin.snippet.Surround$$anonfun$2$$anonfun$apply$2$$anonfun$apply$3.apply(Surround.scala:40)
	at net.liftweb.builtin.snippet.Surround$$anonfun$2$$anonfun$apply$2$$anonfun$apply$3.apply(Surround.scala:39)
	at net.liftweb.util.AnyVarTrait$class.doWith(AnyVar.scala:234)
	at net.liftweb.util.AnyVar.doWith(AnyVar.scala:89)
	at net.liftweb.builtin.snippet.Surround$$anonfun$2$$anonfun$apply$2.apply(Surround.scala:39)
	at net.liftweb.builtin.snippet.Surround$$anonfun$2$$anonfun$apply$2.apply(Surround.scala:37)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.builtin.snippet.Surround$$anonfun$2.apply(Surround.scala:37)
	at net.liftweb.builtin.snippet.Surround$$anonfun$2.apply(Surround.scala:36)
	at net.liftweb.common.Full.flatMap(Box.scala:612)
	at net.liftweb.builtin.snippet.Surround$.render(Surround.scala:36)
	at net.liftweb.builtin.snippet.Surround$$anonfun$dispatch$1$$anonfun$applyOrElse$1.apply(Surround.scala:31)
	at net.liftweb.builtin.snippet.Surround$$anonfun$dispatch$1$$anonfun$applyOrElse$1.apply(Surround.scala:31)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91.apply(LiftSession.scala:1754)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89$$anonfun$apply$91.apply(LiftSession.scala:1728)
	at net.liftweb.common.EmptyBox.openOr(Box.scala:701)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89.apply(LiftSession.scala:1726)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86$$anonfun$apply$89.apply(LiftSession.scala:1726)
	at net.liftweb.common.EmptyBox.openOr(Box.scala:701)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86.apply(LiftSession.scala:1725)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85$$anonfun$apply$86.apply(LiftSession.scala:1725)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$runWhitelist$1(LiftSession.scala:1715)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85.apply(LiftSession.scala:1724)
	at net.liftweb.http.LiftSession$$anonfun$36$$anonfun$apply$85.apply(LiftSession.scala:1724)
	at net.liftweb.http.S$class.doSnippet(S.scala:2403)
	at net.liftweb.http.S$.doSnippet(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$36.apply(LiftSession.scala:1723)
	at net.liftweb.http.LiftSession$$anonfun$36.apply(LiftSession.scala:1721)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$processSnippet(LiftSession.scala:1721)
	at net.liftweb.http.LiftSession$$anonfun$_defaultLiftTagProcessing$1.applyOrElse(LiftSession.scala:1955)
	at net.liftweb.http.LiftSession$$anonfun$_defaultLiftTagProcessing$1.applyOrElse(LiftSession.scala:1943)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
	at net.liftweb.util.NamedPF.apply(NamedPartialFunction.scala:36)
	at net.liftweb.util.NamedPF$.apply(NamedPartialFunction.scala:82)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2053)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98$$anonfun$apply$99.apply(LiftSession.scala:2052)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withAttrs(S.scala:2147)
	at net.liftweb.http.S$.withAttrs(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97$$anonfun$apply$98.apply(LiftSession.scala:2051)
	at net.liftweb.http.S$class.doSnippet(S.scala:2403)
	at net.liftweb.http.S$.doSnippet(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96$$anonfun$apply$97.apply(LiftSession.scala:2050)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withCurrentSnippetNodeSeq(S.scala:2364)
	at net.liftweb.http.S$.withCurrentSnippetNodeSeq(S.scala:47)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1$$anonfun$apply$96.apply(LiftSession.scala:2049)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$processOrDefer(LiftSession.scala:2030)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2048)
	at net.liftweb.http.LiftSession$$anonfun$processSurroundAndInclude$1.apply(LiftSession.scala:2043)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
	at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
	at net.liftweb.http.LiftSession.processSurroundAndInclude(LiftSession.scala:2043)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45$$anonfun$apply$46.apply(LiftSession.scala:1142)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45$$anonfun$apply$46.apply(LiftSession.scala:1139)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45.apply(LiftSession.scala:1139)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1$$anonfun$apply$45.apply(LiftSession.scala:1138)
	at net.liftweb.common.Full.map(Box.scala:610)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1.apply(LiftSession.scala:1137)
	at net.liftweb.http.LiftSession$$anonfun$processTemplate$1.apply(LiftSession.scala:1137)
	at net.liftweb.util.AnyVarTrait$class.doWith(AnyVar.scala:234)
	at net.liftweb.util.AnyVar.doWith(AnyVar.scala:89)
	at net.liftweb.http.LiftSession.processTemplate(LiftSession.scala:1136)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$51.apply(LiftSession.scala:1247)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$51.apply(LiftSession.scala:1247)
	at net.liftweb.common.EmptyBox.or(Box.scala:703)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48.apply(LiftSession.scala:1246)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47$$anonfun$apply$48.apply(LiftSession.scala:1246)
	at net.liftweb.util.StackableMaker$class.doWith(Maker.scala:150)
	at net.liftweb.http.Factory$FactoryMaker.doWith(Factory.scala:37)
	at net.liftweb.util.StackableMaker$class.doWith(Maker.scala:141)
	at net.liftweb.http.Factory$FactoryMaker.doWith(Factory.scala:37)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47.apply(LiftSession.scala:1245)
	at net.liftweb.http.LiftSession$$anonfun$27$$anonfun$apply$47.apply(LiftSession.scala:1241)
	at net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$checkStatelessInSiteMap(LiftSession.scala:1185)
	at net.liftweb.http.LiftSession$$anonfun$27.apply(LiftSession.scala:1241)
	at net.liftweb.http.LiftSession$$anonfun$27.apply(LiftSession.scala:1239)
	at net.liftweb.common.EmptyBox.or(Box.scala:703)
	at net.liftweb.http.LiftSession.processRequest(LiftSession.scala:1239)
	at net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$$dispatchStatefulRequest(LiftServlet.scala:423)
	at net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:301)
	at net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:301)
	at net.liftweb.http.S$class.net$liftweb$http$S$$wrapQuery(S.scala:1470)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1$$anonfun$apply$37.apply(S.scala:1635)
	at net.liftweb.http.S$class.net$liftweb$http$S$$doAround(S.scala:1399)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1.apply(S.scala:1633)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.net$liftweb$http$S$$_nest2InnerInit(S.scala:1632)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42$$anonfun$apply$43$$anonfun$apply$44.apply(S.scala:1676)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$withReq$1.apply(S.scala:1686)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.withReq(S.scala:1685)
	at net.liftweb.http.S$.withReq(S.scala:47)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42$$anonfun$apply$43.apply(S.scala:1672)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41$$anonfun$apply$42.apply(S.scala:1670)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$41.apply(S.scala:1669)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1.apply(S.scala:1668)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.net$liftweb$http$S$$_innerInit(S.scala:1667)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49$$anonfun$apply$50$$anonfun$apply$51.apply(S.scala:1709)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49$$anonfun$apply$50.apply(S.scala:1707)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:605)
	at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:507)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49.apply(S.scala:1706)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:605)
	at net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:520)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47$$anonfun$apply$48.apply(S.scala:1705)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$47.apply(S.scala:1704)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1.apply(S.scala:1703)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.S$class.net$liftweb$http$S$$_init(S.scala:1702)
	at net.liftweb.http.S$class.init(S.scala:1284)
	at net.liftweb.http.S$.init(S.scala:47)
	at net.liftweb.http.LiftServlet.doSession$1(LiftServlet.scala:300)
	at net.liftweb.http.LiftServlet.doService(LiftServlet.scala:310)
	at net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:148)
	at net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:147)
	at net.liftweb.util.TimeHelpers$class.calcTime(TimeHelpers.scala:346)
	at net.liftweb.util.Helpers$.calcTime(Helpers.scala:34)
	at net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:365)
	at net.liftweb.util.Helpers$.logTime(Helpers.scala:34)
	at net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:147)
	at net.liftweb.http.LiftServlet.service(LiftServlet.scala:158)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(HTTPProvider.scala:72)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.URLRewriter$.doWith(Req.scala:1327)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply$mcV$sp(HTTPProvider.scala:70)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply$mcV$sp(HTTPProvider.scala:66)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
	at net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.provider.HTTPProvider$class.service(HTTPProvider.scala:60)
	at net.liftweb.http.LiftFilter.service(LiftServlet.scala:928)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$class.handleLoan$1(ServletFilterProvider.scala:59)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$class.net$liftweb$http$provider$servlet$ServletFilterProvider$$handleLoanWrappers(ServletFilterProvider.scala:63)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ServletFilterProvider.scala:82)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:77)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:77)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:611)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:610)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:609)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:608)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:607)
	at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:507)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply$mcV$sp(ServletFilterProvider.scala:75)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:75)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:75)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:611)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:610)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:609)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:608)
	at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71)
	at net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:607)
	at net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:520)
	at net.liftweb.http.provider.servlet.ServletFilterProvider$class.doFilter(ServletFilterProvider.scala:74)
	at net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:928)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
	at org.eclipse.jetty.server.Server.handle(Server.java:499)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: For input string: "false AND 4822=CONVERT(INT,(SELECT CHAR(113)+CHAR(98)+CHAR(106)+CHAR(106)+CHAR(113)+(SELECT (CASE WHEN (4822=4822) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(112)+CHAR(98)+CHAR(112)+CHAR(113)))-- iFGF"
	at scala.collection.immutable.StringLike$class.parseBoolean(StringLike.scala:290)
	at scala.collection.immutable.StringLike$class.toBoolean(StringLike.scala:260)
	at scala.collection.immutable.StringOps.toBoolean(StringOps.scala:29)
	at code.snippet.ApiExplorer.<init>(ApiExplorer.scala:61)
	... 299 more

Add success_response_body and error_response_bodies

Add these two fields under the url

URL
success_response_body
error_response_bodies

When the GET or POST or PUT button is pressed, they should be removed and replaced by the actual response.

This is so that developers can see what they will get and we can see at a glance the state of the documentation (for swagger etc.)

Make navigation tree for the APIs larger.

Having recently completed our app for the hackathon ,let me first say THANK YOU for the API Explorer. It was really helpful. As API architect for our project, I pretty much lived in the browser to figure things out.

One suggestion would be to add a navigation tree on the side that I can use to quickly navigate to a specific API.

I used ctrl+F to navigate around, but a tree would help quickly to get an understanding of what APIs are present.

Building on top of that I'd suggest adding favorites. Allow users to basically favorite the common APIs they are using and store that in the backend. This way this information would flow to whatever device they are using.

Change ?version url parameter values so they are more explicit.

We should specificy the standard e.g. OBP, BG or UK in the url parameter.

OBP

https://apiexplorersandbox.openbankproject.com/?version=3.1.0 -> ?version=OBPv3.1.0

Berlin Group

https://apiexplorersandbox.openbankproject.com/?version=v1 -> ?version=BGv1

UK

https://apiexplorersandbox.openbankproject.com/?version=v2.0 -> ?version=UKv2.0

When this tickets is done we should look at the parameter values sent to the resource docs endpoint and make more explicit whilst maintainting compatibility.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.