001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.j2ee.deployment.annotation;
019
020 import java.util.ArrayList;
021 import java.util.List;
022
023 import org.apache.commons.logging.Log;
024 import org.apache.commons.logging.LogFactory;
025 import org.apache.geronimo.xbeans.javaee.ApplicationClientType;
026 import org.apache.geronimo.xbeans.javaee.EjbLocalRefType;
027 import org.apache.geronimo.xbeans.javaee.EjbRefType;
028 import org.apache.geronimo.xbeans.javaee.EnvEntryType;
029 import org.apache.geronimo.xbeans.javaee.LifecycleCallbackType;
030 import org.apache.geronimo.xbeans.javaee.MessageDestinationRefType;
031 import org.apache.geronimo.xbeans.javaee.PersistenceContextRefType;
032 import org.apache.geronimo.xbeans.javaee.PersistenceUnitRefType;
033 import org.apache.geronimo.xbeans.javaee.ResourceEnvRefType;
034 import org.apache.geronimo.xbeans.javaee.ResourceRefType;
035 import org.apache.geronimo.xbeans.javaee.ServiceRefType;
036
037 /**
038 * Wrapper class to encapsulate the ApplicationClientType class with an interface that the various
039 * AnnotationHelpers can use
040 * <p/>
041 * <p/>
042 * <p><strong>Remaining ToDo(s):</strong>
043 * <ul>
044 * <li>Can AppClients have unresolved EJB references ??
045 * </ul>
046 *
047 * @version $Rev $Date
048 * @since Geronimo 2.0
049 */
050 public class AnnotatedApplicationClient implements AnnotatedApp {
051
052 // Private instance variables
053 private static final Log log = LogFactory.getLog(AnnotatedApplicationClient.class);
054 private final ApplicationClientType applicationClient;
055 private List<EjbRefType> ambiguousEjbRefs;
056 private final String componentType;
057
058 /**
059 * ApplicationClientType-qualified constructor
060 *
061 * @param applicationClient ApplicationClientType
062 * @param applicationClientClassName
063 */
064 public AnnotatedApplicationClient(ApplicationClientType applicationClient, String applicationClientClassName) {
065 this.applicationClient = applicationClient;
066 this.componentType = applicationClientClassName;
067 }
068
069
070 /**
071 * ApplicationClientType methods used for the @EJB, @EJBs annotations
072 */
073 public EjbLocalRefType[] getEjbLocalRefArray() {
074 return null; // Not supported by app clients
075 }
076
077 public EjbLocalRefType addNewEjbLocalRef() {
078 return null; // Not supported by app clients
079 }
080
081 public EjbRefType[] getEjbRefArray() {
082 return applicationClient.getEjbRefArray();
083 }
084
085 public EjbRefType addNewEjbRef() {
086 return applicationClient.addNewEjbRef();
087 }
088
089
090 /**
091 * ApplicationClientType methods used for the @Resource, @Resources annotations
092 */
093 public EnvEntryType[] getEnvEntryArray() {
094 return applicationClient.getEnvEntryArray();
095 }
096
097 public EnvEntryType addNewEnvEntry() {
098 return applicationClient.addNewEnvEntry();
099 }
100
101 public ServiceRefType[] getServiceRefArray() {
102 return applicationClient.getServiceRefArray();
103 }
104
105 public ServiceRefType addNewServiceRef() {
106 return applicationClient.addNewServiceRef();
107 }
108
109 public ResourceRefType[] getResourceRefArray() {
110 return applicationClient.getResourceRefArray();
111 }
112
113 public ResourceRefType addNewResourceRef() {
114 return applicationClient.addNewResourceRef();
115 }
116
117 public MessageDestinationRefType[] getMessageDestinationRefArray() {
118 return applicationClient.getMessageDestinationRefArray();
119 }
120
121 public MessageDestinationRefType addNewMessageDestinationRef() {
122 return applicationClient.addNewMessageDestinationRef();
123 }
124
125 public ResourceEnvRefType[] getResourceEnvRefArray() {
126 return applicationClient.getResourceEnvRefArray();
127 }
128
129 public ResourceEnvRefType addNewResourceEnvRef() {
130 return applicationClient.addNewResourceEnvRef();
131 }
132
133
134 /**
135 * applicationClient getter
136 *
137 * @return String representation of applicationClient
138 */
139 public String toString() {
140 return applicationClient.toString();
141 }
142
143
144 /**
145 * applicationClient getter
146 *
147 * @return applicationClient ApplicationClientType
148 */
149 public ApplicationClientType getApplicationClient() {
150 return applicationClient;
151 }
152
153
154 /**
155 * ambiguousRefs getter
156 * <p/>
157 * <p>There is no corresponding setter method. To add a new item to the list do:
158 * <pre>
159 * getAmbiguousEjbRefs().add(ejbRef);
160 * </pre>
161 *
162 * @return ambiguousRefs list
163 */
164 public List<EjbRefType> getAmbiguousEjbRefs() {
165 if (ambiguousEjbRefs == null) {
166 ambiguousEjbRefs = new ArrayList<EjbRefType>();
167 }
168 return this.ambiguousEjbRefs;
169 }
170
171 public LifecycleCallbackType[] getPostConstructArray() {
172 return applicationClient.getPostConstructArray();
173 }
174
175 public LifecycleCallbackType addPostConstruct() {
176 return applicationClient.addNewPostConstruct();
177 }
178
179 public LifecycleCallbackType[] getPreDestroyArray() {
180 return applicationClient.getPreDestroyArray();
181 }
182
183 public LifecycleCallbackType addPreDestroy() {
184 return applicationClient.addNewPreDestroy();
185 }
186
187 public PersistenceContextRefType[] getPersistenceContextRefArray() {
188 return null; // Not supported by app clients
189 }
190
191 public PersistenceContextRefType addNewPersistenceContextRef() {
192 return null; // Not supported by app clients
193 }
194
195 public PersistenceUnitRefType[] getPersistenceUnitRefArray() {
196 return applicationClient.getPersistenceUnitRefArray();
197 }
198
199 public PersistenceUnitRefType addNewPersistenceUnitRef() {
200 return applicationClient.addNewPersistenceUnitRef();
201 }
202
203 public String getComponentType() {
204 return componentType;
205 }
206
207 }