Hi, It would be useful to be able to pass in extra parameters in a Repository.login() call, in order to for example control the auto-refresh or read-only status of the created session. Unfortunately the standard JCR API doesn't provide any straightforward way to do this, so I've come up with a few potential solutions:
1. Use the attribute feature of SimpleCredentials to pass such parameters: SimpleCredentials credentials = ...; credentials.setAttribute("AutoRefresh", true); Session session = repository.login(credentials, ...); The downside is that it's tied to the specific Credentials class being used. 2. Use the URI query parameter syntax to pass such parameters as a part of the workspace name: String workspace = ...; Session session = repository.login(..., workspace + "?AutoRefresh=true"); The downside is the extra complexity of parsing the workspace string and the need to in many case look up the default workspace name (unless we define "?..." to refer to the default workspace). 3. Extend the JackrabbitRepository interface with a new login() method that explicitly allows such extra parameters: Map<String, Object> parameters = Collections.singletonMap("AutoRefresh", true); Session session = repository.login(..., parameters); The downside is the need for the custom API extension and the adjustments to all relevant implementations. We probably could justify adding such a method in JCR 2.1. 4. Add a new utility class that uses a thread-local variable to pass such extra parameters through a normal login() call: Map<String, Object> parameters = Collections.singletonMap("AutoRefresh", true); Session session = LoginWrapper.login(repository, ..., parameters); The downside is the need for the custom utility class, and the extra complexity (especially for remoting) of using thread-local variables. WDYT? BR, Jukka Zitting