###############################################################################
# Copyright (c) 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
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
# feature.properties
# contains externalized strings for feature.xml
# "%foo" in feature.xml corresponds to the key "foo" in this file
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# This file should be translated.

# "featureName" property - name of the feature
featureName=WTP Patches for org.eclipse.jst.web_core.feature

# "providerName" property - name of the company that provides the feature
providerName=Eclipse.org

# "updateSiteName" property - label for the update site
updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site

# "description" property - description of the feature
description=\
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/278131 StackOverflow thrown in JDOMSearchHelper.findInnerJavaElement\n\
Bug https://bugs.eclipse.org/279038 JSP opens dirty if content type header misspells "charset"\n\
Bug https://bugs.eclipse.org/279175 An internal error occurred during: "Validation TestEJB".\n\
Bug https://bugs.eclipse.org/281147 problem adding ee5 libs to container\n\
Bug https://bugs.eclipse.org/281562 Unsafe JDT calls in classpath container code\n\
Bug https://bugs.eclipse.org/283176 NPE in EARArtifactEdit.getModuleByManifestURI(String uri)\n\
Bug https://bugs.eclipse.org/283209 !MESSAGE Exception while reading /EAR5Client/.classpath\n\
Bug https://bugs.eclipse.org/283318 Single root check failing when source folder mapped but deleted\n\
Bug https://bugs.eclipse.org/283580 EAR 5.0 libs performance and missing updates\n\
Bug https://bugs.eclipse.org/283601 For Web Project verify source folders and web content do not collide\n\
Bug https://bugs.eclipse.org/283632 EJb ref validation in EAR validator need to throw error message\n\
Bug https://bugs.eclipse.org/284302 Memory leaks in IArchive classes\n\
Bug https://bugs.eclipse.org/284327 Memory leaks because of final static constants\n\
Bug https://bugs.eclipse.org/284932 TaglibIndex optimization ignores important resource change events\n\
Bug https://bugs.eclipse.org/285087 JSP Translator does not support IterationTag constructs\n\
Bug https://bugs.eclipse.org/286937 ExceptionInInitializerError from TaglibHelper.isIterationTag in log\n\
Bug https://bugs.eclipse.org/286969 Java string constants containing entity references get decoded\n\
Bug https://bugs.eclipse.org/287742 EAR import showing ejb client jars on second page when it should not\n\
Bug https://bugs.eclipse.org/287749 Core exceptions during EAR import\n\
Bug https://bugs.eclipse.org/288184 Ear import fails if two EJB modules use same client jar\n\
Bug https://bugs.eclipse.org/288832 IArchive performance problems with large amount of files within single archive\n\
Bug https://bugs.eclipse.org/289203 Facet classpath utility not properly migrating legacy projects\n\
Bug https://bugs.eclipse.org/288290 NPEs in TLDCMDocumentManager\n\
Bug https://bugs.eclipse.org/289257 [translation] JSPTranslator should handle assignment in JSP expressions\n\
Bug https://bugs.eclipse.org/290832 Backport the fix for bugzilla#260931 to wtp 3.0.5\n\
Bug https://bugs.eclipse.org/290738 False errors/warnings when validating expressions with maps\n\
Bug https://bugs.eclipse.org/290543 Backport the fix for bugilla#282936 to wtp 3.0.5\n\
Bug https://bugs.eclipse.org/290412 Performance problem in method TypeUtil.resolveInParents()\n\
Bug https://bugs.eclipse.org/290581 Manual validation is cleaning up the already validated cache on every call\n\
Bug https://bugs.eclipse.org/290742 EAR Export not properly closing 1.4 archives\n\
Bug https://bugs.eclipse.org/290757 'Prepare for Deployment' error message states "J2EEDeployOperation_2_UI_"\n\
Bug https://bugs.eclipse.org/290837 Exceptions from JEM in adopter product\n\
Bug https://bugs.eclipse.org/290966 JSP include directives do not handle non-JSP content types\n\
Bug https://bugs.eclipse.org/291143 Mechanism to expose WEB-INF/lib classpath component dependencies\n\
Bug https://bugs.eclipse.org/291225 Output folder support in JavaEE projects\n\
Bug https://bugs.eclipse.org/291251 API needed to determine if project has no single root and reasons why\n\
Bug https://bugs.eclipse.org/291266 Deleting java source folders should remove the corresponding artifacts from the .settings/org.eclipse.wst.common.component file\n\
Bug https://bugs.eclipse.org/291536 Session Bean remote interface validation should be error for missing methods\n\
Bug https://bugs.eclipse.org/249044 Web module's jar modules from another project are not published for Tomcat.\n\
Bug https://bugs.eclipse.org/272013 JEM JemProjectUtilities#getClasspathAsURLArray(IJavaProject) fails to handle class folders\n\
Bug https://bugs.eclipse.org/290739 Don't validate the expression segments after the map if the map value type is Object\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/292081 [translation] Javascript can cause custom tags to not be translated\n\
Bug https://bugs.eclipse.org/292162 isSingleRoot API should allow non Java src folder as output for JCA\n\
Bug https://bugs.eclipse.org/292177 [validation] JSPDirectiveValidator#processTaglibDirective should handle URL Taglib Records\n\
Bug https://bugs.eclipse.org/292186 WebLib Quick fixes reverting exclusions\n\
Bug https://bugs.eclipse.org/293047 Problem with WTPWorkingCopyManager and deleting projects\n\
Bug https://bugs.eclipse.org/293502 Performance degradation because of JavaLite calls\n\
Bug https://bugs.eclipse.org/293685 JAX-RPC client JSPs: JSPG0036E: Failed to find resource /sampleEchoProxy/TestClient.jsp\n\
Bug https://bugs.eclipse.org/293992 [validation] JSPBatchValidator is taking substantially longer when needed taglibs are not on class path\n\
Bug https://bugs.eclipse.org/293981 [validation] Attributes do not indicate problems with dynamic content in rtexprvalue attributes\n\
Bug https://bugs.eclipse.org/294369 EAR 5.0 Lib utility deployment\n\
Bug https://bugs.eclipse.org/294490 EAR Libraries container miscomputing because of stale IJavaLite\n\
Bug https://bugs.eclipse.org/293211 Performance problem when validate managed properties\n\
Bug https://bugs.eclipse.org/294627 Deleting folders should remove entry from .settings/org.eclipse.wst.common.component file\n\
Bug https://bugs.eclipse.org/295353 Adding module to application.xml no longer generating "id" attributes\n\
Bug https://bugs.eclipse.org/294716 ClasspathDecorationsManager may cause SAXParseException\n\
Bug https://bugs.eclipse.org/295617 Web project creation does not honour user input\n\
Bug https://bugs.eclipse.org/295728 Deferred EL expressions are being marked with validation problems\n\
Bug https://bugs.eclipse.org/296719 Runtime Change Delegate throws NPE when changing from Unknown Runtime type\n\
Bug https://bugs.eclipse.org/298796 isSingleRoot API should not require a Java src folder\n\
Bug https://bugs.eclipse.org/293504 [validation] JSP syntax validator requires brackets after IF statement\n\
Bug https://bugs.eclipse.org/297852 Error log entry for ArrayIndexOutOfBoundsException related to Annotations and EMF\n\
Bug https://bugs.eclipse.org/298891 Classpath initialization is very slow for complex EARs\n\
Bug https://bugs.eclipse.org/299156 [parser] JSPTokenizer does not detect Unicode character references as you type\n\
Bug https://bugs.eclipse.org/299393 Validation of runtime expressions in JSP custom tag attributes\n\
Bug https://bugs.eclipse.org/299432 J2EE Deployment framework doesn't allow facet exclusions\n\
Bug https://bugs.eclipse.org/299437 NPEs logged due to bug 295353\n\
Bug https://bugs.eclipse.org/299488 [translation] XMLJSPRegionHelper#decodeRemainingRegions can cause NPE\n\
Bug https://bugs.eclipse.org/299489 [content model] CMDocumentFactoryTLD#getContainedText can cause NPE\n\
Bug https://bugs.eclipse.org/299541 Excessive logging in TaglibClassLoader\n\
Bug https://bugs.eclipse.org/299655 ClasspathSelection needs better error handling\n\
Bug https://bugs.eclipse.org/299785 HTML causes validation errors in Tag files\n\
Bug https://bugs.eclipse.org/300062 Performance improvement of VirtualComponent caching\n\
Bug https://bugs.eclipse.org/300098 'In Lib Dir' checkbox being ignored when a jar dependency is added to an EAR\n\
Bug https://bugs.eclipse.org/300183 Componentcore.createComponent returns a null value when called from adopter product\n\
Bug https://bugs.eclipse.org/300387 Need to protect against NPE in adopter J2EEElementChangedListener\n\
Bug https://bugs.eclipse.org/301419 IllegalException thrown during deployment\n\
Bug https://bugs.eclipse.org/301477 EAR Libraries container missing entries on restart\n\
Bug https://bugs.eclipse.org/301540 Incorrect reporting of JSP problems\n\
Bug https://bugs.eclipse.org/301598 [translation] Cannot be resolved errors when Struts <bean:define> is defined within <input type> HTML tag\n\
Bug https://bugs.eclipse.org/303070 random build/compile error due to out of sync deployment descriptor\n\
Bug https://bugs.eclipse.org/303140 ComponentArchiveSaveAdapter incorrectly handles .settings files\n\
Bug https://bugs.eclipse.org/303131 J2EEComponentClasspathContainer.getEARLibDir should check both DD and facet version\n\
Bug https://bugs.eclipse.org/303963 Error Exception logged during deploy\n\
Bug https://bugs.eclipse.org/305252 ClassCastException:j2ee.application.internal.impl.ApplicationImpl incompatible with javaee.application.Application\n\
Bug https://bugs.eclipse.org/305253 Performance issue in Manual EAR validation\n\
Bug https://bugs.eclipse.org/306058 NoClassDefFoundError coming from the TaglibHelper\n\
Bug https://bugs.eclipse.org/313181 Java EE import fails if zip entries contain leading slashes\n\
Bug https://bugs.eclipse.org/313399 Opener of Archive didn't close a file\n\
Bug https://bugs.eclipse.org/313608 random build/compile error due to out of sync files\n\
Bug https://bugs.eclipse.org/313630 V1 Validator extension point changes for performance\n\
Bug https://bugs.eclipse.org/316222 [parser] < or > in attribute values are not supported\n\
Bug https://bugs.eclipse.org/316291 [hotbug] Backport 292943 to wtp 3.0.5Patch\n\
Bug https://bugs.eclipse.org/317560 Errors flagged by error annotations not reflected in the Problems, Explorer, and/or Navigator views.\n\
Bug https://bugs.eclipse.org/318736 ImportDataModel unsafely checks java facet name\n\
Bug https://bugs.eclipse.org/319311 Jars exported as variable names instead of jar names\n\
Bug https://bugs.eclipse.org/319439 EAR Validation throws exceptions on project close\n\
Bug https://bugs.eclipse.org/319735 Unwanted newlines before display name value\n\
Bug https://bugs.eclipse.org/320312 NLS missing messages in .log\n\
Bug https://bugs.eclipse.org/320322 [validation] JSP source validators running even when respective batch validators have been turned off\n\
Bug https://bugs.eclipse.org/320436 jar's placed in Java EE 5 Ear's lib directory should never be considered "modules"\n\
Bug https://bugs.eclipse.org/322173 J2EEDeployOperation does not allow callers to get a list of affected projects\n\
Bug https://bugs.eclipse.org/322411 Weblib classpath dependencies not returned from members() when single-root\n\
Bug https://bugs.eclipse.org/322678 In EARVirtualComponent.getHardReferences, need to get the archiveName directly from the referencedComponent, instead of getting it from the dependentObject\n\
Bug https://bugs.eclipse.org/322953 J2EEDeployOperation affect projects support needs a way to tell if any deployer do not provide that info\n\
Bug https://bugs.eclipse.org/324221 JavaEEArchiveUtilities.inLibDir needs to consider component parameter while returning result\n\
Bug https://bugs.eclipse.org/325803 NPE in org.eclipse.jst.jsp.core.internal.java.XMLJSPRegionHelper.decodeRemainingRegions(XMLJSPRegionHelper.java:278)\n\
Bug https://bugs.eclipse.org/326015 EarVirtualComponent needs to continue to use complete ArchiveName\n\
Bug https://bugs.eclipse.org/328093 EAR Library Directory field should not have preceding slash\n\
Bug https://bugs.eclipse.org/334151 Need to back out bug 294627\n\
Bug https://bugs.eclipse.org/334556 Need to restore support fallback to dependentObject in maintenance stream\n\
\n\
# "copyright" property - text of the "Feature Update Copyright"
copyright=\
Copyright (c) 2008 IBM Corporation and others.\n\
All rights reserved. This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License v1.0\n\
which accompanies this distribution, and is available at\n\
http://www.eclipse.org/legal/epl-v10.html\n\
\n\
Contributors:\n\
    IBM Corporation - initial API and implementation\n
