View Javadoc

1   /*
2    * Copyright 2001-2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.geronimo.ews.jaxrpcmapping;
17  
18  import java.io.IOException;
19  import javax.wsdl.Binding;
20  import org.apache.axis.utils.Messages;
21  import org.apache.axis.wsdl.gen.Generator;
22  import org.apache.axis.wsdl.symbolTable.BindingEntry;
23  import org.apache.axis.wsdl.symbolTable.PortTypeEntry;
24  import org.apache.axis.wsdl.symbolTable.SymbolTable;
25  import org.apache.axis.wsdl.toJava.JavaStubWriter;
26  import org.apache.axis.wsdl.toJava.Utils;
27  
28  /***
29   * This is Wsdl2java's Binding Writer.  It writes the following files, as appropriate:
30   * <bindingName>Stub.java, <bindingName>Skeleton.java, <bindingName>Impl.java.
31   *
32   * @author Ias (iasandcb@tmax.co.kr)
33   */
34  public class J2eeBindingWriter implements Generator {
35      protected Generator stubWriter = null;
36      protected Generator skelWriter = null;
37      protected Generator implWriter = null;
38      protected Generator interfaceWriter = null;
39      protected J2eeEmitter emitter;
40      protected Binding binding;
41      protected SymbolTable symbolTable;
42  
43      // This is the dynamic var key for the SEI (Service Endpoint
44      // Interface) name.  This name could either be derived from
45      // the portType or the binding.  The generatorPass fills
46      // this dynamic var in and it is used in the writers that
47      // need this SEI name.
48      public static String INTERFACE_NAME = "interface name";
49  
50      /***
51       * Constructor.
52       */
53      public J2eeBindingWriter(J2eeEmitter emitter,
54                               Binding binding,
55                               SymbolTable symbolTable) {
56          this.emitter = emitter;
57          this.binding = binding;
58          this.symbolTable = symbolTable;
59      } // ctor
60  
61      /***
62       * getJavaInterfaceWriter
63       */
64      protected Generator getJavaInterfaceWriter(J2eeEmitter emitter,
65                                                 PortTypeEntry ptEntry,
66                                                 BindingEntry bEntry,
67                                                 SymbolTable st) {
68  //TODO                                                   
69  //		if(emitter.isSeiNeeded()){
70  //			return new J2eeInterfaceWriter(emitter, ptEntry, bEntry, st);
71  //		}else{                                        
72  //			return null;        	
73  //		}	
74          return new J2eeInterfaceWriter(emitter, ptEntry, bEntry, st);
75      }
76  
77      /***
78       * getJavaStubWriter
79       */
80      protected Generator getJavaStubWriter(J2eeEmitter emitter,
81                                            BindingEntry bEntry,
82                                            SymbolTable st) {
83          return new JavaStubWriter(emitter, bEntry, st);
84      }
85  
86      /***
87       * getJavaSkelWriter
88       */
89      protected Generator getJavaSkelWriter(J2eeEmitter emitter,
90                                            BindingEntry bEntry,
91                                            SymbolTable st) {
92          return new J2eeSkelWriter(emitter, bEntry, st);
93      }
94  
95      /***
96       * getJavaImplWriter
97       */
98      protected Generator getJavaImplWriter(J2eeEmitter emitter,
99                                            BindingEntry bEntry,
100                                           SymbolTable st) {
101         return new J2eeImplWriter(emitter, bEntry, st);
102     }
103 
104     /***
105      * Write all the binding bindings:  stub, skeleton, and impl.
106      */
107     public void generate() throws IOException {
108         setGenerators();
109         if (interfaceWriter != null) {
110             interfaceWriter.generate();
111         }
112         if (stubWriter != null) {
113             stubWriter.generate();
114         }
115         if (skelWriter != null) {
116             skelWriter.generate();
117         }
118         if (implWriter != null) {
119             implWriter.generate();
120         }
121     } // generate
122 
123     /***
124      * setGenerators
125      * Logic to set the generators that are based on the Binding
126      * This logic was moved from the constructor so extended interfaces
127      * can more effectively use the hooks.
128      */
129     protected void setGenerators() {
130         BindingEntry bEntry = symbolTable.getBindingEntry(binding.getQName());
131         
132         // Interface writer
133         PortTypeEntry ptEntry =
134                 symbolTable.getPortTypeEntry(binding.getPortType().getQName());
135         if (ptEntry.isReferenced()) {
136             interfaceWriter = getJavaInterfaceWriter(emitter, ptEntry, bEntry, symbolTable);
137         }
138         if (bEntry.isReferenced()) {
139             // Stub writer
140             stubWriter = getJavaStubWriter(emitter, bEntry, symbolTable);
141 
142             // Skeleton and Impl writers
143             if (emitter.isServerSide()) {
144                 if (emitter.isSkeletonWanted()) {
145                     skelWriter = getJavaSkelWriter(emitter, bEntry, symbolTable);
146                 }
147                 String fileName = Utils.getJavaLocalName(bEntry.getName())
148                         + "Impl.java";
149                 try {
150                     if (Utils.fileExists(fileName,
151                             binding.getQName().getNamespaceURI(),
152                             emitter.getNamespaces())) {
153                         System.out.println(Messages.getMessage("wontOverwrite", fileName));
154                     } else {
155                         implWriter = getJavaImplWriter(emitter, bEntry, symbolTable);
156                     }
157                 } catch (IOException ioe) {
158                     System.err.println(Messages.getMessage("fileExistError00", fileName));
159                 }
160             }
161         }
162     }
163 } // class JavaBindingWriter