package pt.ist.fenixframework.backend.fenixjvstm;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import pt.ist.fenixframework.DomainObject;
import pt.ist.fenixframework.DomainRoot;
import pt.ist.fenixframework.TransactionManager;
import pt.ist.fenixframework.backend.BackEnd;
import pt.ist.fenixframework.core.SharedIdentityMap;
public class FenixJvstmBackEnd implements BackEnd {
private static final Logger logger = Logger.getLogger(FenixJvstmBackEnd.class);
private static final String BACKEND_NAME = "fenixjvstm";
private final TransactionManager transactionManager;
public FenixJvstmBackEnd() {
transactionManager = new FenixJvstmTransactionManager();
}
@Override
public <T extends DomainObject> T fromOid(Object oid) {
if (logger.isEnabledFor(Level.TRACE)) {
logger.trace("fromOid(" + oid + ")");
}
return (T) SharedIdentityMap.getCache().lookup(oid);
}
@Override
public <T extends DomainObject> T getDomainObject(String externalId) {
return fromOid(Long.parseLong(externalId));
}
@Override
public DomainRoot getDomainRoot() {
DomainRoot root = fromOid(1L);
if (root == null) {
root = new DomainRoot();
root = fromOid(1L);
assert root != null;
}
return root;
}
@Override
public String getName() {
return BACKEND_NAME;
}
@Override
public TransactionManager getTransactionManager() {
return transactionManager;
}
@Override
public void shutdown() {
}
}