diff options
author | nitind | 2008-05-22 16:29:28 +0000 |
---|---|---|
committer | nitind | 2008-05-22 16:29:28 +0000 |
commit | cfa52f93981b2d2f9d6d58c7aa72572927afedc3 (patch) | |
tree | 285670fed3c242defaa7054e120adb548c8107c0 /bundles/org.eclipse.wst.html.core | |
parent | affdab099bea7cd60930420d9ad12513f1ef1ed9 (diff) | |
download | webtools.sourceediting-cfa52f93981b2d2f9d6d58c7aa72572927afedc3.tar.gz webtools.sourceediting-cfa52f93981b2d2f9d6d58c7aa72572927afedc3.tar.xz webtools.sourceediting-cfa52f93981b2d2f9d6d58c7aa72572927afedc3.zip |
[212927] "dynamic-attributes" missing from WTP 2.0's JSP tag file support
Diffstat (limited to 'bundles/org.eclipse.wst.html.core')
4 files changed, 370 insertions, 31 deletions
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20ElementCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20ElementCollection.java index d2e1be8b22..3ca1dadefe 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20ElementCollection.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20ElementCollection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. + * Copyright (c) 2007, 2008 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 @@ -77,6 +77,15 @@ final class JSP20ElementCollection extends JSPElementCollection implements JSP20 case Ids.ID_DIRECTIVE_TAGLIB : createForDirTaglib(); break; + case Ids.ID_DIRECTIVE_PAGE : + createForDirPage(); + break; + case Ids.ID_ROOT : + createForRoot(); + break; + case Ids.ID_PLUGIN : + createForPlugin(); + break; default : super.getDeclarations(eid); } @@ -87,13 +96,13 @@ final class JSP20ElementCollection extends JSPElementCollection implements JSP20 } private void createForOutput() { - AttrDecl adec = new AttrDecl(JSP20Namespace.ElementName.OUTPUT); + AttrDecl adec = new AttrDecl(JSP20Namespace.ATTR_NAME_OMIT_XML_DECL); adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE, JSP20Namespace.ATTR_VALUE_YES, JSP20Namespace.ATTR_VALUE_NO}; adec.type.setEnumValues(values); adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_NO); adec.usage = CMAttributeDeclaration.OPTIONAL; - declarations.putNamedItem(JSP20Namespace.ElementName.OUTPUT, adec); + declarations.putNamedItem(JSP20Namespace.ATTR_NAME_OMIT_XML_DECL, adec); adec = new AttrDecl(JSP20Namespace.ATTR_NAME_DOCTYPE_ROOT_ELEMENT); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); @@ -134,6 +143,82 @@ final class JSP20ElementCollection extends JSPElementCollection implements JSP20 declarations.putNamedItem(ATTR_NAME_PREFIX, adec); } + void createForDirPage() { + AttrDecl adec = null; + // ("language" CDATA DECLARED "java") + adec = new AttrDecl(ATTR_NAME_LANGUAGE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_JAVA); + declarations.putNamedItem(ATTR_NAME_LANGUAGE, adec); + + // ("extends" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_EXTENDS); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_EXTENDS, adec); + + // ("import" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_IMPORT); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_IMPORT, adec); + + // ("session" ENUM DECLARED (true|false) "true") + adec = createBoolType(ATTR_NAME_SESSION, ATTR_VALUE_TRUE); + if (adec != null) + declarations.putNamedItem(ATTR_NAME_SESSION, adec); + + // ("buffer" CDATA DECLARED "8kb") + adec = new AttrDecl(ATTR_NAME_BUFFER); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_BUFSIZ_DEFAULT); + declarations.putNamedItem(ATTR_NAME_BUFFER, adec); + + // ("autoFlush" ENUM DECLARED (true|false) "true") + adec = createBoolType(ATTR_NAME_AUTOFLUSH, ATTR_VALUE_TRUE); + if (adec != null) + declarations.putNamedItem(ATTR_NAME_AUTOFLUSH, adec); + + // ("isThreadSafe" ENUM DECLARED (true|false) "true") + adec = createBoolType(ATTR_NAME_IS_THREAD_SAFE, ATTR_VALUE_TRUE); + if (adec != null) + declarations.putNamedItem(ATTR_NAME_IS_THREAD_SAFE, adec); + + // ("info" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_INFO); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_INFO, adec); + + // ("errorPage" URI IMPLIED) + adec = new AttrDecl(ATTR_NAME_ERROR_PAGE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + declarations.putNamedItem(ATTR_NAME_ERROR_PAGE, adec); + + // ("isErrorPage" ENUM DECLARED (true|false) "false") + adec = createBoolType(ATTR_NAME_IS_ERROR_PAGE, ATTR_VALUE_FALSE); + if (adec != null) + declarations.putNamedItem(ATTR_NAME_IS_ERROR_PAGE, adec); + + // ("contentType" CDATA DECLARED "text/html; ISO-8859-1") + adec = new AttrDecl(ATTR_NAME_CONTENT_TYPE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_CT_DEFAULT); + declarations.putNamedItem(ATTR_NAME_CONTENT_TYPE, adec); + + // ("pageEncoding" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_PAGE_ENCODING); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_ENCODING_DEFAULT); + declarations.putNamedItem(ATTR_NAME_PAGE_ENCODING, adec); + + // ("isELIgnored" ENUM DECLARED (true|false) "false") + adec = new AttrDecl(JSP20Namespace.ATTR_NAME_ISELIGNORED); + adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); + String[] values = new String[]{ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; + adec.type.setEnumValues(values); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); + adec.usage = CMAttributeDeclaration.OPTIONAL; + declarations.putNamedItem(JSP20Namespace.ATTR_NAME_ISELIGNORED, adec); + } + private void createForElement() { AttrDecl adec = new AttrDecl(ATTR_NAME_NAME); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); @@ -151,10 +236,106 @@ final class JSP20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; adec.type.setEnumValues(values); - adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_TRUE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_TRIM, adec); } + + private void createForRoot() { + // ("xmlns:jsp" CDATA "http://java.sun.com/JSP/Page") + AttrDecl adec = new AttrDecl(ATTR_NAME_XMLNS_JSP); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_XMLNS_JSP); + declarations.putNamedItem(ATTR_NAME_XMLNS_JSP, adec); + // ("version" CDATA REQUIRED) + adec = new AttrDecl(ATTR_NAME_VERSION); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_JSP_VER_20); + adec.usage = CMAttributeDeclaration.REQUIRED; + declarations.putNamedItem(ATTR_NAME_VERSION, adec); + } + + private void createForPlugin() { + // ("type" ENUM REQUIRED (bean|applet)) + AttrDecl adec = new AttrDecl(ATTR_NAME_TYPE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); + adec.usage = CMAttributeDeclaration.REQUIRED; + String[] values = {ATTR_VALUE_BEAN, ATTR_VALUE_APPLET}; + adec.type.setEnumValues(values); + declarations.putNamedItem(ATTR_NAME_TYPE, adec); + + // ("code" CDATA REQUIRED) + adec = new AttrDecl(ATTR_NAME_CODE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + adec.usage = CMAttributeDeclaration.REQUIRED; + declarations.putNamedItem(ATTR_NAME_CODE, adec); + + // ("codebase" URI REQUIRED) + adec = new AttrDecl(ATTR_NAME_CODEBASE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + adec.usage = CMAttributeDeclaration.REQUIRED; + declarations.putNamedItem(ATTR_NAME_CODEBASE, adec); + + // ("align" ENUM IMPLIED (top|middle|bottom|left|right)) + adec = new AttrDecl(ATTR_NAME_ALIGN); + adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); + String[] aligns = {ATTR_VALUE_TOP, ATTR_VALUE_MIDDLE, ATTR_VALUE_BOTTOM, ATTR_VALUE_LEFT, ATTR_VALUE_RIGHT}; + adec.type.setEnumValues(aligns); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_BOTTOM); + declarations.putNamedItem(ATTR_NAME_ALIGN, adec); + + // ("archive" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_ARCHIVE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_ARCHIVE, adec); + + // ("height" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_HEIGHT); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_HEIGHT, adec); + + // ("hspace" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_HSPACE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_HSPACE, adec); + + // ("jreversion" CDATA DECLARED "1.1") + adec = new AttrDecl(ATTR_NAME_JREVERSION); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_JVER12); + declarations.putNamedItem(ATTR_NAME_JREVERSION, adec); + + // ("name" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_NAME); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_NAME, adec); + + // ("vspace" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_VSPACE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_VSPACE, adec); + + // ("width" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_WIDTH); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_WIDTH, adec); + + // ("nspluginurl" URI IMPLIED) + adec = new AttrDecl(ATTR_NAME_NSPLUGINURL); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + declarations.putNamedItem(ATTR_NAME_NSPLUGINURL, adec); + + // ("iepluginurl" URI IMPLIED) + adec = new AttrDecl(ATTR_NAME_IEPLUGINURL); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + declarations.putNamedItem(ATTR_NAME_IEPLUGINURL, adec); + + // ("mayscript" ENUM IMPLIED (true | false) + adec = new AttrDecl(JSP20Namespace.ATTR_NAME_MAYSCRIPT); + adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); + adec.type.setEnumValues(new String[] {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}); + declarations.putNamedItem(JSP20Namespace.ATTR_NAME_MAYSCRIPT, adec); + } } private static String[] names = null; @@ -274,6 +455,25 @@ final class JSP20ElementCollection extends JSPElementCollection implements JSP20 packet.layout = HTMLElementDeclaration.LAYOUT_HIDDEN; packet.format = HTMLElementDeclaration.FORMAT_JSP_DIRECTIVE; break; + case Ids.ID_DIRECTIVE_PAGE : + // directive.page + packet.name = DIRECTIVE_PAGE; + packet.omit = HTMLElementDeclaration.OMIT_END; + packet.layout = HTMLElementDeclaration.LAYOUT_HIDDEN; + packet.format = HTMLElementDeclaration.FORMAT_JSP_DIRECTIVE; + break; + case Ids.ID_ROOT : + packet.name = ROOT; + packet.content = CMElementDeclaration.ELEMENT; + packet.layout = HTMLElementDeclaration.LAYOUT_HIDDEN; // same as HTML + break; + case Ids.ID_PLUGIN : + // plugin + packet.name = PLUGIN; + packet.content = CMElementDeclaration.ELEMENT; + packet.layout = HTMLElementDeclaration.LAYOUT_OBJECT; + packet.indentChild = true; + break; default : return super.createElemDecl(eid); } diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20Namespace.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20Namespace.java index 5a0dc9a81f..ee138a2be4 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20Namespace.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSP20Namespace.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. + * Copyright (c) 2007, 2008 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 @@ -44,8 +44,6 @@ public interface JSP20Namespace extends JSP11Namespace { String ATTR_NAME_DESCRIPTION = "description"; //$NON-NLS-1$ String ATTR_NAME_EXAMPLE = "example"; //$NON-NLS-1$ String ATTR_NAME_LANGUAGE = "language"; //$NON-NLS-1$ - String ATTR_NAME_IMPORT = "import"; //$NON-NLS-1$ - String ATTR_NAME_PAGEENCODING = "pageEncoding"; //$NON-NLS-1$ String ATTR_NAME_ISELIGNORED = "isELIgnored"; //$NON-NLS-1$ String ATTR_NAME_REQUIRED = "required"; //$NON-NLS-1$ @@ -68,14 +66,32 @@ public interface JSP20Namespace extends JSP11Namespace { String ATTR_NAME_VAR = "var"; //$NON-NLS-1$ String ATTR_NAME_VARREADER = "varReader"; //$NON-NLS-1$ + String ATTR_NAME_OMIT_XML_DECL = "omit-xml-declaration"; //$NON-NLS-1$ String ATTR_NAME_DOCTYPE_ROOT_ELEMENT = "doctype-root-element"; //$NON-NLS-1$ String ATTR_NAME_DOCTYPE_SYSTEM = "doctype-system"; //$NON-NLS-1$ String ATTR_NAME_DOCTYPE_PUBLIC = "doctype-public"; //$NON-NLS-1$ - String ATTR_VALUE_NO = "no"; - String ATTR_VALUE_YES = "yes"; + String ATTR_VALUE_NO = "no"; //$NON-NLS-1$ + String ATTR_VALUE_YES = "yes"; //$NON-NLS-1$ - String ATTR_VALUE_SCOPE_AT_END = "AT_END"; - String ATTR_VALUE_SCOPE_AT_BEGIN = "AT_BEGIN"; - String ATTR_VALUE_SCOPE_NESTED = "NESTED"; + String ATTR_VALUE_SCOPE_AT_END = "AT_END"; //$NON-NLS-1$ + String ATTR_VALUE_SCOPE_AT_BEGIN = "AT_BEGIN"; //$NON-NLS-1$ + String ATTR_VALUE_SCOPE_NESTED = "NESTED"; //$NON-NLS-1$ + + String ATTR_NAME_DYNAMIC_ATTRIBUTES = "dynamic-attributes"; //$NON-NLS-1$ + + String ATTR_VALUE_ENCODING_DEFAULT = "ISO-8859-1"; //$NON-NLS-1$ + + String ATTR_VALUE_VARIABLE_CLASS_DEFAULT = "java.lang.String"; //$NON-NLS-1$ + + String ATTR_NAME_MAYSCRIPT = "mayscript"; //$NON-NLS-1$ + + String ATTR_VALUE_JVER12 = "1.2"; //$NON-NLS-1$ + + String ATTR_VALUE_JSP_VER_20 = "2.0"; //$NON-NLS-1$ + + // JSP 2.1 attributes +// String ATTR_NAME_DEFERRED_SYNTAX_ALLOWED_AS_LITERAL = "deferredSyntaxAllowedAsLiteral"; //$NON-NLS-1$ +// String ATTR_NAME_TRIM_DIRECTIVE_WHITESPACES = "trimDirectiveWhitespaces"; //$NON-NLS-1$ + } diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSPElementCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSPElementCollection.java index 67832d974d..c517f99e3e 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSPElementCollection.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/JSPElementCollection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2005 IBM Corporation and others. + * Copyright (c) 2004, 2008 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 @@ -327,7 +327,7 @@ class JSPElementCollection extends DeclCollection implements JSP11Namespace.Elem return declarations; } - private AttrDecl createBoolType(String name, String defValue) { + AttrDecl createBoolType(String name, String defValue) { AttrDecl adec = new AttrDecl(name); adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; @@ -411,7 +411,7 @@ class JSPElementCollection extends DeclCollection implements JSP11Namespace.Elem declarations.putNamedItem(ATTR_NAME_FILE, adec); } - void createForDirTaglib() { + private void createForDirTaglib() { // ("uri" URI REQUIRED) AttrDecl adec = new AttrDecl(ATTR_NAME_URI); adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); @@ -613,7 +613,7 @@ class JSPElementCollection extends DeclCollection implements JSP11Namespace.Elem } private void createForRoot() { - // ("xmlns:jsp" CDATA "http://jva.sun.com/JSP/Page") + // ("xmlns:jsp" CDATA "http://java.sun.com/JSP/Page") AttrDecl adec = new AttrDecl(ATTR_NAME_XMLNS_JSP); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_XMLNS_JSP); diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/Tag20ElementCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/Tag20ElementCollection.java index c8fb4ba270..7ae40f22de 100644 --- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/Tag20ElementCollection.java +++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/Tag20ElementCollection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2007 IBM Corporation and others. + * Copyright (c) 2004, 2008 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 @@ -91,7 +91,7 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; adec.type.setEnumValues(values); - adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_TRUE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_TRIM, adec); } @@ -109,6 +109,7 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = new String[]{ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; adec.type.setEnumValues(values); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_REQUIRED, adec); @@ -116,6 +117,7 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); values = new String[]{ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; adec.type.setEnumValues(values); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_FRAGMENT, adec); @@ -123,6 +125,7 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); values = new String[]{ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; adec.type.setEnumValues(values); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_TRUE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_RTEXPRVALUE, adec); @@ -131,11 +134,6 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_TYPE, adec); - adec = new AttrDecl(ATTR_NAME_NAME); - adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); - adec.usage = CMAttributeDeclaration.REQUIRED; - declarations.putNamedItem(ATTR_NAME_NAME, adec); - adec = new AttrDecl(JSP20Namespace.ATTR_NAME_DESCRIPTION); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); adec.usage = CMAttributeDeclaration.OPTIONAL; @@ -159,8 +157,14 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 String[] values = {JSP20Namespace.ATTR_VALUE_EMPTY, JSP20Namespace.ATTR_VALUE_TAGDEPENDENT, JSP20Namespace.ATTR_VALUE_SCRIPTLESS}; adec.type.setEnumValues(values); adec.usage = CMAttributeDeclaration.OPTIONAL; + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_SCRIPTLESS); declarations.putNamedItem(JSP20Namespace.ATTR_NAME_BODY_CONTENT, adec); + adec = new AttrDecl(JSP20Namespace.ATTR_NAME_DYNAMIC_ATTRIBUTES); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.usage = CMAttributeDeclaration.OPTIONAL; + declarations.putNamedItem(JSP20Namespace.ATTR_NAME_DYNAMIC_ATTRIBUTES, adec); + adec = new AttrDecl(JSP20Namespace.ATTR_NAME_SMALL_ICON); adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); adec.usage = CMAttributeDeclaration.OPTIONAL; @@ -183,23 +187,26 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec = new AttrDecl(JSP20Namespace.ATTR_NAME_LANGUAGE); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_JAVA); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_LANGUAGE, adec); - adec = new AttrDecl(JSP20Namespace.ATTR_NAME_IMPORT); + adec = new AttrDecl(JSP11Namespace.ATTR_NAME_IMPORT); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); adec.usage = CMAttributeDeclaration.OPTIONAL; - declarations.putNamedItem(JSP20Namespace.ATTR_NAME_IMPORT, adec); + declarations.putNamedItem(JSP11Namespace.ATTR_NAME_IMPORT, adec); - adec = new AttrDecl(JSP20Namespace.ATTR_NAME_PAGEENCODING); + adec = new AttrDecl(JSP11Namespace.ATTR_NAME_PAGE_ENCODING); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_ENCODING_DEFAULT); adec.usage = CMAttributeDeclaration.OPTIONAL; - declarations.putNamedItem(JSP20Namespace.ATTR_NAME_PAGEENCODING, adec); + declarations.putNamedItem(JSP11Namespace.ATTR_NAME_PAGE_ENCODING, adec); adec = new AttrDecl(JSP20Namespace.ATTR_NAME_ISELIGNORED); adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); values = new String[]{ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; adec.type.setEnumValues(values); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_ISELIGNORED, adec); } @@ -245,6 +252,7 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec = new AttrDecl(JSP20Namespace.ATTR_NAME_VARIABLE_CLASS); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_VARIABLE_CLASS_DEFAULT); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_VARIABLE_CLASS, adec); @@ -252,6 +260,7 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = new String[]{ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}; adec.type.setEnumValues(values); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_TRUE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_DECLARE, adec); @@ -284,7 +293,7 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = {ATTR_VALUE_PAGE, ATTR_VALUE_REQUEST, ATTR_VALUE_SESSION, ATTR_VALUE_APPLICATION}; adec.type.setEnumValues(values); - adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_PAGE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP11Namespace.ATTR_NAME_SCOPE, adec); } @@ -316,19 +325,19 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = {ATTR_VALUE_PAGE, ATTR_VALUE_REQUEST, ATTR_VALUE_SESSION, ATTR_VALUE_APPLICATION}; adec.type.setEnumValues(values); - adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_FALSE); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_PAGE); adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP11Namespace.ATTR_NAME_SCOPE, adec); } private void createForOutput() { - AttrDecl adec = new AttrDecl(JSP20Namespace.ElementName.OUTPUT); + AttrDecl adec = new AttrDecl(JSP20Namespace.ATTR_NAME_OMIT_XML_DECL); adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); String[] values = {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE, JSP20Namespace.ATTR_VALUE_YES, JSP20Namespace.ATTR_VALUE_NO}; adec.type.setEnumValues(values); adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_NO); adec.usage = CMAttributeDeclaration.OPTIONAL; - declarations.putNamedItem(JSP20Namespace.ElementName.OUTPUT, adec); + declarations.putNamedItem(JSP20Namespace.ATTR_NAME_OMIT_XML_DECL, adec); adec = new AttrDecl(JSP20Namespace.ATTR_NAME_DOCTYPE_ROOT_ELEMENT); adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); @@ -345,6 +354,102 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 adec.usage = CMAttributeDeclaration.OPTIONAL; declarations.putNamedItem(JSP20Namespace.ATTR_NAME_DOCTYPE_PUBLIC, adec); } + + private void createForRoot() { + // ("xmlns:jsp" CDATA "http://java.sun.com/JSP/Page") + AttrDecl adec = new AttrDecl(ATTR_NAME_XMLNS_JSP); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_XMLNS_JSP); + declarations.putNamedItem(ATTR_NAME_XMLNS_JSP, adec); + // ("version" CDATA REQUIRED) + adec = new AttrDecl(ATTR_NAME_VERSION); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_JSP_VER_20); + adec.usage = CMAttributeDeclaration.REQUIRED; + declarations.putNamedItem(ATTR_NAME_VERSION, adec); + } + + private void createForPlugin() { + // ("type" ENUM REQUIRED (bean|applet)) + AttrDecl adec = new AttrDecl(ATTR_NAME_TYPE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); + adec.usage = CMAttributeDeclaration.REQUIRED; + String[] values = {ATTR_VALUE_BEAN, ATTR_VALUE_APPLET}; + adec.type.setEnumValues(values); + declarations.putNamedItem(ATTR_NAME_TYPE, adec); + + // ("code" CDATA REQUIRED) + adec = new AttrDecl(ATTR_NAME_CODE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + adec.usage = CMAttributeDeclaration.REQUIRED; + declarations.putNamedItem(ATTR_NAME_CODE, adec); + + // ("codebase" URI REQUIRED) + adec = new AttrDecl(ATTR_NAME_CODEBASE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + adec.usage = CMAttributeDeclaration.REQUIRED; + declarations.putNamedItem(ATTR_NAME_CODEBASE, adec); + + // ("align" ENUM IMPLIED (top|middle|bottom|left|right)) + adec = new AttrDecl(ATTR_NAME_ALIGN); + adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); + String[] aligns = {ATTR_VALUE_TOP, ATTR_VALUE_MIDDLE, ATTR_VALUE_BOTTOM, ATTR_VALUE_LEFT, ATTR_VALUE_RIGHT}; + adec.type.setEnumValues(aligns); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, ATTR_VALUE_BOTTOM); + declarations.putNamedItem(ATTR_NAME_ALIGN, adec); + + // ("archive" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_ARCHIVE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_ARCHIVE, adec); + + // ("height" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_HEIGHT); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_HEIGHT, adec); + + // ("hspace" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_HSPACE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_HSPACE, adec); + + // ("jreversion" CDATA DECLARED "1.1") + adec = new AttrDecl(ATTR_NAME_JREVERSION); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + adec.type.setImpliedValue(CMDataType.IMPLIED_VALUE_DEFAULT, JSP20Namespace.ATTR_VALUE_JVER12); + declarations.putNamedItem(ATTR_NAME_JREVERSION, adec); + + // ("name" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_NAME); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_NAME, adec); + + // ("vspace" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_VSPACE); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_VSPACE, adec); + + // ("width" CDATA IMPLIED) + adec = new AttrDecl(ATTR_NAME_WIDTH); + adec.type = new HTMLCMDataTypeImpl(CMDataType.CDATA); + declarations.putNamedItem(ATTR_NAME_WIDTH, adec); + + // ("nspluginurl" URI IMPLIED) + adec = new AttrDecl(ATTR_NAME_NSPLUGINURL); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + declarations.putNamedItem(ATTR_NAME_NSPLUGINURL, adec); + + // ("iepluginurl" URI IMPLIED) + adec = new AttrDecl(ATTR_NAME_IEPLUGINURL); + adec.type = new HTMLCMDataTypeImpl(CMDataType.URI); + declarations.putNamedItem(ATTR_NAME_IEPLUGINURL, adec); + + // ("mayscript" ENUM IMPLIED (true | false) + adec = new AttrDecl(JSP20Namespace.ATTR_NAME_MAYSCRIPT); + adec.type = new HTMLCMDataTypeImpl(CMDataType.ENUM); + adec.type.setEnumValues(new String[] {ATTR_VALUE_TRUE, ATTR_VALUE_FALSE}); + declarations.putNamedItem(JSP20Namespace.ATTR_NAME_MAYSCRIPT, adec); + } public CMNamedNodeMapImpl getDeclarations(int eid) { switch (eid) { @@ -378,6 +483,12 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 case TagIds20.ID_OUTPUT : createForOutput(); break; + case TagIds20.ID_ROOT : + createForRoot(); + break; + case TagIds20.ID_PLUGIN : + createForPlugin(); + break; default : super.getDeclarations(eid); break; @@ -553,6 +664,18 @@ final class Tag20ElementCollection extends JSPElementCollection implements JSP20 packet.indentChild = true; packet.format = HTMLElementDeclaration.FORMAT_JSP_SCRIPT; break; + case TagIds20.ID_ROOT : + packet.name = ROOT; + packet.content = CMElementDeclaration.ELEMENT; + packet.layout = HTMLElementDeclaration.LAYOUT_HIDDEN; // same as HTML + break; + case TagIds20.ID_PLUGIN : + // plugin + packet.name = PLUGIN; + packet.content = CMElementDeclaration.ELEMENT; + packet.layout = HTMLElementDeclaration.LAYOUT_OBJECT; + packet.indentChild = true; + break; default : return super.createElemDecl(eid); } |