import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.ArgeoException;
/** Proxy JCR sessions and attach them to calling threads. */
@Deprecated
public abstract class ThreadBoundJcrSessionFactory {
- private final static Log log = LogFactory
- .getLog(ThreadBoundJcrSessionFactory.class);
+ private final static Log log = LogFactory.getLog(ThreadBoundJcrSessionFactory.class);
private Repository repository;
/** can be injected as list, only used if repository is null */
private boolean active = true;
// monitoring
- private final List<Thread> threads = Collections
- .synchronizedList(new ArrayList<Thread>());
- private final Map<Long, Session> activeSessions = Collections
- .synchronizedMap(new HashMap<Long, Session>());
+ private final List<Thread> threads = Collections.synchronizedList(new ArrayList<Thread>());
+ private final Map<Long, Session> activeSessions = Collections.synchronizedMap(new HashMap<Long, Session>());
private MonitoringThread monitoringThread;
public ThreadBoundJcrSessionFactory() {
Class<?>[] interfaces = { Session.class };
- proxiedSession = (Session) Proxy.newProxyInstance(
- ThreadBoundJcrSessionFactory.class.getClassLoader(),
+ proxiedSession = (Session) Proxy.newProxyInstance(ThreadBoundJcrSessionFactory.class.getClassLoader(),
interfaces, new JcrSessionInvocationHandler());
}
/** Logs in to the repository using various strategies. */
protected synchronized Session login() {
if (!isActive())
- throw new ArgeoException("Thread bound session factory inactive");
+ throw new ArgeoJcrException("Thread bound session factory inactive");
// discard session previously attached to this thread
Thread thread = Thread.currentThread();
// invalid credentials, go to the next step
} catch (RepositoryException e1) {
// other kind of exception, fail
- throw new ArgeoException("Cannot log in to repository", e1);
+ throw new ArgeoJcrException("Cannot log in to repository", e1);
}
// log using default username / password (useful for testing purposes)
if (newSession == null)
try {
- SimpleCredentials sc = new SimpleCredentials(defaultUsername,
- defaultPassword.toCharArray());
+ SimpleCredentials sc = new SimpleCredentials(defaultUsername, defaultPassword.toCharArray());
newSession = repository().login(sc, workspace);
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot log in to repository", e);
+ throw new ArgeoJcrException("Cannot log in to repository", e);
}
session.set(newSession);
// Log and monitor new session
if (log.isTraceEnabled())
- log.trace("Logged in to JCR session " + newSession + "; userId="
- + newSession.getUserID());
+ log.trace("Logged in to JCR session " + newSession + "; userId=" + newSession.getUserID());
// monitoring
activeSessions.put(thread.getId(), newSession);
}
public void init() throws Exception {
+ // log.error("SHOULD NOT BE USED ANYMORE");
monitoringThread = new MonitoringThread();
monitoringThread.start();
}
// return;
if (log.isTraceEnabled())
- log.trace("Cleaning up " + activeSessions.size()
- + " active JCR sessions...");
+ log.trace("Cleaning up " + activeSessions.size() + " active JCR sessions...");
deactivate();
for (Session sess : activeSessions.values()) {
activeSessions.remove(thread.getId());
session.logout();
if (log.isTraceEnabled())
- log.trace("Cleaned up JCR session (userID="
- + session.getUserID() + ") from dead thread "
+ log.trace("Cleaned up JCR session (userID=" + session.getUserID() + ") from dead thread "
+ thread.getId());
}
it.remove();
if (it.hasNext())
return it.next();
}
- throw new ArgeoException("No repository injected");
+ throw new ArgeoJcrException("No repository injected");
}
// /** Useful for declarative registration of OSGi services (blueprint) */
protected class JcrSessionInvocationHandler implements InvocationHandler {
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable, RepositoryException {
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable, RepositoryException {
Session threadSession = session.get();
if (threadSession == null) {
if ("logout".equals(method.getName()))// no need to login
Thread thread = Thread.currentThread();
removeSession(thread);
if (log.isTraceEnabled())
- log.trace("Logged out JCR session (userId="
- + threadSession.getUserID() + ") on thread "
+ log.trace("Logged out JCR session (userId=" + threadSession.getUserID() + ") on thread "
+ thread.getId());
}
return ret;