001 /*
002 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003 *
004 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005 *
006 * The contents of this file are subject to the terms of either the GNU
007 * General Public License Version 2 only ("GPL") or the Common
008 * Development and Distribution License("CDDL") (collectively, the
009 * "License"). You may not use this file except in compliance with the
010 * License. You can obtain a copy of the License at
011 * http://www.netbeans.org/cddl-gplv2.html
012 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013 * specific language governing permissions and limitations under the
014 * License. When distributing the software, include this License Header
015 * Notice in each file and include the License file at
016 * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017 * particular file as subject to the "Classpath" exception as provided
018 * by Sun in the GPL Version 2 section of the License file that
019 * accompanied this code. If applicable, add the following below the
020 * License Header, with the fields enclosed by brackets [] replaced by
021 * your own identifying information:
022 * "Portions Copyrighted [year] [name of copyright owner]"
023 *
024 * Contributor(s):
025 *
026 * The Original Software is NetBeans. The Initial Developer of the Original
027 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028 * Microsystems, Inc. All Rights Reserved.
029 *
030 * If you wish your version of this file to be governed by only the CDDL
031 * or only the GPL Version 2, indicate your decision by adding
032 * "[Contributor] elects to include this software in this distribution
033 * under the [CDDL or GPL Version 2] license." If you do not indicate a
034 * single choice of license, a recipient has the option to distribute
035 * your version of this file under either the CDDL, the GPL Version 2 or
036 * to extend the choice of license to its licensees as provided above.
037 * However, if you add GPL Version 2 code and therefore, elected the GPL
038 * Version 2 license, then the option applies only if the new code is
039 * made subject to such option by the copyright holder.
040 */
041
042 package org.netbeans.modules.j2ee.deployment.plugins.spi.config;
043
044 import java.util.List;
045 import java.util.Set;
046 import org.netbeans.modules.j2ee.deployment.common.api.ConfigurationException;
047 import org.netbeans.modules.j2ee.deployment.common.api.MessageDestination;
048
049 /**
050 * Configuration useful for managing module message destinations.
051 * <p>
052 * Implementation of this interface should be registered in the {@link ModuleConfiguration}
053 * lookup.
054 *
055 * @since 1.25
056 * @author Libor Kotouc
057 */
058 public interface MessageDestinationConfiguration {
059
060 /**
061 * Retrieves message destinations stored in the module.
062 *
063 * @return set of message destinations
064 *
065 * @throws ConfigurationException if there is some problem with message destination configuration
066 */
067 public Set<MessageDestination> getMessageDestinations()
068 throws ConfigurationException;
069
070 /**
071 * Tests whether a message destination creation is supported.
072 *
073 * @return true if message destination creation is supported, false otherwise.
074 */
075 public boolean supportsCreateMessageDestination();
076
077 /**
078 * Creates and saves a message destination in the module if it does not exist in the module yet.
079 * Message destinations are considered to be equal if their JNDI names are equal.
080 *
081 * @param name name of the message destination
082 * @param type message destination type; the value is of
083 * org.netbeans.modules.j2ee.deployment.common.api.MessageDestination.Type type
084 * @return created message destination
085 *
086 * @throws UnsupportedOperationException if this opearation is not supported
087 * @throws ConfigurationException if there is some problem with message destination configuration
088 */
089 public MessageDestination createMessageDestination(String name,
090 MessageDestination.Type type)
091 throws UnsupportedOperationException,
092 ConfigurationException;
093
094 /**
095 * Binds the message destination name with message-driven bean.
096 *
097 * @param mdbName MDB name
098 * @param name name of the message destination
099 * @param type message destination type; the value is of
100 *
101 * @throws ConfigurationException if there is some problem with message destination configuration
102 */
103 public void bindMdbToMessageDestination(String mdbName,
104 String name, MessageDestination.Type type)
105 throws ConfigurationException;
106
107 /**
108 * Finds name of message destination which the given MDB listens to
109 *
110 * @param mdbName MDB name
111 * @return message destination name
112 *
113 * @throws ConfigurationException if there is some problem with message destination configuration
114 */
115 public String findMessageDestinationName(String mdbName)
116 throws ConfigurationException;
117
118 /**
119 * Binds the message destination reference name with the corresponding message destination which is
120 * identified by the given name.
121 *
122 * @param referenceName reference name used to identify the message destination
123 * @param connectionFactoryName connection factory name
124 * @param destName name of the message destination
125 * @param type message destination type
126 *
127 * @throws ConfigurationException if there is some problem with message destination configuration
128 */
129 public void bindMessageDestinationReference(String referenceName,
130 String connectionFactoryName, String destName,
131 MessageDestination.Type type) throws ConfigurationException;
132
133 /**
134 * Binds the message destination reference name with the corresponding message destination which is
135 * identified by the given name. The reference is used within the EJB scope.
136 *
137 * @param ejbName EJB name
138 * @param ejbType EJB type - the possible values are
139 * org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans.SESSION,
140 * org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans.ENTITY and
141 * org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans.MESSAGE_DRIVEN
142 * @param referenceName reference name used to identify the message destination
143 * @param connectionFactoryName connection factory name
144 * @param destName name of the message destination
145 * @param type message destination type
146 *
147 * @throws ConfigurationException if there is some problem with message destination configuration
148 */
149 public void bindMessageDestinationReferenceForEjb(String ejbName,
150 String ejbType, String referenceName,
151 String connectionFactoryName, String destName,
152 MessageDestination.Type type) throws ConfigurationException;
153
154 }
|