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.List;
021    
022    import org.apache.geronimo.xbeans.javaee.EjbLocalRefType;
023    import org.apache.geronimo.xbeans.javaee.EjbRefType;
024    import org.apache.geronimo.xbeans.javaee.EnvEntryType;
025    import org.apache.geronimo.xbeans.javaee.LifecycleCallbackType;
026    import org.apache.geronimo.xbeans.javaee.MessageDestinationRefType;
027    import org.apache.geronimo.xbeans.javaee.PersistenceContextRefType;
028    import org.apache.geronimo.xbeans.javaee.PersistenceUnitRefType;
029    import org.apache.geronimo.xbeans.javaee.ResourceEnvRefType;
030    import org.apache.geronimo.xbeans.javaee.ResourceRefType;
031    import org.apache.geronimo.xbeans.javaee.ServiceRefType;
032    
033    /**
034     * Many of the classes generated from the JEE schemas have methods with identical signatures (see
035     * examples below). This interface can be used to encapsulate those methods so that the various
036     * AnnotationHelper classes can use the same code for multiple application types (e.g. WebAppType,
037     * ApplicationClientType, etc).
038     * <p/>
039     * <p><strong>Example(s):</strong>
040     * <pre>
041     *      public interface ApplicationClientType extends org.apache.xmlbeans.XmlObject {
042     *          org.apache.geronimo.xbeans.javaee.EnvEntryType[] getEnvEntryArray();
043     *          org.apache.geronimo.xbeans.javaee.ResourceRefType[] getResourceRefArray();
044     *      }
045     * <p/>
046     *      public interface WebAppType extends org.apache.xmlbeans.XmlObject {
047     *          org.apache.geronimo.xbeans.javaee.EnvEntryType[] getEnvEntryArray();
048     *          org.apache.geronimo.xbeans.javaee.ResourceRefType[] getResourceRefArray();
049     *      }
050     * </pre>
051     * <p/>
052     * <p><strong>Remaining ToDo(s):</strong>
053     * <ul>
054     * <li>None
055     * </ul>
056     *
057     * @version $Rev $Date
058     * @since Geronimo 2.0
059     */
060    public interface AnnotatedApp {
061    
062        /**
063         * XmlBeans methods used for the @EJB, @EJBs annotations
064         */
065        EjbLocalRefType[] getEjbLocalRefArray();
066    
067        EjbLocalRefType addNewEjbLocalRef();
068    
069        EjbRefType[] getEjbRefArray();
070    
071        EjbRefType addNewEjbRef();
072    
073    
074        /**
075         * XmlBeans methods used for the @Resource, @Resources annotations
076         */
077        EnvEntryType[] getEnvEntryArray();
078    
079        EnvEntryType addNewEnvEntry();
080    
081        ServiceRefType[] getServiceRefArray();
082    
083        ServiceRefType addNewServiceRef();
084    
085        ResourceRefType[] getResourceRefArray();
086    
087        ResourceRefType addNewResourceRef();
088    
089        MessageDestinationRefType[] getMessageDestinationRefArray();
090    
091        MessageDestinationRefType addNewMessageDestinationRef();
092    
093        ResourceEnvRefType[] getResourceEnvRefArray();
094    
095        ResourceEnvRefType addNewResourceEnvRef();
096    
097    
098        /**
099         * ApplicationType getter in string format
100         *
101         * @return String representation of ApplicationType
102         */
103        String toString();
104    
105    
106        /**
107         * ambiguousRefs getter
108         * <p/>
109         * <p>There is no corresponding setter method. To add a new item to the list do this:
110         * <p/>
111         * <pre>
112         *    getAmbiguousEjbRefs().add(ejbRef);
113         * </pre>
114         *
115         * @return ambiguousRefs list
116         */
117        List<EjbRefType> getAmbiguousEjbRefs();
118    
119        LifecycleCallbackType[] getPostConstructArray();
120        LifecycleCallbackType addPostConstruct();
121    
122        LifecycleCallbackType[] getPreDestroyArray();
123        LifecycleCallbackType addPreDestroy();
124    
125        PersistenceContextRefType[] getPersistenceContextRefArray();
126        PersistenceContextRefType addNewPersistenceContextRef();
127    
128        PersistenceUnitRefType[] getPersistenceUnitRefArray();
129        PersistenceUnitRefType addNewPersistenceUnitRef();
130    
131        String getComponentType();
132    }