/*
* Copyright 2007-2010 Sun Microsystems, Inc.
*
* This file is part of Project Darkstar Server.
*
* Project Darkstar Server is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation and
* distributed hereunder to you.
*
* Project Darkstar Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*/
package com.sun.sgs.impl.kernel;
import com.sun.sgs.auth.Identity;
import com.sun.sgs.service.Service;
import com.sun.sgs.service.Transaction;
import com.sun.sgs.service.TransactionProxy;
/**
* This is a proxy that provides access to the currently active
* <code>Transaction</code> and its owner. Because <code>Service</code>s are
* the only components outside of the kernel that should have visibility into
* this state, they are the only components in the system that are provided
* a reference to the usable proxy.
*/
final class TransactionProxyImpl implements TransactionProxy {
/**
* This package-private constructor creates a new instance of
* <code>TransactionProxyImpl</code>. It is package-private so that
* only the kernel components can create instances for access to the
* current <code>Transaction</code>.
*/
TransactionProxyImpl() {
}
/**
* {@inheritDoc}
*/
public Transaction getCurrentTransaction() {
return ContextResolver.getCurrentTransaction();
}
/**
* {@inheritDoc}
*/
public boolean inTransaction() {
return ContextResolver.inTransaction();
}
/**
* {@inheritDoc}
*/
public Identity getCurrentOwner() {
return ContextResolver.getCurrentOwner();
}
/**
* {@inheritDoc}
*/
public <T extends Service> T getService(Class<T> type) {
return ContextResolver.getContext().getService(type);
}
}