The jst.j2ee changes are from
[283176] NPE in EARArtifactEdit.getModuleByManifestURI(String uri)
[283209] !MESSAGE Exception while reading /EAR5Client/.classpath
[283318] Single root check failing when source folder mapped but deleted
[283580] EAR 5.0 libs performance and missing updates
[283601] For Web Project verify source folders and web content do not collide
The jst.j2ee.core change is from
[283632] EJb ref validation in EAR validator need to throw error message
The jst.ws.consumption.ui changes are
[283399] Web Services > Server & Runtime preference undefined
[283312] ANT Client gen- message missing server name subst. variable
The jst.ws.creation.ui change is
[276538] Ant console output seems to imply that parameter can be set but really it should not be
The wst.jsdt.core change is
[283616] Hierarchy does not display super type for types in libraries
The wst.server.core changes are
[282909] Can't create a new server if rename an existing one
[282922] Server will not change to republish status after web module changed
The wst.sse.core and wst.html.core changes are from
[282205] HTMLHeadTokenizer can get stuck in an infinite loop
diff --git a/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF
index 8839536..5b51bf4 100644
--- a/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.html.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.wst.html.core; singleton:=true
-Bundle-Version: 1.1.205.qualifier
+Bundle-Version: 1.1.206.qualifier
Bundle-Activator: org.eclipse.wst.html.core.internal.HTMLCorePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java
index f100697..6f03350 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.java
@@ -1,7 +1,7 @@
-/* The following code was generated by JFlex 1.2.2 on 7/28/08 5:19 PM */
+/* The following code was generated by JFlex 1.2.2 on 6/29/09 9:58 AM */
/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2009 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
@@ -24,8 +24,8 @@
/**
* This class is a scanner generated by
* <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
- * on 7/28/08 5:19 PM from the specification file
- * <tt>file:/D:/workspaces/wtp301/workspace/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex</tt>
+ * on 6/29/09 9:58 AM from the specification file
+ * <tt>file:/D:/dev/workspaces/wtp3M/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex</tt>
*/
public class HTMLHeadTokenizer {
@@ -116,7 +116,7 @@
private int yy_endRead;
/** number of newlines encountered up to the start of the matched text */
-// private int yyline;
+ //private int yyline;
/** the number of characters up to the start of the matched text */
private int yychar;
@@ -125,7 +125,7 @@
* the number of characters from the last newline up to the start of the
* matched text
*/
-// private int yycolumn;
+ //private int yycolumn;
/**
* yy_atBOL == true <=> the scanner is currently at the beginning of a line
@@ -188,7 +188,7 @@
yy_endRead = 0;
/* number of newlines encountered up to the start of the matched text */
-// yyline = 0;
+ // yyline = 0;
/* the number of characters up to the start of the matched text */
yychar = 0;
@@ -197,7 +197,7 @@
* the number of characters from the last newline up to the start
* of the matched text
*/
-// yycolumn = 0;
+ // yycolumn = 0;
/**
* yy_atBOL == true <=> the scanner is currently at the beginning
@@ -229,8 +229,16 @@
public final HeadParserToken getNextToken() throws IOException {
String context = null;
- context = primGetNextToken();
HeadParserToken result = null;
+ try {
+ context = primGetNextToken();
+ }
+ catch (IllegalStateException e) {
+ hasMore = false;
+ result = createToken(HTMLHeadTokenizerConstants.UNDEFINED, yychar, yytext());
+ while(yy_advance() != YYEOF) {}
+ return result;
+ }
if (valueText != null) {
result = createToken(context, yychar, valueText);
valueText = null;
@@ -347,7 +355,7 @@
return yy_buffer[yy_currentPos++];
}
-
+
/**
* Closes the input stream.
*/
@@ -397,13 +405,14 @@
*/
private void yy_ScanError(int errorCode) {
try {
- System.out.println(YY_ERROR_MSG[errorCode]);
+ IllegalStateException ise = new IllegalStateException("Instance: " + System.identityHashCode(this) + " offset:" + yychar + " state:" + yystate());
+ System.out.println(YY_ERROR_MSG[errorCode] + "\n" + ise);
+ throw ise;
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println(YY_ERROR_MSG[YY_UNKNOWN_ERROR]);
}
-// System.exit(1);
}
@@ -473,7 +482,7 @@
yy_forAction: {
while (true) {
-
+
yy_input = yy_advance();
if ( yy_input == YYEOF ) break yy_forAction;
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizerConstants.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizerConstants.java
index 938bcde..2600b07 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizerConstants.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizerConstants.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2009 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
@@ -16,5 +16,5 @@
String MetaTagEnd = "MetaTagEnd"; //$NON-NLS-1$
String MetaTagStart = "MetaTagStart"; //$NON-NLS-1$
String MetaTagContentType = "MetaTagContentType"; //$NON-NLS-1$
-
+ String UNDEFINED = "UNDEFINED"; //$NON-NLS-1$
}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex
index fd5dc23..fce07bc 100644
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex
+++ b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/HTMLHeadTokenizer.jFlex
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
+ * Copyright (c) 2004, 2009 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
@@ -70,7 +70,7 @@
yy_endRead = 0;
/* number of newlines encountered up to the start of the matched text */
- yyline = 0;
+ // yyline = 0;
/* the number of characters up to the start of the matched text */
yychar = 0;
@@ -79,7 +79,7 @@
* the number of characters from the last newline up to the start
* of the matched text
*/
- yycolumn = 0;
+ // yycolumn = 0;
/**
* yy_atBOL == true <=> the scanner is currently at the beginning
@@ -111,8 +111,16 @@
public final HeadParserToken getNextToken() throws IOException {
String context = null;
- context = primGetNextToken();
HeadParserToken result = null;
+ try {
+ context = primGetNextToken();
+ }
+ catch (IllegalStateException e) {
+ hasMore = false;
+ result = createToken(HTMLHeadTokenizerConstants.UNDEFINED, yychar, yytext());
+ while(yy_advance() != YYEOF) {}
+ return result;
+ }
if (valueText != null) {
result = createToken(context, yychar, valueText);
valueText = null;
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/skeleton b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/skeleton
new file mode 100644
index 0000000..3d13ba6
--- /dev/null
+++ b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/skeleton
@@ -0,0 +1,268 @@
+
+ /** this character denotes the end of file */
+ final public static int YYEOF = -1;
+
+ /** lexical states */
+--- lexical states, charmap
+
+ /* error codes */
+ final private static int YY_UNKNOWN_ERROR = 0;
+ final private static int YY_ILLEGAL_STATE = 1;
+ final private static int YY_NO_MATCH = 2;
+ final private static int YY_PUSHBACK_2BIG = 3;
+
+ /* error messages for the codes above */
+ final private static String YY_ERROR_MSG[] = {
+ "Unkown internal scanner error",
+ "Internal error: unknown state",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+--- isFinal list
+ /** the input device */
+ private java.io.Reader yy_reader;
+
+ /** the current state of the DFA */
+ private int yy_state;
+
+ /** the current lexical state */
+ private int yy_lexical_state = YYINITIAL;
+
+ /** this buffer contains the current text to be matched and is
+ the source of the yytext() string */
+ private char yy_buffer[] = new char[16384];
+
+ /** the textposition at the last accepting state */
+ private int yy_markedPos;
+
+ /** the textposition at the last state to be included in yytext */
+ private int yy_pushbackPos;
+
+ /** the current text position in the buffer */
+ private int yy_currentPos;
+
+ /** startRead marks the beginning of the yytext() string in the buffer */
+ private int yy_startRead;
+
+ /** endRead marks the last character in the buffer, that has been read
+ from input */
+ private int yy_endRead;
+
+ /** number of newlines encountered up to the start of the matched text */
+ //private int yyline;
+
+ /** the number of characters up to the start of the matched text */
+ private int yychar;
+
+ /**
+ * the number of characters from the last newline up to the start of the
+ * matched text
+ */
+ //private int yycolumn;
+
+ /**
+ * yy_atBOL == true <=> the scanner is currently at the beginning of a line
+ */
+ private boolean yy_atBOL;
+
+ /** yy_atEOF == true <=> the scanner has returned a value for EOF */
+ private boolean yy_atEOF;
+
+--- user class code
+
+ /**
+ * Creates a new scanner
+ * There is also a java.io.InputStream version of this constructor.
+ *
+ * @param in the java.io.Reader to read input from.
+ */
+--- constructor declaration
+
+
+ /**
+ * Gets the next input character.
+ *
+ * @return the next character of the input stream, EOF if the
+ * end of the stream is reached.
+ * @exception IOException if any I/O-Error occurs
+ */
+ private int yy_advance() throws java.io.IOException {
+
+ /* standard case */
+ if (yy_currentPos < yy_endRead) return yy_buffer[yy_currentPos++];
+
+ /* if the eof is reached, we don't need to work hard */
+ if (yy_atEOF) return YYEOF;
+
+ /* otherwise: need to refill the buffer */
+
+ /* first: make room (if you can) */
+ if (yy_startRead > 0) {
+ System.arraycopy(yy_buffer, yy_startRead,
+ yy_buffer, 0,
+ yy_endRead-yy_startRead);
+
+ /* translate stored positions */
+ yy_endRead-= yy_startRead;
+ yy_currentPos-= yy_startRead;
+ yy_markedPos-= yy_startRead;
+ yy_pushbackPos-= yy_startRead;
+ yy_startRead = 0;
+ }
+
+ /* is the buffer big enough? */
+ if (yy_currentPos >= yy_buffer.length) {
+ /* if not: blow it up */
+ char newBuffer[] = new char[yy_currentPos*2];
+ System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
+ yy_buffer = newBuffer;
+ }
+
+ /* finally: fill the buffer with new input */
+ int numRead = yy_reader.read(yy_buffer, yy_endRead,
+ yy_buffer.length-yy_endRead);
+
+ if ( numRead == -1 ) return YYEOF;
+
+ yy_endRead+= numRead;
+
+ return yy_buffer[yy_currentPos++];
+ }
+
+
+ /**
+ * Closes the input stream.
+ */
+ final public void yyclose() throws java.io.IOException {
+ yy_atEOF = true; /* indicate end of file */
+ yy_endRead = yy_startRead; /* invalidate buffer */
+ yy_reader.close();
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ final public int yystate() {
+ return yy_lexical_state;
+ }
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ final public void yybegin(int newState) {
+ yy_lexical_state = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ final public String yytext() {
+ return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
+ }
+
+ /**
+ * Returns the length of the matched text region.
+ */
+ final public int yylength() {
+ return yy_markedPos-yy_startRead;
+ }
+
+
+ /**
+ * Reports an error that occured while scanning.
+ *
+ * @param errorCode the code of the errormessage to display
+ */
+ private void yy_ScanError(int errorCode) {
+ try {
+ IllegalStateException ise = new IllegalStateException("Instance: " + System.identityHashCode(this) + " offset:" + yychar + " state:" + yystate());
+ System.out.println(YY_ERROR_MSG[errorCode] + "\n" + ise);
+ throw ise;
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ System.out.println(YY_ERROR_MSG[YY_UNKNOWN_ERROR]);
+ }
+
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ * They will be read again by then next call of the scanning method
+ *
+ * @param number the number of characters to be read again.
+ * This number must not be greater than yylength()!
+ */
+ private void yypushback(int number) {
+ if ( number > yylength() )
+ yy_ScanError(YY_PUSHBACK_2BIG);
+
+ yy_markedPos -= number;
+ }
+
+
+--- yy_doEof
+ /**
+ * Resumes scanning until the next regular expression is matched,
+ * the end of input is encountered or an I/O-Error occurs.
+ *
+ * @return the next token
+ * @exception IOException if any I/O-Error occurs
+ */
+--- yylex declaration
+ int yy_input;
+ int yy_action;
+
+--- local declarations
+
+ while (true) {
+
+--- start admin (line, char, col count)
+ yy_action = -1;
+
+ yy_currentPos = yy_startRead = yy_markedPos;
+
+--- start admin (lexstate etc)
+
+ yy_forAction: {
+ while (true) {
+
+ yy_input = yy_advance();
+
+ if ( yy_input == YYEOF ) break yy_forAction;
+
+--- line, col, char count, next transition, isFinal action
+ yy_action = yy_state;
+ yy_markedPos = yy_currentPos;
+--- line count update
+ }
+
+ }
+ }
+
+--- char count update
+
+ switch (yy_action) {
+
+--- actions
+ default:
+ if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
+ yy_atEOF = true;
+--- eofvalue
+ }
+ else {
+--- no match
+ }
+ }
+ }
+ }
+
+--- main
+
+}
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/skeleton.readme b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/skeleton.readme
new file mode 100644
index 0000000..f2696ce
--- /dev/null
+++ b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/HeadParsers/HTMLHeadTokenizer/skeleton.readme
@@ -0,0 +1,6 @@
+The skeleton.sed file contains the modified JFlex 1.2.2 skeleton file with
+changes for use with the tokenizers within the org.eclipse.wst.sse.core.xml and
+org.eclipse.wst.sse.core.jsp plugins.
+
+The skeleton file's method definitions are copied into the generated output
+directly.
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 455f99f..e775190 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
@@ -10,5 +10,6 @@
<h1>WTP 3.0.5 Patches</h1>
<p>Bug <a href='https://bugs.eclipse.org/272389'>272389</a>. tokenizers stuck in loop when input not matched</p>
+<p>Bug <a href="https://bugs.eclipse.org/282205">282205</a>. HTMLHeadTokenizer can get stuck in an infinite loop</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 8a43b53..6341949 100644
--- a/features/org.eclipse.wst.xml_core.feature.patch/feature.properties
+++ b/features/org.eclipse.wst.xml_core.feature.patch/feature.properties
@@ -28,6 +28,7 @@
The bugs and fixes are described in the following bugzilla entries:\n\
\n\
Bug https://bugs.eclipse.org/272389 tokenizers stuck in loop when input not matched\n\
+Bug https://bugs.eclipse.org/282205 HTMLHeadTokenizer can get stuck in an infinite loop\n\
\n\
# "copyright" property - text of the "Feature Update Copyright"