KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > websvc > dev > wizard > WebServiceFromWSDLPanel


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.websvc.dev.wizard;
21
22 import java.beans.PropertyChangeEvent JavaDoc;
23 import java.beans.PropertyChangeListener JavaDoc;
24 import java.io.File JavaDoc;
25 import java.io.IOException JavaDoc;
26 import java.net.MalformedURLException JavaDoc;
27 import java.net.URL JavaDoc;
28 import java.util.ArrayList JavaDoc;
29 import java.util.Iterator JavaDoc;
30 import java.util.List JavaDoc;
31 import java.util.Map JavaDoc;
32 import javax.swing.JFileChooser JavaDoc;
33 import javax.swing.event.ChangeEvent JavaDoc;
34 import javax.swing.event.ChangeListener JavaDoc;
35 import javax.swing.event.DocumentEvent JavaDoc;
36 import javax.swing.event.DocumentListener JavaDoc;
37 import javax.swing.filechooser.FileFilter JavaDoc;
38 import javax.xml.parsers.ParserConfigurationException JavaDoc;
39 import javax.xml.transform.stream.StreamSource JavaDoc;
40 import org.netbeans.api.project.Project;
41 import org.netbeans.modules.j2ee.common.Util;
42 import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment;
43 import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eePlatform;
44 import org.netbeans.modules.websvc.api.jaxws.wsdlmodel.WsdlModel;
45 import org.netbeans.modules.websvc.api.jaxws.wsdlmodel.WsdlModelListener;
46 import org.netbeans.modules.websvc.api.jaxws.wsdlmodel.WsdlModeler;
47 import org.netbeans.modules.websvc.api.jaxws.wsdlmodel.WsdlModelerFactory;
48 import org.netbeans.modules.websvc.api.jaxws.wsdlmodel.WsdlPort;
49 import org.netbeans.modules.websvc.api.jaxws.wsdlmodel.WsdlService;
50 import org.netbeans.modules.websvc.dev.wizard.nodes.WsdlNode;
51 import org.netbeans.modules.websvc.jaxws.api.JAXWSSupport;
52 import org.netbeans.modules.websvc.jaxws.api.WsdlWrapperGenerator;
53 import org.netbeans.modules.websvc.jaxws.api.WsdlWrapperHandler;
54 import org.openide.DialogDescriptor;
55 import org.openide.DialogDisplayer;
56 import org.openide.ErrorManager;
57 import org.openide.NotifyDescriptor;
58 import org.openide.WizardDescriptor;
59 import org.openide.filesystems.FileObject;
60 import org.openide.filesystems.FileUtil;
61 import org.openide.nodes.Node;
62 import org.openide.util.HelpCtx;
63 import org.openide.util.NbBundle;
64 import org.openide.util.RequestProcessor;
65 import org.xml.sax.SAXException JavaDoc;
66
67 /**
68  *
69  * @author radko
70  */

