/** Actually creates a new repository. */
protected void createJackrabbitRepository() {
+ long begin = System.currentTimeMillis();
try {
// remote repository
if (uri != null && !uri.trim().equals("")) {
params.put(
org.apache.jackrabbit.commons.JcrUtils.REPOSITORY_URI,
uri);
- repository = (JackrabbitRepository) new Jcr2davRepositoryFactory()
+ repository = new Jcr2davRepositoryFactory()
.getRepository(params);
if (repository == null)
throw new ArgeoException("Remote Davex repository " + uri
else
repository = RepositoryImpl.create(repositoryConfig);
- log.info("Initialized Jackrabbit repository " + repository + " in "
- + getHomeDirectory() + " with config " + configuration);
+ double duration = ((double) (System.currentTimeMillis() - begin)) / 1000;
+ log.info("Initialized Jackrabbit repository in " + duration
+ + " s, home: " + getHomeDirectory() + ", config: "
+ + configuration);
} catch (Exception e) {
throw new ArgeoException("Cannot create Jackrabbit repository "
+ getHomeDirectory(), e);
/** Executes migrations, if needed. */
protected void migrate() {
+ // No migration to perform
+ if (dataModelMigrations.size() == 0)
+ return;
+
Boolean restartAndClearCaches = false;
// migrate data
/** Lazy init. */
protected File getHomeDirectory() {
- return homeDirectory;
- // if (home != null)
- // return home;
- //
- // try {
- // String osgiData = System.getProperty("osgi.instance.area");
- // if (osgiData != null)
- // osgiData = osgiData.substring("file:".length());
- // String path;
- // if (homeDirectory == null)
- // path = "./jackrabbit";
- // else
- // path = homeDirectory;
- // if (path.startsWith(".") && osgiData != null) {
- // home = new File(osgiData + '/' + path).getCanonicalFile();
- // } else
- // home = new File(path).getCanonicalFile();
- // return home;
- // } catch (Exception e) {
- // throw new ArgeoException("Cannot define Jackrabbit home based on "
- // + homeDirectory, e);
- // }
+ try {
+ return homeDirectory.getCanonicalFile();
+ } catch (IOException e) {
+ throw new ArgeoException("Cannot get canonical file for "
+ + homeDirectory, e);
+ }
}
public void dispose() throws Exception {
+ long begin = System.currentTimeMillis();
if (repository != null) {
if (repository instanceof JackrabbitRepository)
((JackrabbitRepository) repository).shutdown();
+ getHomeDirectory());
}
+ double duration = ((double) (System.currentTimeMillis() - begin)) / 1000;
if (uri != null && !uri.trim().equals(""))
log.info("Destroyed Jackrabbit repository with uri " + uri);
else
- log.info("Destroyed Jackrabbit repository " + repository + " in "
- + getHomeDirectory() + " with config " + configuration);
+ log.info("Destroyed Jackrabbit repository in " + duration
+ + " s, home: " + getHomeDirectory() + ", config "
+ + configuration);
}
/**
// JCR REPOSITORY (delegated)
public String getDescriptor(String key) {
- return repository.getDescriptor(key);
+ return getRepository().getDescriptor(key);
}
public String[] getDescriptorKeys() {
- return repository.getDescriptorKeys();
+ return getRepository().getDescriptorKeys();
}
public Session login() throws LoginException, RepositoryException {
- Session session = repository.login();
+ Session session = getRepository().login();
processNewSession(session);
return session;
}
RepositoryException {
Session session;
try {
- session = repository.login(credentials, workspaceName);
+ session = getRepository().login(credentials, workspaceName);
} catch (NoSuchWorkspaceException e) {
if (autocreateWorkspaces)
session = createWorkspaceAndLogsIn(credentials, workspaceName);
public Session login(Credentials credentials) throws LoginException,
RepositoryException {
- Session session = repository.login(credentials);
+ Session session = getRepository().login(credentials);
processNewSession(session);
return session;
}
NoSuchWorkspaceException, RepositoryException {
Session session;
try {
- session = repository.login(workspaceName);
+ session = getRepository().login(workspaceName);
} catch (NoSuchWorkspaceException e) {
if (autocreateWorkspaces)
session = createWorkspaceAndLogsIn(null, workspaceName);
return session;
}
+ /** Wraps access to the repository, making sure it is available. */
+ protected Repository getRepository() {
+ if (repository == null) {
+ throw new ArgeoException(
+ "No repository initialized."
+ + " Was the init() method called?"
+ + " The dispose() method should also be called on shutdown.");
+ }
+ return repository;
+ }
+
protected synchronized void processNewSession(Session session) {
try {
NamespaceHelper namespaceHelper = new NamespaceHelper(session);
String workspaceName) throws RepositoryException {
if (workspaceName == null)
throw new ArgeoException("No workspace specified.");
- Session session = repository.login(credentials);
+ Session session = getRepository().login(credentials);
session.getWorkspace().createWorkspace(workspaceName);
session.logout();
- return repository.login(credentials, workspaceName);
+ return getRepository().login(credentials, workspaceName);
}
public void setResourceLoader(ResourceLoader resourceLoader) {
}
public boolean isStandardDescriptor(String key) {
- return repository.isStandardDescriptor(key);
+ return getRepository().isStandardDescriptor(key);
}
public boolean isSingleValueDescriptor(String key) {
- return repository.isSingleValueDescriptor(key);
+ return getRepository().isSingleValueDescriptor(key);
}
public Value getDescriptorValue(String key) {
- return repository.getDescriptorValue(key);
+ return getRepository().getDescriptorValue(key);
}
public Value[] getDescriptorValues(String key) {
- return repository.getDescriptorValues(key);
+ return getRepository().getDescriptorValues(key);
}
// BEANS METHODS