###############################################################################
# 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\
\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 ##########################################