71 public class WebServiceFromWSDLPanel extends javax.swing.JPanel JavaDoc implements HelpCtx.Provider, DocumentListener JavaDoc {
72     
73     private final List JavaDoc/*<ChangeListener>*/ listeners = new ArrayList JavaDoc();
74     private static String JavaDoc previousDirectory = "";
75     private final FileFilter JavaDoc WSDL_FILE_FILTER = new WsdlFileFilter();
76     private boolean isWaitingForScan = false;
77     
78     private WsdlModeler wsdlModeler;
79     private WsdlModel wsdlModel;
80     private WsdlService service;
81     private WsdlPort port;
82     private WsdlServiceHandler wsdlServiceHandler;
83     private Project project;
84     private WizardDescriptor wizardDescriptor;
85
86     private JAXWSSupport wss;
87     private boolean jsr109Supported;
88     private boolean jsr109oldSupported;
89     private boolean jwsdpSupported;
90     
91     private RequestProcessor.Task generateWsdlModelTask;
92     private URL JavaDoc wsdlURL;
93     
94     /** Creates new form WebServiceFromWSDLPanel */
95     public WebServiceFromWSDLPanel(Project project) {
96         this.project = project;
97         initComponents();
98         initJsr109Info();
99         
100         jTextFieldWSDLFile.getDocument().addDocumentListener(this);
101         
102         generateWsdlModelTask = RequestProcessor.getDefault().create(new Runnable JavaDoc() {
103             public void run() {
104                 
105                 WsdlWrapperHandler handler = null;
106                 try {
107                     handler=WsdlWrapperGenerator.parse(wsdlURL.toExternalForm());
108                 } catch (ParserConfigurationException JavaDoc ex) {
109                     ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL,ex);
110                 } catch (SAXException JavaDoc ex) {
111                     String JavaDoc mes = NbBundle.getMessage(WebServiceFromWSDLPanel.class, "ERR_SAXException", ex.getLocalizedMessage()); // NOI18N
112
NotifyDescriptor desc = new NotifyDescriptor.Message(mes, NotifyDescriptor.Message.ERROR_MESSAGE);
113                     DialogDisplayer.getDefault().notify(desc);
114                     ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL,ex);
115                 } catch (IOException JavaDoc ex) {
116                     ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL,ex);
117                 }
118                 if (handler!=null && !handler.isServiceElement()) {
119                     StreamSource JavaDoc source = new StreamSource JavaDoc(wsdlURL.toExternalForm());
120                     try {
121                         File JavaDoc wsdlFile = new File JavaDoc(System.getProperty("java.io.tmpdir"), WsdlWrapperGenerator.getWrapperName(wsdlURL)); //NOI18N
122

123                         if(!wsdlFile.exists()) {
124                             try {
125                                 wsdlFile.createNewFile();
126                             } catch(IOException JavaDoc ex) {
127                                 String JavaDoc mes = NbBundle.getMessage(WebServiceFromWSDLPanel.class, "ERR_UnableToCreateTempFile", wsdlFile.getPath()); // NOI18N
128
NotifyDescriptor desc = new NotifyDescriptor.Message(mes, NotifyDescriptor.Message.ERROR_MESSAGE);
129                                 DialogDisplayer.getDefault().notify(desc);
130                                 return;
131                             }
132                         }
133                         WsdlWrapperGenerator.generateWrapperWSDLContent(wsdlFile,source,handler.getTargetNsPrefix(),wsdlURL.toExternalForm());
134                         wsdlURL=wsdlFile.toURL();
135                     } catch (IOException JavaDoc ex) {
136                         ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL,ex);
137                     }
138                 }
139                 
140                 final WsdlWrapperHandler wsdlHandler = handler;
141                 
142                 wsdlModeler = WsdlModelerFactory.getDefault().getWsdlModeler(wsdlURL);
143                 wsdlModeler.generateWsdlModel(new WsdlModelListener() {
144                     public void modelCreated(WsdlModel model) {
145                         wsdlModel=model;
146                         if (wsdlModel==null) {
147                             String JavaDoc serviceName=null;
148                             String JavaDoc portName=null;
149                             try {
150                                 wsdlServiceHandler = WsdlServiceHandler.parse(wsdlURL.toExternalForm());
151                                 serviceName = wsdlServiceHandler.getServiceName();
152                                 portName = wsdlServiceHandler.getPortName();
153                             } catch (ParserConfigurationException JavaDoc ex) {
154                             } catch (SAXException JavaDoc ex) {
155                             } catch (IOException JavaDoc ex) {}
156                             if (serviceName!=null && portName!=null) {
157                                 jTextFieldPort.setText(serviceName + "#" + portName);
158                             } else {
159                                 DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(
160                                         NbBundle.getMessage(WebServiceFromWSDLPanel.class,"TXT_CannotGenerateService",
161                                                             wsdlModeler.getCreationException().getLocalizedMessage()),
162                                         NotifyDescriptor.WARNING_MESSAGE)
163                                 );
164                             }
165                         } else {
166                             jButtonBrowsePort.setEnabled(true);
167                             List JavaDoc services = wsdlModel.getServices();
168                             if (services != null && services.size() > 0) {
169                                 service = (WsdlService) services.get(0);
170                                 List JavaDoc ports = service.getPorts();
171                                 if (ports != null && ports.size() > 0)
172                                     port = (WsdlPort) ports.get(0);
173                             }
174                         }
175
176                         if (service != null && port != null) {
177                             jTextFieldPort.setText(service.getName() + "#" + port.getName()); //NOI18N
178
if (wsdlHandler!=null) {
179                                 String JavaDoc bindingType = wsdlHandler.getBindingTypeForPort(port.getName());
180                                 if (bindingType!=null) port.setSOAPVersion(bindingType);
181                             }
182                         }
183
184                         fireChange(); //refresh wizard buttons
185
}
186                 });
187             }
188         });
189     }
190     
191     /** This method is called from within the constructor to
192      * initialize the form.
193      * WARNING: Do NOT modify this code. The content of this method is
194      * always regenerated by the Form Editor.
195      */

