1   
2   
3   
4   
5   
6   
7   
8   
9   
10  package it.imolinfo.jbi4cics.jbi.wsdl;
11  
12  
13  import javax.wsdl.Definition;
14  import javax.wsdl.WSDLException;
15  import javax.wsdl.extensions.ExtensibilityElement;
16  import javax.wsdl.extensions.ExtensionRegistry;
17  import javax.wsdl.extensions.ExtensionSerializer;
18  import javax.xml.namespace.QName;
19  import com.ibm.wsdl.util.xml.DOMUtils;
20  import it.imolinfo.jbi4cics.Logger;
21  import it.imolinfo.jbi4cics.LoggerFactory;
22  import it.imolinfo.jbi4cics.jbi.Messages;
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  public class Jbi4CicsAddressSerializer implements ExtensionSerializer {
34  
35      
36  
37  
38      private static final Logger LOG
39              = LoggerFactory.getLogger(Jbi4CicsAddressSerializer.class);
40  
41      
42  
43  
44      private static final Messages MESSAGES
45              = Messages.getMessages(Jbi4CicsAddressSerializer.class);
46      
47      
48  
49  
50  	  public Jbi4CicsAddressSerializer(){
51  		  super();
52  	  }
53      
54      
55  
56  
57  
58  
59  
60  
61  
62      public void marshall(Class parentType, QName elementType,
63              ExtensibilityElement extension, java.io.PrintWriter pw, 
64              Definition def, ExtensionRegistry extReg)           
65      throws WSDLException {
66  
67           
68          String prefix = null;
69  
70          try {
71              prefix = DOMUtils.getPrefix(Jbi4CicsExtension.NS_URI_JBI4CICS, 
72                  def);
73          } catch (WSDLException ex) {
74              LOG.warn("CIC001300_Jbi4cics_namespace_not_found", Jbi4CicsExtension.NS_URI_JBI4CICS);
75          }
76  
77          
78          if (prefix == null) {
79              prefix = Jbi4CicsExtension.DEFAULT_PREFIX;
80  
81              
82              def.addNamespace(Jbi4CicsExtension.DEFAULT_PREFIX, 
83                      Jbi4CicsExtension.NS_URI_JBI4CICS);
84          }     
85  
86          prefix += ":";         
87          LOG.debug("prefix found: " + prefix);
88          
89          if (extension instanceof Jbi4CicsAddress) {
90              Jbi4CicsAddress jbi4CicsAddress = (Jbi4CicsAddress) extension;            
91              pw.print("<" + prefix + Jbi4CicsExtension.ADDRESS_ELEMENT);            
92        
93              
94              if (jbi4CicsAddress.getUsername() != null) {
95                  DOMUtils.printAttribute(
96                          Jbi4CicsExtension.USERNAME_ATTRIBUTE, 
97                          jbi4CicsAddress.getUsername(), pw);
98              } else {
99              LOG.error("CIC001301_Invalid_username");      
100             throw new WSDLException(WSDLException.INVALID_WSDL, MESSAGES.getString("CIC001301_Invalid_username"));
101             }                                    
102 
103             
104             if (jbi4CicsAddress.getPassword() != null) {
105                 DOMUtils.printAttribute(
106                         Jbi4CicsExtension.PASSWORD_ATTRIBUTE, 
107                         jbi4CicsAddress.getPassword(), pw);
108             } else {
109             LOG.error("CIC001302_Invalid_password");      
110             throw new WSDLException(WSDLException.INVALID_WSDL, MESSAGES.getString("CIC001302_Invalid_password"));
111             }                                    
112 
113             
114             if ((jbi4CicsAddress.getConnectionType().equals("CICS")) || 
115                     (jbi4CicsAddress.getConnectionType().equals("DUMMY"))) {
116                 DOMUtils.printAttribute(
117                         Jbi4CicsExtension.CONNECTION_TYPE_ATTRIBUTE, 
118                         jbi4CicsAddress.getConnectionType(), pw);
119             } else {
120             LOG.error("CIC001303_Invalid_connection_type");      
121             throw new WSDLException(WSDLException.INVALID_WSDL, MESSAGES.getString("CIC001303_Invalid_connection_type"));
122             }                                    
123 
124             
125             if (jbi4CicsAddress.getJNDIConnectionName() != null) {
126                 DOMUtils.printAttribute(
127                         Jbi4CicsExtension.JNDI_CONNECTION_NAME_ATTRIBUTE, 
128                         jbi4CicsAddress.getJNDIConnectionName(), pw);
129             } else {
130             LOG.error("CIC001304_Invalid_jndi_connection_name");      
131             throw new WSDLException(WSDLException.INVALID_WSDL, MESSAGES.getString("CIC001304_Invalid_jndi_connection_name"));
132             }                                    
133 
134             
135             if (jbi4CicsAddress.getProgramName() != null) {
136                 DOMUtils.printAttribute(
137                         Jbi4CicsExtension.PROGRAM_NAME_ATTRIBUTE, 
138                         jbi4CicsAddress.getProgramName(), pw);
139             } else {
140             LOG.error("CIC001305_Invalid_program_name");      
141             throw new WSDLException(WSDLException.INVALID_WSDL, MESSAGES.getString("CIC001305_Invalid_program_name"));
142             }                                    
143             
144             if (jbi4CicsAddress.getTransactionName() != null) {
145                 DOMUtils.printAttribute(
146                         Jbi4CicsExtension.TRANSACTION_NAME_ATTRIBUTE, 
147                         jbi4CicsAddress.getTransactionName(), pw);
148             } else {
149             LOG.error("CIC001306_Invalid_transaction_name");      
150             throw new WSDLException(WSDLException.INVALID_WSDL, MESSAGES.getString("CIC001306_Invalid_transaction_name"));
151             }                                    
152 
153             
154             if ((jbi4CicsAddress.getTpn().toString().equals("true")) || 
155                     (jbi4CicsAddress.getTpn().toString().equals("false"))) {
156                 DOMUtils.printAttribute(
157                         Jbi4CicsExtension.TPN_ATTRIBUTE, 
158                         jbi4CicsAddress.getTpn().toString(), pw);
159             } else {
160             LOG.error("CIC001307_Invalid_tpn");      
161             throw new WSDLException(WSDLException.INVALID_WSDL, MESSAGES.getString("CIC001307_Invalid_tpn"));
162             }                                    
163 
164             pw.print(">\n");       
165             pw.print("</" + prefix + Jbi4CicsExtension.ADDRESS_ELEMENT+">\n");         
166         } else {
167             LOG.warn("CIC001308_Invalid_extension_element", Jbi4CicsExtension.ADDRESS_ELEMENT);            
168         }       
169     }
170 
171 }