/*
 * JBoss, Home of Professional Open Source
 * Copyright 2007, Red Hat Middleware LLC, and individual contributors
 * as indicated by the @author tags.
 * See the copyright.txt in the distribution for a full listing
 * of individual contributors.
 * This copyrighted material is made available to anyone wishing to use,
 * modify, copy, or redistribute it subject to the terms and conditions
 * of the GNU General Public License, v. 2.0.
 * This program is distributed in the hope that it will be useful, but WITHOUT A
 * 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,
 * v. 2.0 along with this distribution; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 *
 * (C) 2007,
 * @author JBoss Inc.
 */
package org.jboss.txbridge.ba.service;

import org.jboss.txbridge.ba.annotation.DataMatch;
import org.jboss.txbridge.ba.annotation.ExecutionMode;
import org.jboss.txbridge.ba.annotation.ParameterMatch;

/**
 * @author Maciej P. Machulak (mmachulak@redhat.com)
 * @version 0.1
 *
 * // TODO: Redesign that!
 */
public interface MethodDescription
{
    Class getClazz();

    void setClazz(Class clazz);

    String getMethodName();

    void setMethodName(String methodName);

    String getWebMethodName();

    void setWebMethodName(String webMethodName);

    Class[] getParameterTypes();

    void setParameterTypes(Class[] parameterTypes);

    Object[] getParameterAnnotations();

    void setParameterAnnotations(Object[] parameterAnnotations);

    Object getReturnId();

    void setReturnId(Object returnId);

    Class getReturnType();

    void setReturnType(Class returnType);

    String getJndiName();

    void setJndiName(String jndiName);

    Class getEjbInterface();

    void setEjbInterface(Class ejbInterface);

    String getProviderURL();

    void setProviderURL(String providerURL);

    boolean isSingle();

    void setSingle(boolean value);

    DataMatch getDataMatch();

    void setDataMatch(DataMatch compensationType);

    public ExecutionMode getExecutionMode();

    public void setExecutionMode(ExecutionMode compensationMode);

    public ParameterMatch getParameterMatch();

    public void setParameterMatch(ParameterMatch parameterMatch);

}