196     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
197
private void initComponents() {
198         jLabelWSDLFile = new javax.swing.JLabel JavaDoc();
199         jTextFieldWSDLFile = new javax.swing.JTextField JavaDoc();
200         jButtonWSDLFileBrowse = new javax.swing.JButton JavaDoc();
201         jLabelPortDescription = new javax.swing.JLabel JavaDoc();
202         jLabelPort = new javax.swing.JLabel JavaDoc();
203         jTextFieldPort = new javax.swing.JTextField JavaDoc();
204         jButtonBrowsePort = new javax.swing.JButton JavaDoc();
205
206         jLabelWSDLFile.setDisplayedMnemonic(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("MNE_WSDL_File").charAt(0));
207         jLabelWSDLFile.setLabelFor(jTextFieldWSDLFile);
208         jLabelWSDLFile.setText(org.openide.util.NbBundle.getMessage(WebServiceFromWSDLPanel.class, "LBL_WSDL_File"));
209
210         jTextFieldWSDLFile.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("A11Y_WSDLFilePath"));
211
212         jButtonWSDLFileBrowse.setMnemonic(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("MNE_Browse").charAt(0));
213         jButtonWSDLFileBrowse.setText(org.openide.util.NbBundle.getMessage(WebServiceFromWSDLPanel.class, "LBL_Browse"));
214         jButtonWSDLFileBrowse.addActionListener(new java.awt.event.ActionListener JavaDoc() {
215             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
216                 jButtonWSDLFileBrowseActionPerformed(evt);
217             }
218         });
219
220         jButtonWSDLFileBrowse.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("A11Y_WSDLFileButton"));
221
222         jLabelPortDescription.setText(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("LBL_PortMessage"));
223
224         jLabelPort.setDisplayedMnemonic(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("MNE_WebServicePort").charAt(0));
225         jLabelPort.setLabelFor(jTextFieldPort);
226         jLabelPort.setText(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("LBL_WebServicePort"));
227
228         jTextFieldPort.setEditable(false);
229         jTextFieldPort.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("A11Y"));
230
231         jButtonBrowsePort.setMnemonic(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("MNE_BrowsePort").charAt(0));
232         jButtonBrowsePort.setText(org.openide.util.NbBundle.getBundle(WebServiceFromWSDLPanel.class).getString("LBL_Browse"));
233         jButtonBrowsePort.setEnabled(false);
234         jButtonBrowsePort.addActionListener(new java.awt.event.ActionListener JavaDoc() {
235             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
236                 jButtonBrowsePortActionPerformed(evt);
237             }
238         });
239
240         org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
241         this.setLayout(layout);
242         layout.setHorizontalGroup(
243             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
244             .add(layout.createSequentialGroup()
245                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
246                     .add(jLabelPort)
247                     .add(jLabelWSDLFile))
248                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
249                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
250                     .add(jTextFieldPort, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 576, Short.MAX_VALUE)
251                     .add(jTextFieldWSDLFile, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 576, Short.MAX_VALUE))
252                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
253                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
254                     .add(jButtonBrowsePort, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
255                     .add(jButtonWSDLFileBrowse, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
256             .add(layout.createSequentialGroup()
257                 .add(jLabelPortDescription)
258                 .addContainerGap())
259         );
260         layout.setVerticalGroup(
261             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
262             .add(layout.createSequentialGroup()
263                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
264                     .add(jLabelWSDLFile)
265                     .add(jButtonWSDLFileBrowse)
266                     .add(jTextFieldWSDLFile, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
267                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
268                 .add(jLabelPortDescription)
269                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
270                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
271                     .add(jLabelPort)
272                     .add(jButtonBrowsePort)
273                     .add(jTextFieldPort, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
274                 .addContainerGap(223, Short.MAX_VALUE))
275         );
276     }// </editor-fold>//GEN-END:initComponents
277

278     private void jButtonBrowsePortActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonBrowsePortActionPerformed
279
Node root = new WsdlNode(wsdlModel);
280         PortChooser chooser = new PortChooser(root);
281         final DialogDescriptor dd = new DialogDescriptor(chooser, org.openide.util.NbBundle.getMessage(WebServiceFromWSDLPanel.class, "LBL_SelectPortDescription")); //NOI18N
282

283         chooser.addPropertyChangeListener(new PropertyChangeListener JavaDoc() {
284             public void propertyChange(PropertyChangeEvent JavaDoc evt) {
285                 if (evt.getPropertyName().equals(PortChooser.IS_VALID)) {
286                     Object JavaDoc newvalue = evt.getNewValue();
287                     if ((newvalue != null) && (newvalue instanceof Boolean JavaDoc)) {
288                         dd.setValid(((Boolean JavaDoc) newvalue).booleanValue());
289                     }
290                 }
291             }
292         });
293
294         Object JavaDoc result = DialogDisplayer.getDefault().notify(dd);
295
296         if (result == DialogDescriptor.OK_OPTION) {
297             if (Util.isJavaEE5orHigher(project) ||
298                     (!jsr109Supported && !jsr109oldSupported ||
299                     (!jsr109Supported && jsr109oldSupported && jwsdpSupported )))
300             {
301                 jTextFieldPort.setText(chooser.getSelectedPortOwnerName() + "#" + chooser.getSelectedNodes()[0].getDisplayName()); //NOI18N
302
service = wsdlModel.getServiceByName(chooser.getSelectedPortOwnerName());
303                 port = service.getPortByName(chooser.getSelectedNodes()[0].getDisplayName());
304             }
305         }
306     }//GEN-LAST:event_jButtonBrowsePortActionPerformed
307

308     private void jButtonWSDLFileBrowseActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonWSDLFileBrowseActionPerformed
309
JFileChooser JavaDoc chooser = new JFileChooser JavaDoc(previousDirectory);
310         chooser.setMultiSelectionEnabled(false);
311         chooser.setAcceptAllFileFilterUsed(false);
312         chooser.addChoosableFileFilter(WSDL_FILE_FILTER);
313         chooser.setFileFilter(WSDL_FILE_FILTER);
314         
315         if(chooser.showOpenDialog(WebServiceFromWSDLPanel.this) == JFileChooser.APPROVE_OPTION) {
316             File JavaDoc wsdlFile = chooser.getSelectedFile();
317             jTextFieldWSDLFile.setText(wsdlFile.getAbsolutePath());
318             previousDirectory = wsdlFile.getPath();
319         }
320     }//GEN-LAST:event_jButtonWSDLFileBrowseActionPerformed
321