################ end of copyright property ####################################

# "licenseURL" property - URL of the "Feature License"
# do not translate value - just change to point to a locale-specific HTML page
licenseURL=license.html

# "license" property - text of the "Feature Update License"
# should be plain text version of license agreement pointed to be "licenseURL"
license=\
ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
August, 2008\n\
\n\
Usage Of Content\n\
\n\
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
\n\
Applicable Licenses\n\
\n\
Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
is provided to you under the terms and conditions of the Eclipse Public\n\
License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
For purposes of the EPL, "Program" will mean the Content.\n\
\n\
Content includes, but is not limited to, source code, object code,\n\
documentation and other files maintained in the Eclipse.org CVS\n\
repository ("Repository") in CVS modules ("Modules") and made available\n\
as downloadable archives ("Downloads").\n\
\n\
   - Content may be structured and packaged into modules to facilitate delivering,\n\
     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
     plug-in fragments ("Fragments"), and features ("Features").\n\
   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
     in a directory named "plugins".\n\
   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
\n\
Features may also include other Features ("Included Features"). Files named\n\
"feature.xml" may contain a list of the names and version numbers of\n\
Included Features.\n\
\n\
The terms and conditions governing Plug-ins and Fragments should be\n\
contained in files named "about.html" ("Abouts"). The terms and\n\
conditions governing Features and Included Features should be contained\n\
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
Licenses may be located in any directory of a Download or Module\n\
including, but not limited to the following locations:\n\
\n\
   - The top-level (root) directory\n\
   - Plug-in and Fragment directories\n\
   - Inside Plug-ins and Fragments packaged as JARs\n\
   - Sub-directories of the directory named "src" of certain Plug-ins\n\
   - Feature directories\n\
\n\
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
Eclipse Update Manager, you must agree to a license ("Feature Update\n\
License") during the installation process. If the Feature contains\n\
Included Features, the Feature Update License should either provide you\n\
with the terms and conditions governing the Included Features or inform\n\
you where you can locate them. Feature Update Licenses may be found in\n\
the "license" property of files named "feature.properties". Such Abouts,\n\
Feature Licenses and Feature Update Licenses contain the terms and\n\
conditions (or references to such terms and conditions) that govern your\n\
use of the associated Content in that directory.\n\
\n\
THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
\n\
    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
\n\
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
govern that particular Content.\n\
\n\
Cryptography\n\
\n\
Content may contain encryption software. The country in which you are\n\
currently may have restrictions on the import, possession, and use,\n\
and/or re-export to another country, of encryption software. BEFORE\n\
using any encryption software, please check the country's laws,\n\
regulations and policies concerning the import, possession, or use,\n\
and re-export of encryption software, to see if this is permitted.\n\
\n\
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
########### end of license property ##########################################
