1 19 package org.netbeans.modules.websvc.core.webservices.action; 20 21 import java.util.ArrayList ; 22 import java.util.List ; 23 import org.netbeans.api.java.project.JavaProjectConstants; 24 import org.netbeans.api.project.FileOwnerQuery; 25 import org.netbeans.api.project.Project; 26 import org.netbeans.api.project.SourceGroup; 27 import org.netbeans.api.project.Sources; 28 import org.netbeans.modules.websvc.api.jaxws.project.config.Service; 29 import org.netbeans.modules.websvc.api.jaxws.project.config.Service; 30 import org.netbeans.modules.websvc.core.AddOperationCookie; 31 import org.netbeans.modules.websvc.core.WebServiceActionProvider; 32 import org.netbeans.modules.websvc.jaxws.api.JAXWSSupport; 33 import org.openide.filesystems.FileObject; 34 import org.openide.filesystems.FileUtil; 35 import org.openide.loaders.DataObject; 36 import org.openide.util.HelpCtx; 37 import org.openide.util.NbBundle; 38 import org.openide.nodes.Node; 39 import org.openide.util.actions.NodeAction; 40 41 44 public class AddOperationEditorAction extends NodeAction { 45 private Service service; 46 public String getName() { 47 return NbBundle.getMessage(AddOperationEditorAction.class, "LBL_AddOperationEditorAction"); 48 } 49 50 public HelpCtx getHelpCtx() { 51 return HelpCtx.DEFAULT_HELP; 53 } 54 55 protected boolean asynchronous() { 56 return false; 57 } 58 59 protected boolean enable(Node[] activatedNodes) { 60 if (activatedNodes.length == 1) { 61 FileObject fo = getFileObjectFromNode(activatedNodes[0]); 62 if (fo!=null) { 63 AddOperationCookie cookie = WebServiceActionProvider.getAddOperationAction(fo); 64 return cookie!=null && activatedNodes.length == 1 && 65 (isJaxWsImplementationClass(activatedNodes[0]) 69 && !isFromWSDL(activatedNodes[0])); 70 } 71 } 72 return false; 73 } 74 75 76 private FileObject getFileObjectFromNode(Node n) { 77 DataObject dObj = (DataObject)n.getCookie(DataObject.class); 78 if (dObj!=null) return dObj.getPrimaryFile(); 79 else return null; 80 } 81 82 private boolean isWsImplBeanOrInterface(Node node) { 83 return false; 95 } 96 97 98 private boolean isJaxWsImplementationClass(Node node) { 99 FileObject fo = getFileObjectFromNode(node); 100 JAXWSSupport jaxWsSupport = JAXWSSupport.getJAXWSSupport(fo); 101 if (jaxWsSupport!=null) { 102 List services = jaxWsSupport.getServices(); 103 for (int i=0;i<services.size();i++) { 104 Service serv = (Service)services.get(i); 105 if (serv.getWsdlUrl()==null) { 106 String implClass = serv.getImplementationClass(); 107 if (implClass.equals(getPackageName(fo))) { 108 service=serv; 109 return true; 110 } 111 } 112 } 113 } 114 service=null; 115 return false; 116 } 117 118 private boolean isFromWSDL(Node node) { 119 if (service!=null) { 120 return service.getWsdlUrl()!=null; 121 } 122 return false; 136 } 137 138 private String getPackageName(FileObject fo) { 139 Project project = FileOwnerQuery.getOwner(fo); 140 Sources sources = (Sources)project.getLookup().lookup(Sources.class); 141 if (sources!=null) { 142 SourceGroup[] groups = sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA); 143 if (groups!=null) { 144 List <FileObject> roots = new ArrayList <FileObject>(); 145 for (SourceGroup group: groups) { 146 FileObject rootFolder = group.getRootFolder(); 147 if (FileUtil.isParentOf(rootFolder, fo)) { 148 String relativePath = FileUtil.getRelativePath(rootFolder, fo).replace('/', '.'); 149 return (relativePath.endsWith(".java")? relativePath.substring(0,relativePath.length()-5): 151 relativePath); 152 } 153 } 154 } 155 } 156 return null; 157 } 158 159 protected void performAction(Node[] activatedNodes) { 160 FileObject fo = getFileObjectFromNode(activatedNodes[0]); 161 AddOperationCookie cookie = WebServiceActionProvider.getAddOperationAction(fo); 162 cookie.addOperation(fo); 163 } 164 } 165 | Popular Tags |