322     
323     // Variables declaration - do not modify//GEN-BEGIN:variables
324
private javax.swing.JButton JavaDoc jButtonBrowsePort;
325     private javax.swing.JButton JavaDoc jButtonWSDLFileBrowse;
326     private javax.swing.JLabel JavaDoc jLabelPort;
327     private javax.swing.JLabel JavaDoc jLabelPortDescription;
328     private javax.swing.JLabel JavaDoc jLabelWSDLFile;
329     private javax.swing.JTextField JavaDoc jTextFieldPort;
330     private javax.swing.JTextField JavaDoc jTextFieldWSDLFile;
331     // End of variables declaration//GEN-END:variables
332

333     void validate(WizardDescriptor wizardDescriptor) {
334     }
335
336     private void initJsr109Info() {
337         wss = JAXWSSupport.getJAXWSSupport(project.getProjectDirectory());
338         if (wss != null) {
339             Map JavaDoc properties = wss.getAntProjectHelper().getStandardPropertyEvaluator().getProperties();
340             String JavaDoc serverInstance = (String JavaDoc)properties.get("j2ee.server.instance"); //NOI18N
341
if (serverInstance != null) {
342                 J2eePlatform j2eePlatform = Deployment.getDefault().getJ2eePlatform(serverInstance);
343                 if (j2eePlatform != null) {
344                     jsr109Supported = j2eePlatform.isToolSupported(J2eePlatform.TOOL_JSR109);
345                     jsr109oldSupported = j2eePlatform.isToolSupported(J2eePlatform.TOOL_WSCOMPILE);
346                     jwsdpSupported = j2eePlatform.isToolSupported(J2eePlatform.TOOL_JWSDP);
347                 }
348             }
349         }
350     }
351     
352     /**
353      * If the project the web service is being created is not on a JSR 109 platform,
354      * its Java source level must be at least 1.5
355      */

