1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
44
45
46
47
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 }
60
61 /***
62 * getJavaInterfaceWriter
63 */
64 protected Generator getJavaInterfaceWriter(J2eeEmitter emitter,
65 PortTypeEntry ptEntry,
66 BindingEntry bEntry,
67 SymbolTable st) {
68
69
70
71
72
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 }
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
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
140 stubWriter = getJavaStubWriter(emitter, bEntry, symbolTable);
141
142
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 }