diff options
author | david_williams | 2005-03-15 06:02:57 +0000 |
---|---|---|
committer | david_williams | 2005-03-15 06:02:57 +0000 |
commit | 63f5c32d828c5bbc22bbf55072d800d48b53114d (patch) | |
tree | d0c5b62e261e8ca2ddccf7c49ab6f325384f3298 | |
parent | 4da6ac01e031d1d515b67eeb1e5049dad0a005f6 (diff) | |
download | webtools.sourceediting-63f5c32d828c5bbc22bbf55072d800d48b53114d.tar.gz webtools.sourceediting-63f5c32d828c5bbc22bbf55072d800d48b53114d.tar.xz webtools.sourceediting-63f5c32d828c5bbc22bbf55072d800d48b53114d.zip |
refactoring to move more JSP knowledge out of XML level (works not finished, but this is a start).
64 files changed, 1384 insertions, 525 deletions
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java index 460d0923af..4c0264a630 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java @@ -47,6 +47,7 @@ import org.eclipse.jst.jsp.core.internal.contentmodel.ITaglibRecord; import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController; import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibIndex; import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.common.contentmodel.CMDocument; import org.eclipse.wst.common.contentmodel.CMNamedNodeMap; import org.eclipse.wst.common.uriresolver.URIResolverPlugin; @@ -60,7 +61,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.sse.core.util.Assert; import org.eclipse.wst.sse.core.util.Debug; import org.eclipse.wst.sse.core.util.StringUtils; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.uriresolver.util.URIHelper; diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java index 39c933bdf9..63ee128b2c 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java @@ -42,7 +42,8 @@ public class PageDirectiveWatcherFactory extends PropagatingAdapterFactoryImpl i XMLElement xmlElement = (XMLElement) target; if (xmlElement.getNodeType() == Node.ELEMENT_NODE) { // if (xmlElement.getNodeName() == JSP12Namespace.ElementName.DIRECTIVE_PAGE) { // not sure why identity to JSP11Namespace.ElementName.DIRECTIVE_PAGE doesn't work - if (xmlElement.getNodeName().equals("jsp:directive.page")) { //$NON-NLS-1$ + String nodeName = xmlElement.getNodeName(); + if (nodeName.equals("jsp:directive.page")) { //$NON-NLS-1$ result = new PageDirectiveWatcherImpl(xmlElement); } diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java new file mode 100644 index 0000000000..bb2879480d --- /dev/null +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + *******************************************************************************/ + +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; +import org.eclipse.wst.xml.core.internal.document.AttrImpl; +import org.w3c.dom.Document; + +public class AttrImplForJSP extends AttrImpl { + + protected boolean isNestedLanguageOpening(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN; + return result; + } + protected void setOwnerDocument(Document ownerDocument) { + super.setOwnerDocument(ownerDocument); + } + protected void setName(String name) { + super.setName(name); + } + protected void setNamespaceURI(String namespaceURI) { + super.setNamespaceURI(namespaceURI); + } + +} diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java new file mode 100644 index 0000000000..2dd6446988 --- /dev/null +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + *******************************************************************************/ + +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; +import org.eclipse.wst.xml.core.internal.document.CommentImpl; +import org.w3c.dom.Document; + +public class CommentImplForJSP extends CommentImpl { + protected boolean isNestedCommentClose(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE; + return result; + } + + protected boolean isNestedCommentOpenClose(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN || regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE; + return result; + } + + protected void setOwnerDocument(Document ownerDocument) { + super.setOwnerDocument(ownerDocument); + } +} diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java new file mode 100644 index 0000000000..e32f151bbe --- /dev/null +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java @@ -0,0 +1,120 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + *******************************************************************************/ + +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.wst.html.core.document.DocumentStyleImpl; +import org.eclipse.wst.xml.core.document.XMLModel; +import org.eclipse.wst.xml.core.internal.document.DocumentImpl; +import org.w3c.dom.Attr; +import org.w3c.dom.Comment; +import org.w3c.dom.DOMException; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.Text; + +public class DOMDocumentForJSP extends DocumentStyleImpl { + + /** + * + */ + public DOMDocumentForJSP() { + super(); + } + + /** + * @param that + */ + protected DOMDocumentForJSP(DocumentImpl that) { + super(that); + } + /** + * cloneNode method + * @return org.w3c.dom.Node + * @param deep boolean + */ + public Node cloneNode(boolean deep) { + DOMDocumentForJSP cloned = new DOMDocumentForJSP(this); + if (deep) + cloned.importChildNodes(this, true); + return cloned; + } + /** + * createElement method + * + * @return org.w3c.dom.Element + * @param tagName + * java.lang.String + */ + public Element createElement(String tagName) throws DOMException { + checkTagNameValidity(tagName); + + ElementImplForJSP element = new ElementImplForJSP(); + element.setOwnerDocument(this); + element.setTagName(tagName); + return element; + } + /** + * createComment method + * + * @return org.w3c.dom.Comment + * @param data + * java.lang.String + */ + public Comment createComment(String data) { + CommentImplForJSP comment = new CommentImplForJSP(); + comment.setOwnerDocument(this); + if (data != null) + comment.setData(data); + return comment; + } + + /** + * createAttribute method + * + * @return org.w3c.dom.Attr + * @param name + * java.lang.String + */ + public Attr createAttribute(String name) throws DOMException { + AttrImplForJSP attr = new AttrImplForJSP(); + attr.setOwnerDocument(this); + attr.setName(name); + return attr; + } + + /** + */ + public Attr createAttributeNS(String uri, String name) throws DOMException { + AttrImplForJSP attr = new AttrImplForJSP(); + attr.setOwnerDocument(this); + attr.setName(name); + attr.setNamespaceURI(uri); + return attr; + } + /** + * createTextNode method + * + * @return org.w3c.dom.Text + * @param data + * java.lang.String + */ + public Text createTextNode(String data) { + TextImplForJSP text = new TextImplForJSP(); + text.setOwnerDocument(this); + text.setData(data); + return text; + } + protected void setModel(XMLModel model) { + super.setModel(model); + } +} diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java new file mode 100644 index 0000000000..f6ca49d672 --- /dev/null +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + *******************************************************************************/ + +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.wst.html.core.document.XMLStyleModelImpl; +import org.eclipse.wst.xml.core.internal.document.XMLModelParser; +import org.eclipse.wst.xml.core.internal.document.XMLModelUpdater; +import org.w3c.dom.Document; + +public class DOMModelForJSP extends XMLStyleModelImpl { + + /** + * + */ + public DOMModelForJSP() { + super(); + // remember, the document is created in super constructor, + // via internalCreateDocument + } + /** + * createDocument method + * @return org.w3c.dom.Document + */ + protected Document internalCreateDocument() { + DOMDocumentForJSP document = new DOMDocumentForJSP(); + document.setModel(this); + return document; + } + protected XMLModelParser createModelParser() { + return new NestedDOMModelParser(this); + } + protected XMLModelUpdater createModelUpdater() { + return new NestDOMModelUpdater(this); + } +} diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java new file mode 100644 index 0000000000..ee70522368 --- /dev/null +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + *******************************************************************************/ + +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; +import org.eclipse.wst.html.core.document.ElementStyleImpl; +import org.eclipse.wst.xml.core.internal.document.ElementImpl; +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +public class ElementImplForJSP extends ElementStyleImpl { + /** + * + */ + public ElementImplForJSP() { + super(); + } + + /** + * @param that + */ + public ElementImplForJSP(ElementImpl that) { + super(that); + } + + protected boolean isNestedEndTag(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME; + return result; + } + + protected boolean isNestedClosed(String regionType) { + boolean result = (regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE); + return result; + } + + protected boolean isNestedClosedComment(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE; + return result; + } + + protected boolean isClosedNestedDirective(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE; + return result; + } + + protected void setOwnerDocument(Document ownerDocument) { + super.setOwnerDocument(ownerDocument); + } + + protected void setTagName(String tagName) { + super.setTagName(tagName); + } + public Node cloneNode(boolean deep) { + ElementImpl cloned = new ElementImplForJSP(this); + if (deep) + cloneChildNodes(cloned, deep); + return cloned; + } +} diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java new file mode 100644 index 0000000000..ad7852e546 --- /dev/null +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + *******************************************************************************/ + +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; +import org.eclipse.wst.xml.core.internal.document.XMLModelImpl; +import org.eclipse.wst.xml.core.internal.document.XMLModelUpdater; + + +public class NestDOMModelUpdater extends XMLModelUpdater { + + /** + * @param model + */ + public NestDOMModelUpdater(XMLModelImpl model) { + super(model); + } + + protected boolean isNestedTagClose(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE; + return result; + } + +} diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java new file mode 100644 index 0000000000..2b7673e0ba --- /dev/null +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + *******************************************************************************/ + +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; +import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; +import org.eclipse.wst.sse.core.text.ITextRegion; +import org.eclipse.wst.xml.core.document.JSPTag; +import org.eclipse.wst.xml.core.internal.document.XMLModelImpl; +import org.eclipse.wst.xml.core.internal.document.XMLModelParser; + +public class NestedDOMModelParser extends XMLModelParser { + + /** + * @param model + */ + public NestedDOMModelParser(XMLModelImpl model) { + super(model); + } + + protected boolean isNestedCommentOpen(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN; + return result; + } + + protected boolean isNestedCommentText(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_COMMENT_TEXT; + return result; + } + + protected boolean isNestedContent(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_CONTENT; + return result; + } + + protected boolean isNestedTag(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN || regionType == XMLJSPRegionContexts.JSP_CLOSE; + return result; + } + + protected boolean isNestedTagName(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME; + return result; + } + protected boolean isNestedTagOpen(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN; + return result; + } + protected String computeNestedTag(String regionType, String tagName, IStructuredDocumentRegion structuredDocumentRegion, ITextRegion region) { + String resultTagName = tagName; + if (regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) { + resultTagName = JSPTag.JSP_SCRIPTLET; + } + else if (regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) { + resultTagName = JSPTag.JSP_EXPRESSION; + } + else if (regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN) { + resultTagName = JSPTag.JSP_DECLARATION; + } + else if (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) { + resultTagName = JSPTag.JSP_DIRECTIVE; + } + else if (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) { + resultTagName += '.'; + resultTagName += structuredDocumentRegion.getText(region); + } + return resultTagName; + } + + protected boolean isNestedTagClose(String regionType) { + boolean result = regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE; + return result; + } + +} diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/Logger.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java index 82641dc5bc..b682cacd3c 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/Logger.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java @@ -9,14 +9,20 @@ * IBM Corporation - initial API and implementation * *******************************************************************************/ -package org.eclipse.jst.jsp.core; -/** - * @deprecated moved to internal package because only this plugin should be - * using this Logger class. - * - * will be removed in M4 - */ -public class Logger extends org.eclipse.jst.jsp.core.internal.Logger { - // see org.eclipse.jst.jsp.core.internal.Logger +package org.eclipse.jst.jsp.core.internal.domdocument; + +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; +import org.eclipse.wst.xml.core.internal.document.TextImpl; +import org.w3c.dom.Document; + +public class TextImplForJSP extends TextImpl { + protected boolean isNotNestedContent(String regionType) { + boolean result = regionType != XMLJSPRegionContexts.JSP_CONTENT; + return result; + } + protected void setOwnerDocument(Document ownerDocument) { + super.setOwnerDocument(ownerDocument); + } + } diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java index f5e2241a6b..2e3d932c27 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java @@ -10,9 +10,9 @@ *******************************************************************************/ package org.eclipse.jst.jsp.core.internal.java; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java index 802845fa28..8bcaa330c9 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java @@ -34,6 +34,7 @@ import org.eclipse.jst.jsp.core.contentmodel.tld.TLDVariable; import org.eclipse.jst.jsp.core.internal.Logger; import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController; import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.common.contentmodel.CMDocument; import org.eclipse.wst.common.contentmodel.CMNamedNodeMap; import org.eclipse.wst.common.contentmodel.CMNode; @@ -51,7 +52,6 @@ import org.eclipse.wst.sse.core.util.StringUtils; import org.eclipse.wst.sse.core.util.URIResolver; import org.eclipse.wst.xml.core.document.XMLModel; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil; import org.eclipse.wst.xml.core.parser.XMLRegionContext; diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java index 8bd5363468..a0cef1a015 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java @@ -21,6 +21,7 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jst.jsp.core.internal.Logger; import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.common.contentmodel.CMDocument; import org.eclipse.wst.common.contentmodel.CMNode; import org.eclipse.wst.sse.core.parser.BlockMarker; @@ -29,7 +30,6 @@ import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.sse.core.util.Debug; import org.eclipse.wst.sse.core.util.StringUtils; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java index 74f27c50bc..9cedd84629 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java @@ -15,6 +15,7 @@ import java.util.Iterator; import org.eclipse.jst.jsp.core.JSP12Namespace; import org.eclipse.jst.jsp.core.contentmodel.tld.JSP11TLDNames; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.events.StructuredDocumentEvent; import org.eclipse.wst.sse.core.exceptions.SourceEditingRuntimeException; import org.eclipse.wst.sse.core.internal.text.CoreNodeList; @@ -28,7 +29,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionContainer; import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.sse.core.util.Debug; import org.eclipse.wst.xml.core.internal.parser.XMLStructuredDocumentReParser; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; public class JSPReParser extends XMLStructuredDocumentReParser { diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java index 883637046a..8011160823 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java @@ -16,6 +16,7 @@ import java.util.List; import org.eclipse.jst.jsp.core.JSP12Namespace; import org.eclipse.jst.jsp.core.contentmodel.tld.JSP12TLDNames; import org.eclipse.jst.jsp.core.internal.parser.internal.JSPTokenizer; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.internal.text.IRegionComparible; import org.eclipse.wst.sse.core.parser.BlockTokenizer; import org.eclipse.wst.sse.core.parser.JSPCapableParser; @@ -32,7 +33,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.sse.core.util.Debug; import org.eclipse.wst.sse.core.util.StringUtils; import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; /** diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java index 14c27911e2..4ce1d19ef3 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java @@ -11,9 +11,9 @@ package org.eclipse.jst.jsp.core.internal.parser.internal; import org.eclipse.jst.jsp.core.internal.parser.JSPCodeRegion; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.xml.core.internal.parser.regions.XMLParserRegionFactory; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; /** * diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java index bed904d50b..6d4376e77b 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java @@ -20,6 +20,7 @@ import java.util.Iterator; import java.util.List; import org.eclipse.jst.jsp.core.internal.Logger; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.parser.BlockMarker; import org.eclipse.wst.sse.core.parser.BlockTokenizer; import org.eclipse.wst.sse.core.parser.TagMarker; @@ -29,7 +30,6 @@ import org.eclipse.wst.sse.core.util.Debug; import org.eclipse.wst.sse.core.util.StringUtils; import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer; import org.eclipse.wst.xml.core.internal.parser.IntStack; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; /** @@ -873,7 +873,7 @@ public class JSPTokenizer implements BlockTokenizer, XMLJSPRegionContexts { private JSPParserRegionFactory fRegionFactory = new JSPParserRegionFactory(); - private static final String rcsver = "$Id: JSPTokenizer.java,v 1.4 2005/01/27 21:53:57 nitind Exp $";//$NON-NLS-1$ + private static final String rcsver = "$Id: JSPTokenizer.java,v 1.5 2005/03/15 06:02:54 david_williams Exp $";//$NON-NLS-1$ /** * user method diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java index 146e6e54ba..9797cd105c 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPTaskTagSeeker.java @@ -10,10 +10,10 @@ *******************************************************************************/ package org.eclipse.jst.jsp.core.internal.tasks; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.xml.core.builder.delegates.XMLTaskTagSeeker; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; public class JSPTaskTagSeeker extends XMLTaskTagSeeker { protected boolean isCommentRegion(IStructuredDocumentRegion region, ITextRegion textRegion) { diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java index 0d31501315..75ad1010e8 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/rules/StructuredTextPartitionerForJSP.java @@ -23,6 +23,7 @@ import org.eclipse.jst.jsp.core.JSP12Namespace; import org.eclipse.jst.jsp.core.contentmodel.tld.JSP12TLDNames; import org.eclipse.jst.jsp.core.encoding.JSPDocumentHeadContentDetector; import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.html.core.internal.text.rules.StructuredTextPartitionerForHTML; import org.eclipse.wst.sse.core.internal.parser.ForeignRegion; import org.eclipse.wst.sse.core.parser.StructuredDocumentRegionHandler; @@ -35,7 +36,6 @@ import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.sse.core.text.rules.StructuredTextPartitioner; import org.eclipse.wst.sse.core.util.StringUtils; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.core.text.rules.StructuredTextPartitionerForXML; diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/XMLJSPRegionContexts.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/model/parser/XMLJSPRegionContexts.java index 9a1d66dac3..5e098db378 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/XMLJSPRegionContexts.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/model/parser/XMLJSPRegionContexts.java @@ -10,16 +10,13 @@ * Jens Lukowski/Innoopract - initial renaming/restructuring * *******************************************************************************/ -package org.eclipse.wst.xml.core.jsp.model.parser.temp; +package org.eclipse.jst.jsp.core.model.parser; import org.eclipse.wst.xml.core.parser.XMLRegionContext; /** - * //TODO - * - * @deprecated - marked as deprecated to warn of pending changes. See the - * package.html file for full explanation. + * */ public interface XMLJSPRegionContexts extends XMLRegionContext { diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java index 0b30a09810..7180278a8b 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/JSPModelLoader.java @@ -23,12 +23,12 @@ import org.eclipse.jst.jsp.core.encoding.JSPDocumentHeadContentDetector; import org.eclipse.jst.jsp.core.encoding.JSPDocumentLoader; import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapterFactory; import org.eclipse.jst.jsp.core.internal.document.PageDirectiveWatcherFactory; +import org.eclipse.jst.jsp.core.internal.domdocument.DOMModelForJSP; import org.eclipse.jst.jsp.core.internal.parser.JSPReParser; import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser; import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP; import org.eclipse.jst.jsp.core.modelquery.ModelQueryAdapterFactoryForJSP; import org.eclipse.wst.html.core.contenttype.ContentTypeIdForHTML; -import org.eclipse.wst.html.core.document.XMLStyleModelImpl; import org.eclipse.wst.html.core.internal.text.rules.StructuredTextPartitionerForHTML; import org.eclipse.wst.sse.core.AbstractModelLoader; import org.eclipse.wst.sse.core.AdapterFactory; @@ -85,10 +85,7 @@ public class JSPModelLoader extends AbstractModelLoader { } public IStructuredModel newModel() { - // future_TODO: this is similar to "hard coding" - // that HTML will be in JSP file ... should make more - // flexible in future. - XMLStyleModelImpl model = new XMLStyleModelImpl(); + DOMModelForJSP model = new DOMModelForJSP(); return model; } diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java index 5511d05ad5..436ca01573 100644 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java +++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/modelhandler/ModelHandlerForJSP.java @@ -16,12 +16,12 @@ import org.eclipse.jst.jsp.core.encoding.JSPDocumentLoader; import org.eclipse.jst.jsp.core.internal.JSPCorePlugin; import org.eclipse.jst.jsp.core.internal.document.DocumentLoaderForJSP; import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.ModelLoader; import org.eclipse.wst.sse.core.document.IDocumentCharsetDetector; import org.eclipse.wst.sse.core.document.IDocumentLoader; import org.eclipse.wst.sse.core.modelhandler.AbstractModelHandler; import org.eclipse.wst.sse.core.parser.BlockMarker; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; public class ModelHandlerForJSP extends AbstractModelHandler { diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java index 82ddc2406f..adb4d244ef 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/JSPSpellCheckTarget.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.jst.jsp.ui; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.xml.ui.XMLSpellCheckTarget; /** diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java index c53da7f7a1..5abe8c97e8 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/breakpointproviders/AbstractBreakpointProvider.java @@ -16,6 +16,7 @@ import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jst.jsp.core.JSP12Namespace; import org.eclipse.jst.jsp.core.contentmodel.tld.TLDElementDeclaration; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.ui.IEditorInput; import org.eclipse.wst.common.contentmodel.CMElementDeclaration; import org.eclipse.wst.common.contentmodel.CMNode; @@ -30,7 +31,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionCollection; import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.sse.ui.extensions.breakpoint.IBreakpointProvider; import org.eclipse.wst.xml.core.document.XMLDocument; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Document; diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java index 79c410b286..22b75080fe 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java @@ -27,6 +27,7 @@ import org.eclipse.jface.text.contentassist.IContentAssistProcessor; import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.jst.jsp.ui.internal.Logger; import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; @@ -37,7 +38,6 @@ import org.eclipse.wst.sse.ui.internal.SSEUIPlugin; import org.eclipse.wst.xml.core.document.XMLDocument; import org.eclipse.wst.xml.core.document.XMLModel; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.osgi.framework.Bundle; import org.osgi.framework.BundleException; @@ -48,12 +48,12 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa // for debugging private static final boolean DEBUG; static { - String value= Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation"); //$NON-NLS-1$ - DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$ + String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation"); //$NON-NLS-1$ + DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$ } - + private static final String JDT_CORE_PLUGIN_ID = "org.eclipse.jdt.core"; //$NON-NLS-1$ - + protected int fJspSourcePosition, fJavaPosition; protected IResource fResource; protected JSPCompletionRequestor fCollector; @@ -66,43 +66,48 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa } /** - * Returns a list of completion proposals based on the - * specified location within the document that corresponds - * to the current cursor position within the text viewer. - * - * @param viewer the viewer whose document is used to compute the proposals - * @param documentPosition an offset within the document for which completions should be computed - * @return an array of completion proposals or <code>null</code> if no proposals are possible + * Returns a list of completion proposals based on the specified location + * within the document that corresponds to the current cursor position + * within the text viewer. + * + * @param viewer + * the viewer whose document is used to compute the proposals + * @param documentPosition + * an offset within the document for which completions should + * be computed + * @return an array of completion proposals or <code>null</code> if no + * proposals are possible */ public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int pos) { initialize(pos); + XMLModel xmlModel = null; try { if (viewer instanceof StructuredTextViewer) fViewer = (StructuredTextViewer) viewer; - XMLModel xmlModel = (XMLModel) StructuredModelManager.getModelManager().getExistingModelForRead(fViewer.getDocument()); + xmlModel = (XMLModel) StructuredModelManager.getModelManager().getExistingModelForRead(fViewer.getDocument()); + XMLDocument xmlDoc = xmlModel.getDocument(); - xmlModel.releaseFromRead(); if (fTranslationAdapter == null) fTranslationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class); if (fTranslationAdapter != null) { - + JSPTranslation translation = fTranslationAdapter.getJSPTranslation(); fJavaPosition = translation.getJavaOffset(getDocumentPosition()); - - fCollector.setCodeAssistOffset(fJavaPosition); - fCollector.setJavaToJSPOffset(fJspSourcePosition - fJavaPosition); - fCollector.setCursorInExpression(cursorInExpression()); - + + fCollector.setCodeAssistOffset(fJavaPosition); + fCollector.setJavaToJSPOffset(fJspSourcePosition - fJavaPosition); + fCollector.setCursorInExpression(cursorInExpression()); + if (DEBUG) System.out.println(debug(translation)); try { - + ICompilationUnit cu = translation.getCompilationUnit(); fCollector.setCompilationUnit(cu); - + // can't get java proposals w/out a compilation unit if (cu == null) return new ICompletionProposal[0]; @@ -112,7 +117,8 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa } } catch (CoreException coreEx) { - // a possible Java Model Exception due to not being a Web (Java) Project + // a possible Java Model Exception due to not being a Web + // (Java) Project coreEx.printStackTrace(); } } @@ -121,7 +127,11 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa exc.printStackTrace(); // throw out exceptions on code assist. } - + finally { + if (xmlModel != null) { + xmlModel.releaseFromRead(); + } + } ICompletionProposal[] results = fCollector.getResults(); if (results == null || results.length < 1) fErrorMessage = SSEUIPlugin.getResourceString("%Java_Content_Assist_is_not_UI_"); //$NON-NLS-1$ = "Java Content Assist is not available for the current cursor location" @@ -131,6 +141,7 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa /** * For debugging translation mapping only. + * * @param translation */ private String debug(JSPTranslation translation) { @@ -166,33 +177,38 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa XMLNode xmlNode = null; xmlModel.releaseFromRead(); xmlNode = (XMLNode) xmlModel.getIndexedRegion(fJspSourcePosition); - if(xmlNode != null) { - XMLNode parent = (XMLNode)xmlNode.getParentNode(); - if(parent != null) { - sdRegion = parent.getFirstStructuredDocumentRegion(); - inExpression = sdRegion != null && (sdRegion.getType() == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || sdRegion.getType() == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN); - } - } + if (xmlNode != null) { + XMLNode parent = (XMLNode) xmlNode.getParentNode(); + if (parent != null) { + sdRegion = parent.getFirstStructuredDocumentRegion(); + inExpression = sdRegion != null && (sdRegion.getType() == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || sdRegion.getType() == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN); + } + } return inExpression; } /** - * Returns information about possible contexts based on the - * specified location within the document that corresponds - * to the current cursor position within the text viewer. - * - * @param viewer the viewer whose document is used to compute the possible contexts - * @param documentPosition an offset within the document for which context information should be computed - * @return an array of context information objects or <code>null</code> if no context could be found + * Returns information about possible contexts based on the specified + * location within the document that corresponds to the current cursor + * position within the text viewer. + * + * @param viewer + * the viewer whose document is used to compute the possible + * contexts + * @param documentPosition + * an offset within the document for which context information + * should be computed + * @return an array of context information objects or <code>null</code> + * if no context could be found */ public org.eclipse.jface.text.contentassist.IContextInformation[] computeContextInformation(org.eclipse.jface.text.ITextViewer viewer, int documentOffset) { return null; } /** - * Returns a string of characters which when pressed should - * automatically display content-assist proposals. - * + * Returns a string of characters which when pressed should automatically + * display content-assist proposals. + * * @return string of characters */ public java.lang.String getAutoProposalInvocationCharacters() { @@ -200,9 +216,9 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa } /** - * Returns a string of characters which when pressed should - * automatically display a content-assist tip. - * + * Returns a string of characters which when pressed should automatically + * display a content-assist tip. + * * @return string of characters */ public java.lang.String getAutoTipInvocationCharacters() { @@ -212,9 +228,9 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa /** * Returns the characters which when entered by the user should * automatically trigger the presentation of possible completions. - * - * @return the auto activation characters for completion proposal or <code>null</code> - * if no auto activation is desired + * + * @return the auto activation characters for completion proposal or + * <code>null</code> if no auto activation is desired */ public char[] getCompletionProposalAutoActivationCharacters() { return null; @@ -223,21 +239,22 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa /** * Returns the characters which when entered by the user should * automatically trigger the presentation of context information. - * - * @return the auto activation characters for presenting context information - * or <code>null</code> if no auto activation is desired + * + * @return the auto activation characters for presenting context + * information or <code>null</code> if no auto activation is + * desired */ public char[] getContextInformationAutoActivationCharacters() { return null; } /** - * Returns a validator used to determine when displayed context information - * should be dismissed. May only return <code>null</code> if the processor is - * incapable of computing context information. - * - * @return a context information validator, or <code>null</code> if the processor - * is incapable of computing context information + * Returns a validator used to determine when displayed context + * information should be dismissed. May only return <code>null</code> if + * the processor is incapable of computing context information. + * + * @return a context information validator, or <code>null</code> if the + * processor is incapable of computing context information */ public org.eclipse.jface.text.contentassist.IContextInformationValidator getContextInformationValidator() { return null; @@ -248,9 +265,10 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa } public String getErrorMessage() { - // TODO: -// if (fCollector.getErrorMessage() != null && fCollector.getErrorMessage().length() > 0) -// return fCollector.getErrorMessage(); + // TODO: + // if (fCollector.getErrorMessage() != null && + // fCollector.getErrorMessage().length() > 0) + // return fCollector.getErrorMessage(); return fErrorMessage; } @@ -272,7 +290,7 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa initializeJavaPlugins(); // fCollector = new JSPResultCollector(); - fCollector = new JSPCompletionRequestor(); + fCollector = new JSPCompletionRequestor(); fJspSourcePosition = pos; fErrorMessage = null; } @@ -290,7 +308,9 @@ public class JSPCompletionProcessor implements IContentAssistProcessor, IReleasa } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.ibm.sse.editor.IReleasable#release() */ public void release() { diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java index c7231fb627..bece5cbf1a 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java @@ -36,6 +36,7 @@ import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController; import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager; import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapterFactory; import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; import org.eclipse.jst.jsp.ui.internal.Logger; import org.eclipse.jst.jsp.ui.internal.preferences.JSPUIPreferenceNames; @@ -82,7 +83,6 @@ import org.eclipse.wst.sse.ui.registry.AdapterFactoryRegistry; import org.eclipse.wst.xml.core.document.XMLModel; import org.eclipse.wst.xml.core.document.XMLNode; import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.core.text.rules.StructuredTextPartitionerForXML; diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java index 228c937498..36626e2c61 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java @@ -21,6 +21,7 @@ import org.eclipse.jface.text.contentassist.IContentAssistProcessor; import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.jface.text.contentassist.IContextInformationValidator; import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.IndexedRegion; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; @@ -33,7 +34,6 @@ import org.eclipse.wst.sse.ui.internal.SSEUIPlugin; import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils; import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.ui.contentassist.XMLRelevanceConstants; import org.eclipse.wst.xml.ui.util.SharedXMLEditorPluginImageHelper; diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java index 7d5db175a9..178993dfbd 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java @@ -22,6 +22,7 @@ import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jst.jsp.core.JSP11Namespace; import org.eclipse.jst.jsp.core.JSP12Namespace; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.swt.graphics.Image; import org.eclipse.wst.sse.core.text.IStructuredDocument; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; @@ -30,7 +31,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.sse.core.util.StringUtils; import org.eclipse.wst.sse.ui.contentassist.IRelevanceCompletionProposal; import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; /** diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java index e43b47f98e..3e3bf10174 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java @@ -14,12 +14,12 @@ import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.contentassist.IContentAssistProcessor; import org.eclipse.jst.jsp.core.JSP11Namespace; import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.html.core.internal.text.rules.StructuredTextPartitionerForHTML; import org.eclipse.wst.html.ui.internal.contentassist.NoRegionContentAssistProcessorForHTML; import org.eclipse.wst.sse.core.text.IStructuredDocument; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.rules.StructuredTextPartitioner; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.text.rules.StructuredTextPartitionerForXML; /** diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java index c24bc2d48b..a0283832e2 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesAction.java @@ -19,6 +19,7 @@ import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; import org.eclipse.jst.jsp.core.internal.text.rules.StructuredTextPartitionerForJSP; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.search.ui.ISearchQuery; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.texteditor.ITextEditor; @@ -27,7 +28,6 @@ import org.eclipse.wst.sse.ui.StructuredTextEditor; import org.eclipse.wst.sse.ui.internal.search.BasicFindOccurrencesAction; import org.eclipse.wst.xml.core.document.XMLDocument; import org.eclipse.wst.xml.core.document.XMLModel; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; /** diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java index 00c0cb015e..9f7fe48295 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/reconcile/ReconcileStepForJspTranslation.java @@ -23,6 +23,7 @@ import org.eclipse.jface.text.reconciler.IReconcileStep; import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.core.IStructuredModel; import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.text.IStructuredDocument; @@ -35,7 +36,6 @@ import org.eclipse.wst.sse.ui.internal.reconcile.StructuredReconcileStep; import org.eclipse.wst.sse.ui.internal.reconcile.TemporaryAnnotation; import org.eclipse.wst.xml.core.document.XMLDocument; import org.eclipse.wst.xml.core.document.XMLModel; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; /** diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java index b7a90eec23..803ee62af1 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/preferences/ui/JSPColorPage.java @@ -17,6 +17,7 @@ import java.util.Iterator; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jst.jsp.core.contenttype.ContentTypeIdForJSP; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds; import org.eclipse.swt.widgets.Composite; @@ -28,7 +29,6 @@ import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore; import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey; import org.eclipse.wst.sse.ui.preferences.ui.StyledTextColorPicker; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.ui.preferences.XMLColorPage; import org.eclipse.wst.xml.ui.style.IStyleConstantsXML; diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java index 51016182cb..94e02232d1 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/style/LineStyleProviderForJSP.java @@ -13,12 +13,12 @@ package org.eclipse.jst.jsp.ui.style; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin; import org.eclipse.wst.html.ui.style.IStyleConstantsHTML; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.sse.ui.style.AbstractLineStyleProvider; import org.eclipse.wst.sse.ui.style.LineStyleProvider; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.ui.style.IStyleConstantsXML; diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java index 40a96a5696..dc8689ba98 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/taginfo/JSPTagInfoHoverProcessor.java @@ -12,12 +12,12 @@ package org.eclipse.jst.jsp.ui.taginfo; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.html.ui.taginfo.HTMLTagInfoHoverProcessor; import org.eclipse.wst.sse.core.IndexedRegion; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; /** * Provides hover help documentation for JSP tags diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java index 5d4d384181..dab2eaa71c 100644 --- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java +++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/text/JSPDocumentRegionEdgeMatcher.java @@ -11,8 +11,8 @@ package org.eclipse.jst.jsp.ui.text; import org.eclipse.jdt.internal.ui.text.JavaPairMatcher; +import org.eclipse.jst.jsp.core.model.parser.XMLJSPRegionContexts; import org.eclipse.wst.sse.ui.text.DocumentRegionEdgeMatcher; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; public class JSPDocumentRegionEdgeMatcher extends DocumentRegionEdgeMatcher { diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java index 0935e7dd96..c1d0eb9505 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/cleanup/HTMLCleanupHandlerFactory.java @@ -16,7 +16,6 @@ import org.eclipse.wst.sse.core.cleanup.IStructuredCleanupHandler; import org.eclipse.wst.sse.core.cleanup.IStructuredCleanupPreferences; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Node; @@ -24,6 +23,8 @@ import org.w3c.dom.Node; class HTMLCleanupHandlerFactory { + + private static HTMLCleanupHandlerFactory fInstance = null; static synchronized HTMLCleanupHandlerFactory getInstance() { @@ -41,26 +42,23 @@ class HTMLCleanupHandlerFactory { short nodeType = node.getNodeType(); IStructuredCleanupHandler handler = null; switch (nodeType) { - case Node.ELEMENT_NODE : - { - if (isJSPTag(node)) - handler = new JSPElementNodeCleanupHandler(); - else - handler = new ElementNodeCleanupHandler(); - break; - } - case Node.TEXT_NODE : - { - if (isParentStyleTag(node)) - handler = new CSSTextNodeCleanupHandler(); - else - handler = new NodeCleanupHandler(); - break; - } - default : - { + case Node.ELEMENT_NODE : { + if (isJSPTag(node)) + handler = new JSPElementNodeCleanupHandler(); + else + handler = new ElementNodeCleanupHandler(); + break; + } + case Node.TEXT_NODE : { + if (isParentStyleTag(node)) + handler = new CSSTextNodeCleanupHandler(); + else handler = new NodeCleanupHandler(); - } + break; + } + default : { + handler = new NodeCleanupHandler(); + } } handler.setCleanupPreferences(cleanupPreferences); @@ -68,20 +66,50 @@ class HTMLCleanupHandlerFactory { return handler; } + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on "nestedContext". + */ + private boolean isJSPTag(Node node) { + + final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$ + // final String JSP_COMMENT_CLOSE = "JSP_COMMENT_CLOSE"; //$NON-NLS-1$ + + // final String JSP_COMMENT_OPEN = "JSP_COMMENT_OPEN"; //$NON-NLS-1$ + // final String JSP_COMMENT_TEXT = "JSP_COMMENT_TEXT"; //$NON-NLS-1$ + + final String JSP_CONTENT = "JSP_CONTENT"; //$NON-NLS-1$ + final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$ + final String JSP_DIRECTIVE_CLOSE = "JSP_DIRECTIVE_CLOSE"; //$NON-NLS-1$ + final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$ + + final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$ + final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$ + + // final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$ + + final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$ + boolean result = false; if (node instanceof XMLNode) { IStructuredDocumentRegion flatNode = ((XMLNode) node).getFirstStructuredDocumentRegion(); - // in some cases, the nodes exists, but hasn't been associated with - // a flatnode yet (the screen updates can be initiated on a different thread, - // so the request for a flatnode can come in before the node is fully formed. - // if the flatnode is null, we'll just allow the defaults to apply. - // (html adapter in this case). + // in some cases, the nodes exists, but hasn't been associated + // with + // a flatnode yet (the screen updates can be initiated on a + // different thread, + // so the request for a flatnode can come in before the node is + // fully formed. + // if the flatnode is null, we'll just allow the defaults to + // apply. if (flatNode != null) { String flatNodeType = flatNode.getType(); - if ((flatNodeType == XMLJSPRegionContexts.JSP_CONTENT) || (flatNodeType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_CLOSE)) { - result = true; + // should not be null, but just to be sure + if (flatNodeType != null) { + if ((flatNodeType.equals(JSP_CONTENT)) || (flatNodeType.equals(JSP_EXPRESSION_OPEN)) || (flatNodeType.equals(JSP_SCRIPTLET_OPEN)) || (flatNodeType.equals(JSP_DECLARATION_OPEN)) || (flatNodeType.equals(JSP_DIRECTIVE_CLOSE)) || (flatNodeType.equals(JSP_DIRECTIVE_NAME)) || (flatNodeType.equals(JSP_DIRECTIVE_OPEN)) || (flatNodeType.equals(JSP_CLOSE))) { + result = true; + } } } } diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java index 77b9001c58..def25572b1 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/DocumentStyleImpl.java @@ -39,7 +39,7 @@ public class DocumentStyleImpl extends DocumentImpl implements XMLDocument, Docu super(); } - public DocumentStyleImpl(DocumentImpl that) { + protected DocumentStyleImpl(DocumentImpl that) { super(that); } diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java index a509467ea3..4ef5276e38 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/document/MetaDataAdapter.java @@ -22,7 +22,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.xml.core.document.TagAdapter; import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLModel; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; /** @@ -66,7 +65,7 @@ public class MetaDataAdapter implements TagAdapter, MetaData { while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == XMLJSPRegionContexts.JSP_COMMENT_TEXT) { + if (isCommentText(regionType)) { data = flatNode.getText(region); break; } @@ -91,8 +90,27 @@ public class MetaDataAdapter implements TagAdapter, MetaData { return data.substring(offset); } + private boolean isCommentText(String regionType) { + boolean result = false; + result = isDOMComment(regionType) || isNestedContentComment(regionType); + return result; + } + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". */ + + private boolean isNestedContentComment(String regionType) { + final String JSP_COMMENT_TEXT = "JSP_COMMENT_TEXT"; //$NON-NLS-1$ + return regionType.equals(JSP_COMMENT_TEXT); + } + + private boolean isDOMComment(String regionType) { + return regionType == XMLRegionContext.XML_COMMENT_TEXT; + } + public String getData() { if (this.element == null) return null; diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java index 983ba21ad2..f219d94021 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLElementFormatter.java @@ -25,14 +25,13 @@ import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLNode; import org.eclipse.wst.xml.core.format.IStructuredFormatPreferencesXML; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Attr; import org.w3c.dom.NamedNodeMap; // nakamori_TODO: check and remove CSS formatting -public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionContext, XMLJSPRegionContexts { +public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionContext { /** */ @@ -79,19 +78,19 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont if (region == null) continue; String regionType = region.getType(); - if (regionType == XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) { + if (regionType == XML_TAG_NAME || isNestedTag(regionType)) { if (prevRegion != null && prevRegion.getType() == XML_END_TAG_OPEN) { removeTailingSpaces(endStructuredDocumentRegion, prevRegion); } } else if (regionType == XML_TAG_CLOSE) { - if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || prevRegion.getType() == JSP_ROOT_TAG_NAME)) { + if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || isNestedRootTag(prevRegion.getType()))) { removeTailingSpaces(endStructuredDocumentRegion, prevRegion); } } prevRegion = region; } - if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || prevRegion.getType() == JSP_ROOT_TAG_NAME)) { + if (prevRegion != null && (prevRegion.getType() == XML_TAG_NAME || isNestedRootTag(prevRegion.getType()))) { removeTailingSpaces(endStructuredDocumentRegion, prevRegion); } @@ -123,7 +122,7 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont return; // We should format attributes in JSPTag? - //if (element.isJSPTag() || element.isCommentTag()) { + // if (element.isJSPTag() || element.isCommentTag()) { if (element.isCommentTag()) { String startTag = startStructuredDocumentRegion.getText(); if (startTag != null && startTag.length() > 0) { @@ -164,7 +163,7 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont ITextRegion breakRegion = null; String regionType = region.getType(); - if (regionType == XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) { + if (regionType == XML_TAG_NAME || isNestedTag(regionType)) { if (prevRegion != null && prevRegion.getType() == XML_TAG_OPEN) { removeTailingSpaces(startStructuredDocumentRegion, prevRegion); } @@ -256,6 +255,30 @@ public class HTMLElementFormatter extends HTMLFormatter implements XMLRegionCont } /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". + */ + private boolean isNestedTag(String regionType) { + final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$ + final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$ + boolean result = regionType.equals(JSP_ROOT_TAG_NAME) || regionType.equals(JSP_DIRECTIVE_NAME); + return result; + } + + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". + */ + private boolean isNestedRootTag(String regionType) { + final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$ + boolean result = regionType.equals(JSP_ROOT_TAG_NAME); + return result; + } + + + /** */ private void formatStyleAttr(Attr attr) { if (attr == null) diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java index dd0650abfb..167fcf3c9b 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/format/HTMLTextFormatter.java @@ -19,7 +19,6 @@ import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLNode; import org.eclipse.wst.xml.core.document.XMLText; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -45,7 +44,7 @@ public class HTMLTextFormatter extends HTMLFormatter { IStructuredDocumentRegion flatNode = text.getFirstStructuredDocumentRegion(); if (flatNode != null) { String type = flatNode.getType(); - if (type == XMLJSPRegionContexts.JSP_CONTENT || type == XMLRegionContext.BLOCK_TEXT) + if (isUnparsedRegion(type)) return false; } @@ -59,6 +58,24 @@ public class HTMLTextFormatter extends HTMLFormatter { return canFormatChild(parent); } + private boolean isUnparsedRegion(String type) { + boolean result = isNestedScannedRegion(type) || isBlockScannedRegion(type); + return result; + } + + private boolean isBlockScannedRegion(String type) { + return type == XMLRegionContext.BLOCK_TEXT; + } + + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on "nestedContext". + */ + private boolean isNestedScannedRegion(String type) { + final String JSP_CONTENT = "JSP_CONTENT"; //$NON-NLS-1$ + return type.equals(JSP_CONTENT); + } + /** */ private boolean canRemoveHeadingSpaces(XMLNode node) { diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java index da4f240415..3eeacbd57e 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/FMUtil.java @@ -12,15 +12,8 @@ package org.eclipse.wst.html.core.validate; -import java.util.Iterator; - import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; -import org.eclipse.wst.sse.core.text.ITextRegion; -import org.eclipse.wst.sse.core.text.ITextRegionContainer; -import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; -import org.eclipse.wst.xml.core.parser.XMLRegionContext; final class FMUtil { @@ -81,23 +74,5 @@ final class FMUtil { return seg; } - /** - */ - public final static boolean hasJSPRegion(ITextRegion container) { - if (!(container instanceof ITextRegionContainer)) - return false; - ITextRegionList regions = ((ITextRegionContainer) container).getRegions(); - if (regions == null) - return false; - Iterator e = regions.iterator(); - while (e.hasNext()) { - ITextRegion region = (ITextRegion) e.next(); - if (region == null) - continue; - String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_TAG_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) - return true; - } - return false; - } + }
\ No newline at end of file diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java index a57a30720d..e392193d3f 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/validate/HTMLAttributeValidator.java @@ -12,15 +12,20 @@ package org.eclipse.wst.html.core.validate; +import java.util.Iterator; + import org.eclipse.wst.common.contentmodel.CMAttributeDeclaration; import org.eclipse.wst.common.contentmodel.CMDataType; import org.eclipse.wst.common.contentmodel.CMElementDeclaration; import org.eclipse.wst.common.contentmodel.CMNamedNodeMap; import org.eclipse.wst.sse.core.IndexedRegion; import org.eclipse.wst.sse.core.text.ITextRegion; +import org.eclipse.wst.sse.core.text.ITextRegionContainer; +import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.xml.core.document.XMLAttr; import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLNode; +import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -29,11 +34,11 @@ public class HTMLAttributeValidator extends PrimeValidator { private static final int REGION_NAME = 1; private static final int REGION_VALUE = 2; - //<<D210422 + // <<D210422 private static final char SINGLE_QUOTE = '\''; private static final char DOUBLE_QUOTE = '\"'; - //D210422 + // D210422 /** * HTMLAttributeValidator constructor comment. */ @@ -70,8 +75,8 @@ public class HTMLAttributeValidator extends PrimeValidator { } /** - * Allowing the INodeAdapter to compare itself against the type - * allows it to return true in more than one case. + * Allowing the INodeAdapter to compare itself against the type allows it + * to return true in more than one case. */ public boolean isAdapterForType(Object type) { return ((type == HTMLAttributeValidator.class) || super.isAdapterForType(type)); @@ -93,8 +98,10 @@ public class HTMLAttributeValidator extends PrimeValidator { int rgnType = REGION_NAME; int state = ErrorState.NONE_ERROR; Attr a = (Attr) attrs.item(i); - // D203637; If the target attr has prefix, the validator should not - // warn about it. That is, just ignore. It is able to check whether + // D203637; If the target attr has prefix, the validator should + // not + // warn about it. That is, just ignore. It is able to check + // whether // an attr has prefix or not by calling XMLAttr#isGlobalAttr(). // When a attr has prefix (not global), it returns false. boolean isXMLAttr = a instanceof XMLAttr; @@ -106,9 +113,10 @@ public class HTMLAttributeValidator extends PrimeValidator { CMAttributeDeclaration adec = (CMAttributeDeclaration) declarations.getNamedItem(a.getName()); if (adec == null) { - // No attr declaration was found. That is, the attr name is undefined. + // No attr declaration was found. That is, the attr name is + // undefined. // but not regard it as undefined name if it includes JSP - if (!FMUtil.hasJSPRegion(((XMLNode) a).getNameRegion())) { + if (hasJSPRegion(((XMLNode) a).getNameRegion())) { rgnType = REGION_NAME; state = ErrorState.UNDEFINED_NAME_ERROR; } @@ -117,13 +125,17 @@ public class HTMLAttributeValidator extends PrimeValidator { // The attr declaration was found. // At 1st, the name should be checked. if (CMUtil.isHTML(edec) && (!CMUtil.isXHTML(edec))) { - // If the target element is pure HTML (not XHTML), some attributes - // might be written in boolean format. It should be check specifically. + // If the target element is pure HTML (not XHTML), some + // attributes + // might be written in boolean format. It should be check + // specifically. if (CMUtil.isBooleanAttr(adec) && ((XMLAttr) a).hasNameOnly()) - continue; // OK, keep going. No more check is needed against this attr. + continue; // OK, keep going. No more check is needed + // against this attr. } else { - // If the target is other than pure HTML (JSP or XHTML), the name + // If the target is other than pure HTML (JSP or XHTML), + // the name // must be checked exactly (ie in case sensitive way). String actual = a.getName(); String desired = adec.getAttrName(); @@ -163,9 +175,11 @@ public class HTMLAttributeValidator extends PrimeValidator { } } if (!found) { - // No candidate was found. That is, actualValue is invalid. - // but not regard it as undefined value if it includes JSP. - if (!FMUtil.hasJSPRegion(((XMLNode) a).getValueRegion())) { + // No candidate was found. That is, + // actualValue is invalid. + // but not regard it as undefined value if it + // includes JSP. + if (hasJSPRegion(((XMLNode) a).getValueRegion())) { rgnType = REGION_VALUE; state = ErrorState.UNDEFINED_VALUE_ERROR; } @@ -173,7 +187,7 @@ public class HTMLAttributeValidator extends PrimeValidator { } } } - //<<D210422 + // <<D210422 if (state == ErrorState.NONE_ERROR) { // Need more check. if (isXMLAttr) { String source = ((XMLAttr) a).getValueRegionText(); @@ -189,7 +203,7 @@ public class HTMLAttributeValidator extends PrimeValidator { } } } - //D210422 + // D210422 } if (state != ErrorState.NONE_ERROR) { Segment seg = getErrorSegment((XMLNode) a, rgnType); @@ -199,9 +213,43 @@ public class HTMLAttributeValidator extends PrimeValidator { } } - //<<D214022 + /** + */ + private boolean hasJSPRegion(ITextRegion container) { + if (!(container instanceof ITextRegionContainer)) + return false; + ITextRegionList regions = ((ITextRegionContainer) container).getRegions(); + if (regions == null) + return false; + Iterator e = regions.iterator(); + while (e.hasNext()) { + ITextRegion region = (ITextRegion) e.next(); + if (region == null) + continue; + String regionType = region.getType(); + if (regionType == XMLRegionContext.XML_TAG_OPEN || (isNextedTagName(regionType))) + return true; + } + return false; + } + + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on "nestedContext". + */ + private boolean isNextedTagName(String regionType) { + final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$ + final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$ + final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$ + final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$ + + boolean result = regionType.equals(JSP_SCRIPTLET_OPEN) || regionType.equals(JSP_EXPRESSION_OPEN) || regionType.equals(JSP_DECLARATION_OPEN) || regionType.equals(JSP_DIRECTIVE_OPEN); + return result; + } + + // <<D214022 private boolean isQuote(char c) { return (c == SINGLE_QUOTE) || (c == DOUBLE_QUOTE); } - //D210422 + // D210422 }
\ No newline at end of file diff --git a/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs index bf65247070..036ecb464e 100644 --- a/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs +++ b/bundles/org.eclipse.wst.html.ui/.settings/org.eclipse.jdt.core.prefs @@ -1,48 +1,50 @@ -#Wed Jan 12 13:47:41 EST 2005 -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error +#Sun Mar 13 23:58:13 EST 2005 +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.cleanOutputFolder=clean +org.eclipse.jdt.core.builder.duplicateResourceTask=warning org.eclipse.jdt.core.builder.invalidClasspath=abort org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch -org.eclipse.jdt.core.compiler.problem.unusedLocal=error -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning +org.eclipse.jdt.core.circularClasspath=error +org.eclipse.jdt.core.classpath.exclusionPatterns=enabled +org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=warning +org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.builder.cleanOutputFolder=clean org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -eclipse.preferences.version=1 -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.builder.duplicateResourceTask=warning +org.eclipse.jdt.core.compiler.problem.unusedImport=error +org.eclipse.jdt.core.compiler.problem.unusedLocal=error +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.incompatibleJDKLevel=ignore +org.eclipse.jdt.core.incompleteClasspath=error diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java index 756030e14a..5f39ed0d0f 100644 --- a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java +++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/preferences/ui/HTMLColorPage.java @@ -27,9 +27,7 @@ import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore; import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey; import org.eclipse.wst.sse.ui.preferences.ui.StyledTextColorPicker; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.ui.preferences.XMLColorPage; -import org.eclipse.wst.xml.ui.style.IStyleConstantsXML; public class HTMLColorPage extends XMLColorPage { @@ -60,18 +58,12 @@ public class HTMLColorPage extends XMLColorPage { initCommonContextStyleMap(contextStyleMap); initDocTypeContextStyleMap(contextStyleMap); - // contextStyleMap.put(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER); - // contextStyleMap.put(XMLJSPRegionContexts.JSP_CONTENT, HTMLColorManager.SCRIPT_AREA); - // contextStyleMap.put(XMLJSPRegionContexts.BLOCK_TEXT, HTMLColorManager.SCRIPT_AREA); - // contextStyleMap.put(XMLJSPRegionContexts.JSP_DECLARATION_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER); - // contextStyleMap.put(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER); - // contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN, HTMLColorManager.SCRIPT_AREA_BORDER); - // contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE, HTMLColorManager.SCRIPT_AREA_BORDER); - // contextStyleMap.put(XMLJSPRegionContexts.JSP_CLOSE, HTMLColorManager.SCRIPT_AREA_BORDER); - contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_NAME, IStyleConstantsXML.TAG_NAME); - contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_OPEN, IStyleConstantsXML.COMMENT_BORDER); - contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_TEXT, IStyleConstantsXML.COMMENT_TEXT); - contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_CLOSE, IStyleConstantsXML.COMMENT_BORDER); + // FIXME: these were "brute forced" commented out when moving XMLJSPRegionContexts + // effect is unknown, but thought just to effect preference page + //contextStyleMap.put(XMLJSPRegionContexts.JSP_DIRECTIVE_NAME, IStyleConstantsXML.TAG_NAME); + //contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_OPEN, IStyleConstantsXML.COMMENT_BORDER); + //contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_TEXT, IStyleConstantsXML.COMMENT_TEXT); + //contextStyleMap.put(XMLJSPRegionContexts.JSP_COMMENT_CLOSE, IStyleConstantsXML.COMMENT_BORDER); } protected void initDescriptions(Dictionary descriptions) { diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java index 60b804141b..29229147e4 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/document/XMLAttr.java @@ -47,7 +47,7 @@ public interface XMLAttr extends XMLNode, Attr { /** * Check if Attr has JSP in value */ - boolean hasJSPValue(); + boolean hasNestedValue(); /** * Check if Attr has only name but not equal sign nor value diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java index 73d7afcf91..79c2c2b333 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/format/NodeFormatter.java @@ -32,8 +32,9 @@ import org.eclipse.wst.xml.core.document.XMLModel; import org.eclipse.wst.xml.core.document.XMLNode; import org.eclipse.wst.xml.core.internal.XMLCorePlugin; import org.eclipse.wst.xml.core.internal.document.CDATASectionImpl; +import org.eclipse.wst.xml.core.internal.document.CharacterDataImpl; +import org.eclipse.wst.xml.core.internal.document.CommentImpl; import org.eclipse.wst.xml.core.internal.parser.regions.TagNameRegion; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Node; @@ -538,8 +539,8 @@ public class NodeFormatter implements IStructuredFormatter { protected String getNodeText(XMLNode node) { String text = null; - if ((node instanceof org.eclipse.wst.xml.core.internal.document.CharacterDataImpl) && !(node instanceof org.eclipse.wst.xml.core.internal.document.CommentImpl) && !(node instanceof org.eclipse.wst.xml.core.internal.document.CDATASectionImpl) && !isJSPTag(node)) - text = ((org.eclipse.wst.xml.core.internal.document.CharacterDataImpl) node).getSource(); + if ((node instanceof CharacterDataImpl) && !(node instanceof CommentImpl) && !(node instanceof CDATASectionImpl) && !isJSPTag(node)) + text = ((CharacterDataImpl) node).getSource(); else text = node.getFirstStructuredDocumentRegion().getText(); @@ -675,27 +676,6 @@ public class NodeFormatter implements IStructuredFormatter { return result; } - protected boolean isJSPTag(XMLNode node) { - boolean result = false; - - IStructuredDocumentRegion flatNode = node.getFirstStructuredDocumentRegion(); - // in some cases, the nodes exists, but hasn't been associated with - // a flatnode yet (the screen updates can be initiated on a different - // thread, - // so the request for a flatnode can come in before the node is fully - // formed. - // if the flatnode is null, we'll just allow the defaults to apply. - // (html adapter in this case). - if (flatNode != null) { - String flatNodeType = flatNode.getType(); - if ((flatNodeType == XMLJSPRegionContexts.JSP_CONTENT) || (flatNodeType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (flatNodeType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || (flatNodeType == XMLJSPRegionContexts.JSP_CLOSE)) { - result = true; - } - } - - return result; - } - protected boolean nodeHasSiblings(XMLNode node) { return (node.getPreviousSibling() != null) || (node.getNextSibling() != null); } @@ -762,4 +742,54 @@ public class NodeFormatter implements IStructuredFormatter { public void setProgressMonitor(IProgressMonitor monitor) { fProgressMonitor = monitor; } + + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on "nestedContext". + */ + private boolean isJSPTag(Node node) { + + final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$ + // final String JSP_COMMENT_CLOSE = "JSP_COMMENT_CLOSE"; //$NON-NLS-1$ + + // final String JSP_COMMENT_OPEN = "JSP_COMMENT_OPEN"; //$NON-NLS-1$ + // final String JSP_COMMENT_TEXT = "JSP_COMMENT_TEXT"; //$NON-NLS-1$ + + final String JSP_CONTENT = "JSP_CONTENT"; //$NON-NLS-1$ + final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$ + final String JSP_DIRECTIVE_CLOSE = "JSP_DIRECTIVE_CLOSE"; //$NON-NLS-1$ + final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$ + + final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$ + final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$ + + // final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$ + + final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$ + + boolean result = false; + + if (node instanceof XMLNode) { + IStructuredDocumentRegion flatNode = ((XMLNode) node).getFirstStructuredDocumentRegion(); + // in some cases, the nodes exists, but hasn't been associated + // with + // a flatnode yet (the screen updates can be initiated on a + // different thread, + // so the request for a flatnode can come in before the node is + // fully formed. + // if the flatnode is null, we'll just allow the defaults to + // apply. + if (flatNode != null) { + String flatNodeType = flatNode.getType(); + // should not be null, but just to be sure + if (flatNodeType != null) { + if ((flatNodeType.equals(JSP_CONTENT)) || (flatNodeType.equals(JSP_EXPRESSION_OPEN)) || (flatNodeType.equals(JSP_SCRIPTLET_OPEN)) || (flatNodeType.equals(JSP_DECLARATION_OPEN)) || (flatNodeType.equals(JSP_DIRECTIVE_CLOSE)) || (flatNodeType.equals(JSP_DIRECTIVE_NAME)) || (flatNodeType.equals(JSP_DIRECTIVE_OPEN)) || (flatNodeType.equals(JSP_CLOSE))) { + result = true; + } + } + } + } + + return result; + } } diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java index 959f512544..25a01fb223 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/AttrImpl.java @@ -26,7 +26,6 @@ import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.xml.core.document.XMLAttr; import org.eclipse.wst.xml.core.document.XMLCharEntity; import org.eclipse.wst.xml.core.document.XMLNamespace; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Attr; import org.w3c.dom.DOMException; @@ -210,7 +209,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr { return XMLNamespace.XMLNS_URI; } nsAttrName = XMLNamespace.XMLNS_PREFIX + prefix; - } else { + } + else { String name = getName(); if (name != null && name.equals(XMLNamespace.XMLNS)) { // fixed URI @@ -463,7 +463,7 @@ public class AttrImpl extends NodeImpl implements XMLAttr { /** * Check if Attr has JSP in value */ - public boolean hasJSPValue() { +public boolean hasNestedValue() { if (this.valueRegion == null) return false; if (!(this.valueRegion instanceof ITextRegionContainer)) @@ -477,7 +477,7 @@ public class AttrImpl extends NodeImpl implements XMLAttr { if (region == null) continue; String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_TAG_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) + if (regionType == XMLRegionContext.XML_TAG_OPEN || isNestedLanguageOpening(regionType)) return true; } return false; @@ -510,7 +510,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr { if (this.ownerElement.ignoreCase()) { return !hasPrefix(); } - } else { + } + else { DocumentImpl document = (DocumentImpl) getOwnerDocument(); if (document != null && document.ignoreCase()) { // even in case insensitive document, if having prefix, it's @@ -538,7 +539,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr { if (!this.ownerElement.isXMLTag()) { return hasPrefix(); } - } else { + } + else { DocumentImpl document = (DocumentImpl) getOwnerDocument(); if (document != null && !document.isXMLType()) { // even in non-XML document, if having prefix, it's XML tag @@ -726,7 +728,8 @@ public class AttrImpl extends NodeImpl implements XMLAttr { try { getModel().aboutToChangeModel(); setValueSource(getValueSource(value)); - } finally { + } + finally { getModel().changedModel(); } } @@ -753,4 +756,14 @@ public class AttrImpl extends NodeImpl implements XMLAttr { notifyValueChanged(); } + + /** + * Subclasses must override + * @param regionType + * @return + */ + protected boolean isNestedLanguageOpening(String regionType) { + boolean result = false; + return result; + } } diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java index 4c4a2dbc72..935a7e7b31 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CharacterDataImpl.java @@ -15,7 +15,6 @@ package org.eclipse.wst.xml.core.internal.document; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.w3c.dom.CharacterData; import org.w3c.dom.DOMException; import org.w3c.dom.Node; @@ -24,7 +23,7 @@ import org.w3c.dom.Node; /** * CharacterDataImpl class */ -public abstract class CharacterDataImpl extends NodeImpl implements XMLJSPRegionContexts, CharacterData { +public abstract class CharacterDataImpl extends NodeImpl implements CharacterData { private String data = null; diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java index 2d8d257072..81779defb3 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/CommentImpl.java @@ -19,7 +19,6 @@ import java.util.Iterator; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.sse.core.text.ITextRegionList; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Comment; import org.w3c.dom.DOMException; @@ -96,12 +95,13 @@ public class CommentImpl extends CharacterDataImpl implements Comment { while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == JSP_COMMENT_OPEN || regionType == XMLRegionContext.XML_COMMENT_CLOSE || regionType == JSP_COMMENT_CLOSE) { + if (regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_COMMENT_CLOSE || isNestedCommentOpenClose(regionType)) { continue; } if (contentRegion == null) { // first content contentRegion = region; - } else { // multiple contents + } + else { // multiple contents if (buffer == null) { buffer = new StringBuffer(flatNode.getText(contentRegion)); } @@ -141,14 +141,28 @@ public class CommentImpl extends CharacterDataImpl implements Comment { if (flatNode == null) return true; // will be generated String regionType = StructuredDocumentRegionUtil.getLastRegionType(flatNode); - return (regionType == XMLRegionContext.XML_COMMENT_CLOSE || regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE); + return (regionType == XMLRegionContext.XML_COMMENT_CLOSE || isNestedCommentClose(regionType)); } /** - * isJSP method - * - * @return boolean + * Subclasses must override + * @param regionType + * @return + */ + protected boolean isNestedCommentClose(String regionType) { + boolean result = false; + return result; + } + /** + * Subclasses must override + * @param regionType + * @return */ + protected boolean isNestedCommentOpenClose(String regionType) { + boolean result = false; + return result; + } + public boolean isJSPTag() { return this.isJSPTag; } diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java index 4ef5fbc202..231e607d40 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/DocumentImpl.java @@ -370,9 +370,7 @@ public class DocumentImpl extends NodeContainer implements XMLDocument { throw new DOMException(DOMException.INVALID_CHARACTER_ERR, new String()); } - ElementImpl element = new ElementImpl(); - element.setOwnerDocument(this); - element.setTagName(tagName); + ElementImpl element = (ElementImpl) createElement(tagName); element.setNamespaceURI(uri); return element; } diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java index fd8d27a8ce..8f98536fcd 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ElementImpl.java @@ -30,7 +30,6 @@ import org.eclipse.wst.xml.core.document.XMLModel; import org.eclipse.wst.xml.core.document.XMLNamespace; import org.eclipse.wst.xml.core.document.XMLNode; import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Attr; @@ -275,7 +274,8 @@ public class ElementImpl extends NodeContainer implements XMLElement { if (uri == null) { if (nsURI != null) continue; - } else { + } + else { if (nsURI == null || !nsURI.equals(uri)) continue; } @@ -439,7 +439,7 @@ public class ElementImpl extends NodeContainer implements XMLElement { while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) { + if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedEndTag(regionType)) { return this.endStructuredDocumentRegion.getText(region); } } @@ -447,6 +447,11 @@ public class ElementImpl extends NodeContainer implements XMLElement { return null; } + protected boolean isNestedEndTag(String regionType) { + boolean result = false; + return result; + } + /** * getFirstStructuredDocumentRegion method * @@ -488,7 +493,8 @@ public class ElementImpl extends NodeContainer implements XMLElement { String prefix = getPrefix(); if (prefix != null && prefix.length() > 0) { nsAttrName = XMLNamespace.XMLNS_PREFIX + prefix; - } else { + } + else { nsAttrName = XMLNamespace.XMLNS; } @@ -676,7 +682,8 @@ public class ElementImpl extends NodeContainer implements XMLElement { throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, new String()); } if (newChild.getNodeType() != TEXT_NODE) { - if (isJSPContainer() || isCDATAContainer()) { // accepts only Text + if (isJSPContainer() || isCDATAContainer()) { // accepts only + // Text // child throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, new String()); } @@ -721,21 +728,32 @@ public class ElementImpl extends NodeContainer implements XMLElement { flatNode = getStructuredDocumentRegion(); if (flatNode == null) return true; // will be generated - } else { + } + else { flatNode = getEndStructuredDocumentRegion(); if (flatNode == null) return false; // must be generated } String regionType = StructuredDocumentRegionUtil.getLastRegionType(flatNode); if (isCommentTag()) { - return (regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE || regionType == XMLRegionContext.XML_COMMENT_CLOSE); + return (isNestedClosedComment(regionType) || regionType == XMLRegionContext.XML_COMMENT_CLOSE); } if (isJSPTag()) { - return (regionType == XMLJSPRegionContexts.JSP_CLOSE || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE); + return isNestedClosed(regionType); } return (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == XMLRegionContext.XML_DECLARATION_CLOSE); } + protected boolean isNestedClosed(String regionType) { + boolean result = false; + return result; + } + + protected boolean isNestedClosedComment(String regionType) { + boolean result = false; + return result; + } + /** */ public final boolean isCommentTag() { @@ -828,16 +846,21 @@ public class ElementImpl extends NodeContainer implements XMLElement { return true; // will be generated String regionType = StructuredDocumentRegionUtil.getLastRegionType(flatNode); if (isCommentTag()) { - return (regionType == XMLJSPRegionContexts.JSP_COMMENT_CLOSE || regionType == XMLRegionContext.XML_COMMENT_CLOSE); + return (isNestedClosedComment(regionType) || regionType == XMLRegionContext.XML_COMMENT_CLOSE); } if (isJSPTag()) { if (isContainer()) return true; // start tag always has a single region - return (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE); + return isClosedNestedDirective(regionType); } return (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == XMLRegionContext.XML_DECLARATION_CLOSE); } + protected boolean isClosedNestedDirective(String regionType) { + boolean result = false; + return result; + } + /** */ public final boolean isXMLTag() { @@ -1049,7 +1072,8 @@ public class ElementImpl extends NodeContainer implements XMLElement { if (uri == null) { if (nsURI != null) continue; - } else { + } + else { if (nsURI == null || !nsURI.equals(uri)) continue; } @@ -1351,7 +1375,8 @@ public class ElementImpl extends NodeContainer implements XMLElement { return; } setTagName(localName); - } else { + } + else { int localLength = (localName != null ? localName.length() : 0); StringBuffer buffer = new StringBuffer(prefixLength + 1 + localLength); buffer.append(prefix); diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java index de9a4fe014..9378ca6b6b 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/ProcessingInstructionImpl.java @@ -19,7 +19,6 @@ import java.util.Iterator; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.sse.core.text.ITextRegionList; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.DOMException; import org.w3c.dom.Node; @@ -29,7 +28,7 @@ import org.w3c.dom.ProcessingInstruction; /** * ProcessingInstructionImpl class */ -public class ProcessingInstructionImpl extends NodeImpl implements XMLJSPRegionContexts, ProcessingInstruction { +public class ProcessingInstructionImpl extends NodeImpl implements ProcessingInstruction { private String data = null; private String target = null; @@ -95,7 +94,8 @@ public class ProcessingInstructionImpl extends NodeImpl implements XMLJSPRegionC continue; if (regionType == XMLRegionContext.XML_PI_CLOSE) { closeRegion = region; - } else { + } + else { if (targetRegion == null) targetRegion = region; else if (dataRegion == null) diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java index 82c848d940..81d2a63fbc 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/StructuredDocumentRegionUtil.java @@ -17,7 +17,6 @@ package org.eclipse.wst.xml.core.internal.document; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.sse.core.text.ITextRegionList; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; @@ -25,7 +24,7 @@ import org.eclipse.wst.xml.core.parser.XMLRegionContext; * Provides convenient functions to handle IStructuredDocumentRegion and * ITextRegion. */ -class StructuredDocumentRegionUtil implements XMLJSPRegionContexts { +class StructuredDocumentRegionUtil { /** * Extracts contents enclosed with quotes. Quotes may be double or single. diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java index 826fe54b3b..0eb7f4acd4 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/TextImpl.java @@ -114,7 +114,8 @@ public class TextImpl extends CharacterDataImpl implements XMLText { if (flatNode instanceof StructuredDocumentRegionContainer) { StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) flatNode; container.appendStructuredDocumentRegion(newStructuredDocumentRegion); - } else { + } + else { StructuredDocumentRegionContainer container = new StructuredDocumentRegionContainer(); container.appendStructuredDocumentRegion(flatNode); container.appendStructuredDocumentRegion(newStructuredDocumentRegion); @@ -582,13 +583,18 @@ public class TextImpl extends CharacterDataImpl implements XMLText { } String regionType = StructuredDocumentRegionUtil.getFirstRegionType(flatNode); - if (regionType != XMLRegionContext.XML_CONTENT && regionType != JSP_CONTENT && regionType != XMLRegionContext.XML_ENTITY_REFERENCE && regionType != XMLRegionContext.XML_CHAR_REFERENCE && regionType != XMLRegionContext.BLOCK_TEXT && regionType != XMLRegionContext.WHITE_SPACE) { + if (regionType != XMLRegionContext.XML_CONTENT && isNotNestedContent(regionType) && regionType != XMLRegionContext.XML_ENTITY_REFERENCE && regionType != XMLRegionContext.XML_CHAR_REFERENCE && regionType != XMLRegionContext.BLOCK_TEXT && regionType != XMLRegionContext.WHITE_SPACE) { return true; } return false; } + protected boolean isNotNestedContent(String regionType) { + boolean result = true; + return result; + } + /** */ boolean isSharingStructuredDocumentRegion(IStructuredDocumentRegion sharedStructuredDocumentRegion) { @@ -772,7 +778,8 @@ public class TextImpl extends CharacterDataImpl implements XMLText { if (newStructuredDocumentRegion instanceof StructuredDocumentRegionProxy) { // proxy must not be nested setStructuredDocumentRegion(newStructuredDocumentRegion); - } else { + } + else { proxy.setStructuredDocumentRegion(newStructuredDocumentRegion); } return oldStructuredDocumentRegion; @@ -798,7 +805,8 @@ public class TextImpl extends CharacterDataImpl implements XMLText { if (newStructuredDocumentRegion instanceof StructuredDocumentRegionProxy) { // proxy must not be nested container.replaceStructuredDocumentRegion(newStructuredDocumentRegion, i); - } else { + } + else { proxy.setStructuredDocumentRegion(newStructuredDocumentRegion); } return oldStructuredDocumentRegion; diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java index 4a41ef88e5..b4a864ee7f 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelImpl.java @@ -46,7 +46,7 @@ import org.w3c.dom.Node; public class XMLModelImpl extends AbstractStructuredModel implements IStructuredDocumentListener, XMLModel, DOMImplementation { private static String TRACE_PARSER_MANAGEMENT_EXCEPTION = "parserManagement"; //$NON-NLS-1$ private Object active = null; - protected DocumentImpl document = null; + private DocumentImpl document = null; private XMLGenerator generator = null; private XMLModelNotifier notifier = null; private XMLModelParser parser = null; @@ -417,20 +417,28 @@ public class XMLModelImpl extends AbstractStructuredModel implements IStructured */ private XMLModelParser getModelParser() { if (this.parser == null) { - this.parser = new XMLModelParser(this); + this.parser = createModelParser(); } return this.parser; } + protected XMLModelParser createModelParser() { + return new XMLModelParser(this); + } + /** */ private XMLModelUpdater getModelUpdater() { if (this.updater == null) { - this.updater = new XMLModelUpdater(this); + this.updater = createModelUpdater(); } return this.updater; } + protected XMLModelUpdater createModelUpdater() { + return new XMLModelUpdater(this); + } + /** */ private void handleRefresh() { diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java index 7d64743d9a..39911e408d 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelParser.java @@ -24,7 +24,6 @@ import org.eclipse.wst.sse.core.text.ITextRegion; import org.eclipse.wst.sse.core.text.ITextRegionList; import org.eclipse.wst.xml.core.commentelement.impl.CommentElementConfiguration; import org.eclipse.wst.xml.core.commentelement.impl.CommentElementRegistry; -import org.eclipse.wst.xml.core.document.JSPTag; import org.eclipse.wst.xml.core.document.XMLDocument; import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLModel; @@ -40,7 +39,7 @@ import org.w3c.dom.Text; /** * XMLModelParser */ -public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts { +public class XMLModelParser { private ModelParserAdapter adapter = null; private XMLModelContext context = null; private DocumentImpl document = null; @@ -327,21 +326,28 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser // optimize typical cases String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_CONTENT || regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == XMLRegionContext.XML_CDATA_TEXT || regionType == XMLRegionContext.BLOCK_TEXT || regionType == JSP_CONTENT) { + if (regionType == XMLRegionContext.XML_CONTENT || regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == XMLRegionContext.XML_CDATA_TEXT || regionType == XMLRegionContext.BLOCK_TEXT || isNestedContent(regionType)) { changeData(flatNode, region); - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) { changeAttrName(flatNode, region); - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { changeAttrValue(flatNode, region); - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { changeAttrEqual(flatNode, region); - } else if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) { + } + else if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) { changeTagName(flatNode, region); - } else { + } + else { changeStructuredDocumentRegion(flatNode); } } + + /** */ private void changeStartTag(IStructuredDocumentRegion flatNode, ITextRegionList newRegions, ITextRegionList oldRegions) { @@ -374,7 +380,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser // change from empty tag may have impact on structure if (!element.isEmptyTag()) continue; - } else if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) { + } + else if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) { String oldTagName = element.getTagName(); String newTagName = flatNode.getText(region); if (oldTagName != null && newTagName != null && oldTagName.equals(newTagName)) { @@ -400,7 +407,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser // change from empty tag may have impact on structure if (!element.isEmptyTag()) continue; - } else if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME) { + } + else if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) { // if new tag name is unchanged, it's OK if (tagNameUnchanged) continue; @@ -446,7 +454,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser } if (found) { attrIndex++; - } else { + } + else { element.removeAttributeNode(attr); } } @@ -464,7 +473,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser // insert deferred new attribute element.insertAttributeNode(newAttr, attrIndex++); newAttr = null; - } else if (attr != null && oldValueRegion != null) { + } + else if (attr != null && oldValueRegion != null) { // notify existing attribute value removal attr.notifyValueChanged(); } @@ -478,7 +488,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser oldValueRegion = attr.getValueRegion(); attr.setEqualRegion(null); attr.setValueRegion(null); - } else { + } + else { String name = flatNode.getText(region); attr = (AttrImpl) this.document.createAttribute(name); if (attr != null) @@ -486,11 +497,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser // defer insertion of new attribute newAttr = attr; } - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { if (attr != null) { attr.setEqualRegion(region); } - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { if (attr != null) { attr.setValueRegion(region); if (attr != newAttr && oldValueRegion != region) { @@ -506,7 +519,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (newAttr != null) { // insert deferred new attribute element.appendAttributeNode(newAttr); - } else if (attr != null && oldValueRegion != null) { + } + else if (attr != null && oldValueRegion != null) { // notify existing attribute value removal attr.notifyValueChanged(); } @@ -609,7 +623,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser parent = next; next = first; this.context.setNextNode(next); - } else { + } + else { next = next.getNextSibling(); this.context.setNextNode(next); } @@ -634,7 +649,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser parent = parent.getParentNode(); if (next != null) { this.context.setNextNode(next); - } else { + } + else { this.context.setParentNode(parent); } } @@ -686,9 +702,11 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser newParent.insertBefore(childText, newNext); if (childText == next) { this.context.setNextNode(childText); - } else if (newNext != null) { + } + else if (newNext != null) { this.context.setNextNode(newNext); - } else { + } + else { this.context.setParentNode(newParent); } // try again @@ -785,7 +803,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser newElement = (ElementImpl) p; done = true; } - } else { + } + else { // remove implicit element next = nextElement.getNextSibling(); oldParent.removeChild(nextElement); @@ -876,7 +895,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser CDATASectionImpl cdata = null; try { cdata = (CDATASectionImpl) this.document.createCDATASection(null); - } catch (DOMException ex) { + } + catch (DOMException ex) { } if (cdata == null) { // CDATA section might not be supported insertInvalidDecl(flatNode); // regard as invalid decl @@ -904,9 +924,10 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); String regionType = region.getType(); - if (regionType == JSP_COMMENT_OPEN) { + if (isNestedCommentOpen(regionType)) { isJSPTag = true; - } else if (regionType == XMLRegionContext.XML_COMMENT_TEXT || regionType == JSP_COMMENT_TEXT) { + } + else if (regionType == XMLRegionContext.XML_COMMENT_TEXT || isNestedCommentText(regionType)) { if (data == null) { data = flatNode.getText(region); } @@ -970,13 +991,16 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser String regionType = region.getType(); if (regionType == XMLRegionContext.XML_DOCTYPE_DECLARATION) { isDocType = true; - } else if (regionType == XMLRegionContext.XML_DOCTYPE_NAME) { + } + else if (regionType == XMLRegionContext.XML_DOCTYPE_NAME) { if (name == null) name = flatNode.getText(region); - } else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_PUBREF) { + } + else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_PUBREF) { if (publicId == null) publicId = StructuredDocumentRegionUtil.getAttrValue(flatNode, region); - } else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_SYSREF) { + } + else if (regionType == XMLRegionContext.XML_DOCTYPE_EXTERNAL_ID_SYSREF) { if (systemId == null) systemId = StructuredDocumentRegionUtil.getAttrValue(flatNode, region); } @@ -1000,12 +1024,12 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser } /** - * insertEndTag method + * insertEndTag method can be used by subclasses, but not overrided. * * @param element * org.w3c.dom.Element */ - private void insertEndTag(Element element) { + protected void insertEndTag(Element element) { if (element == null) return; @@ -1055,7 +1079,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser Iterator e = regions.iterator(); while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); - if (region.getType() == XMLRegionContext.XML_TAG_NAME || region.getType() == JSP_ROOT_TAG_NAME || region.getType() == JSP_DIRECTIVE_NAME) { + String regionType = region.getType(); + if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) { if (tagName == null) tagName = flatNode.getText(region); } @@ -1078,7 +1103,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser ElementImpl end = null; try { end = (ElementImpl) this.document.createElement(tagName); - } catch (DOMException ex) { + } + catch (DOMException ex) { } if (end == null) { // invalid end tag insertText(flatNode); // regard as invalid text @@ -1139,7 +1165,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser EntityReferenceImpl ref = null; try { ref = (EntityReferenceImpl) this.document.createEntityReference(name); - } catch (DOMException ex) { + } + catch (DOMException ex) { } if (ref == null) { // entity reference might not be supported insertText(flatNode); // regard as invalid text @@ -1164,7 +1191,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser ElementImpl element = null; try { element = (ElementImpl) this.document.createElement("!");//$NON-NLS-1$ - } catch (DOMException ex) { + } + catch (DOMException ex) { } if (element == null) { // invalid tag insertText(flatNode); // regard as invalid text @@ -1181,7 +1209,7 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser * @param flatNode * com.ibm.sed.structuredDocument.IStructuredDocumentRegion */ - private void insertJSPTag(IStructuredDocumentRegion flatNode) { + private void insertNestedTag(IStructuredDocumentRegion flatNode) { ITextRegionList regions = flatNode.getRegions(); if (regions == null) return; @@ -1194,20 +1222,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); String regionType = region.getType(); - if (regionType == JSP_SCRIPTLET_OPEN) { - tagName = JSPTag.JSP_SCRIPTLET; - } else if (regionType == JSP_EXPRESSION_OPEN) { - tagName = JSPTag.JSP_EXPRESSION; - } else if (regionType == JSP_DECLARATION_OPEN) { - tagName = JSPTag.JSP_DECLARATION; - } else if (regionType == JSP_DIRECTIVE_OPEN) { - tagName = JSPTag.JSP_DIRECTIVE; - } else if (regionType == JSP_DIRECTIVE_NAME) { - tagName += '.'; - tagName += flatNode.getText(region); - } else if (regionType == JSP_CLOSE) { + if (isNestedTagOpen(regionType) || isNestedTagName(regionType)) { + tagName = computeNestedTag(regionType, tagName, flatNode, region); + } + else if (isNestedTagClose(regionType)) { isCloseTag = true; - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) { String name = flatNode.getText(region); attr = (AttrImpl) this.document.createAttribute(name); if (attr != null) { @@ -1216,11 +1237,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser attrNodes = new Vector(); attrNodes.addElement(attr); } - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { if (attr != null) { attr.setEqualRegion(region); } - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { if (attr != null) { attr.setValueRegion(region); attr = null; @@ -1249,7 +1272,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser ElementImpl element = null; try { element = (ElementImpl) this.document.createElement(tagName); - } catch (DOMException ex) { + } + catch (DOMException ex) { } if (element == null) { // invalid tag insertText(flatNode); // regard as invalid text @@ -1269,6 +1293,20 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser insertStartTag(element); } + protected boolean isNestedTagClose(String regionType) { + boolean result = false; + return result; + } + + protected boolean isNestedTagOpen(String regionType) { + boolean result = false; + return result; + } + + protected String computeNestedTag(String regionType, String tagName, IStructuredDocumentRegion structuredDocumentRegion, ITextRegion region) { + return tagName; + } + /** * insertNode method * @@ -1395,12 +1433,12 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser } /** - * insertStartTag method + * insertStartTag method can be used by subclasses, but not overridden. * * @param element * org.w3c.dom.Element */ - private void insertStartTag(Element element) { + protected void insertStartTag(Element element) { if (element == null) return; if (this.context == null) @@ -1446,12 +1484,14 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_TAG_NAME || regionType == JSP_ROOT_TAG_NAME || regionType == JSP_DIRECTIVE_NAME) { + if (regionType == XMLRegionContext.XML_TAG_NAME || isNestedTagName(regionType)) { if (tagName == null) tagName = flatNode.getText(region); - } else if (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) { + } + else if (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) { isEmptyTag = true; - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME) { String name = flatNode.getText(region); attr = (AttrImpl) this.document.createAttribute(name); if (attr != null) { @@ -1460,11 +1500,13 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser attrNodes = new Vector(); attrNodes.addElement(attr); } - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { if (attr != null) { attr.setEqualRegion(region); } - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { if (attr != null) { attr.setValueRegion(region); attr = null; @@ -1480,7 +1522,9 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser ElementImpl element = null; try { element = (ElementImpl) this.document.createElement(tagName); - } catch (DOMException ex) { + } + catch (DOMException ex) { + // typically invalid name } if (element == null) { // invalid tag insertText(flatNode); // regard as invalid text @@ -1507,36 +1551,71 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser * @param flatNode * com.ibm.sed.structuredDocument.IStructuredDocumentRegion */ - private void insertStructuredDocumentRegion(IStructuredDocumentRegion flatNode) { + protected void insertStructuredDocumentRegion(IStructuredDocumentRegion flatNode) { String regionType = StructuredDocumentRegionUtil.getFirstRegionType(flatNode); if (regionType == XMLRegionContext.XML_TAG_OPEN) { insertStartTag(flatNode); - } else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) { + } + else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) { insertEndTag(flatNode); - } else if (regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == JSP_COMMENT_OPEN) { + } + else if (regionType == XMLRegionContext.XML_COMMENT_OPEN || isNestedCommentOpen(regionType)) { insertComment(flatNode); - } else if (regionType == XMLRegionContext.XML_ENTITY_REFERENCE || regionType == XMLRegionContext.XML_CHAR_REFERENCE) { + } + else if (regionType == XMLRegionContext.XML_ENTITY_REFERENCE || regionType == XMLRegionContext.XML_CHAR_REFERENCE) { insertEntityRef(flatNode); - } else if (regionType == XMLRegionContext.XML_DECLARATION_OPEN) { + } + else if (regionType == XMLRegionContext.XML_DECLARATION_OPEN) { insertDecl(flatNode); - } else if (regionType == XMLRegionContext.XML_PI_OPEN) { + } + else if (regionType == XMLRegionContext.XML_PI_OPEN) { insertPI(flatNode); - } else if (regionType == XMLRegionContext.XML_CDATA_OPEN) { + } + else if (regionType == XMLRegionContext.XML_CDATA_OPEN) { insertCDATASection(flatNode); - } else if (regionType == JSP_SCRIPTLET_OPEN || regionType == JSP_EXPRESSION_OPEN || regionType == JSP_DECLARATION_OPEN || regionType == JSP_DIRECTIVE_OPEN || regionType == JSP_CLOSE) { - insertJSPTag(flatNode); - } else { + } + else if (isNestedTag(regionType)) { + insertNestedTag(flatNode); + } + else { insertText(flatNode); } } + protected boolean isNestedTag(String regionType) { + boolean result = false; + return result; + } + + protected boolean isNestedCommentText(String regionType) { + boolean result = false; + return result; + } + + + protected boolean isNestedCommentOpen(String regionType) { + boolean result = false; + return result; + } + + protected boolean isNestedTagName(String regionType) { + boolean result = false; + return result; + } + + protected boolean isNestedContent(String regionType) { + boolean result = false; + return result; + } + /** - * insertText method + * insertText method Can be called from subclasses, not to be overrided or + * re-implemented. * * @param flatNode * com.ibm.sed.structuredDocument.IStructuredDocumentRegion */ - private void insertText(IStructuredDocumentRegion flatNode) { + protected void insertText(IStructuredDocumentRegion flatNode) { TextImpl text = (TextImpl) this.context.findPreviousText(); if (text != null) { // existing text found text.appendStructuredDocumentRegion(flatNode); @@ -1590,7 +1669,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (nextElement.matchEndTag(newElement)) { endTag = true; } - } else { + } + else { // remove implicit element next = nextElement.getNextSibling(); oldParent.removeChild(nextElement); @@ -1610,7 +1690,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser newNext = newElement.getNextSibling(); if (newParent.getNodeType() == Node.ELEMENT_NODE) { newElement = (ElementImpl) newParent; - } else { + } + else { newElement = null; } continue; @@ -1642,7 +1723,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (!oldElement.hasChildNodes() && !oldElement.hasStartTag()) { oldParent.removeChild(oldElement); end = oldElement; - } else { + } + else { end = oldElement.removeEndTag(); } if (end != null) { @@ -1744,20 +1826,25 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser Node oldNext = this.context.getNextNode(); if (oldNext != null) { this.context.setNextNode(oldNext); - } else { + } + else { if (elementNext != null) { this.context.setNextNode(elementNext); - } else { + } + else { this.context.setParentNode(elementParent); } } - } else if (this.context.getNextNode() == element) { + } + else if (this.context.getNextNode() == element) { if (firstChild != null) { this.context.setNextNode(firstChild); - } else { + } + else { if (elementNext != null) { this.context.setNextNode(elementNext); - } else { + } + else { this.context.setParentNode(elementParent); } } @@ -1792,7 +1879,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser this.context.setNextNode(next); else this.context.setParentNode(parent); - } else { + } + else { Node oldNext = this.context.getNextNode(); if (node == oldNext) { this.context.setNextNode(next); @@ -1868,7 +1956,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser Node child = oldElement.getFirstChild(); if (child != null) { this.context.setNextNode(child); - } else if (oldElement.hasEndTag()) { + } + else if (oldElement.hasEndTag()) { this.context.setParentNode(oldElement); } return; @@ -1884,7 +1973,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (parent == null) return; Node first = element.getFirstChild(); - Node firstElement = null; // for the case first is removed as end tag + Node firstElement = null; // for the case first is removed as end + // tag if (first != null) { // find new parent for children ElementImpl newElement = null; @@ -1984,7 +2074,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (parent.getNodeType() == Node.ELEMENT_NODE) { newElement = (ElementImpl) parent; - } else { + } + else { newElement = null; } } @@ -2059,7 +2150,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser } newElement.appendChild(child); } - } else { + } + else { if (!oldElement.isCommentTag()) { // clone (re-create) end tag Element end = oldElement.removeEndTag(); @@ -2070,7 +2162,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser } } } - } else { + } + else { newNext = oldElement.getNextSibling(); parent.removeChild(oldElement); } @@ -2081,19 +2174,25 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (element == oldParent) { if (oldNext != null) { this.context.setNextNode(oldNext); // reset for new parent - } else if (newNext != null) { + } + else if (newNext != null) { this.context.setNextNode(newNext); - } else { + } + else { this.context.setParentNode(parent); } - } else if (element == oldNext) { + } + else if (element == oldNext) { if (firstElement != null) { this.context.setParentNode(firstElement); - } else if (first != null) { + } + else if (first != null) { this.context.setNextNode(first); - } else if (startElement != null) { + } + else if (startElement != null) { this.context.setParentNode(startElement); - } else { + } + else { this.context.setNextNode(newNext); } } @@ -2144,7 +2243,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser // this is the case partial IStructuredDocumentRegion is // removed removeNode(text); - } else { + } + else { // notify the change text.notifyValueChanged(); } @@ -2164,10 +2264,12 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (element.hasEndTag() || element.hasChildNodes()) { element.setStartStructuredDocumentRegion(null); removeStartTag(element); - } else { + } + else { removeNode(element); } - } else { + } + else { Node child = element.getFirstChild(); if (child != null) { this.context.setNextNode(child); @@ -2205,7 +2307,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser if (!end.hasStartTag() && !end.hasChildNodes()) { this.context.setNextNode(end); removeNode(end); - } else { + } + else { end.setEndStructuredDocumentRegion(null); removeEndTag(end); } @@ -2248,9 +2351,11 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser String regionType = StructuredDocumentRegionUtil.getFirstRegionType(flatNode); if (regionType == XMLRegionContext.XML_TAG_OPEN) { changeStartTag(flatNode, newRegions, oldRegions); - } else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) { + } + else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) { changeEndTag(flatNode, newRegions, oldRegions); - } else { + } + else { changeStructuredDocumentRegion(flatNode); } } @@ -2282,7 +2387,8 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser continue; removeStructuredDocumentRegion(flatNode); } - } else { + } + else { if (newCount == 0) return; setupContext(newStructuredDocumentRegions.item(0)); @@ -2362,4 +2468,9 @@ public class XMLModelParser implements org.eclipse.wst.xml.core.jsp.model.parser this.context.setParentNode(node); this.context.setLast(); } + + protected XMLModelContext getContext() { + return context; + } + } diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java index c9cab984c8..7a37516a08 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/document/XMLModelUpdater.java @@ -26,7 +26,6 @@ import org.eclipse.wst.xml.core.document.JSPTag; import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLGenerator; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.w3c.dom.Attr; import org.w3c.dom.Element; @@ -38,7 +37,7 @@ import org.w3c.dom.Text; /** * XMLModelUpdater class */ -public class XMLModelUpdater implements XMLJSPRegionContexts { +public class XMLModelUpdater { private int diff = 0; private int gapLength = 0; private int gapOffset = 0; @@ -153,7 +152,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { // use getTextEnd() because getEnd() may include the tailing // spaces end += valueRegion.getTextEnd(); - } else { + } + else { ITextRegion equalRegion = attr.getEqualRegion(); value = this.generator.generateAttrValue(attr); @@ -164,12 +164,14 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { // remove equal start += equalRegion.getStart(); end += equalRegion.getTextEnd(); - } else { + } + else { if (equalRegion != null) { // use getTextEnd() because getEnd() may include the // tailing spaces start += equalRegion.getTextEnd(); - } else { + } + else { ITextRegion nameRegion = attr.getNameRegion(); if (nameRegion == null) return; // must never happen @@ -367,11 +369,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { ElementImpl element = (ElementImpl) ownerNode; if (isEndTag) { element.setEndStructuredDocumentRegion(oldStructuredDocumentRegion); - } else { + } + else { element.setStartStructuredDocumentRegion(oldStructuredDocumentRegion); updateAttrRegions(element, oldStructuredDocumentRegion); } - } else if (nodeType == Node.TEXT_NODE) { + } + else if (nodeType == Node.TEXT_NODE) { TextImpl text = (TextImpl) ownerNode; IStructuredDocumentRegion flatNode = text.getStructuredDocumentRegion(); @@ -380,7 +384,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { int newEnd = oldEnd; if (oldOffset == this.gapOffset) { newOffset += this.diff; - } else { + } + else { newEnd = this.gapOffset; } int newLength = newEnd - newOffset; @@ -401,7 +406,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { if (proxy.getStructuredDocumentRegion() == null) { if (offset == oldOffset && end == oldEnd) { text.setStructuredDocumentRegion(oldStructuredDocumentRegion); - } else { + } + else { if (end > oldEnd) { StructuredDocumentRegionContainer container = new StructuredDocumentRegionContainer(); container.appendStructuredDocumentRegion(oldStructuredDocumentRegion); @@ -409,7 +415,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { proxy.setLength(end - oldEnd); container.appendStructuredDocumentRegion(proxy); text.setStructuredDocumentRegion(container); - } else { + } + else { proxy.setStructuredDocumentRegion(oldStructuredDocumentRegion); if (end < oldEnd) { // to be shared @@ -430,7 +437,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { changeStructuredDocumentRegion(oldStructuredDocumentRegion); return; } - } else if (flatNode instanceof StructuredDocumentRegionContainer) { + } + else if (flatNode instanceof StructuredDocumentRegionContainer) { StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) flatNode; int count = container.getStructuredDocumentRegionCount(); for (int i = 0; i < count; i++) { @@ -442,7 +450,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { int newEnd = oldEnd; if (oldOffset == this.gapOffset) { newOffset += this.diff; - } else { + } + else { newEnd = this.gapOffset; } int newLength = newEnd - newOffset; @@ -465,12 +474,14 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { if (proxy.getStructuredDocumentRegion() == null) { if (offset == oldOffset && end == oldEnd) { container.replaceStructuredDocumentRegion(oldStructuredDocumentRegion, i); - } else { + } + else { if (end > oldEnd) { container.insertStructuredDocumentRegion(oldStructuredDocumentRegion, i); proxy.setOffset(oldEnd); proxy.setLength(end - oldEnd); - } else { + } + else { proxy.setStructuredDocumentRegion(oldStructuredDocumentRegion); if (end < oldEnd) { // to be shared @@ -493,10 +504,12 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { } } } - } else { + } + else { throw new StructuredDocumentRegionManagementException(); } - } else { + } + else { ownerNode.setStructuredDocumentRegion(oldStructuredDocumentRegion); } } @@ -525,7 +538,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { offset += preTag.length(); source = preTag + source; } - } else { + } + else { Node parent = text.getParentNode(); if (parent != null && parent.getNodeType() == Node.ELEMENT_NODE) { ElementImpl element = (ElementImpl) parent; @@ -692,7 +706,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { } } } - } else { + } + else { String closeTag = getCloseTag(lastChild); if (closeTag != null) { int length = closeTag.length(); @@ -758,7 +773,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion(); if (flatNode != null) insertStructuredDocumentRegion(flatNode); - } else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) { + } + else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) { StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) this.gapStructuredDocumentRegion; int count = container.getStructuredDocumentRegionCount(); for (int i = 0; i < count; i++) { @@ -772,11 +788,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion(); if (flatNode != null) insertStructuredDocumentRegion(flatNode); - } else { + } + else { insertStructuredDocumentRegion(content); } } - } else { + } + else { insertStructuredDocumentRegion(this.gapStructuredDocumentRegion); } } @@ -790,7 +808,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion(); if (flatNode != null) insertStructuredDocumentRegion(flatNode); - } else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) { + } + else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) { StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) this.gapStructuredDocumentRegion; int count = container.getStructuredDocumentRegionCount(); for (int i = 0; i < count; i++) { @@ -804,11 +823,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion(); if (flatNode != null) insertStructuredDocumentRegion(flatNode); - } else { + } + else { insertStructuredDocumentRegion(content); } } - } else { + } + else { insertStructuredDocumentRegion(this.gapStructuredDocumentRegion); } } @@ -887,11 +908,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { ElementImpl element = (ElementImpl) ownerNode; if (isEndTag) { element.setEndStructuredDocumentRegion(newStructuredDocumentRegion); - } else { + } + else { element.setStartStructuredDocumentRegion(newStructuredDocumentRegion); updateAttrRegions(element, newStructuredDocumentRegion); } - } else if (nodeType == Node.TEXT_NODE) { + } + else if (nodeType == Node.TEXT_NODE) { TextImpl text = (TextImpl) ownerNode; IStructuredDocumentRegion oldStructuredDocumentRegion = text.getStructuredDocumentRegion(); if (oldStructuredDocumentRegion == null) { @@ -910,7 +933,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { StructuredDocumentRegionContainer container = new StructuredDocumentRegionContainer(); if (oldOffset == newOffset) { container.appendStructuredDocumentRegion(newStructuredDocumentRegion); - } else { + } + else { StructuredDocumentRegionProxy newProxy = new StructuredDocumentRegionProxy(); newProxy.setOffset(oldOffset); newProxy.setLength(newEnd - oldOffset); @@ -921,7 +945,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { proxy.setLength(oldEnd - newEnd); container.appendStructuredDocumentRegion(proxy); text.setStructuredDocumentRegion(container); - } else { + } + else { proxy.setStructuredDocumentRegion(newStructuredDocumentRegion); if (oldEnd < newEnd) { // to be shared @@ -953,7 +978,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { if (end > newEnd) { if (offset == newOffset) { container.insertStructuredDocumentRegion(newStructuredDocumentRegion, i); - } else { + } + else { StructuredDocumentRegionProxy newProxy = new StructuredDocumentRegionProxy(); newProxy.setOffset(offset); newProxy.setLength(newEnd - offset); @@ -963,7 +989,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { proxy.setOffset(newEnd); proxy.setLength(end - newEnd); return; - } else { + } + else { proxy.setStructuredDocumentRegion(newStructuredDocumentRegion); if (end == newEnd) return; @@ -976,10 +1003,12 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { insertStructuredDocumentRegion(newStructuredDocumentRegion); } return; - } else { + } + else { throw new StructuredDocumentRegionManagementException(); } - } else { + } + else { ownerNode.setStructuredDocumentRegion(newStructuredDocumentRegion); } } @@ -998,7 +1027,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { IStructuredDocumentRegion flatNode = proxy.getStructuredDocumentRegion(); if (flatNode == oldStructuredDocumentRegion) this.gapStructuredDocumentRegion = null; - } else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) { + } + else if (this.gapStructuredDocumentRegion instanceof StructuredDocumentRegionContainer) { StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) this.gapStructuredDocumentRegion; int count = container.getStructuredDocumentRegionCount(); for (int i = 0; i < count; i++) { @@ -1117,7 +1147,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { removeStructuredDocumentRegion(oldStructuredDocumentRegion); return; } - } else if (flatNode instanceof StructuredDocumentRegionContainer) { + } + else if (flatNode instanceof StructuredDocumentRegionContainer) { StructuredDocumentRegionContainer container = (StructuredDocumentRegionContainer) flatNode; int count = container.getStructuredDocumentRegionCount(); for (int i = 0; i < count; i++) { @@ -1147,14 +1178,17 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { } } } - } else { + } + else { throw new StructuredDocumentRegionManagementException(); } - } else { + } + else { IStructuredDocumentRegion newStructuredDocumentRegion = new StructuredDocumentRegionProxy(oldOffset, oldLength); if (ownerEndTag != null) { ownerEndTag.setEndStructuredDocumentRegion(newStructuredDocumentRegion); - } else { + } + else { ownerNode.setStructuredDocumentRegion(newStructuredDocumentRegion); } } @@ -1200,11 +1234,13 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { ITextRegion lastRegion = impl.getValueRegion(); if (lastRegion != null) { end += lastRegion.getEnd(); - } else { + } + else { lastRegion = impl.getEqualRegion(); if (lastRegion != null) { end += lastRegion.getEnd(); - } else { + } + else { end += nameRegion.getEnd(); lastRegion = nameRegion; } @@ -1235,19 +1271,21 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { boolean isLastAttr = false; if (nextRegion != null) { String regionType = nextRegion.getType(); - if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == JSP_CLOSE || regionType == JSP_DIRECTIVE_CLOSE) { + if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || isNestedTagClose(regionType)) { isLastAttr = true; } } if (isLastAttr && prevRegion != null) { start += prevRegion.getTextEnd(); - } else { + } + else { start += nameRegion.getStart(); } - // impl.resetRegions(ownerElement); + // impl.resetRegions(ownerElement); impl.resetRegions(element); - } else { // append attribute + } + else { // append attribute IStructuredDocumentRegion flatNode = element.getStartStructuredDocumentRegion(); if (flatNode == null) return; // must never happen @@ -1257,7 +1295,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { insertSpace = true; start = flatNode.getEndOffset(); end = start; - } else { + } + else { ITextRegionList regions = flatNode.getRegions(); if (regions == null) return; // must never happen @@ -1265,7 +1304,7 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { for (int i = regions.size() - 1; i >= 0; i--) { ITextRegion region = regions.get(i); String regionType = region.getType(); - if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || regionType == JSP_CLOSE || regionType == JSP_DIRECTIVE_CLOSE) + if (regionType == XMLRegionContext.XML_TAG_CLOSE || regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE || isNestedTagClose(regionType)) continue; int regionEnd = region.getEnd(); if (regionEnd == region.getTextEnd()) @@ -1307,6 +1346,11 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { replaceSource(source, start, end); } + protected boolean isNestedTagClose(String regionType) { + boolean result = false; + return result; + } + /** * replaceChild method * @@ -1339,13 +1383,15 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { } node.resetStructuredDocumentRegions(); // reset values from // IStructuredDocumentRegion - } else { + } + else { NodeImpl prev = (NodeImpl) newChild.getPreviousSibling(); if (prev != null) { start = prev.getEndOffset(); end = start; preTag = getCloseTag(prev); - } else { + } + else { // first child NodeImpl next = (NodeImpl) newChild.getNextSibling(); if (next != null) { @@ -1354,7 +1400,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { if (parentNode.getNodeType() == Node.ELEMENT_NODE) { preTag = getStartCloseTag((XMLElement) parentNode); } - } else { + } + else { // newly having a child if (parentNode.getNodeType() == Node.ELEMENT_NODE) { ElementImpl element = (ElementImpl) parentNode; @@ -1366,7 +1413,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { preTag = this.generator.generateCloseTag(element); postTag = this.generator.generateEndTag(element); postElement = element; - } else if (!element.hasStartTag()) { + } + else if (!element.hasStartTag()) { start = element.getStartOffset(); end = start; // invalid end tag or implicit tag @@ -1385,7 +1433,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { postTag = this.generator.generateEndTag(element); postElement = element; } - } else { + } + else { start = element.getStartEndOffset(); end = start; preTag = getStartCloseTag(element); @@ -1432,7 +1481,8 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { } } element.setStartStructuredDocumentRegion(flatNode); - } else { + } + else { String content = this.generator.generateSource(node); if (content == null) content = new String(); @@ -1593,12 +1643,14 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { } if (lastStructuredDocumentRegion != null) { insertGapStructuredDocumentRegionAfter(lastStructuredDocumentRegion.getEnd()); - } else { + } + else { insertGapStructuredDocumentRegionBefore(this.gapOffset); // make sure to restore all backuped StructuredDocumentRegions insertGapStructuredDocumentRegionAfter(this.gapOffset); } - } else { + } + else { this.parentNode = root; this.nextNode = (NodeImpl) root.getFirstChild(); @@ -1633,10 +1685,12 @@ public class XMLModelUpdater implements XMLJSPRegionContexts { attr.setEqualRegion(null); attr.setValueRegion(null); } - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { if (attr != null) attr.setEqualRegion(region); - } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { + } + else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { if (attr != null) { attr.setValueRegion(region); attr = null; diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java index 518d4f63c6..8442a89ede 100644 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java +++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLStructuredDocumentReParser.java @@ -15,7 +15,6 @@ package org.eclipse.wst.xml.core.internal.parser; import org.eclipse.wst.sse.core.internal.text.StructuredDocumentReParser; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.text.IStructuredTextReParser; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; @@ -114,7 +113,7 @@ public class XMLStructuredDocumentReParser extends StructuredDocumentReParser { protected boolean isPartOfBlockRegion(IStructuredDocumentRegion flatNode) { boolean result = false; String type = flatNode.getType(); - result = (type == XMLRegionContext.BLOCK_TEXT || type == XMLJSPRegionContexts.JSP_CONTENT); + result = (type == XMLRegionContext.BLOCK_TEXT); return result; } diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/package.html b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/package.html deleted file mode 100644 index 8e9ef20b30..0000000000 --- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/jsp/model/parser/temp/package.html +++ /dev/null @@ -1,8 +0,0 @@ -<HTML> -This package is located here in the XML project -temporarily. Once the DOM Parser is cleaningly split -to XML and JSP components, this package will move -back to JSP project. (If its not here temporarily, -its easy to get circluar references in plugin.xml -dependancies. -</HTML>
\ No newline at end of file diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java index d39d2a7a44..d7db2635f7 100644 --- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java +++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/AddBlockCommentActionXML.java @@ -56,7 +56,8 @@ public class AddBlockCommentActionXML extends CommentActionXML { fDocument.replace(fOpenCommentOffset, 0, OPEN_COMMENT); fDocument.replace(fCloseCommentOffset, 0, CLOSE_COMMENT); removeOpenCloseComments(fOpenCommentOffset + OPEN_COMMENT.length(), fCloseCommentOffset - fOpenCommentOffset - CLOSE_COMMENT.length()); - } catch (BadLocationException e) { + } + catch (BadLocationException e) { throw new SourceEditingRuntimeException(); } diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java index 1030cdcf0e..ee765c3f70 100644 --- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java +++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/actions/RemoveBlockCommentActionXML.java @@ -15,11 +15,11 @@ package org.eclipse.wst.xml.ui.actions; import java.util.ResourceBundle; import org.eclipse.jface.text.BadLocationException; +import org.eclipse.wst.xml.core.internal.document.CommentImpl; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.wst.sse.core.exceptions.SourceEditingRuntimeException; import org.eclipse.wst.sse.ui.edit.util.StructuredTextEditorActionConstants; import org.eclipse.wst.sse.ui.internal.SSEUIPlugin; -import org.eclipse.wst.xml.core.internal.document.CommentImpl; public class RemoveBlockCommentActionXML extends AddBlockCommentActionXML { public RemoveBlockCommentActionXML(ResourceBundle bundle, String prefix, ITextEditor editor) { diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java index d5449422da..ee5f316a6a 100644 --- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java +++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/AbstractContentAssistProcessor.java @@ -59,7 +59,6 @@ import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLModel; import org.eclipse.wst.xml.core.document.XMLNode; import org.eclipse.wst.xml.core.internal.document.AttrImpl; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.modelquery.ModelQueryUtil; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.ui.internal.Logger; @@ -76,6 +75,28 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; abstract public class AbstractContentAssistProcessor implements IContentAssistProcessor, IReleasable { + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on "nestedContext". + */ + private class XMLJSPRegionContexts { + private static final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$ + private static final String JSP_COMMENT_CLOSE = "JSP_COMMENT_CLOSE"; //$NON-NLS-1$ + + private static final String JSP_COMMENT_OPEN = "JSP_COMMENT_OPEN"; //$NON-NLS-1$ + private static final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$ + private static final String JSP_DIRECTIVE_CLOSE = "JSP_DIRECTIVE_CLOSE"; //$NON-NLS-1$ + private static final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$ + + private static final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$ + private static final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$ + + private static final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$ + + private static final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$ + + } + protected static final String INTERNALERROR = SSEUIPlugin.getResourceString("%SEVERE_internal_error_occu_UI_"); //$NON-NLS-1$ = "SEVERE internal error occurred " protected static final String UNKNOWN_ATTR = SSEUIPlugin.getResourceString("%No_known_attribute__UI_"); //$NON-NLS-1$ = "No known attribute " protected static final String UNKNOWN_CONTEXT = SSEUIPlugin.getResourceString("%Content_Assist_not_availab_UI_"); //$NON-NLS-1$ = "Content Assist not available at the current location " @@ -1100,7 +1121,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr addTagCloseProposals(contentAssistRequest); } else if (regionType == XMLRegionContext.XML_TAG_ATTRIBUTE_VALUE) { contentAssistRequest = computeAttributeValueProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode); - } else if ((regionType == XMLRegionContext.XML_TAG_CLOSE) || (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE)) { + } else if ((regionType == XMLRegionContext.XML_TAG_CLOSE) || (regionType == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (regionType.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE))) { contentAssistRequest = computeTagCloseProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode); } else if (regionType == XMLRegionContext.XML_END_TAG_OPEN) { contentAssistRequest = computeEndTagOpenProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode); @@ -1111,7 +1132,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr // These ITextRegion types begin DOM Elements as well and although // internally harder to assist, // text insertions directly before them can be made - else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) { + else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType.equals(XMLJSPRegionContexts.JSP_COMMENT_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) { contentAssistRequest = newContentAssistRequest(treeNode, xmlnode.getParentNode(), sdRegion, completionRegion, documentPosition, 0, matchString); addTagInsertionProposals(contentAssistRequest, getElementPositionForModelQuery(treeNode)); addStartDocumentProposals(contentAssistRequest); @@ -1123,7 +1144,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr addStartDocumentProposals(contentAssistRequest); if (documentPosition >= sdRegion.getTextEndOffset(completionRegion)) addTagInsertionProposals(contentAssistRequest, getElementPositionForModelQuery(treeNode) + 1); - } else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType == XMLJSPRegionContexts.JSP_COMMENT_OPEN || regionType == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN || regionType == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) { + } else if (documentPosition == sdRegion.getStartOffset(completionRegion) && (regionType.equals(XMLJSPRegionContexts.JSP_COMMENT_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN) || regionType.equals(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || regionType == XMLRegionContext.XML_DECLARATION_OPEN || regionType == XMLRegionContext.XML_PI_OPEN || regionType == XMLRegionContext.XML_COMMENT_OPEN || regionType == XMLRegionContext.XML_CDATA_OPEN)) { contentAssistRequest = newContentAssistRequest(treeNode, xmlnode.getParentNode(), sdRegion, completionRegion, documentPosition, 0, matchString); addTagInsertionProposals(contentAssistRequest, getElementPositionForModelQuery(treeNode)); addStartDocumentProposals(contentAssistRequest); @@ -1993,7 +2014,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr protected boolean isCloseRegion(ITextRegion region) { String type = region.getType(); - return ((type == XMLRegionContext.XML_PI_CLOSE) || (type == XMLRegionContext.XML_TAG_CLOSE) || (type == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (type == XMLRegionContext.XML_CDATA_CLOSE) || (type == XMLRegionContext.XML_COMMENT_CLOSE) || (type == XMLRegionContext.XML_ATTLIST_DECL_CLOSE) || (type == XMLRegionContext.XML_ELEMENT_DECL_CLOSE) || (type == XMLRegionContext.XML_DOCTYPE_DECLARATION_CLOSE) || (type == XMLJSPRegionContexts.JSP_CLOSE) || (type == XMLJSPRegionContexts.JSP_COMMENT_CLOSE) || (type == XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (type == XMLRegionContext.XML_DECLARATION_CLOSE)); + return ((type == XMLRegionContext.XML_PI_CLOSE) || (type == XMLRegionContext.XML_TAG_CLOSE) || (type == XMLRegionContext.XML_EMPTY_TAG_CLOSE) || (type == XMLRegionContext.XML_CDATA_CLOSE) || (type == XMLRegionContext.XML_COMMENT_CLOSE) || (type == XMLRegionContext.XML_ATTLIST_DECL_CLOSE) || (type == XMLRegionContext.XML_ELEMENT_DECL_CLOSE) || (type == XMLRegionContext.XML_DOCTYPE_DECLARATION_CLOSE) || (type == XMLJSPRegionContexts.JSP_CLOSE) || (type == XMLJSPRegionContexts.JSP_COMMENT_CLOSE) || (type.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_CLOSE)) || (type == XMLRegionContext.XML_DECLARATION_CLOSE)); } /* @@ -2063,7 +2084,7 @@ abstract public class AbstractContentAssistProcessor implements IContentAssistPr protected boolean isNameRegion(ITextRegion region) { String type = region.getType(); - return ((type == XMLRegionContext.XML_TAG_NAME) || (type == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (type == XMLRegionContext.XML_ELEMENT_DECL_NAME) || (type == XMLRegionContext.XML_DOCTYPE_NAME) || (type == XMLRegionContext.XML_ATTLIST_DECL_NAME) || (type == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME) || type == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME); + return ((type == XMLRegionContext.XML_TAG_NAME) || (type == XMLJSPRegionContexts.JSP_DIRECTIVE_NAME) || (type == XMLRegionContext.XML_ELEMENT_DECL_NAME) || (type == XMLRegionContext.XML_DOCTYPE_NAME) || (type == XMLRegionContext.XML_ATTLIST_DECL_NAME) || (type == XMLJSPRegionContexts.JSP_ROOT_TAG_NAME) || type.equals(XMLJSPRegionContexts.JSP_DIRECTIVE_NAME)); } protected boolean isQuote(String string) { diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java index 3bac2eda6f..a31ce51c85 100644 --- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java +++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentAssistUtilities.java @@ -27,7 +27,6 @@ import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils; import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal; import org.eclipse.wst.xml.core.document.XMLElement; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.eclipse.wst.xml.core.parser.XMLRegionContext; import org.eclipse.wst.xml.ui.internal.editor.XMLEditorPluginImageHelper; import org.w3c.dom.Document; @@ -38,6 +37,20 @@ import org.w3c.dom.Node; * @author pavery */ public class XMLContentAssistUtilities extends ContentAssistUtils { + + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on "nestedContext". + */ + private class XMLJSPRegionContexts { + private static final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$ + private static final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$ + private static final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$ + private static final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$ + + } + + public static final String CONTENT = "Content"; //$NON-NLS-1$ public static final String CONTENT_SCRIPT_TYPE = "Content-Script-Type"; //$NON-NLS-1$ public static final String HEAD = "HEAD"; //$NON-NLS-1$ @@ -112,10 +125,12 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { documentPosition, 0, proposedText.length() + 1, XMLEditorPluginImageHelper.getInstance().getImage(imagePath), //$NON-NLS-1$ SSEUIPlugin.getResourceString("%15concat", (new Object[]{proposedText})), //$NON-NLS-1$ = "End with '{0}>'" null, null, XMLRelevanceConstants.R_END_TAG); - } else if (!hasEndTag && isJSPTag) { + } + else if (!hasEndTag && isJSPTag) { // create appropriate close tag text - String proposedText = proposedText = "%"; // ResourceHandler wants + String proposedText = proposedText = "%"; // ResourceHandler + // wants // text w/out ending '>' // //$NON-NLS-1$ String viewerText = viewer.getTextWidget().getText(); @@ -221,12 +236,12 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { Node html = null; Node head = null; Node child = null; - //---------------------------------------------------------------------- + // ---------------------------------------------------------------------- // (pa) 20021217 // cmvc defect 235554 // performance enhancement: using child.getNextSibling() rather than // nodeList(item) for O(n) vs. O(n*n) - //---------------------------------------------------------------------- + // ---------------------------------------------------------------------- for (child = doc.getFirstChild(); child != null; child = child.getNextSibling()) { if (child.getNodeType() != Node.ELEMENT_NODE) @@ -236,16 +251,16 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { else if (child.getNodeName().equalsIgnoreCase(HTML)) html = child; } - // NodeList children = doc.getChildNodes(); - // for(int i = 0; i < children.getLength(); i++) { - // child = children.item(i); - // if(child.getNodeType() != Node.ELEMENT_NODE) - // continue; - // if(child.getNodeName().equalsIgnoreCase(META)) - // metas.add(child); - // else if(child.getNodeName().equalsIgnoreCase(HTML)) - // html = child; - // } + // NodeList children = doc.getChildNodes(); + // for(int i = 0; i < children.getLength(); i++) { + // child = children.item(i); + // if(child.getNodeType() != Node.ELEMENT_NODE) + // continue; + // if(child.getNodeName().equalsIgnoreCase(META)) + // metas.add(child); + // else if(child.getNodeName().equalsIgnoreCase(HTML)) + // html = child; + // } // check for META tags under HEAD if (html != null) { @@ -255,14 +270,14 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { if (child.getNodeName().equalsIgnoreCase(HEAD)) head = child; } - // children = html.getChildNodes(); - // for(int i = 0; i < children.getLength() && head == null; i++) { - // child = children.item(i); - // if(child.getNodeType() != Node.ELEMENT_NODE) - // continue; - // if(child.getNodeName().equalsIgnoreCase(HEAD)) - // head = child; - // } + // children = html.getChildNodes(); + // for(int i = 0; i < children.getLength() && head == null; i++) { + // child = children.item(i); + // if(child.getNodeType() != Node.ELEMENT_NODE) + // continue; + // if(child.getNodeName().equalsIgnoreCase(HEAD)) + // head = child; + // } } if (head != null) { @@ -272,14 +287,14 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { if (child.getNodeName().equalsIgnoreCase(META)) metas.add(child); } - // children = head.getChildNodes(); - // for(int i = 0 ; i < children.getLength(); i++) { - // child = children.item(i); - // if(child.getNodeType() != Node.ELEMENT_NODE) - // continue; - // if(child.getNodeName().equalsIgnoreCase(META)) - // metas.add(child); - // } + // children = head.getChildNodes(); + // for(int i = 0 ; i < children.getLength(); i++) { + // child = children.item(i); + // if(child.getNodeType() != Node.ELEMENT_NODE) + // continue; + // if(child.getNodeName().equalsIgnoreCase(META)) + // metas.add(child); + // } } return getMetaScriptType(metas); @@ -299,7 +314,8 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { for (int j = 0; j < attributes.getLength(); j++) { if (attributes.item(j).getNodeName().equalsIgnoreCase(HTTP_EQUIV)) { httpEquiv = attributes.item(j).getNodeValue().equalsIgnoreCase(CONTENT_SCRIPT_TYPE); - } else if (attributes.item(j).getNodeName().equalsIgnoreCase(CONTENT)) { + } + else if (attributes.item(j).getNodeName().equalsIgnoreCase(CONTENT)) { contentScriptType = attributes.item(j).getNodeValue(); } } @@ -356,8 +372,9 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { /** * Tells you if the flatnode is the %> delimiter * - * @param fn - * @return boolean + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". */ public static boolean isJSPCloseDelimiter(IStructuredDocumentRegion fn) { if (fn == null) @@ -365,17 +382,23 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { return isJSPCloseDelimiter(fn.getType()); } + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". + */ public static boolean isJSPCloseDelimiter(String type) { if (type == null) return false; - return (type == XMLJSPRegionContexts.JSP_CLOSE || type == XMLRegionContext.XML_TAG_CLOSE); + return (type.equals(XMLJSPRegionContexts.JSP_CLOSE) || type.equals(XMLRegionContext.XML_TAG_CLOSE)); } /** * Tells you if the flatnode is the JSP region <%%>, <%=%>, <%!%> * - * @param fn - * @return boolean + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". */ public static boolean isJSPDelimiter(IStructuredDocumentRegion fn) { boolean isDelimiter = false; @@ -386,6 +409,11 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { return isDelimiter; } + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". + */ public static boolean isJSPDelimiter(String type) { if (type == null) return false; @@ -393,10 +421,9 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { } /** - * Tells you if the flatnode is <%, <%=, or <%! - * - * @param fn - * @return boolean + * Tells you if the flatnode is <%, <%=, or <%! ISSUE: this is a bit of + * hidden JSP knowledge that was implemented this way for expedency. + * Should be evolved in future to depend on "nestedContext". */ public static boolean isJSPOpenDelimiter(IStructuredDocumentRegion fn) { if (fn == null) @@ -404,18 +431,24 @@ public class XMLContentAssistUtilities extends ContentAssistUtils { return isJSPOpenDelimiter(fn.getType()); } + /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". + */ public static boolean isJSPOpenDelimiter(String type) { if (type == null) return false; - return (type == XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN || type == XMLJSPRegionContexts.JSP_DECLARATION_OPEN || type == XMLJSPRegionContexts.JSP_EXPRESSION_OPEN); + return (type.equals(XMLJSPRegionContexts.JSP_SCRIPTLET_OPEN) || type.equals(XMLJSPRegionContexts.JSP_DECLARATION_OPEN) || type.equals(XMLJSPRegionContexts.JSP_EXPRESSION_OPEN)); } /** * Tells you if the flatnode is the <jsp:scriptlet>, <jsp:expression>, or * <jsp:declaration>tag * - * @param fn - * @return boolean + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". */ public static boolean isXMLJSPDelimiter(IStructuredDocumentRegion fn) { boolean isDelimiter = false; diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java index 22cdb40a40..45314c443b 100644 --- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java +++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/contentassist/XMLContentModelGenerator.java @@ -19,13 +19,21 @@ import org.eclipse.wst.common.contentmodel.CMDataType; import org.eclipse.wst.common.contentmodel.CMElementDeclaration; import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion; import org.eclipse.wst.xml.core.document.XMLNode; -import org.eclipse.wst.xml.core.jsp.model.parser.temp.XMLJSPRegionContexts; import org.w3c.dom.Node; public class XMLContentModelGenerator extends AbstractContentModelGenerator { /** + * ISSUE: this is a bit of hidden JSP knowledge that was implemented this + * way for expedency. Should be evolved in future to depend on + * "nestedContext". + */ + private class XMLJSPRegionContexts { + private static final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$ + } + + /** * XMLContentModelGenerator constructor comment. */ public XMLContentModelGenerator() { @@ -38,7 +46,7 @@ public class XMLContentModelGenerator extends AbstractContentModelGenerator { int usage = attrDecl.getUsage(); if (usage == CMAttributeDeclaration.REQUIRED) { buffer.append(" "); //$NON-NLS-1$ - generateRequiredAttribute(null, attrDecl, buffer); //todo pass + generateRequiredAttribute(null, attrDecl, buffer); // todo pass // ownerNode as // 1st param } @@ -94,7 +102,8 @@ public class XMLContentModelGenerator extends AbstractContentModelGenerator { return getRequiredName(node, elementDecl).length() + 2; // < + // name + // space - } else { + } + else { return 1 + getRequiredName(node, elementDecl).length() + getStartTagClose(node, elementDecl).length(); // < + // name // + @@ -106,7 +115,7 @@ public class XMLContentModelGenerator extends AbstractContentModelGenerator { protected String getOtherClose(Node notATagNode) { if (notATagNode instanceof XMLNode) { IStructuredDocumentRegion node = ((XMLNode) notATagNode).getStartStructuredDocumentRegion(); - if (node != null && node.getNumberOfRegions() > 1 && node.getRegions().get(0).getType() == XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN) { + if (node != null && node.getNumberOfRegions() > 1 && node.getRegions().get(0).getType().equals(XMLJSPRegionContexts.JSP_DIRECTIVE_OPEN)) { return "%>"; //$NON-NLS-1$ } } |