356     private boolean checkNonJsr109Valid() {
357         if (wss != null) {
358             if(!jsr109Supported && !jsr109oldSupported ||
359                     (!jsr109Supported && jsr109oldSupported && jwsdpSupported )){
360                 if (Util.isSourceLevel14orLower(project)) {
361                     wizardDescriptor.putProperty("WizardPanel_errorMessage",
362                             NbBundle.getMessage(WebServiceTypePanel.class, "ERR_NeedProperSourceLevel")); // NOI18N
363
return false;
364                 }
365             }
366         }
367         return true;
368     }
369     
370     private boolean projectHasEmbeddedSpaces(){
371         FileObject projectDir = project.getProjectDirectory();
372         File JavaDoc projectDirFile = FileUtil.toFile(projectDir);
373         String JavaDoc path = projectDirFile.getAbsolutePath();
374         int index = path.indexOf(" ");
375         return index != -1;
376     }
377     
378     boolean isValid(WizardDescriptor wizardDescriptor) {
379         //first check for JDK compliance (for non-JSR 109)
380
if(!checkNonJsr109Valid()){
381             return false;
382         }
383         
384         String JavaDoc wsdlFilePath = jTextFieldWSDLFile.getText().trim();
385         
386         if(wsdlFilePath == null || wsdlFilePath.length() == 0) {
387             wizardDescriptor.putProperty("WizardPanel_errorMessage", // NOI18N
388
NbBundle.getMessage(WebServiceFromWSDLPanel.class, "MSG_EnterWsdlName")); // NOI18N
389
return false; // unspecified WSDL file
390
}
391         
392         File JavaDoc f = new File JavaDoc(wsdlFilePath);
393         String JavaDoc wsdlFileText = f.getAbsolutePath();
394         f = getCanonicalFile(f);
395         if(f == null) {
396             wizardDescriptor.putProperty("WizardPanel_errorMessage", // NOI18N
397
NbBundle.getMessage(WebServiceFromWSDLPanel.class, "ERR_WsdlInvalid")); // NOI18N
398
return false; // invalid WSDL file
399
}
400         
401         if(!f.exists()) {
402             wizardDescriptor.putProperty("WizardPanel_errorMessage", // NOI18N
403
NbBundle.getMessage(WebServiceFromWSDLPanel.class, "ERR_WsdlDoesNotExist")); // NOI18N
404
return false; // invalid WSDL file
405
}
406         
407         if (Util.isJavaEE5orHigher(project) ||
408                 (!jsr109Supported && !jsr109oldSupported ||
409                 (!jsr109Supported && jsr109oldSupported && jwsdpSupported ))) {
410             if (wsdlModel != null) {
411                 if (service == null) {
412                     wizardDescriptor.putProperty("WizardPanel_errorMessage", NbBundle.getMessage(WebServiceFromWSDLPanel.class, "MSG_NoService")); // NOI18N
413
return false;
414                 }
415
416                 if (port == null) {
417                     wizardDescriptor.putProperty("WizardPanel_errorMessage", NbBundle.getMessage(WebServiceFromWSDLPanel.class, "MSG_NoPort")); // NOI18N
418
return false;
419                 }
420             } else {
421                 if (wsdlServiceHandler!=null && wsdlServiceHandler.getServiceName()!=null && wsdlServiceHandler.getPortName()!=null) {
422                     return true;
423                 } else {
424                     wizardDescriptor.putProperty("WizardPanel_errorMessage", NbBundle.getMessage(WebServiceFromWSDLPanel.class, "MSG_NoPort")); // NOI18N
425
return false;
426                 }
427             }
428         }
429         
430         //warning if the project directory has embedded spaces
431
//TODO - Remove this when the jwsdp version that fixes this problem is available
432
if(projectHasEmbeddedSpaces()){
433             wizardDescriptor.putProperty("WizardPanel_errorMessage",
434                     NbBundle.getMessage(WebServiceFromWSDLPanel.class, "MSG_SPACE_IN_PROJECT_PATH")); // NOI18N
435
}
436         else{
437             wizardDescriptor.putProperty("WizardPanel_errorMessage", ""); // NOI18N
438
}
439 // Retouche
440
// if (JavaMetamodel.getManager().isScanInProgress()) {
441
// if (!isWaitingForScan) {
442
// isWaitingForScan = true;
443
// RequestProcessor.getDefault().post(new Runnable() {
444
// public void run() {
445
// JavaMetamodel.getManager().waitScanFinished();
446
// isWaitingForScan = false;
447
// fireChange();
448
// }
449
// });
450
// }
451
// wizardDescriptor.putProperty("WizardPanel_errorMessage", NbBundle.getMessage(WebServiceFromWSDLPanel.class, "MSG_ScanningInProgress")); //NOI18N
452
// return false;
453
// } else
454
wizardDescriptor.putProperty("WizardPanel_errorMessage", ""); //NOI18N
455

456         return true;
457     }
458     
459     void store(WizardDescriptor d) {
460         d.putProperty(WizardProperties.WSDL_FILE_PATH, jTextFieldWSDLFile.getText().trim());
461         d.putProperty(WizardProperties.WSDL_MODEL, wsdlModel);
462         d.putProperty(WizardProperties.WSDL_MODELER, wsdlModeler);
463         d.putProperty(WizardProperties.WSDL_SERVICE, service);
464         d.putProperty(WizardProperties.WSDL_PORT, port);
465         d.putProperty(WizardProperties.WSDL_SERVICE_HANDLER,wsdlServiceHandler);
466     }
467     
468     void read(WizardDescriptor wizardDescriptor) {
469         this.wizardDescriptor = wizardDescriptor;
470     }
471     
472     public HelpCtx getHelpCtx() {
473         return new HelpCtx(WebServiceFromWSDLPanel.class);
474     }
475     
476     public void addChangeListener(ChangeListener JavaDoc l) {
477         listeners.add(l);
478     }
479     
480     public void removeChangeListener(ChangeListener JavaDoc l) {
481         listeners.remove(l);
482     }
483     
484     private void fireChange() {
485         ChangeEvent JavaDoc e = new ChangeEvent JavaDoc(this);
486         Iterator JavaDoc it = listeners.iterator();
487         while (it.hasNext()) {
488             ((ChangeListener JavaDoc)it.next()).stateChanged(e);
489         }
490     }
491     
492     private void updatePortBrowseButton() {
493         wsdlModel = null;
494         service = null;
495         port = null;
496         jTextFieldPort.setText(""); //NOI18N
497

498         String JavaDoc wsdlFilePath = jTextFieldWSDLFile.getText().trim();
499         
500         if(wsdlFilePath == null || wsdlFilePath.length() == 0) {
501             jButtonBrowsePort.setEnabled(false);
502         } else {
503             File JavaDoc f = new File JavaDoc(wsdlFilePath);
504             String JavaDoc wsdlFileText = f.getAbsolutePath();
505             f = getCanonicalFile(f);
506             if(f == null) {
507                 jButtonBrowsePort.setEnabled(false);
508             } else if(!f.exists()) {
509                 jButtonBrowsePort.setEnabled(false);
510             } else {
511                 fireChange(); //call to disable Finish button
512
if (Util.isJavaEE5orHigher(project) ||
513                         (!jsr109Supported && !jsr109oldSupported ||
514                         (!jsr109Supported && jsr109oldSupported && jwsdpSupported))) {
515                     createModel();
516                 }
517             }
518         }
519     }
520     
521     private void createModel() {
522         File JavaDoc normalizedWsdlFilePath = FileUtil.normalizeFile(new File JavaDoc(jTextFieldWSDLFile.getText().trim()));
523         wsdlURL = null;
524         try {
525             wsdlURL = normalizedWsdlFilePath.toURL();
526         } catch (MalformedURLException JavaDoc ex) {
527             ex.printStackTrace();
528         }
529         
530         generateWsdlModelTask.schedule(1000);
531     }
532     
533     public void insertUpdate(DocumentEvent JavaDoc e) {
534         updatePortBrowseButton();
535         fireChange();
536     }
537     
538     public void removeUpdate(DocumentEvent JavaDoc e) {
539         updatePortBrowseButton();
540         fireChange();
541     }
542     
543     public void changedUpdate(DocumentEvent JavaDoc e) {
544         updatePortBrowseButton();
545         fireChange();
546     }
547     
548     /** Retrieve the canonical version of a File instance, converting the possible
549      * IOException into a null (presumably for error presentation purposes).
550      * Copied from Utilities in core.
551      * FIX-ME: removet this when proper dependencies have been set up
552      */

553     public static File JavaDoc getCanonicalFile(File JavaDoc f) {
554         File JavaDoc f1;
555         try {
556             f1 = f.getCanonicalFile();
557         } catch (java.io.IOException JavaDoc e) {
558             f1 = null;
559         }
560         return f1;
561     }
562     
563     private static class WsdlFileFilter extends FileFilter JavaDoc {
564         public boolean accept(File JavaDoc f) {
565             boolean result;
566             if(f.isDirectory() || "wsdl".equalsIgnoreCase(FileUtil.getExtension(f.getName()))) { // NOI18N
567
result = true;
568             } else {
569                 result = false;
570             }
571             return result;
572         }
573         
574         public String JavaDoc getDescription() {
575             return NbBundle.getMessage(WebServiceFromWSDLPanel.class, "LBL_WsdlFilterDescription"); // NOI18N
576
}
577     }
578
579 }
580
Popular Tags