KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > websvc > jaxrpc > nodes > WebServiceNode


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 package org.netbeans.modules.websvc.jaxrpc.nodes;
20
21 // Retouche
22
//import org.netbeans.jmi.javamodel.JavaClass;
23
//import org.netbeans.modules.j2ee.common.JMIUtils;
24
//import org.netbeans.modules.javacore.api.JavaModel;
25
//import org.netbeans.modules.javacore.internalapi.JavaMetamodel;
26
import org.netbeans.modules.j2ee.dd.api.web.ServletMapping;
27 import org.netbeans.modules.j2ee.dd.api.web.WebApp;
28 import org.netbeans.modules.websvc.jaxrpc.actions.JaxRpcWsdlCookie;
29 import org.netbeans.modules.websvc.core.webservices.ui.DeleteWsDialog;
30 import org.netbeans.modules.websvc.spi.webservices.WebServicesConstants;
31 import org.openide.ErrorManager;
32 import org.openide.cookies.SaveCookie;
33 import org.openide.cookies.OpenCookie;
34 import org.openide.loaders.DataFolder;
35 import org.openide.loaders.DataObject;
36 import org.openide.loaders.DataObjectNotFoundException;
37 import org.openide.nodes.AbstractNode;
38 import org.netbeans.modules.j2ee.dd.api.webservices.Webservices;
39 import org.netbeans.modules.j2ee.dd.api.webservices.WebserviceDescription;
40 import org.netbeans.modules.j2ee.dd.api.webservices.ServiceImplBean;
41 import org.openide.util.actions.SystemAction;
42 import org.openide.actions.*;
43 import org.openide.util.HelpCtx;
44 import javax.swing.Action JavaDoc;
45 import org.openide.util.Utilities;
46 import java.awt.Image JavaDoc;
47 import org.openide.filesystems.FileObject;
48 import org.netbeans.modules.websvc.jaxrpc.actions.AddOperationAction;
49 import org.netbeans.modules.websvc.api.webservices.WebServicesSupport;
50 import org.openide.filesystems.FileLock;
51 import org.netbeans.api.java.classpath.ClassPath;
52 import org.netbeans.spi.java.classpath.ClassPathProvider;
53 import org.netbeans.api.project.Project;
54 import org.netbeans.api.project.FileOwnerQuery;
55 import org.openide.DialogDisplayer;
56 import org.openide.NotifyDescriptor;
57 import org.openide.util.NbBundle;
58 import org.netbeans.modules.websvc.jaxrpc.actions.WSRegisterCookie;
59 import java.awt.event.ActionEvent JavaDoc;
60 import java.awt.event.ActionListener JavaDoc;
61 import java.net.URL JavaDoc;
62 import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
63 import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider;
64 import org.netbeans.modules.websvc.core.webservices.ui.panels.EnterWSDLUrlPanel;
65 import org.openide.DialogDescriptor;
66 import org.openide.util.Lookup;
67 import org.netbeans.modules.websvc.api.registry.WebServicesRegistryView;
68 import java.awt.Dialog JavaDoc;
69 import java.awt.datatransfer.Transferable JavaDoc;
70 import org.openide.util.lookup.AbstractLookup;
71 import org.openide.util.lookup.InstanceContent;
72 import org.openide.windows.TopComponent;
73 import org.openide.util.RequestProcessor;
74 import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties;
75 import org.netbeans.modules.websvc.core.webservices.action.ConfigureHandlerAction;
76 import org.netbeans.modules.websvc.core.webservices.action.ConfigureHandlerCookie;
77 import org.netbeans.modules.websvc.core.webservices.ui.panels.MessageHandlerPanel;
78 import org.netbeans.modules.j2ee.dd.api.webservices.PortComponent;
79 import org.netbeans.modules.j2ee.dd.api.webservices.PortComponentHandler;
80 import java.io.IOException JavaDoc;
81 import java.net.HttpURLConnection JavaDoc;
82 import java.net.URLConnection JavaDoc;
83 import java.util.ArrayList JavaDoc;
84 import javax.swing.DefaultListModel JavaDoc;
85 import javax.swing.ListModel JavaDoc;
86 import org.apache.tools.ant.module.api.support.ActionUtils;
87 import org.netbeans.api.progress.ProgressHandle;
88 import org.netbeans.api.progress.ProgressHandleFactory;
89 import org.netbeans.modules.websvc.core.WebServiceReference;
90 import org.netbeans.modules.websvc.core.WebServiceTransferable;
91 import org.netbeans.modules.websvc.jaxrpc.actions.RegenerateFromWsdlAction;
92 import org.netbeans.modules.websvc.jaxrpc.actions.RegenerateFromWsdlCookie;
93 //import org.netbeans.modules.websvc.core.wseditor.support.EditWSAttributesCookie;
94
//import org.netbeans.modules.websvc.core.wseditor.support.EditWSAttributesCookieImpl;
95
//import org.netbeans.modules.websvc.core.wseditor.support.WSEditAttributesAction;
96
import org.netbeans.spi.project.support.ant.GeneratedFilesHelper;
97 import org.openide.execution.ExecutorTask;
98 import org.openide.nodes.Node;
99
100 public class WebServiceNode extends AbstractNode implements WSRegisterCookie, JaxRpcWsdlCookie,
101         ConfigureHandlerCookie, OpenCookie, RegenerateFromWsdlCookie{
102     Webservices webServices;
103     WebserviceDescription webServiceDescription;
104     FileObject srcRoot;
105     WebServicesSupport wsSupport;
106     String JavaDoc wsName;
107     Project project;
108     
109     public WebServiceNode(Webservices webServices, WebserviceDescription webServiceDescription, FileObject srcRoot) {
110         this(new InstanceContent(), webServices, webServiceDescription, srcRoot);
111     }
112     
113     private WebServiceNode(InstanceContent content, Webservices webServices, WebserviceDescription webServiceDescription, FileObject srcRoot) {
114         super(new WebServiceChildren(webServiceDescription, srcRoot), new AbstractLookup(content));
115         this.webServices = webServices;
116         this.webServiceDescription = webServiceDescription;
117         this.srcRoot = srcRoot;
118         this.wsSupport = WebServicesSupport.getWebServicesSupport(srcRoot);
119         project = FileOwnerQuery.getOwner(srcRoot);
120         wsName = webServiceDescription.getWebserviceDescriptionName();
121         setDisplayName(wsName);
122         setName(wsName);
123         content.add(this);
124         //addImplClassToContent(content,webServiceDescription);
125
}
126     
127     public Image JavaDoc getIcon(int type){
128         return Utilities.loadImage("org/netbeans/modules/websvc/core/webservices/ui/resources/XMLServiceDataIcon.gif");
129     }
130     
131     public Image JavaDoc getOpenedIcon(int type){
132         return getIcon( type);
133     }
134     
135     public void open() {
136         OpenCookie oc = getOpenCookie();
137         if (oc != null) {
138             oc.open();
139         }
140     }
141     
142     public WebServicesSupport getWebServicesSupport(){
143         return wsSupport;
144     }
145     
146     private OpenCookie getOpenCookie() {
147         OpenCookie oc = null;
148 // Retouche
149
// JavaClass ce = getImplBeanClass(webServiceDescription);
150
// if (ce != null) {
151
// FileObject f = JavaModel.getFileObject(ce.getResource());
152
// if (f != null) {
153
// try {
154
// DataObject d = DataObject.find(f);
155
// oc = (OpenCookie)d.getCookie(OpenCookie.class);
156
// } catch (DataObjectNotFoundException de) {
157
// ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, de.toString());
158
// }
159
// }
160
// }
161
return oc;
162     }
163     
164     public Action getPreferredAction() {
165         return SystemAction.get(OpenAction.class);
166     }
167     
168     public Node.Cookie getCookie(Class JavaDoc type){
169        // if(type == EditWSAttributesCookie.class){
170
// return new EditWSAttributesCookieImpl(this, null);
171
//}
172
return super.getCookie(type);
173     }
174     
175     // Create the popup menu:
176
public Action[] getActions(boolean context) {
177         return new SystemAction[] {
178             SystemAction.get(OpenAction.class),
179             null,
180             SystemAction.get(AddOperationAction.class),
181             null,
182             SystemAction.get(RegenerateFromWsdlAction.class),
183             null,
184             SystemAction.get(ConfigureHandlerAction.class),
185             //null,
186
//SystemAction.get(WSEditAttributesAction.class),
187
null,
188             SystemAction.get(DeleteAction.class),
189             null,
190             SystemAction.get(PropertiesAction.class),
191         };
192     }
193     
194     public HelpCtx getHelpCtx() {
195         return HelpCtx.DEFAULT_HELP;
196     }
197     
198     // Handle deleting:
199
public boolean canDestroy() {
200         return true;
201     }
202     
203     private void deleteFile(FileObject f) {
204         FileLock lock = null;
205         try {
206             lock = f.lock();
207             if (f.isFolder()) {
208                 DataFolder folder = DataFolder.findFolder(f);
209                 // save all opened files
210
if (folder!=null) {
211                     DataObject[] children = folder.getChildren();
212                     for (int i=0;i<children.length;i++) {
213                         SaveCookie save = (SaveCookie)children[i].getCookie(SaveCookie.class);
214                         if (save!=null) save.save();
215                     }
216                 }
217             }
218             f.delete(lock);
219         } catch(java.io.IOException JavaDoc e) {
220             NotifyDescriptor ndd =
221                     new NotifyDescriptor.Message(NbBundle.getMessage(this.getClass(), "MSG_Unable_Delete_File", f.getNameExt()),
222                     NotifyDescriptor.ERROR_MESSAGE);
223             DialogDisplayer.getDefault().notify(ndd);
224         } finally {
225             if(lock != null) {
226                 lock.releaseLock();
227             }
228         }
229     }
230     
231     private void deleteConfigFile() {
232         ClassPathProvider cpp = (ClassPathProvider)project.getLookup().lookup(ClassPathProvider.class);
233         assert cpp != null;
234         ClassPath classPath = cpp.findClassPath(srcRoot, ClassPath.SOURCE);
235         String JavaDoc configFileName = getPackageName()+ "/" + wsName + "-config" + ".xml";
236         FileObject configFO = classPath.findResource(configFileName);
237         if(configFO != null) {
238             deleteFile(configFO);
239         }
240     }
241     
242     private void deleteDDFile() {
243         FileObject wsdd = wsSupport.getWebservicesDD();
244         if(wsdd != null) {
245             deleteFile(wsdd);
246         }
247     }
248     
249     public void destroy() throws java.io.IOException JavaDoc {
250         super.destroy();
251         String JavaDoc wsdlName = getWsdlName();
252         FileObject wsdlFile = getWsdlFile(wsdlName);
253         FileObject mappingFile = getMappingFile(wsdlName);
254         String JavaDoc packageName=getPackageName();
255         String JavaDoc deleteOptions = DeleteWsDialog.open(getDisplayName(),packageName.replace('/','.'),(wsdlFile==null?null:wsdlName));
256         if (!deleteOptions.equals(DeleteWsDialog.DELETE_NOTHING)) {
257             boolean deletePackage=false;
258             boolean deleteWsdl=false;
259             if (deleteOptions.equals(DeleteWsDialog.DELETE_ALL)) {
260                 deletePackage=true;
261                 deleteWsdl=true;
262             } else if (deleteOptions.equals(DeleteWsDialog.DELETE_PACKAGE)) deletePackage=true;
263             else if (deleteOptions.equals(DeleteWsDialog.DELETE_WSDL)) deleteWsdl=true;
264             //delete the config file
265
deleteConfigFile();
266             //remove entry from webservices.xml
267
webServices.removeWebserviceDescription(webServiceDescription);
268             //need to write everytime to remove the node
269
webServices.write(wsSupport.getWebservicesDD());
270             //if there are no more web services, delete webservices.xml
271
if(webServices.sizeWebserviceDescription() == 0) {
272                 deleteDDFile();
273             }
274             //remove entry in module DD and project files
275
wsSupport.removeServiceEntry(getLinkName());
276             wsSupport.removeProjectEntries(wsName);
277             if (deletePackage) { // remove the package where WS was generated
278
FileObject wsPackage = srcRoot.getFileObject(packageName);
279                 if (wsPackage!=null) {
280                     FileObject parent = wsPackage.getParent();
281                     deleteFile(wsPackage);
282                     //remove also the empty packages upwards
283
while (parent!=srcRoot && parent.getChildren().length==0) {
284                         FileObject fileToDelete=parent;
285                         parent = parent.getParent();
286                         deleteFile(fileToDelete);
287                     }
288                 }
289             }
290             if (deleteWsdl) {
291                 if (wsdlFile!=null) {
292                     deleteFile(wsdlFile);
293                 }
294                 if (mappingFile!=null) {
295                     deleteFile(mappingFile);
296                 }
297             }
298         }
299         
300     }
301     
302     private String JavaDoc getLinkName() {
303         PortComponent portComponent = webServiceDescription.getPortComponent(0); //assume one port per ws
304
ServiceImplBean serviceImplBean = portComponent.getServiceImplBean();
305         String JavaDoc link =serviceImplBean.getServletLink();
306         if(link == null) {
307             link = serviceImplBean.getEjbLink();
308         }
309         return link;
310     }
311     
312     //Need a better way to get the package, maybe pass it(???)
313
private String JavaDoc getPackageName() {
314 // Retouche
315
// String implClassName = getImplBeanClass(webServiceDescription).getName();
316
// int index = implClassName.lastIndexOf(".");
317
// return implClassName.substring(0, index).replace('.', '/');
318
return "";
319     }
320
321 // Retouche
322
// private JavaClass getImplBeanClass(WebserviceDescription webServiceDescription) {
323
// PortComponent portComponent = webServiceDescription.getPortComponent(0); //assume one port per ws
324
// ServiceImplBean serviceImplBean = portComponent.getServiceImplBean();
325
// String link =serviceImplBean.getServletLink();
326
// if(link == null) {
327
// link = serviceImplBean.getEjbLink();
328
// }
329
// WebServicesSupport wsSupport = WebServicesSupport.getWebServicesSupport(srcRoot);
330
// String implBean = wsSupport.getImplementationBean(link);
331
// if(implBean != null) {
332
// JavaClass javaClass = JMIUtils.findClass(implBean,srcRoot);
333
// return javaClass;
334
// }
335
// return null;
336
//// }
337
//
338
// private void addImplClassToContent(final InstanceContent content, final WebserviceDescription webServiceDescription) {
339
// RequestProcessor.getDefault().post(new Runnable() {
340
// public void run() {
341
// JavaMetamodel.getManager().waitScanFinished();
342
// JavaClass implBeanClass = getImplBeanClass(webServiceDescription);
343
// if (implBeanClass != null) {
344
// content.add(implBeanClass);
345
// }
346
// }
347
//
348
// });
349
// }
350

351     private String JavaDoc getDefaultWSDLUrl(){
352         J2eeModuleProvider provider = (J2eeModuleProvider)project.getLookup().lookup(J2eeModuleProvider.class);
353         InstanceProperties instanceProperties = provider.getInstanceProperties();
354         String JavaDoc portNumber = instanceProperties.getProperty(InstanceProperties.HTTP_PORT_NUMBER);
355         if(portNumber == null || portNumber.equals("")) {
356             portNumber = "8080";
357         }
358         String JavaDoc contextRoot = "webservice";//NO18N
359
Object JavaDoc moduleType = provider.getJ2eeModule().getModuleType();
360         String JavaDoc wsURI = wsName;
361         if(J2eeModule.WAR.equals(moduleType)) {
362             J2eeModuleProvider.ConfigSupport configSupport = provider.getConfigSupport();
363             WebServicesSupport wsSupport = WebServicesSupport.getWebServicesSupport(srcRoot);
364             FileObject ddFolder = wsSupport.getWsDDFolder();
365             if (ddFolder!=null) {
366                 FileObject webXmlFo = ddFolder.getFileObject("web.xml"); //NOI18N
367
if (webXmlFo!=null) {
368                     wsURI = findUriForWS(webXmlFo,wsName);
369                     if (wsURI.startsWith("/")) wsURI=wsURI.substring(1); //NOI18N
370
}
371                 
372             }
373             
374             contextRoot = configSupport.getWebContextRoot();
375             if(contextRoot != null && contextRoot.startsWith("/")){
376                 contextRoot = contextRoot.substring(1);
377             }
378         } else if(J2eeModule.EJB.equals(moduleType)) {
379             contextRoot = "webservice";//NO18N for now, we need to find the real value (see bug...57034 and 52265)
380
}
381         
382         return "http://localhost:" + portNumber +"/" + (contextRoot != null && !contextRoot.equals("") ? contextRoot + "/" : "") + wsURI + "?WSDL";
383     }
384     
385     private String JavaDoc findUriForWS(FileObject webXmlFo, String JavaDoc wsName) {
386         try {
387             WebApp webApp = org.netbeans.modules.j2ee.dd.api.web.DDProvider.getDefault().getDDRoot(webXmlFo);
388             if (webApp!=null) {
389                 ServletMapping[] maps = webApp.getServletMapping();
390                 // servletName = "WSServlet_"+wsName
391
String JavaDoc servletName = WebServicesConstants.WebServiceServlet_PREFIX+wsName;
392                 for (int i=0;i<maps.length;i++) {
393                     if (servletName.equals(maps[i].getServletName())) {
394                         return maps[i].getUrlPattern();
395                     }
396                 }
397             }
398         } catch (IOException JavaDoc ex) {}
399         return wsName;
400     }
401     
402     private String JavaDoc getWsdlName() {
403         String JavaDoc wsdlFile = webServiceDescription.getWsdlFile();
404         if (wsdlFile!=null) {
405             int ind = wsdlFile.lastIndexOf("/"); //NOI10N
406
if (ind>=0) return wsdlFile.substring(ind+1);
407         }
408         return wsdlFile;
409     }
410     
411     private FileObject getWsdlFile(String JavaDoc wsdlName) {
412         WebServicesSupport wsSupport = WebServicesSupport.getWebServicesSupport(srcRoot);
413         FileObject wsdlFolder = wsSupport.getWsDDFolder().getFileObject("wsdl");//NOI18N
414
FileObject wsdlFO=null;
415         if (wsdlFolder!=null) {
416             if (wsdlName!=null) {
417                 wsdlFO=wsdlFolder.getFileObject(wsdlName);
418             }
419         }
420         return wsdlFO;
421     }
422     
423     private FileObject getMappingFile(String JavaDoc wsdlName) {
424         WebServicesSupport wsSupport = WebServicesSupport.getWebServicesSupport(srcRoot);
425         FileObject ddFolder = wsSupport.getWsDDFolder();
426         FileObject mappingFO=null;
427         if (ddFolder!=null) {
428             if (wsdlName!=null) {
429                 String JavaDoc wsdlShortName = wsdlName;
430                 if (wsdlName.endsWith(".wsdl")) wsdlShortName = wsdlName.substring(0,wsdlName.length()-5);
431                 mappingFO=ddFolder.getFileObject(wsdlShortName+"-mapping.xml"); //NOI18N
432
}
433         }
434         return mappingFO;
435     }
436     
437     /*
438      * Add the web service to the web service registry
439      */

440     public void registerWebService() {
441         final EnterWSDLUrlPanel panel = new EnterWSDLUrlPanel(getDefaultWSDLUrl());
442         DialogDescriptor dialogDesc = new DialogDescriptor(panel, NbBundle.getMessage(WebServiceNode.class, "Enter_WSDL_Url"), true,
443                 new ActionListener JavaDoc(){
444             public void actionPerformed(ActionEvent JavaDoc evt) {
445                 if(evt.getSource() == NotifyDescriptor.OK_OPTION) {
446                     
447                     RequestProcessor.getDefault().post(new Runnable JavaDoc(){
448                         public void run(){
449                             URL JavaDoc url = null;
450                             try{
451                                 url = new URL JavaDoc(panel.getSelectedWSDLUrl());
452                             }catch(Exception JavaDoc e){
453                                 throw new RuntimeException JavaDoc(e.getMessage());
454                             }
455                             WebServicesRegistryView registryView = (WebServicesRegistryView)Lookup.getDefault().
456                                     lookup(WebServicesRegistryView.class);
457                             TopComponent currentComponent = TopComponent.getRegistry().getActivated();
458                             currentComponent.setCursor(org.openide.util.Utilities.createProgressCursor(currentComponent));
459                             try{
460                                 boolean success = registryView.registerService(url, true);
461                                 if(!success) {
462                                     NotifyDescriptor d = new NotifyDescriptor.Message(NbBundle.getMessage(WebServiceNode.class,
463                                             "MSG_UNABLE_TO_REGISTER_WS"), NotifyDescriptor.ERROR_MESSAGE);
464                                     DialogDisplayer.getDefault().notify(d);
465                                 }
466                             }finally{
467                                 currentComponent.setCursor(null);
468                             }
469                         }
470                     });
471                 }
472             }
473         });
474         Dialog dialog = DialogDisplayer.getDefault().createDialog(dialogDesc);
475         dialog.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(WebServiceNode.class, "Enter_WSDL_Url_Desc"));
476         dialog.setVisible(true);
477     }
478     
479     private boolean isNewHandler(String JavaDoc className, PortComponent portComponent){
480         PortComponentHandler[] handlers = portComponent.getHandler();
481         for(int i = 0; i < handlers.length; i++){
482             if(handlers[i].getHandlerClass().equals(className)){
483                 return false;
484             }
485         }
486         return true;
487     }
488     
489     private boolean isInModel(String JavaDoc className, ListModel JavaDoc model){
490         for(int i = 0; i < model.getSize(); i++){
491             String JavaDoc cls = (String JavaDoc)model.getElementAt(i);
492             if(className.equals(cls)){
493                 return true;
494             }
495         }
496         return false;
497     }
498     public void configureHandler() {
499         final PortComponent portComponent = webServiceDescription.getPortComponent(0);
500         PortComponentHandler[] handlers = portComponent.getHandler();
501         ArrayList JavaDoc handlerList = new ArrayList JavaDoc();
502         for(int j = 0; j < handlers.length; j++) {
503             handlerList.add(handlers[j].getHandlerClass());
504         }
505         final MessageHandlerPanel panel = new MessageHandlerPanel(project, (String JavaDoc[])handlerList.toArray(new String JavaDoc[handlerList.size()]), false, wsName);
506         String JavaDoc title = NbBundle.getMessage(WebServiceNode.class,"TTL_MessageHandlerPanel");
507         DialogDescriptor dialogDesc = new DialogDescriptor(panel, title, true,
508                 new ActionListener JavaDoc(){
509             public void actionPerformed(ActionEvent JavaDoc evt) {
510                 if(evt.getSource() == NotifyDescriptor.OK_OPTION) {
511                     DefaultListModel JavaDoc listModel = panel.getListModel();
512                     try{
513                         //add new handlers
514
for(int i = 0; i < listModel.getSize(); i++){
515                             String JavaDoc className = (String JavaDoc)listModel.getElementAt(i);
516                             if(isNewHandler(className, portComponent)){
517                                 PortComponentHandler handler = (PortComponentHandler)webServices.createBean("PortComponentHandler");
518                                 handler.setHandlerName(className);
519                                 handler.setHandlerClass(className);
520                                 portComponent.addHandler(handler);
521                             }
522                         }
523                         //remove handlers that have been deleted
524
PortComponentHandler[] handlers = portComponent.getHandler();
525                         for(int j = 0; j < handlers.length; j++){
526                             PortComponentHandler handler = handlers[j];
527                             String JavaDoc clsName = handler.getHandlerClass();
528                             if(!isInModel(clsName, listModel)){
529                                 portComponent.removeHandler(handler);
530                             }
531                         }
532                         webServices.write(wsSupport.getWebservicesDD());
533                         //configuration.write(configFO);
534
}catch(ClassNotFoundException JavaDoc e){
535                         throw new RuntimeException JavaDoc(e.getMessage());
536                     } catch(IOException JavaDoc e){
537                         throw new RuntimeException JavaDoc(e.getMessage());
538                     }
539                 }
540             }
541         });
542         Dialog dialog = DialogDisplayer.getDefault().createDialog(dialogDesc);
543         dialog.setVisible(true);
544     }
545     
546     /**
547      * Adds possibility to display custom delete dialog
548      */

