AtomikosTransModule.java

/*
 * Copyright (c) Steven P. Goldsmith. All rights reserved.
 *
 * Created by Steven P. Goldsmith on December 24, 2011
 * sgoldsmith@com.codeferm
 */
package com.codeferm.dbaccess.transaction;

import com.google.inject.AbstractModule;
import com.google.inject.matcher.Matchers;

/**
 * Binds {@link com.codeferm.dbaccess.transaction.AtomikosTransInterceptor} in the
 * Guice module for methods annotated with
 * {@link com.codeferm.dbaccess.transaction.Transaction}.
 *
 * @see com.codeferm.dbaccess.transaction.Transaction
 * @see com.codeferm.dbaccess.transaction.AtomikosTransInterceptor
 * @see com.codeferm.dbaccess.transaction.TransactionFactory
 *
 * @author sgoldsmith
 * @version 1.0.0
 * @since 1.0.0
 */
public final class AtomikosTransModule extends AbstractModule {

    /**
     * Inject transaction interceptor annotated with Transaction.
     */
    @Override
    protected void configure() {
        final AtomikosTransInterceptor interceptor = new AtomikosTransInterceptor();
        // Request injection of AtomikosTransInterceptor
        requestInjection(interceptor);
        // Match all methods of class with @Transaction annotation
        bindInterceptor(Matchers.any(),
                Matchers.annotatedWith(Transaction.class), interceptor);
    }
}