diff --git a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java +++ b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java @@ -77,7 +77,6 @@ import org.netbeans.modules.j2ee.metadata.model.api.MetadataModel; import org.netbeans.modules.j2ee.spi.ejbjar.support.EjbJarSupport; import org.netbeans.modules.java.api.common.classpath.ClassPathSupport.Item; -import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule; import org.netbeans.modules.j2ee.deployment.devmodules.spi.ArtifactListener.Artifact; import org.netbeans.modules.j2ee.ejbjarproject.jaxws.EjbProjectJAXWSClientSupport; import org.netbeans.modules.j2ee.ejbjarproject.jaxws.EjbProjectJAXWSSupport; @@ -99,7 +98,6 @@ import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarFactory; import org.netbeans.modules.j2ee.spi.ejbjar.support.EjbEnterpriseReferenceContainerSupport; import org.netbeans.modules.websvc.api.jaxws.client.JAXWSClientSupport; -import org.netbeans.modules.websvc.api.jaxws.project.WSUtils; import org.netbeans.modules.websvc.jaxws.api.JAXWSSupport; import org.netbeans.modules.websvc.jaxws.spi.JAXWSSupportFactory; import org.netbeans.modules.websvc.spi.client.WebServicesClientSupportFactory; @@ -174,6 +172,7 @@ import org.openide.filesystems.FileStateInvalidException; import org.openide.filesystems.FileSystem.AtomicAction; import org.openide.util.Exceptions; +import org.openide.xml.XMLUtil; /** * Represents one ejb module project @@ -626,7 +625,7 @@ if (element != null) { Document doc = element.getOwnerDocument(); Element newRoot = doc.createElementNS (EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE,"data"); //NOI18N - copyDocument (doc, element, newRoot); + XMLUtil.copyDocument (doc, element, newRoot, EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE); Element srcRoots = doc.createElementNS(EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, "source-roots"); //NOI18N Element root = doc.createElementNS (EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE,"root"); //NOI18N root.setAttribute ("id","src.dir"); //NOI18N @@ -642,33 +641,6 @@ } } - private static void copyDocument (Document doc, Element from, Element to) { - NodeList nl = from.getChildNodes(); - int length = nl.getLength(); - for (int i=0; i< length; i++) { - Node node = nl.item (i); - Node newNode = null; - switch (node.getNodeType()) { - case Node.ELEMENT_NODE: - Element oldElement = (Element) node; - newNode = doc.createElementNS(EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE,oldElement.getTagName()); - copyDocument(doc,oldElement,(Element)newNode); - break; - case Node.TEXT_NODE: - Text oldText = (Text) node; - newNode = doc.createTextNode(oldText.getData()); - break; - case Node.COMMENT_NODE: - Comment oldComment = (Comment) node; - newNode = doc.createComment(oldComment.getData()); - break; - } - if (newNode != null) { - to.appendChild (newNode); - } - } - } - public void fileAttributeChanged (org.openide.filesystems.FileAttributeEvent fe) { } diff --git a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/UpdateProjectImpl.java b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/UpdateProjectImpl.java --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/UpdateProjectImpl.java +++ b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/UpdateProjectImpl.java @@ -59,6 +59,7 @@ import org.openide.filesystems.FileUtil; import org.openide.util.Mutex; import org.openide.util.NbBundle; +import org.openide.xml.XMLUtil; import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -191,7 +192,7 @@ if (oldRoot != null) { Document doc = oldRoot.getOwnerDocument(); Element newRoot = doc.createElementNS (EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE,"data"); //NOI18N - copyDocument (doc, oldRoot, newRoot); + XMLUtil.copyDocument (doc, oldRoot, newRoot, EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE); if(version == 1) { //1=>2 upgrade Element sourceRoots = doc.createElementNS(EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE,"source-roots"); //NOI18N @@ -211,7 +212,7 @@ for (int i = 0; i < libList.getLength(); i++) { if (libList.item(i).getNodeType() == Node.ELEMENT_NODE) { Element library = (Element) libList.item(i); - String fileText = findText(library); + String fileText = XMLUtil.findText(library); if (fileText.startsWith ("libs.")) { String libName = fileText.substring(6, fileText.indexOf(".classpath")); //NOI18N List/**/ roots = LibraryManager.getDefault().getLibrary(libName).getContent("classpath"); //NOI18N @@ -253,40 +254,6 @@ return helper.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH); } - private static void copyDocument (Document doc, Element from, Element to) { - NodeList nl = from.getChildNodes(); - int length = nl.getLength(); - for (int i=0; i< length; i++) { - Node node = nl.item (i); - Node newNode = null; - switch (node.getNodeType()) { - case Node.ELEMENT_NODE: - Element oldElement = (Element) node; - newNode = doc.createElementNS(EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE,oldElement.getTagName()); - //copy attributes - NamedNodeMap m = oldElement.getAttributes(); - Element newElement = (Element) newNode; - for (int index = 0; index < m.getLength(); index++) { - Node attr = m.item(index); - newElement.setAttribute(attr.getNodeName(), attr.getNodeValue()); - } - copyDocument(doc,oldElement,(Element)newNode); - break; - case Node.TEXT_NODE: - Text oldText = (Text) node; - newNode = doc.createTextNode(oldText.getData()); - break; - case Node.COMMENT_NODE: - Comment oldComment = (Comment) node; - newNode = doc.createComment(oldComment.getData()); - break; - } - if (newNode != null) { - to.appendChild (newNode); - } - } - } - private static Element updateMinAntVersion (final Element root, final Document doc) { NodeList list = root.getElementsByTagNameNS (EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE,MINIMUM_ANT_VERSION_ELEMENT); if (list.getLength() == 1) { @@ -301,23 +268,6 @@ return root; } - /** - * Extract nested text from a node. - * Currently does not handle coalescing text nodes, CDATA sections, etc. - * @param parent a parent node - * @return the nested text, or null if none was found - */ - private static String findText(Node parent) { - NodeList l = parent.getChildNodes(); - for (int i = 0; i < l.getLength(); i++) { - if (l.item(i).getNodeType() == Node.TEXT_NODE) { - Text text = (Text)l.item(i); - return text.getNodeValue(); - } - } - return null; - } - private boolean showUpdateDialog() { return DialogDisplayer.getDefault().notify( new NotifyDescriptor.Confirmation (NbBundle.getMessage(UpdateProjectImpl.class,"TXT_ProjectUpdate",BUILD_NUMBER), diff --git a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/classpath/ClassPathSupportCallbackImpl.java b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/classpath/ClassPathSupportCallbackImpl.java --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/classpath/ClassPathSupportCallbackImpl.java +++ b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/classpath/ClassPathSupportCallbackImpl.java @@ -58,6 +58,7 @@ import org.w3c.dom.Text; import org.netbeans.modules.j2ee.ejbjarproject.EjbJarProjectType; import org.netbeans.modules.java.api.common.util.CommonProjectUtils; +import org.openide.xml.XMLUtil; /** * @@ -95,7 +96,7 @@ for ( int i = 0; i < libs.getLength(); i++ ) { Element item = (Element)libs.item( i ); // ejbjar is different from other j2ee projects - it stores reference without ${ and } - String ref = "${"+findText( item )+"}"; + String ref = "${"+XMLUtil.findText( item )+"}"; libraries.add(ref); // NOI18N String dirs = item.getAttribute(ATTR_DIRS); if (Util.DESTINATION_DIRECTORY_ROOT.equals(dirs) || @@ -125,7 +126,7 @@ Document doc = data.getOwnerDocument(); for (ClassPathSupport.Item item : classpath) { if("true".equals(item.getAdditionalProperty(INCLUDE_IN_DEPLOYMENT))) { // NOI18N - appendChildElement(data, + XMLUtil.appendChildElement(data, createLibraryElement(antProjectHelper, doc, item, includedLibrariesElement), ejbjarElemOrder); } @@ -134,62 +135,6 @@ antProjectHelper.putPrimaryConfigurationData( data, true ); } - /** - * Find all direct child elements of an element. - * More useful than {@link Element#getElementsByTagNameNS} because it does - * not recurse into recursive child elements. - * Children which are all-whitespace text nodes are ignored; others cause - * an exception to be thrown. - * @param parent a parent element in a DOM tree - * @return a list of direct child elements (may be empty) - * @throws IllegalArgumentException if there are non-element children besides whitespace - */ - private static List findSubElements(Element parent) throws IllegalArgumentException { - NodeList l = parent.getChildNodes(); - List elements = new ArrayList(l.getLength()); - for (int i = 0; i < l.getLength(); i++) { - Node n = l.item(i); - if (n.getNodeType() == Node.ELEMENT_NODE) { - elements.add((Element)n); - } else if (n.getNodeType() == Node.TEXT_NODE) { - String text = ((Text)n).getNodeValue(); - if (text.trim().length() > 0) { - throw new IllegalArgumentException("non-ws text encountered in " + parent + ": " + text); // NOI18N - } - } else if (n.getNodeType() == Node.COMMENT_NODE) { - // skip - } else { - throw new IllegalArgumentException("unexpected non-element child of " + parent + ": " + n); // NOI18N - } - } - return elements; - } - - /** - * Append child element to the correct position according to given - * order. - * @param parent parent to which the child will be added - * @param el element to be added - * @param order order of the elements which must be followed - */ - private static void appendChildElement(Element parent, Element el, String[] order) { - Element insertBefore = null; - List l = Arrays.asList(order); - int index = l.indexOf(el.getLocalName()); - assert index != -1 : el.getLocalName()+" was not found in "+l; // NOI18N - Iterator it = findSubElements(parent).iterator(); - while (it.hasNext()) { - Element e = (Element)it.next(); - int index2 = l.indexOf(e.getLocalName()); - assert index2 != -1 : e.getLocalName()+" was not found in "+l; // NOI18N - if (index2 > index) { - insertBefore = e; - break; - } - } - parent.insertBefore(el, insertBefore); - } - private static Element createLibraryElement(AntProjectHelper antProjectHelper, Document doc, Item item, String includedLibrariesElement) { Element libraryElement = doc.createElementNS( EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, includedLibrariesElement ); // ejbjar is different from other j2ee projects - it stores reference without ${ and } @@ -197,24 +142,6 @@ Util.updateDirsAttributeInCPSItem(item, libraryElement); return libraryElement; } - - /** - * Extracts the first nested text from an element. - * Currently does not handle coalescing text nodes, CDATA sections, etc. - * @param parent a parent element - * @return the nested text, or null if none was found - */ - private static String findText( Element parent ) { - NodeList l = parent.getChildNodes(); - for ( int i = 0; i < l.getLength(); i++ ) { - if ( l.item(i).getNodeType() == Node.TEXT_NODE ) { - Text text = (Text)l.item( i ); - return text.getNodeValue(); - } - } - return null; - } - public void readAdditionalProperties(List items, String projectXMLElement) { Map destination = new HashMap();