549     public Object JavaDoc getValue(String JavaDoc attributeName) {
550         Object JavaDoc retValue;
551         if (attributeName.equals("customDelete")) { //NOI18N
552
retValue = Boolean.TRUE;
553         } else {
554             retValue = super.getValue(attributeName);
555         }
556         return retValue;
557     }
558     
559     public String JavaDoc getWsdlURL() {
560         return getDefaultWSDLUrl();
561     }
562     
563     public void regenerate() {
564         // Retouche
565
//String implClassName = getImplBeanClass(webServiceDescription).getName();
566

567         NotifyDescriptor.Confirmation notifyDesc =
568                 new NotifyDescriptor.Confirmation(NbBundle.getMessage(WebServiceNode.class, "MSG_CONFIRM_REFRESH_IMPL" ),
569                 NotifyDescriptor.YES_NO_OPTION);
570         DialogDisplayer.getDefault().notify(notifyDesc);
571         if(notifyDesc.getValue() == NotifyDescriptor.NO_OPTION) {
572             return;
573         }
574         final ProgressHandle handle = ProgressHandleFactory.createHandle
575                 ( NbBundle.getMessage(WebServiceNode.class, "TXT_Regenerating"));
576         handle.start(100);
577         handle.switchToIndeterminate();
578         Runnable JavaDoc r = new Runnable JavaDoc(){
579             public void run(){
580                 try{
581                     runWscompileTarget();
582                 }finally{
583                     handle.finish();
584                 }
585             }
586         };
587         RequestProcessor.getDefault().post(r);
588     }
589     
590     public Transferable JavaDoc clipboardCopy() throws IOException JavaDoc {
591         URL JavaDoc url = new URL JavaDoc(getWsdlURL());
592         boolean connectionOK=false;
593         try {
594             URLConnection JavaDoc connection = url.openConnection();
595             if (connection instanceof HttpURLConnection JavaDoc) {
596                 HttpURLConnection JavaDoc httpConnection = (HttpURLConnection JavaDoc)connection;
597                 try {
598                     httpConnection.setRequestMethod("GET"); //NOI18N
599
httpConnection.connect();
600                     if (HttpURLConnection.HTTP_OK == httpConnection.getResponseCode())
601                         connectionOK=true;
602                 } catch (java.net.ConnectException JavaDoc ex) {
603                     //TODO: throw exception here?
604
url = null;
605                 } finally {
606                     if (httpConnection!=null)
607                         httpConnection.disconnect();
608                 }
609                 if(!connectionOK){
610                     //TODO: throw exception here?
611
url = null;
612                 }
613             }
614         } catch (IOException JavaDoc ex) {
615             //TODO: throw exception here?
616
url = null;
617         }
618         return new WebServiceTransferable(new WebServiceReference(url , wsName, project.getProjectDirectory().getName()));
619     }
620     
621     private void runWscompileTarget(){
622         FileObject buildImplFo = project.getProjectDirectory().getFileObject(GeneratedFilesHelper.BUILD_IMPL_XML_PATH);
623         try {
624             ExecutorTask wscompileTask =
625                     ActionUtils.runTarget(buildImplFo,new String JavaDoc[]{wsName + "_wscompile"},null); //NOI18N
626
wscompileTask.waitFinished();
627         } catch (IOException JavaDoc ex) {
628             ErrorManager.getDefault().log(ex.getLocalizedMessage());
629         } catch (IllegalArgumentException JavaDoc ex) {
630             ErrorManager.getDefault().log(ex.getLocalizedMessage());
631             
632         }
633     }
634 }
635
Popular Tags