[249044] Web module's jar modules from another project are not published for Tomcat.
[292162] isSingleRoot API should allow non Java src folder as output for JCA
[292186] WebLib Quick fixes reverting exclusions
[292079] [parser] Scriptlet in <script> attribute tags can cause the region to not be block text
[292081] [translation] Javascript can cause custom tags to not be translated
[292177] [validation] JSPDirectiveValidator#processTaglibDirective should handle URL Taglib Records
[291960] XMLViewer makes (apparently) invalid assumptions about TransformerFactory
[241794] [validation] Errors when using JSP Expressions inside JavaScript code
[292079] [parser] Scriptlet in <script> attribute tags can cause the region to not be block text
[292088] DirtyRegionProcessor Job may not be canceled when the editor closes
[289745] [document] StructuredDocumentRegionUtil not compensating for StructuredDocumentRegionProxy
[292469] [parser] XMLSourceParser#regionMatches should compensate for offset
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 c48c306..0976c43 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
@@ -185,6 +185,11 @@
fTagname = null;
}
else if (isJSPStartRegion(sdRegion)) {
+ int illegalContent = hasIllegalContent(sdRegion);
+ // If illegal content was found, start decoding again after the region
+ if (illegalContent >= 0)
+ decodeRemainingRegions(sdRegion, illegalContent + 1);
+
String nameStr = getRegionName(sdRegion);
if (sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_TAG_OPEN) {
if (isPossibleCustomTag(nameStr)) {
@@ -265,6 +270,27 @@
}
}
+ private void decodeRemainingRegions(IStructuredDocumentRegion sdRegion, int start) {
+ ITextRegion region = sdRegion.getRegions().get(start);
+ String text = sdRegion.getFullText();
+ if (region.getStart() <= text.length())
+ fTranslator.decodeScriptBlock(text.substring(region.getStart(), text.length()), 0);
+ }
+
+ private int hasIllegalContent(IStructuredDocumentRegion sdRegion) {
+ ITextRegionList list = sdRegion.getRegions();
+ for (int i = 0; i < list.size(); i++) {
+ ITextRegion region = list.get(i);
+ String type = region.getType();
+ if (type == DOMRegionContext.UNDEFINED)
+ return i;
+ if (type == DOMRegionContext.XML_END_TAG_OPEN || type == DOMRegionContext.XML_EMPTY_TAG_CLOSE || type == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE)
+ return -1;
+ }
+ return -1;
+ }
+
+
public void resetNodes() {
// do nothing
}
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 1e70a35..dc9667d 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
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.2.2 on 6/3/09 11:14 PM */
+/* The following code was generated by JFlex 1.2.2 on 10/14/09 4:54 PM */
/*******************************************************************************
* Copyright (c) 2004, 2009 IBM Corporation and others.
@@ -37,8 +37,8 @@
/**
* This class is a scanner generated by
* <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
- * on 6/3/09 11:14 PM from the specification file
- * <tt>file:/E:/wtp-3.0/releng.workspace/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex</tt>
+ * on 10/14/09 4:54 PM from the specification file
+ * <tt>file:/D:/dev/workspaces/wtp3.0.5p/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex</tt>
*/
public class JSPTokenizer implements BlockTokenizer, DOMJSPRegionContexts {
@@ -1328,6 +1328,8 @@
*/
private final String doScan(String searchString, boolean requireTailSeparator, boolean allowJSP, boolean allowCDATA, String searchContext, int exitState, int immediateFallbackState) throws IOException {
boolean stillSearching = true;
+ boolean wasBlockingEnabled = fIsBlockingEnabled;
+ try {
// Disable further block (probably)
fIsBlockingEnabled = false;
int searchStringLength = searchString.length();
@@ -1596,6 +1598,10 @@
return UNDEFINED;
}
return searchContext;
+ }
+ finally {
+ fIsBlockingEnabled = wasBlockingEnabled;
+ }
}
/**
* user method
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java
index c0890d7..eb927c5 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java
@@ -26,6 +26,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
@@ -46,6 +47,7 @@
import org.eclipse.jst.jsp.core.taglib.ITLDRecord;
import org.eclipse.jst.jsp.core.taglib.ITagDirRecord;
import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
+import org.eclipse.jst.jsp.core.taglib.IURLRecord;
import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
import org.eclipse.osgi.util.NLS;
import org.eclipse.wst.html.core.internal.contentmodel.JSP20Namespace;
@@ -390,6 +392,35 @@
}
}
break;
+ case (ITaglibRecord.URL) : {
+ IURLRecord record = (IURLRecord) reference;
+ String baseLocation = record.getBaseLocation();
+ if (baseLocation != null && baseLocation.indexOf("://") < 0) {
+ IResource found = ResourcesPlugin.getWorkspace().getRoot().findMember(baseLocation, false);
+ if (found != null) {
+ try {
+ found.accept(new IResourceVisitor() {
+ public boolean visit(IResource resource) throws CoreException {
+ if (resource.getType() == IResource.FILE) {
+ addDependsOn(resource);
+ }
+ return true;
+ }
+ });
+ }
+ catch (CoreException e) {
+ Logger.logException(e);
+ }
+ }
+ else {
+ IFile externalJar = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(baseLocation));
+ if (externalJar != null) {
+ addDependsOn(externalJar);
+ }
+ }
+ }
+ }
+ break;
}
}
if (reference == null && fSeverityTaglibUnresolvableURI != ValidationMessage.IGNORE) {
diff --git a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java
index ffb7c08..a38bfa6 100644
--- a/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java
+++ b/bundles/org.eclipse.wst.jsdt.web.core/src/org/eclipse/wst/jsdt/web/core/javascript/JsTranslator.java
@@ -77,8 +77,7 @@
private static final String XML_COMMENT_START = "<!--"; //$NON-NLS-1$
// private static final String XML_COMMENT_END = "-->"; //$NON-NLS-1$
private static final boolean REPLACE_INNER_BLOCK_SECTIONS_WITH_SPACE = false;
- private static final Pattern fClientSideTagPattern = Pattern.compile("<[^)>]+/?>"); //$NON-NLS-1$
- private static final Pattern fServerSideTagPattern = Pattern.compile("<%([^%]|%[^>])*%>"); //$NON-NLS-1$
+ private static final Pattern fClientSideTagPattern = Pattern.compile("<[^<)>%]+/?>"); //$NON-NLS-1$
static {
@@ -510,19 +509,43 @@
// }
else {
// fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=284774
- int index = -1;
- int end = 0;
+ // last offset of content that was skipped
+ int validStart = 0;
+ // start of content to skip
+ int validEnd = 0;
+
Matcher matcher = fClientSideTagPattern.matcher(regionText);
StringBuffer contents = new StringBuffer();
// find any instance of tags in the region text
- if (!fServerSideTagPattern.matcher(regionText).matches()) {
- while (index < regionText.length() && matcher.find(index + 1)) { //$NON-NLS-1$
- index = matcher.start();
- if (index > end)
- contents.append(regionText.substring(end, index));
- end = matcher.end();
- // change the tag name to a valid variable name
- int startOffset = container.getStartOffset(region) + index;
+ int serverSideStart = regionText.indexOf("<%");
+ int clientMatchStart = matcher.find() ? matcher.start() : -1;
+ // contains server-side script
+ while (serverSideStart > -1 || clientMatchStart > -1) { //$NON-NLS-1$
+ validEnd = validStart;
+ boolean biasClient = false;
+ boolean biasServer = false;
+ // update the start of content to skip
+ if (clientMatchStart > -1 && serverSideStart > -1) {
+ validEnd = Math.min(clientMatchStart, serverSideStart);
+ biasClient = validEnd == clientMatchStart;
+ biasServer = validEnd == serverSideStart;
+ }
+ else if (clientMatchStart > -1 && serverSideStart < 0) {
+ validEnd = clientMatchStart;
+ biasClient = true;
+ }
+ else if (clientMatchStart < 0 && serverSideStart > -1) {
+ validEnd = serverSideStart;
+ biasServer = true;
+ }
+
+ // append if there's something we want to include
+ if (-1 < validStart && -1 < validEnd) {
+ // append what we want to include
+ contents.append(regionText.substring(validStart, validEnd));
+
+ // change the skipped content to a valid variable name and append it as a placeholder
+ int startOffset = container.getStartOffset(region) + validEnd;
int line = container.getParentDocument().getLineOfOffset(startOffset);
int column;
try {
@@ -533,25 +556,50 @@
}
if (line >= 0 && column >= 0) {
// if the column looks wrong, note any leading tabs would make it non-obvious
- contents.append("__tag_" + (line+1) + "$" + column); //$NON-NLS-1$ //$NON-NLS-2$
+ contents.append("__tag_" + (line+1) + "$" + column + "_"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
else {
- contents.append("__tag_" + startOffset); //$NON-NLS-1$ //$NON-NLS-2$
+ contents.append("__tag_" + startOffset + "_"); //$NON-NLS-1$ //$NON-NLS-2$
}
+
+ int serverSideEnd = (regionLength > validEnd + 2) ? regionText.indexOf("%>", validEnd + 2) : -1;
+ if (serverSideEnd > -1)
+ serverSideEnd += 2;
+ int clientMatchEnd = matcher.find(validEnd) ? matcher.end() : -1;
+ // update end of what we skipped
+ validStart = -1;
+ if (clientMatchEnd > validEnd && serverSideEnd > validEnd) {
+ if (biasClient)
+ validStart = clientMatchEnd;
+ else if (biasServer)
+ validStart = serverSideEnd;
+ else
+ validStart = Math.min(clientMatchEnd, serverSideEnd);
+ }
+ if (clientMatchEnd >= validEnd && serverSideEnd < 0)
+ validStart = matcher.end();
+ if (clientMatchEnd < 0 && serverSideEnd >= validEnd)
+ validStart = serverSideEnd;
}
- if (end > 0) {
- contents.append(regionText.substring(end));
- }
- if (contents.length() != 0) {
- fScriptText.append(contents.toString());
+ // set up to end while if no end for valid
+ if (validStart > 0) {
+ serverSideStart = validStart < regionLength - 2 ? regionText.indexOf("<%", validStart) : -1;
+ clientMatchStart = validStart < regionLength ? (matcher.find(validStart + 1) ? matcher.start() : -1) : -1;
}
else {
- fScriptText.append(regionText);
+ serverSideStart = clientMatchStart = -1;
}
}
- else {
- fScriptText.append(Util.getPad(regionLength));
+ if (validStart >= 0) {
+ contents.append(regionText.substring(validStart));
}
+ if (contents.length() != 0) {
+ fScriptText.append(contents.toString());
+ }
+ else {
+ fScriptText.append(regionText);
+ }
+
Position inHtml = new Position(scriptStart, scriptTextLength);
scriptLocationInHtml.add(inHtml);
}
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex
index 05dbb88..7bf4094 100644
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex
+++ b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex
@@ -431,6 +431,8 @@
*/
private final String doScan(String searchString, boolean requireTailSeparator, boolean allowJSP, boolean allowCDATA, String searchContext, int exitState, int immediateFallbackState) throws IOException {
boolean stillSearching = true;
+ boolean wasBlockingEnabled = fIsBlockingEnabled;
+ try {
// Disable further block (probably)
fIsBlockingEnabled = false;
int searchStringLength = searchString.length();
@@ -699,6 +701,10 @@
return UNDEFINED;
}
return searchContext;
+ }
+ finally {
+ fIsBlockingEnabled = wasBlockingEnabled;
+ }
}
/**
* user method
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/DirtyRegionProcessor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/DirtyRegionProcessor.java
index e000a06..0a182a9 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/DirtyRegionProcessor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/reconcile/DirtyRegionProcessor.java
@@ -266,6 +266,7 @@
/** The job should be reset because of document changes */
private boolean fReset = false;
+ private boolean fIsCanceled = false;
private Object LOCK = new Object();
/**
@@ -641,10 +642,15 @@
return status;
}
}
- processed = true;
- beginProcessing();
+ if (fIsCanceled)
+ return status;
DirtyRegion[] toRefresh = getRequests();
+ if (toRefresh.length > 0) {
+ processed = true;
+ beginProcessing();
+ }
+
for (int i = 0; i < toRefresh.length; i++) {
if (monitor.isCanceled())
throw new OperationCanceledException();
@@ -664,7 +670,8 @@
finally {
if (processed)
endProcessing();
- schedule(getDelay());
+ if (!fIsCanceled)
+ schedule(getDelay());
monitor.done();
}
return status;
@@ -771,6 +778,8 @@
// removes widget listener
getTextViewer().removeTextInputListener(fTextInputListener);
setInstalled(false);
+ cancel();
+ fIsCanceled = true;
}
setDocument(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 4bd9b81..84a378b 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
@@ -75,6 +75,9 @@
* Returns the first region.
*/
static ITextRegion getFirstRegion(IStructuredDocumentRegion flatNode) {
+ if(flatNode instanceof StructuredDocumentRegionProxy) {
+ flatNode = ((StructuredDocumentRegionProxy)flatNode).getStructuredDocumentRegion();
+ }
if (flatNode == null)
return null;
ITextRegionList regions = flatNode.getRegions();
@@ -87,6 +90,9 @@
* Returns the type of the first region.
*/
static String getFirstRegionType(IStructuredDocumentRegion flatNode) {
+ if(flatNode instanceof StructuredDocumentRegionProxy) {
+ flatNode = ((StructuredDocumentRegionProxy)flatNode).getStructuredDocumentRegion();
+ }
if (flatNode == null)
return DOMRegionContext.UNDEFINED;
ITextRegionList regions = flatNode.getRegions();
@@ -114,6 +120,9 @@
* Returns the last region.
*/
static ITextRegion getLastRegion(IStructuredDocumentRegion flatNode) {
+ if(flatNode instanceof StructuredDocumentRegionProxy) {
+ flatNode = ((StructuredDocumentRegionProxy)flatNode).getStructuredDocumentRegion();
+ }
if (flatNode == null)
return null;
ITextRegionList regions = flatNode.getRegions();
@@ -126,6 +135,9 @@
* Returns the type of the first region.
*/
static String getLastRegionType(IStructuredDocumentRegion flatNode) {
+ if(flatNode instanceof StructuredDocumentRegionProxy) {
+ flatNode = ((StructuredDocumentRegionProxy)flatNode).getStructuredDocumentRegion();
+ }
if (flatNode == null)
return DOMRegionContext.UNDEFINED;
ITextRegionList regions = flatNode.getRegions();
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLSourceParser.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLSourceParser.java
index 0ada81c..deb0b1b 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLSourceParser.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/parser/XMLSourceParser.java
@@ -120,16 +120,16 @@
*
* Protect the user's data above everything.
*/
- try {
- if (fCurrentNode != null && fStructuredDocumentRegionHandlers != null) {
- for (int i = 0; i < fStructuredDocumentRegionHandlers.size(); i++) {
+ if (fCurrentNode != null && fStructuredDocumentRegionHandlers != null) {
+ for (int i = 0; i < fStructuredDocumentRegionHandlers.size(); i++) {
+ try {
((StructuredDocumentRegionHandler) fStructuredDocumentRegionHandlers.get(i)).nodeParsed(fCurrentNode);
}
+ catch (Exception e) {
+ Logger.log(Logger.ERROR, "Error occurred while firing Node Parsed event", e); //$NON-NLS-1$
+ }
}
}
- catch (Exception e) {
- Logger.log(Logger.ERROR, "Error occurred while firing Node Parsed event", e); //$NON-NLS-1$
- }
}
public BlockMarker getBlockMarker(String tagName) {
@@ -483,18 +483,19 @@
if (stringToCompare == null)
return false;
+ int ajustedOffset = fOffset + offset;
boolean result = false;
if (fCharSequenceSource != null && fCharSequenceSource instanceof IRegionComparible) {
- result = ((IRegionComparible) fCharSequenceSource).regionMatches(offset, length, stringToCompare);
+ result = ((IRegionComparible) fCharSequenceSource).regionMatches(ajustedOffset, length, stringToCompare);
}
else {
// old fashioned ways
String test = null;
if (fCharSequenceSource != null) {
- test = fCharSequenceSource.subSequence(offset, offset + length).toString();
+ test = fCharSequenceSource.subSequence(ajustedOffset, ajustedOffset + length).toString();
}
else if (fStringInput != null) {
- test = fStringInput.substring(offset, offset + length);
+ test = fStringInput.substring(ajustedOffset, ajustedOffset + length);
}
result = stringToCompare.equals(test);
}
@@ -506,18 +507,19 @@
if (stringToCompare == null)
return false;
+ int ajustedOffset = fOffset + offset;
boolean result = false;
if (fCharSequenceSource != null && fCharSequenceSource instanceof IRegionComparible) {
- result = ((IRegionComparible) fCharSequenceSource).regionMatchesIgnoreCase(offset, length, stringToCompare);
+ result = ((IRegionComparible) fCharSequenceSource).regionMatchesIgnoreCase(ajustedOffset, length, stringToCompare);
}
else {
// old fashioned ways
String test = null;
if (fCharSequenceSource != null) {
- test = fCharSequenceSource.subSequence(offset, offset + length).toString();
+ test = fCharSequenceSource.subSequence(ajustedOffset, ajustedOffset + length).toString();
}
else if (fStringInput != null) {
- test = fStringInput.substring(offset, offset + length);
+ test = fStringInput.substring(ajustedOffset, ajustedOffset + length);
}
result = stringToCompare.equalsIgnoreCase(test);
}
diff --git a/features/org.eclipse.wst.xml_core.feature.patch/buildnotes_org.eclipse.wst.xml_core.feature.patch.html b/features/org.eclipse.wst.xml_core.feature.patch/buildnotes_org.eclipse.wst.xml_core.feature.patch.html
index dbba418..f4f1545 100644
--- a/features/org.eclipse.wst.xml_core.feature.patch/buildnotes_org.eclipse.wst.xml_core.feature.patch.html
+++ b/features/org.eclipse.wst.xml_core.feature.patch/buildnotes_org.eclipse.wst.xml_core.feature.patch.html
@@ -18,5 +18,8 @@
<p>Bug <a href="https://bugs.eclipse.org/289464">289464</a>. IExecutionDelegate should be using ISafeRunnable</p>
<p>Bug <a href="https://bugs.eclipse.org/290454">290454</a>. DTD Content Model is missing IDREFS data type name</p>
<p>Bug <a href="https://bugs.eclipse.org/290966">290966</a>. JSP include directives do not handle non-JSP content types</p>
+<p>Bug <a href='https://bugs.eclipse.org/292079'>292079</a>. [parser] Scriptlet in <script> attribute tags can cause the region to not be block text</p>
+<p>Bug <a href='https://bugs.eclipse.org/289745'>289745</a>. [document] StructuredDocumentRegionUtil not compensating for StructuredDocumentRegionProxy</p>
+<p>Bug <a href='https://bugs.eclipse.org/292469'>292469</a>. [parser] XMLSourceParser#regionMatches should compensate for offset</p>
</body>
</head>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.xml_core.feature.patch/feature.properties b/features/org.eclipse.wst.xml_core.feature.patch/feature.properties
index ae65e22..16f70b3 100644
--- a/features/org.eclipse.wst.xml_core.feature.patch/feature.properties
+++ b/features/org.eclipse.wst.xml_core.feature.patch/feature.properties
@@ -36,6 +36,9 @@
Bug https://bugs.eclipse.org/289464 IExecutionDelegate should be using ISafeRunnable\n\
Bug https://bugs.eclipse.org/290454 DTD Content Model is missing IDREFS data type name\n\
Bug https://bugs.eclipse.org/290966 JSP include directives do not handle non-JSP content types\n\
+Bug https://bugs.eclipse.org/292079 [parser] Scriptlet in <script> attribute tags can cause the region to not be block text\n\
+Bug https://bugs.eclipse.org/289745 [document] StructuredDocumentRegionUtil not compensating for StructuredDocumentRegionProxy\n\
+Bug https://bugs.eclipse.org/292469 [parser] XMLSourceParser#regionMatches should compensate for offset\n\
\n\
# "copyright" property - text of the "Feature Update Copyright"
diff --git a/features/org.eclipse.wst.xml_ui.feature.patch/buildnotes_org.eclipse.wst.xml_ui.feature.patch.html b/features/org.eclipse.wst.xml_ui.feature.patch/buildnotes_org.eclipse.wst.xml_ui.feature.patch.html
index cc0c738..c64e633 100644
--- a/features/org.eclipse.wst.xml_ui.feature.patch/buildnotes_org.eclipse.wst.xml_ui.feature.patch.html
+++ b/features/org.eclipse.wst.xml_ui.feature.patch/buildnotes_org.eclipse.wst.xml_ui.feature.patch.html
@@ -17,6 +17,7 @@
<p>Bug <a href='https://bugs.eclipse.org/285284'>285284</a>. Removing comment end tag and adding it back leaves validation errors</p>
<p>Bug <a href="https://bugs.eclipse.org/289464">289464</a>. IExecutionDelegate should be using ISafeRunnable</p>
<p>Bug <a href='https://bugs.eclipse.org/290322'>290322</a>. [reconciling] DirtyRegionProcessor cancels and schedules a Job for every keystroke</p>
+<p>Bug <a href='https://bugs.eclipse.org/292088'>292088</a>. DirtyRegionProcessor Job may not be canceled when the editor closes</p>
</body>
</html>
diff --git a/features/org.eclipse.wst.xml_ui.feature.patch/feature.properties b/features/org.eclipse.wst.xml_ui.feature.patch/feature.properties
index 0781fde..1ca8e76 100644
--- a/features/org.eclipse.wst.xml_ui.feature.patch/feature.properties
+++ b/features/org.eclipse.wst.xml_ui.feature.patch/feature.properties
@@ -31,6 +31,7 @@
Bug https://bugs.eclipse.org/285284 Removing comment end tag and adding it back leaves validation errors\n\
Bug https://bugs.eclipse.org/289464 IExecutionDelegate should be using ISafeRunnable\n\
Bug https://bugs.eclipse.org/290322 [reconciling] DirtyRegionProcessor cancels and schedules a Job for every keystroke\n\
+Bug https://bugs.eclipse.org/292088 DirtyRegionProcessor Job may not be canceled when the editor closes\n\
\n\
# "copyright" property - text of the "Feature Update Copyright"