KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > enterprise > ddgenerator > sun > Application


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * https://glassfish.dev.java.net/public/CDDLv1.0.html or
9  * glassfish/bootstrap/legal/CDDLv1.0.txt.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * Header Notice in each file and include the License file
15  * at glassfish/bootstrap/legal/CDDLv1.0.txt.
16  * If applicable, add the following below the CDDL Header,
17  * with the fields enclosed by brackets [] replaced by
18  * you own identifying information:
19  * "Portions Copyrighted [year] [name of copyright owner]"
20  *
21  * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
22  */

23
24 /*
25  * $Id: Application.java,v 1.5 2005/12/25 04:27:36 tcfujii Exp $
26  */

27
28 package com.sun.enterprise.ddgenerator.sun;
29
30 import java.io.File JavaDoc;
31 import java.io.FileInputStream JavaDoc;
32 import java.util.*;
33
34 import com.sun.enterprise.deployment.*;
35 import com.sun.enterprise.deployment.archivist.*;
36 import com.sun.enterprise.deployment.deploy.shared.FileArchive;
37 import com.sun.enterprise.deployment.interfaces.*;
38
39 /**
40  * Class description
41  *
42  * @author Sreenivas Munnangi
43  */

44
45 public class Application implements DDGenerator {
46
47     private com.sun.enterprise.deployment.Application application = null;
48     private String JavaDoc applicationDirectory = null;
49
50     public Application() {
51     }
52
53     public Application(com.sun.enterprise.deployment.Application application,
54         String JavaDoc applicationDirectory) {
55     this.application = application;
56     this.applicationDirectory = applicationDirectory;
57     }
58
59     public void setApplicationDirectory(String JavaDoc applicationDirectory) {
60     this.applicationDirectory = applicationDirectory;
61     }
62
63     public void setDescriptor(com.sun.enterprise.deployment.Descriptor descriptor) {
64     this.application = (com.sun.enterprise.deployment.Application) descriptor;
65     }
66
67     public void generate() {
68
69     if (application == null) return;
70
71     java.util.Set JavaDoc ejbBundleDescriptors = application.getEjbBundleDescriptors();
72
73     // Determine if sun-ejb.xml needs to be generated
74

75     boolean generate = false;
76
77     for(Iterator it=ejbBundleDescriptors.iterator(); it.hasNext(); ) {
78         EjbBundleDescriptor ejbBundleDescriptor = (EjbBundleDescriptor) it.next();
79         com.sun.enterprise.ddgenerator.sun.EjbModule ejbModule =
80             new com.sun.enterprise.ddgenerator.sun.EjbModule(ejbBundleDescriptor,
81                 applicationDirectory);
82         if (! ejbModule.hasSunDescriptor()) {
83             generate = true;
84         }
85     }
86
87     if (generate == false) return;
88
89     // Backup existing sun descriptor
90

91     for(Iterator it=ejbBundleDescriptors.iterator(); it.hasNext(); ) {
92         EjbBundleDescriptor ejbBundleDescriptor = (EjbBundleDescriptor) it.next();
93         com.sun.enterprise.ddgenerator.sun.EjbModule ejbModule =
94             new com.sun.enterprise.ddgenerator.sun.EjbModule(ejbBundleDescriptor,
95                 applicationDirectory);
96         ejbModule.backupSunDescriptor();
97     }
98
99     // Generate sun descriptor
100

101     for(Iterator it=ejbBundleDescriptors.iterator(); it.hasNext(); ) {
102         EjbBundleDescriptor ejbBundleDescriptor = (EjbBundleDescriptor) it.next();
103         com.sun.enterprise.ddgenerator.sun.EjbModule ejbModule =
104             new com.sun.enterprise.ddgenerator.sun.EjbModule(ejbBundleDescriptor,
105                 applicationDirectory);
106         ejbModule.generate();
107     }
108
109     // update referencing descriptors
110

111     java.util.Vector JavaDoc ejbRefDescriptorsV = application.getEjbReferenceDescriptors();
112
113     if (ejbRefDescriptorsV == null) {
114         save();
115         return;
116     }
117
118     int ejbRefDescriptorsSize = ejbRefDescriptorsV.size();
119
120     for (int i=0; i<ejbRefDescriptorsSize; i++) {
121         EjbReferenceDescriptor ejbRefDescriptor =
122             (EjbReferenceDescriptor) ejbRefDescriptorsV.get(i);
123         updateEjbRefDescriptorJndiName(ejbRefDescriptor, ejbBundleDescriptors);
124     }
125
126     // save application descriptor
127

128     save();
129
130     }
131
132     private void updateEjbRefDescriptorJndiName(EjbReferenceDescriptor ejbRefDescriptor,
133         java.util.Set JavaDoc ejbBundleDescriptors) {
134
135     for(Iterator it=ejbBundleDescriptors.iterator(); it.hasNext(); ) {
136
137         EjbBundleDescriptor ejbBundleDescriptor = (EjbBundleDescriptor) it.next();
138         
139         java.util.Set JavaDoc ejbDescriptors = ejbBundleDescriptor.getEjbs();
140
141         for (Iterator jt = ejbDescriptors.iterator(); jt.hasNext();) {
142
143             EjbDescriptor ejbDescriptor = (EjbDescriptor) jt.next();
144             if ((ejbDescriptor.getHomeClassName()).equals(ejbRefDescriptor.getHomeClassName())) {
145                 ejbRefDescriptor.setJndiName(ejbDescriptor.getJndiName());
146                 return;
147             }
148         }
149     }
150
151     }
152
153     private void save() {
154
155     FileArchive in = new FileArchive();
156
157     try {
158         in.open(applicationDirectory);
159     } catch (java.io.IOException JavaDoc ioe) {
160     }
161
162     DescriptorArchivist archivist = new DescriptorArchivist();
163
164     try {
165         archivist.write(application, in);
166     } catch (java.io.IOException JavaDoc ioe) {
167     }
168
169     }
170
171     public static void main (String JavaDoc args[]) {
172
173     String JavaDoc appDir = "/home/sreeni/TEMP/stateless-converter_1";
174
175         System.out.println("Application");
176
177         System.out.println("Press enter to continue ...");
178     try {
179         System.in.read();
180     } catch (java.io.IOException JavaDoc ioe) {
181     }
182
183     FileArchive in = new FileArchive();
184
185     try {
186         in.open(appDir);
187     } catch (java.io.IOException JavaDoc ioe) {
188     }
189
190
191     ApplicationArchivist archivist = new ApplicationArchivist();
192     archivist.setXMLValidation(false);
193     archivist.setClassLoader(null);
194     com.sun.enterprise.deployment.Application application = null;
195     try {
196         application = (com.sun.enterprise.deployment.Application) archivist.open(in);
197     } catch (java.io.IOException JavaDoc ioe) {
198     } catch (org.xml.sax.SAXParseException JavaDoc saxpe) {
199     }
200
201     com.sun.enterprise.ddgenerator.sun.Application app =
202         new com.sun.enterprise.ddgenerator.sun.Application(application, appDir);
203
204     app.generate();
205     }
206
207 }
208
Popular Tags