KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > websvc > core > 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.core.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.core.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 JavaDoc> listeners = new ArrayList JavaDoc<ChangeListener 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                 jTextFieldPort.setText(chooser.getSelectedPortOwnerName() + "#" + chooser.getSelectedNodes()[0].getDisplayName()); //NOI18N
301
service = wsdlModel.getServiceByName(chooser.getSelectedPortOwnerName());
302                 port = service.getPortByName(chooser.getSelectedNodes()[0].getDisplayName());
303             }
304         }
305     }//GEN-LAST:event_jButtonBrowsePortActionPerformed
306

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

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

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

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

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

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

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