/** Namespaces to register: key is prefix, value namespace */
private Map<String, String> namespaces = new HashMap<String, String>();
+ private Boolean autocreateWorkspaces = false;
+
public void afterPropertiesSet() throws Exception {
// Load cnds as resources
for (String resUrl : cndFiles) {
public Session login(Credentials credentials, String workspaceName)
throws LoginException, NoSuchWorkspaceException,
RepositoryException {
- Session session = repository.login(credentials, workspaceName);
+ Session session;
+ try {
+ session = repository.login(credentials, workspaceName);
+ } catch (NoSuchWorkspaceException e) {
+ if (autocreateWorkspaces)
+ session = createWorkspaceAndLogsIn(credentials, workspaceName);
+ else
+ throw e;
+ }
processNewSession(session);
return session;
}
public Session login(String workspaceName) throws LoginException,
NoSuchWorkspaceException, RepositoryException {
- Session session = repository.login(workspaceName);
+ Session session;
+ try {
+ session = repository.login(workspaceName);
+ } catch (NoSuchWorkspaceException e) {
+ if (autocreateWorkspaces)
+ session = createWorkspaceAndLogsIn(null, workspaceName);
+ else
+ throw e;
+ }
processNewSession(session);
return session;
}
}
}
+ /**
+ * Logs in to the default workspace, creates the required workspace, logs
+ * out, logs in to the required workspace.
+ */
+ protected Session createWorkspaceAndLogsIn(Credentials credentials,
+ String workspaceName) throws RepositoryException {
+ if (workspaceName == null)
+ throw new ArgeoException("No workspace specified.");
+ Session session = repository.login(credentials);
+ session.getWorkspace().createWorkspace(workspaceName);
+ session.logout();
+ return repository.login(credentials, workspaceName);
+ }
+
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}