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.geronimo.common.DeploymentException;
024    import org.apache.geronimo.xbeans.javaee.EjbJarType;
025    import org.apache.geronimo.xbeans.javaee.EjbLocalRefType;
026    import org.apache.geronimo.xbeans.javaee.EjbRefType;
027    import org.apache.geronimo.xbeans.javaee.EntityBeanType;
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.MessageDrivenBeanType;
032    import org.apache.geronimo.xbeans.javaee.PersistenceContextRefType;
033    import org.apache.geronimo.xbeans.javaee.PersistenceUnitRefType;
034    import org.apache.geronimo.xbeans.javaee.ResourceEnvRefType;
035    import org.apache.geronimo.xbeans.javaee.ResourceRefType;
036    import org.apache.geronimo.xbeans.javaee.ServiceRefType;
037    import org.apache.geronimo.xbeans.javaee.SessionBeanType;
038    import org.apache.xmlbeans.XmlObject;
039    
040    /**
041     * Wrapper class to encapsulate the EjbJarType class with an interface that the various
042     * AnnotationHelpers can use
043     * <p/>
044     * <p><strong>Remaining ToDo(s):</strong>
045     * <ul>
046     * <li>None
047     * </ul>
048     *
049     * @version $Rev $Date
050     * @since Geronimo 2.0
051     */
052    public class AnnotatedEjbJar implements AnnotatedApp {
053    
054        private final EjbJarType ejbJar;
055        private List<EjbRefType> ambiguousEjbRefs;
056        private AnnotatedApp delegate;
057    
058    
059        public AnnotatedEjbJar(EjbJarType ejbJar) {
060            this.ejbJar = ejbJar;
061        }
062    
063        public void setBean(XmlObject bean) throws DeploymentException {
064            if (bean instanceof EntityBeanType) {
065                delegate = new EntityBean((EntityBeanType) bean);
066            } else if (bean instanceof MessageDrivenBeanType) {
067                delegate = new MessageDriveBean((MessageDrivenBeanType) bean);
068            } else if (bean instanceof SessionBeanType) {
069                delegate = new SessionBean((SessionBeanType) bean);
070            } else {
071                throw new DeploymentException("Unrecognized XmlBeans object: " + bean);
072            }
073        }
074    
075        /**
076         * EjbJarType methods used for the @EJB, @EJBs annotations
077         */
078        public EjbLocalRefType[] getEjbLocalRefArray() {
079            return delegate.getEjbLocalRefArray();
080        }
081    
082        public EjbLocalRefType addNewEjbLocalRef() {
083            return delegate.addNewEjbLocalRef();
084        }
085    
086        public EjbRefType[] getEjbRefArray() {
087            return delegate.getEjbRefArray();
088        }
089    
090        public EjbRefType addNewEjbRef() {
091            return delegate.addNewEjbRef();
092        }
093    
094    
095        /**
096         * EjbJarType methods used for the @Resource, @Resources annotations
097         */
098        public EnvEntryType[] getEnvEntryArray() {
099            return delegate.getEnvEntryArray();
100        }
101    
102        public EnvEntryType addNewEnvEntry() {
103            return delegate.addNewEnvEntry();
104        }
105    
106        public ServiceRefType[] getServiceRefArray() {
107            return delegate.getServiceRefArray();
108        }
109    
110        public ServiceRefType addNewServiceRef() {
111            return delegate.addNewServiceRef();
112        }
113    
114        public ResourceRefType[] getResourceRefArray() {
115            return delegate.getResourceRefArray();
116        }
117    
118        public ResourceRefType addNewResourceRef() {
119            return delegate.addNewResourceRef();
120        }
121    
122        public MessageDestinationRefType[] getMessageDestinationRefArray() {
123            return delegate.getMessageDestinationRefArray();
124        }
125    
126        public MessageDestinationRefType addNewMessageDestinationRef() {
127            return delegate.addNewMessageDestinationRef();
128        }
129    
130        public ResourceEnvRefType[] getResourceEnvRefArray() {
131            return delegate.getResourceEnvRefArray();
132        }
133    
134        public ResourceEnvRefType addNewResourceEnvRef() {
135            return delegate.addNewResourceEnvRef();
136        }
137    
138        public LifecycleCallbackType[] getPostConstructArray() {
139            return delegate.getPostConstructArray();
140        }
141    
142        public LifecycleCallbackType addPostConstruct() {
143            return delegate.addPostConstruct();
144        }
145    
146        public LifecycleCallbackType[] getPreDestroyArray() {
147            return delegate.getPreDestroyArray();
148        }
149    
150        public LifecycleCallbackType addPreDestroy() {
151            return delegate.addPreDestroy();
152        }
153    
154        public PersistenceContextRefType[] getPersistenceContextRefArray() {
155            return delegate.getPersistenceContextRefArray();
156        }
157    
158        public PersistenceContextRefType addNewPersistenceContextRef() {
159            return delegate.addNewPersistenceContextRef();
160        }
161    
162        public PersistenceUnitRefType[] getPersistenceUnitRefArray() {
163            return delegate.getPersistenceUnitRefArray();
164        }
165    
166        public PersistenceUnitRefType addNewPersistenceUnitRef() {
167            return delegate.addNewPersistenceUnitRef();
168        }
169    
170        public String getComponentType() {
171            return null;
172        }
173    
174        /**
175         * ejbJar getter
176         *
177         * @return String representation of ejbJar
178         */
179        public String toString() {
180            return ejbJar.xmlText();
181        }
182    
183    
184        public EjbJarType getEjbJar() {
185            return ejbJar;
186        }
187    
188        /**
189         * ambiguousRefs getter
190         * <p/>
191         * <p>There is no corresponding setter method. To add a new item to the list do:
192         * <pre>
193         *    getAmbiguousEjbRefs().add(ejbRef);
194         * </pre>
195         *
196         * @return ambiguousRefs list
197         */
198        public List<EjbRefType> getAmbiguousEjbRefs() {
199            if (ambiguousEjbRefs == null) {
200                ambiguousEjbRefs = new ArrayList<EjbRefType>();
201            }
202            return this.ambiguousEjbRefs;
203        }
204    
205        public static class EntityBean implements AnnotatedApp {
206            private final EntityBeanType bean;
207    
208    
209            public EntityBean(EntityBeanType bean) {
210                this.bean = bean;
211            }
212    
213            public EjbLocalRefType[] getEjbLocalRefArray() {
214                return bean.getEjbLocalRefArray();
215            }
216    
217    
218            public EjbLocalRefType addNewEjbLocalRef() {
219                return bean.addNewEjbLocalRef();
220            }
221    
222    
223            public EjbRefType[] getEjbRefArray() {
224                return bean.getEjbRefArray();
225            }
226    
227    
228            public EjbRefType addNewEjbRef() {
229                return bean.addNewEjbRef();
230            }
231    
232    
233            public EnvEntryType[] getEnvEntryArray() {
234                return bean.getEnvEntryArray();
235            }
236    
237    
238            public EnvEntryType addNewEnvEntry() {
239                return bean.addNewEnvEntry();
240            }
241    
242    
243            public ServiceRefType[] getServiceRefArray() {
244                return bean.getServiceRefArray();
245            }
246    
247    
248            public ServiceRefType addNewServiceRef() {
249                return bean.addNewServiceRef();
250            }
251    
252    
253            public ResourceRefType[] getResourceRefArray() {
254                return bean.getResourceRefArray();
255            }
256    
257    
258            public ResourceRefType addNewResourceRef() {
259                return bean.addNewResourceRef();
260            }
261    
262    
263            public MessageDestinationRefType[] getMessageDestinationRefArray() {
264                return bean.getMessageDestinationRefArray();
265            }
266    
267    
268            public MessageDestinationRefType addNewMessageDestinationRef() {
269                return bean.addNewMessageDestinationRef();
270            }
271    
272    
273            public ResourceEnvRefType[] getResourceEnvRefArray() {
274                return bean.getResourceEnvRefArray();
275            }
276    
277    
278            public ResourceEnvRefType addNewResourceEnvRef() {
279                return bean.addNewResourceEnvRef();
280            }
281    
282    
283            public String toString() {
284                return bean.xmlText();
285            }
286    
287            public List<EjbRefType> getAmbiguousEjbRefs() {
288                throw new AssertionError("don't call this");
289            }
290    
291    
292            public LifecycleCallbackType[] getPostConstructArray() {
293                return bean.getPostConstructArray();
294            }
295    
296    
297            public LifecycleCallbackType addPostConstruct() {
298                return bean.addNewPostConstruct();
299            }
300    
301    
302            public LifecycleCallbackType[] getPreDestroyArray() {
303                return bean.getPreDestroyArray();
304            }
305    
306    
307            public LifecycleCallbackType addPreDestroy() {
308                return bean.addNewPreDestroy();
309            }
310    
311    
312            public PersistenceContextRefType[] getPersistenceContextRefArray() {
313                return bean.getPersistenceContextRefArray();
314            }
315    
316    
317            public PersistenceContextRefType addNewPersistenceContextRef() {
318                return bean.addNewPersistenceContextRef();
319            }
320    
321    
322            public PersistenceUnitRefType[] getPersistenceUnitRefArray() {
323                return bean.getPersistenceUnitRefArray();
324            }
325    
326    
327            public PersistenceUnitRefType addNewPersistenceUnitRef() {
328                return bean.addNewPersistenceUnitRef();
329            }
330    
331            public String getComponentType() {
332                return bean.getEjbClass().getStringValue().trim();
333            }
334        }
335    
336        public static class MessageDriveBean implements AnnotatedApp {
337            private final MessageDrivenBeanType bean;
338    
339    
340            public MessageDriveBean(MessageDrivenBeanType bean) {
341                this.bean = bean;
342            }
343    
344    
345            public EjbLocalRefType[] getEjbLocalRefArray() {
346                return bean.getEjbLocalRefArray();
347            }
348    
349    
350            public EjbLocalRefType addNewEjbLocalRef() {
351                return bean.addNewEjbLocalRef();
352            }
353    
354    
355            public EjbRefType[] getEjbRefArray() {
356                return bean.getEjbRefArray();
357            }
358    
359    
360            public EjbRefType addNewEjbRef() {
361                return bean.addNewEjbRef();
362            }
363    
364    
365            public EnvEntryType[] getEnvEntryArray() {
366                return bean.getEnvEntryArray();
367            }
368    
369    
370            public EnvEntryType addNewEnvEntry() {
371                return bean.addNewEnvEntry();
372            }
373    
374    
375            public ServiceRefType[] getServiceRefArray() {
376                return bean.getServiceRefArray();
377            }
378    
379    
380            public ServiceRefType addNewServiceRef() {
381                return bean.addNewServiceRef();
382            }
383    
384    
385            public ResourceRefType[] getResourceRefArray() {
386                return bean.getResourceRefArray();
387            }
388    
389    
390            public ResourceRefType addNewResourceRef() {
391                return bean.addNewResourceRef();
392            }
393    
394    
395            public MessageDestinationRefType[] getMessageDestinationRefArray() {
396                return bean.getMessageDestinationRefArray();
397            }
398    
399    
400            public MessageDestinationRefType addNewMessageDestinationRef() {
401                return bean.addNewMessageDestinationRef();
402            }
403    
404    
405            public ResourceEnvRefType[] getResourceEnvRefArray() {
406                return bean.getResourceEnvRefArray();
407            }
408    
409    
410            public ResourceEnvRefType addNewResourceEnvRef() {
411                return bean.addNewResourceEnvRef();
412            }
413    
414    
415            public String toString() {
416                return bean.xmlText();
417            }
418    
419            public List<EjbRefType> getAmbiguousEjbRefs() {
420                throw new AssertionError("don't call this");
421            }
422    
423    
424            public LifecycleCallbackType[] getPostConstructArray() {
425                return bean.getPostConstructArray();
426            }
427    
428    
429            public LifecycleCallbackType addPostConstruct() {
430                return bean.addNewPostConstruct();
431            }
432    
433    
434            public LifecycleCallbackType[] getPreDestroyArray() {
435                return bean.getPreDestroyArray();
436            }
437    
438    
439            public LifecycleCallbackType addPreDestroy() {
440                return bean.addNewPreDestroy();
441            }
442    
443    
444            public PersistenceContextRefType[] getPersistenceContextRefArray() {
445                return bean.getPersistenceContextRefArray();
446            }
447    
448    
449            public PersistenceContextRefType addNewPersistenceContextRef() {
450                return bean.addNewPersistenceContextRef();
451            }
452    
453    
454            public PersistenceUnitRefType[] getPersistenceUnitRefArray() {
455                return bean.getPersistenceUnitRefArray();
456            }
457    
458    
459            public PersistenceUnitRefType addNewPersistenceUnitRef() {
460                return bean.addNewPersistenceUnitRef();
461            }
462    
463            public String getComponentType() {
464                return bean.getEjbClass().getStringValue().trim();
465            }
466        }
467    
468        public static class SessionBean implements AnnotatedApp {
469            private final SessionBeanType bean;
470    
471    
472            public SessionBean(SessionBeanType bean) {
473                this.bean = bean;
474            }
475    
476    
477            public EjbLocalRefType[] getEjbLocalRefArray() {
478                return bean.getEjbLocalRefArray();
479            }
480    
481    
482            public EjbLocalRefType addNewEjbLocalRef() {
483                return bean.addNewEjbLocalRef();
484            }
485    
486    
487            public EjbRefType[] getEjbRefArray() {
488                return bean.getEjbRefArray();
489            }
490    
491    
492            public EjbRefType addNewEjbRef() {
493                return bean.addNewEjbRef();
494            }
495    
496    
497            public EnvEntryType[] getEnvEntryArray() {
498                return bean.getEnvEntryArray();
499            }
500    
501    
502            public EnvEntryType addNewEnvEntry() {
503                return bean.addNewEnvEntry();
504            }
505    
506    
507            public ServiceRefType[] getServiceRefArray() {
508                return bean.getServiceRefArray();
509            }
510    
511    
512            public ServiceRefType addNewServiceRef() {
513                return bean.addNewServiceRef();
514            }
515    
516    
517            public ResourceRefType[] getResourceRefArray() {
518                return bean.getResourceRefArray();
519            }
520    
521    
522            public ResourceRefType addNewResourceRef() {
523                return bean.addNewResourceRef();
524            }
525    
526    
527            public MessageDestinationRefType[] getMessageDestinationRefArray() {
528                return bean.getMessageDestinationRefArray();
529            }
530    
531    
532            public MessageDestinationRefType addNewMessageDestinationRef() {
533                return bean.addNewMessageDestinationRef();
534            }
535    
536    
537            public ResourceEnvRefType[] getResourceEnvRefArray() {
538                return bean.getResourceEnvRefArray();
539            }
540    
541    
542            public ResourceEnvRefType addNewResourceEnvRef() {
543                return bean.addNewResourceEnvRef();
544            }
545    
546    
547            public String toString() {
548                return bean.xmlText();
549            }
550    
551            public List<EjbRefType> getAmbiguousEjbRefs() {
552                throw new AssertionError("don't call this");
553            }
554    
555    
556            public LifecycleCallbackType[] getPostConstructArray() {
557                return bean.getPostConstructArray();
558            }
559    
560    
561            public LifecycleCallbackType addPostConstruct() {
562                return bean.addNewPostConstruct();
563            }
564    
565    
566            public LifecycleCallbackType[] getPreDestroyArray() {
567                return bean.getPreDestroyArray();
568            }
569    
570    
571            public LifecycleCallbackType addPreDestroy() {
572                return bean.addNewPreDestroy();
573            }
574    
575    
576            public PersistenceContextRefType[] getPersistenceContextRefArray() {
577                return bean.getPersistenceContextRefArray();
578            }
579    
580    
581            public PersistenceContextRefType addNewPersistenceContextRef() {
582                return bean.addNewPersistenceContextRef();
583            }
584    
585    
586            public PersistenceUnitRefType[] getPersistenceUnitRefArray() {
587                return bean.getPersistenceUnitRefArray();
588            }
589    
590    
591            public PersistenceUnitRefType addNewPersistenceUnitRef() {
592                return bean.addNewPersistenceUnitRef();
593            }
594    
595            public String getComponentType() {
596                return bean.getEjbClass().getStringValue().trim();
597            }
598        }
599    }