private String cipherName = DEFAULT_CIPHER_NAME;
private final Repository repository;
+ // TODO remove thread local session ; open a session each time
private ThreadLocal<Session> sessionThreadLocal = new ThreadLocal<Session>() {
@Override
* handling the PBE callback. We keep one per thread in case multiple users are
* accessing the same instance of a keyring.
*/
-// private ThreadLocal<Node> notYetSavedKeyring = new ThreadLocal<Node>() {
-//
-// @Override
-// protected Node initialValue() {
-// return null;
-// }
-// };
+ // private ThreadLocal<Node> notYetSavedKeyring = new ThreadLocal<Node>() {
+ //
+ // @Override
+ // protected Node initialValue() {
+ // return null;
+ // }
+ // };
public JcrKeyring(Repository repository) {
this.repository = repository;
@Override
protected synchronized Boolean isSetup() {
+ Session session = null;
try {
-// if (notYetSavedKeyring.get() != null)
-// return true;
-
- session().refresh(true);
- Node userHome = NodeUtils.getUserHome(session());
+ // if (notYetSavedKeyring.get() != null)
+ // return true;
+ session = session();
+ session.refresh(true);
+ Node userHome = NodeUtils.getUserHome(session);
return userHome.hasNode(ARGEO_KEYRING);
} catch (RepositoryException e) {
throw new ArgeoJcrException("Cannot check whether keyring is setup", e);
+ } finally {
+ JcrUtils.logoutQuietly(session);
}
}
// binary = session().getValueFactory().createBinary(in);
// keyring.setProperty(ARGEO_PASSWORD, binary);
-// notYetSavedKeyring.set(keyring);
+ // notYetSavedKeyring.set(keyring);
} catch (Exception e) {
throw new ArgeoJcrException("Cannot setup keyring", e);
} finally {
@Override
protected synchronized void handleKeySpecCallback(PBEKeySpecCallback pbeCallback) {
+ Session session = null;
try {
- session().refresh(true);
- Node userHome = NodeUtils.getUserHome(session());
+ session = session();
+ session.refresh(true);
+ Node userHome = NodeUtils.getUserHome(session);
Node keyring;
if (userHome.hasNode(ARGEO_KEYRING))
keyring = userHome.getNode(ARGEO_KEYRING);
-// else if (notYetSavedKeyring.get() != null)
-// keyring = notYetSavedKeyring.get();
+ // else if (notYetSavedKeyring.get() != null)
+ // keyring = notYetSavedKeyring.get();
else
throw new ArgeoJcrException("Keyring not setup");
(int) keyring.getProperty(ARGEO_KEY_LENGTH).getLong(),
keyring.getProperty(ARGEO_SECRET_KEY_ENCRYPTION).getString());
-// if (notYetSavedKeyring.get() != null)
-// notYetSavedKeyring.remove();
+ // if (notYetSavedKeyring.get() != null)
+ // notYetSavedKeyring.remove();
} catch (RepositoryException e) {
throw new ArgeoJcrException("Cannot handle key spec callback", e);
+ } finally {
+ JcrUtils.logoutQuietly(session);
}
}