JBossWeb SVN: r2092 - in sandbox/webapps: src and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: jfrederic.clere(a)jboss.com
Date: 2012-09-30 06:42:08 -0400 (Sun, 30 Sep 2012)
New Revision: 2092
Added:
sandbox/webapps/src/Login.java
Modified:
sandbox/webapps/build.xml
Log:
Add a Login example.
Modified: sandbox/webapps/build.xml
===================================================================
--- sandbox/webapps/build.xml 2012-09-28 14:33:29 UTC (rev 2091)
+++ sandbox/webapps/build.xml 2012-09-30 10:42:08 UTC (rev 2092)
@@ -5,18 +5,22 @@
<!--
<javac srcdir="src" classpath="/home/jfclere/tc6.0.x/output/build/lib/servlet-api.jar" destdir="classes" />
-->
- <javac srcdir="src" debug="on" debuglevel="lines,vars,source" classpath="/home/jfclere/apache-tomcat-5.5.17/common/lib/servlet-api.jar" destdir="classes" excludes="Comet*,MyServletContextListener*,TestAsync*" />
+ <javac srcdir="src" debug="on" debuglevel="lines,vars,source" classpath="/home/jfclere/apache-tomcat-5.5.17/common/lib/servlet-api.jar" destdir="classes" excludes="Comet*,MyServletContextListener*,TestAsync*,Upgrade00ServletTest*,Login*" />
- <javac srcdir="src" debug="on" debuglevel="lines,vars,source" classpath="/home/jfclere/jbossweb_trunk/output/jars/jbossweb.jar:/home/jfclere/jbossweb_trunk/output/jars/servlet-api.jar" destdir="classes" includes="Comet*,MyServletContextListener*,TestAsync*" />
+ <javac srcdir="src" debug="on" debuglevel="lines,vars,source" classpath="/home/jfclere/jbossweb_trunk/output/jars/jbossweb.jar:/home/jfclere/.m2/repository/org/jboss/spec/javax/servlet/jboss-servlet-api_3.0_spec/1.0.1.Final/jboss-servlet-api_3.0_spec-1.0.1.Final.jar" destdir="classes" includes="Comet*,MyServletContextListener*,TestAsync*,Upgrade00ServletTest*,Login*" />
- <jar destfile="./lib/myservlets.jar" basedir="./classes" excludes="Comet*,MyServletContextListener*,TestAsync*" />
+ <jar destfile="./lib/myservlets.jar" basedir="./classes" excludes="Comet*,MyServletContextListener*,TestAsync*,Upgrade00ServletTest*,Login*" />
<war destfile="myapp.war" webxml="myapp.xml">
<fileset dir="html" />
<lib dir="./lib">
<include name="**/myservlets.jar"/>
</lib>
- <classes dir="./classes" excludes="Comet*" />
+ <classes dir="./classes" excludes="Comet*"/>
+ <classes dir=".">
+ <include name="**/users.properties"/>
+ <include name="**/roles.properties"/>
+ </classes>
<metainf dir="./metainf">
<include name="**/context.xml"/>
</metainf>
Added: sandbox/webapps/src/Login.java
===================================================================
--- sandbox/webapps/src/Login.java (rev 0)
+++ sandbox/webapps/src/Login.java 2012-09-30 10:42:08 UTC (rev 2092)
@@ -0,0 +1,41 @@
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@WebServlet(name="Login", urlPatterns={"/Login"})
+public class Login extends HttpServlet {
+
+ /**
+ * Processes requests for HTTP <code>GET</code>
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ public void doGet(HttpServletRequest request,
+ HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ PrintWriter out = response.getWriter();
+ try {
+
+ out.println("<html>");
+ out.println("<head>");
+ out.println("<title>Login Servlet</title>");
+ out.println("</head>");
+ out.println("<body>");
+ request.login("admin", "admin");
+ out.println("</body>");
+ out.println("</html>");
+ } catch (Exception e) {
+ throw new ServletException(e);
+ } finally {
+ request.logout();
+ out.close();
+ }
+ }
+}
11 years, 7 months
JBossWeb SVN: r2091 - in branches/7.2.x/src/main/java/org: apache/catalina/authenticator and 10 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-28 10:33:29 -0400 (Fri, 28 Sep 2012)
New Revision: 2091
Removed:
branches/7.2.x/src/main/java/org/apache/catalina/core/StandardThreadExecutor.java
branches/7.2.x/src/main/java/org/apache/catalina/ha/
branches/7.2.x/src/main/java/org/apache/catalina/util/URL.java
Modified:
branches/7.2.x/src/main/java/org/apache/catalina/authenticator/BasicAuthenticator.java
branches/7.2.x/src/main/java/org/apache/catalina/authenticator/FormAuthenticator.java
branches/7.2.x/src/main/java/org/apache/catalina/connector/ConnectorMBean.java
branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteReader.java
branches/7.2.x/src/main/java/org/apache/catalina/core/StandardHostValve.java
branches/7.2.x/src/main/java/org/apache/catalina/filters/ExpiresFilter.java
branches/7.2.x/src/main/java/org/apache/catalina/filters/RemoteIpFilter.java
branches/7.2.x/src/main/java/org/apache/catalina/filters/WebdavFixFilter.java
branches/7.2.x/src/main/java/org/apache/catalina/realm/RealmBase.java
branches/7.2.x/src/main/java/org/apache/catalina/servlets/CGIServlet.java
branches/7.2.x/src/main/java/org/apache/catalina/servlets/DefaultServlet.java
branches/7.2.x/src/main/java/org/apache/catalina/session/StoreBase.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/ExpressionParseTree.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIConfig.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIEcho.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIExec.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFlastmod.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFsize.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIInclude.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIMediator.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIProcessor.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServlet.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSISet.java
branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java
branches/7.2.x/src/main/java/org/apache/catalina/valves/AccessLogValve.java
branches/7.2.x/src/main/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java
branches/7.2.x/src/main/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java
branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java
Log:
Visual inspection of the Catalina classes for i18n
Modified: branches/7.2.x/src/main/java/org/apache/catalina/authenticator/BasicAuthenticator.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/authenticator/BasicAuthenticator.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/authenticator/BasicAuthenticator.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -31,7 +31,7 @@
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.buf.CharChunk;
import org.apache.tomcat.util.buf.MessageBytes;
-import org.jboss.logging.Logger;
+import org.jboss.web.CatalinaLogger;
@@ -46,10 +46,8 @@
public class BasicAuthenticator
extends AuthenticatorBase {
- private static Logger log = Logger.getLogger(BasicAuthenticator.class);
-
/**
* Authenticate bytes.
*/
@@ -121,8 +119,8 @@
Principal principal = request.getUserPrincipal();
String ssoId = (String) request.getNote(Constants.REQ_SSOID_NOTE);
if (principal != null) {
- if (log.isDebugEnabled())
- log.debug("Already authenticated '" + principal.getName() + "'");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Already authenticated '" + principal.getName() + "'");
// Associate the session with any existing SSO session
if (ssoId != null)
associate(ssoId, request.getSessionInternal(true));
@@ -131,8 +129,8 @@
// Is there an SSO session against which we can try to reauthenticate?
if (ssoId != null) {
- if (log.isDebugEnabled())
- log.debug("SSO Id " + ssoId + " set; attempting " +
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("SSO Id " + ssoId + " set; attempting " +
"reauthentication");
/* Try to reauthenticate using data cached by SSO. If this fails,
either the original SSO logon was of DIGEST or SSL (which
Modified: branches/7.2.x/src/main/java/org/apache/catalina/authenticator/FormAuthenticator.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/authenticator/FormAuthenticator.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/authenticator/FormAuthenticator.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -42,7 +42,7 @@
import org.apache.tomcat.util.buf.CharChunk;
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.http.MimeHeaders;
-import org.jboss.logging.Logger;
+import org.jboss.web.CatalinaLogger;
/**
@@ -57,8 +57,6 @@
public class FormAuthenticator
extends AuthenticatorBase {
- private static Logger log = Logger.getLogger(FormAuthenticator.class);
-
// ----------------------------------------------------- Instance Variables
@@ -156,8 +154,8 @@
Principal principal = request.getUserPrincipal();
String ssoId = (String) request.getNote(Constants.REQ_SSOID_NOTE);
if (principal != null) {
- if (log.isDebugEnabled())
- log.debug("Already authenticated '" +
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Already authenticated '" +
principal.getName() + "'");
// Associate the session with any existing SSO session
if (ssoId != null)
@@ -167,8 +165,8 @@
// Is there an SSO session against which we can try to reauthenticate?
if (ssoId != null) {
- if (log.isDebugEnabled())
- log.debug("SSO Id " + ssoId + " set; attempting " +
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("SSO Id " + ssoId + " set; attempting " +
"reauthentication");
// Try to reauthenticate using data cached by SSO. If this fails,
// either the original SSO logon was of DIGEST or SSL (which
@@ -183,15 +181,15 @@
// Have we authenticated this user before but have caching disabled?
if (!cache) {
session = request.getSessionInternal(true);
- if (log.isDebugEnabled())
- log.debug("Checking for reauthenticate in session " + session);
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Checking for reauthenticate in session " + session);
String username =
(String) session.getNote(Constants.SESS_USERNAME_NOTE);
String password =
(String) session.getNote(Constants.SESS_PASSWORD_NOTE);
if ((username != null) && (password != null)) {
- if (log.isDebugEnabled())
- log.debug("Reauthenticating username '" + username + "'");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Reauthenticating username '" + username + "'");
principal =
context.getRealm().authenticate(username, password);
if (principal != null) {
@@ -203,8 +201,8 @@
return (true);
}
}
- if (log.isDebugEnabled())
- log.debug("Reauthentication failed, proceed normally");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Reauthentication failed, proceed normally");
}
}
@@ -212,8 +210,8 @@
// authentication? If so, forward the *original* request instead.
if (matchRequest(request)) {
session = request.getSessionInternal(true);
- if (log.isDebugEnabled())
- log.debug("Restore request from session '"
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Restore request from session '"
+ session.getIdInternal()
+ "'");
principal = (Principal)
@@ -228,12 +226,12 @@
session.removeNote(Constants.SESS_PASSWORD_NOTE);
}
if (restoreRequest(request, session)) {
- if (log.isDebugEnabled())
- log.debug("Proceed to restored request");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Proceed to restored request");
return (true);
} else {
- if (log.isDebugEnabled())
- log.debug("Restore of original request failed");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Restore of original request failed");
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
return (false);
}
@@ -254,12 +252,12 @@
// No -- Save this request and redirect to the form login page
if (!loginAction) {
session = request.getSessionInternal(true);
- if (log.isDebugEnabled())
- log.debug("Save request in session '" + session.getIdInternal() + "'");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Save request in session '" + session.getIdInternal() + "'");
try {
saveRequest(request, session);
} catch (IOException ioe) {
- log.debug("Request body too big to save during authentication");
+ CatalinaLogger.AUTH_LOGGER.debug("Request body too big to save during authentication");
response.sendError(HttpServletResponse.SC_FORBIDDEN, MESSAGES.requestBodyTooLarge());
return (false);
}
@@ -276,16 +274,16 @@
}
String username = request.getParameter(Constants.FORM_USERNAME);
String password = request.getParameter(Constants.FORM_PASSWORD);
- if (log.isDebugEnabled())
- log.debug("Authenticating username '" + username + "'");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Authenticating username '" + username + "'");
principal = realm.authenticate(username, password);
if (principal == null) {
forwardToErrorPage(request, response, config);
return (false);
}
- if (log.isDebugEnabled())
- log.debug("Authentication of '" + username + "' was successful");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Authentication of '" + username + "' was successful");
if (session == null)
session = request.getSessionInternal(false);
@@ -320,8 +318,8 @@
// Redirect the user to the original request URI (which will cause
// the original request to be restored)
requestURI = savedRequestURL(session);
- if (log.isDebugEnabled())
- log.debug("Redirecting to original '" + requestURI + "'");
+ if (CatalinaLogger.AUTH_LOGGER.isDebugEnabled())
+ CatalinaLogger.AUTH_LOGGER.debug("Redirecting to original '" + requestURI + "'");
if (requestURI == null)
if (landingPage == null) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST,
@@ -365,7 +363,7 @@
disp.forward(request.getRequest(), response);
} catch (Throwable t) {
String msg = MESSAGES.errorForwardingToFormLogin();
- log.warn(msg, t);
+ CatalinaLogger.AUTH_LOGGER.warn(msg, t);
request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, t);
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
msg);
@@ -392,7 +390,7 @@
disp.forward(request.getRequest(), response);
} catch (Throwable t) {
String msg = MESSAGES.errorForwardingToFormError();
- log.warn(msg, t);
+ CatalinaLogger.AUTH_LOGGER.warn(msg, t);
request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, t);
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
msg);
Modified: branches/7.2.x/src/main/java/org/apache/catalina/connector/ConnectorMBean.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/connector/ConnectorMBean.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/connector/ConnectorMBean.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,6 +17,8 @@
package org.apache.catalina.connector;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import javax.management.Attribute;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
@@ -81,8 +83,7 @@
// Validate the input parameters
if (name == null)
- throw new RuntimeOperationsException(new IllegalArgumentException(
- "Attribute name is null"), "Attribute name is null");
+ throw new RuntimeOperationsException(MESSAGES.invalidNullAttributeName());
Object result = null;
try {
@@ -118,13 +119,11 @@
// Validate the input parameters
if (attribute == null)
- throw new RuntimeOperationsException(new IllegalArgumentException(
- "Attribute is null"), "Attribute is null");
+ throw new RuntimeOperationsException(MESSAGES.invalidNullAttribute());
String name = attribute.getName();
Object value = attribute.getValue();
if (name == null)
- throw new RuntimeOperationsException(new IllegalArgumentException(
- "Attribute name is null"), "Attribute name is null");
+ throw new RuntimeOperationsException(MESSAGES.invalidNullAttributeName());
try {
Connector connector = (Connector) getManagedResource();
Modified: branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteReader.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteReader.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteReader.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -18,6 +18,8 @@
package org.apache.catalina.connector;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.BufferedReader;
import java.io.IOException;
@@ -127,7 +129,7 @@
throws IOException {
// See BufferedReader#mark(int) JavaDoc
if (readAheadLimit < 0) {
- throw new IllegalArgumentException("readAheadLimit value is negative");
+ throw MESSAGES.invalidReadAhead(readAheadLimit);
}
ib.mark(readAheadLimit);
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/StandardHostValve.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/StandardHostValve.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/StandardHostValve.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -370,8 +370,10 @@
if (custom(request, response, errorPage)) {
try {
response.flushBuffer();
+ } catch (ClientAbortException e) {
+ // Ignore
} catch (IOException e) {
- container.getLogger().warn("Exception Processing " + errorPage, e);
+ container.getLogger().warn(MESSAGES.errorProcessingErrorPage(errorPage.getLocation()), e);
}
}
} else {
@@ -445,7 +447,7 @@
} catch (ClientAbortException e) {
// Ignore
} catch (IOException e) {
- container.getLogger().warn("Exception Processing " + errorPage, e);
+ container.getLogger().warn(MESSAGES.errorProcessingErrorPage(errorPage.getLocation()), e);
}
}
}
@@ -524,7 +526,7 @@
} catch (Throwable t) {
// Report our failure to process this custom page
- container.getLogger().error("Exception Processing " + errorPage, t);
+ container.getLogger().error(MESSAGES.errorProcessingErrorPage(errorPage.getLocation()), t);
return (false);
}
Deleted: branches/7.2.x/src/main/java/org/apache/catalina/core/StandardThreadExecutor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/StandardThreadExecutor.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/StandardThreadExecutor.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -1,270 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.catalina.core;
-
-import java.util.Collection;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.catalina.Executor;
-import org.apache.catalina.LifecycleException;
-import org.apache.catalina.LifecycleListener;
-import org.apache.catalina.util.LifecycleSupport;
-import java.util.concurrent.RejectedExecutionException;
-
-public class StandardThreadExecutor implements Executor {
-
- // ---------------------------------------------- Properties
- protected int threadPriority = Thread.NORM_PRIORITY;
-
- protected boolean daemon = true;
-
- protected String namePrefix = "tomcat-exec-";
-
- protected int maxThreads = 200;
-
- protected int minSpareThreads = 25;
-
- protected int maxIdleTime = 60000;
-
- protected ThreadPoolExecutor executor = null;
-
- protected String name;
-
- private LifecycleSupport lifecycle = new LifecycleSupport(this);
- // ---------------------------------------------- Constructors
- public StandardThreadExecutor() {
- //empty constructor for the digester
- }
-
-
-
- // ---------------------------------------------- Public Methods
- public void start() throws LifecycleException {
- lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);
- TaskQueue taskqueue = new TaskQueue();
- TaskThreadFactory tf = new TaskThreadFactory(namePrefix);
- lifecycle.fireLifecycleEvent(START_EVENT, null);
- executor = new ThreadPoolExecutor(getMinSpareThreads(), getMaxThreads(), maxIdleTime, TimeUnit.MILLISECONDS,taskqueue, tf);
- taskqueue.setParent( (ThreadPoolExecutor) executor);
- lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);
- }
-
- public void stop() throws LifecycleException{
- lifecycle.fireLifecycleEvent(BEFORE_STOP_EVENT, null);
- lifecycle.fireLifecycleEvent(STOP_EVENT, null);
- if ( executor != null ) executor.shutdown();
- executor = null;
- lifecycle.fireLifecycleEvent(AFTER_STOP_EVENT, null);
- }
-
- public void execute(Runnable command) {
- if ( executor != null ) {
- try {
- executor.execute(command);
- } catch (RejectedExecutionException rx) {
- //there could have been contention around the queue
- if ( !( (TaskQueue) executor.getQueue()).force(command) ) throw new RejectedExecutionException();
- }
- } else throw new IllegalStateException("StandardThreadPool not started.");
- }
-
- public int getThreadPriority() {
- return threadPriority;
- }
-
- public boolean isDaemon() {
-
- return daemon;
- }
-
- public String getNamePrefix() {
- return namePrefix;
- }
-
- public int getMaxIdleTime() {
- return maxIdleTime;
- }
-
- public int getMaxThreads() {
- return maxThreads;
- }
-
- public int getMinSpareThreads() {
- return minSpareThreads;
- }
-
- public String getName() {
- return name;
- }
-
- public void setThreadPriority(int threadPriority) {
- this.threadPriority = threadPriority;
- }
-
- public void setDaemon(boolean daemon) {
- this.daemon = daemon;
- }
-
- public void setNamePrefix(String namePrefix) {
- this.namePrefix = namePrefix;
- }
-
- public void setMaxIdleTime(int maxIdleTime) {
- this.maxIdleTime = maxIdleTime;
- if (executor != null) {
- executor.setKeepAliveTime(maxIdleTime, TimeUnit.MILLISECONDS);
- }
- }
-
- public void setMaxThreads(int maxThreads) {
- this.maxThreads = maxThreads;
- if (executor != null) {
- executor.setMaximumPoolSize(maxThreads);
- }
- }
-
- public void setMinSpareThreads(int minSpareThreads) {
- this.minSpareThreads = minSpareThreads;
- if (executor != null) {
- executor.setCorePoolSize(minSpareThreads);
- }
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * Add a LifecycleEvent listener to this component.
- *
- * @param listener The listener to add
- */
- public void addLifecycleListener(LifecycleListener listener) {
- lifecycle.addLifecycleListener(listener);
- }
-
-
- /**
- * Get the lifecycle listeners associated with this lifecycle. If this
- * Lifecycle has no listeners registered, a zero-length array is returned.
- */
- public LifecycleListener[] findLifecycleListeners() {
- return lifecycle.findLifecycleListeners();
- }
-
-
- /**
- * Remove a LifecycleEvent listener from this component.
- *
- * @param listener The listener to remove
- */
- public void removeLifecycleListener(LifecycleListener listener) {
- lifecycle.removeLifecycleListener(listener);
- }
-
- // Statistics from the thread pool
- public int getActiveCount() {
- return (executor != null) ? executor.getActiveCount() : 0;
- }
-
- public long getCompletedTaskCount() {
- return (executor != null) ? executor.getCompletedTaskCount() : 0;
- }
-
- public int getCorePoolSize() {
- return (executor != null) ? executor.getCorePoolSize() : 0;
- }
-
- public int getLargestPoolSize() {
- return (executor != null) ? executor.getLargestPoolSize() : 0;
- }
-
- public int getPoolSize() {
- return (executor != null) ? executor.getPoolSize() : 0;
- }
-
- public int getQueueSize() {
- return (executor != null) ? executor.getQueue().size() : -1;
- }
-
- // ---------------------------------------------- TaskQueue Inner Class
- class TaskQueue extends LinkedBlockingQueue<Runnable> {
- ThreadPoolExecutor parent = null;
-
- public TaskQueue() {
- super();
- }
-
- public TaskQueue(int initialCapacity) {
- super(initialCapacity);
- }
-
- public TaskQueue(Collection<? extends Runnable> c) {
- super(c);
- }
-
- public void setParent(ThreadPoolExecutor tp) {
- parent = tp;
- }
-
- public boolean force(Runnable o) {
- if ( parent.isShutdown() ) throw new RejectedExecutionException("Executor not running, can't force a command into the queue");
- return super.offer(o); //forces the item onto the queue, to be used if the task is rejected
- }
-
- public boolean offer(Runnable o) {
- //we can't do any checks
- if (parent==null) return super.offer(o);
- //we are maxed out on threads, simply queue the object
- if (parent.getPoolSize() == parent.getMaximumPoolSize()) return super.offer(o);
- //we have idle threads, just add it to the queue
- //this is an approximation, so it could use some tuning
- if (parent.getActiveCount()<(parent.getPoolSize())) return super.offer(o);
- //if we have less threads than maximum force creation of a new thread
- if (parent.getPoolSize()<parent.getMaximumPoolSize()) return false;
- //if we reached here, we need to add it to the queue
- return super.offer(o);
- }
- }
-
- // ---------------------------------------------- ThreadFactory Inner Class
- class TaskThreadFactory implements ThreadFactory {
- final ThreadGroup group;
- final AtomicInteger threadNumber = new AtomicInteger(1);
- final String namePrefix;
-
- TaskThreadFactory(String namePrefix) {
- SecurityManager s = System.getSecurityManager();
- group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();
- this.namePrefix = namePrefix;
- }
-
- public Thread newThread(Runnable r) {
- Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement());
- t.setDaemon(daemon);
- t.setPriority(getThreadPriority());
- return t;
- }
- }
-
-
-}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/filters/ExpiresFilter.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/filters/ExpiresFilter.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/filters/ExpiresFilter.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -1044,9 +1044,7 @@
try {
ints[i] = Integer.parseInt(intAsString);
} catch (NumberFormatException e) {
- throw new RuntimeException("Exception parsing number '" + i +
- "' (zero based) of comma delimited list '" +
- commaDelimitedInts + "'");
+ throw MESSAGES.invalidNumberInList(i, commaDelimitedInts);
}
}
return ints;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/filters/RemoteIpFilter.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/filters/RemoteIpFilter.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/filters/RemoteIpFilter.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -13,6 +13,8 @@
*/
package org.apache.catalina.filters;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -613,7 +615,7 @@
try {
patternsList.add(Pattern.compile(pattern));
} catch (PatternSyntaxException e) {
- throw new IllegalArgumentException("Illegal pattern syntax '" + pattern + "'", e);
+ throw MESSAGES.remoteIpValvePatternError(pattern, e);
}
}
return patternsList.toArray(new Pattern[0]);
@@ -844,7 +846,7 @@
try {
setHttpServerPort(Integer.parseInt(filterConfig.getInitParameter(HTTP_SERVER_PORT_PARAMETER)));
} catch (NumberFormatException e) {
- throw new NumberFormatException("Illegal " + HTTP_SERVER_PORT_PARAMETER + " : " + e.getMessage());
+ throw MESSAGES.invalidHttpPortNumber(filterConfig.getInitParameter(HTTP_SERVER_PORT_PARAMETER));
}
}
@@ -852,7 +854,7 @@
try {
setHttpsServerPort(Integer.parseInt(filterConfig.getInitParameter(HTTPS_SERVER_PORT_PARAMETER)));
} catch (NumberFormatException e) {
- throw new NumberFormatException("Illegal " + HTTPS_SERVER_PORT_PARAMETER + " : " + e.getMessage());
+ throw MESSAGES.invalidHttpsPortNumber(filterConfig.getInitParameter(HTTPS_SERVER_PORT_PARAMETER));
}
}
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/filters/WebdavFixFilter.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/filters/WebdavFixFilter.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/filters/WebdavFixFilter.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,6 +17,8 @@
package org.apache.catalina.filters;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import javax.servlet.Filter;
@@ -60,9 +62,6 @@
public class WebdavFixFilter implements Filter {
- private static final String LOG_MESSAGE_PREAMBLE =
- "WebdavFixFilter: Detected client problem: ";
-
/* Start string for all versions */
private static final String UA_MINIDIR_START =
"Microsoft-WebDAV-MiniRedir";
@@ -106,12 +105,11 @@
} else if (ua.startsWith(UA_MINIDIR_5_2_3790)) {
// XP 64-bit SP2
if (!"".equals(httpRequest.getContextPath())) {
- log(request,
- "XP-x64-SP2 clients only work with the root context");
+ request.getServletContext().log(MESSAGES.webDavClientProblemXpRootOnly());
}
// Namespace issue maybe
// see http://greenbytes.de/tech/webdav/webdav-redirector-list.html
- log(request, "XP-x64-SP2 is known not to work with WebDAV Servlet");
+ request.getServletContext().log(MESSAGES.webDavClientProblemXp());
chain.doFilter(request, response);
} else {
@@ -137,9 +135,4 @@
return location.toString();
}
- private void log(ServletRequest request, String msg) {
- StringBuilder builder = new StringBuilder(LOG_MESSAGE_PREAMBLE);
- builder.append(msg);
- request.getServletContext().log(builder.toString());
- }
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/realm/RealmBase.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/realm/RealmBase.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/realm/RealmBase.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -1417,7 +1417,7 @@
else if( name.equalsIgnoreCase(STRICT_AUTH_ONLY_MODE.name) )
mode = STRICT_AUTH_ONLY_MODE;
else
- throw new IllegalStateException("Unknown mode, must be one of: strict, authOnly, strictAuthOnly");
+ throw MESSAGES.unknownAuthMode(name);
return mode;
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/servlets/CGIServlet.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/servlets/CGIServlet.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/servlets/CGIServlet.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -18,6 +18,8 @@
package org.apache.catalina.servlets;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
@@ -1646,7 +1648,7 @@
response.addHeader(header , value);
}
} else {
- log("runCGI: bad header line \"" + line + "\"");
+ log(MESSAGES.cgiInvalidHeader(line));
}
}
@@ -1690,7 +1692,7 @@
}
catch (IOException e){
- log ("Caught exception " + e);
+ log(MESSAGES.cgiException(e.getMessage()));
throw e;
}
finally{
@@ -1699,7 +1701,7 @@
try {
cgiHeaderReader.close();
} catch (IOException ioe) {
- log ("Exception closing header reader " + ioe);
+ log(MESSAGES.cgiExceptionClosingHeaderReader(ioe.getMessage()));
}
}
// Close the output stream if used
@@ -1707,7 +1709,7 @@
try {
cgiOutput.close();
} catch (IOException ioe) {
- log ("Exception closing output stream " + ioe);
+ log(MESSAGES.cgiExceptionClosingOutputStream(ioe.getMessage()));
}
}
// Make sure the error stream reader has finished
@@ -1715,7 +1717,7 @@
try {
errReaderThread.join(stderrTimeout);
} catch (InterruptedException e) {
- log ("Interupted waiting for stderr reader thread");
+ log(MESSAGES.cgiInterrupted());
}
}
if (debug > 4) {
@@ -1740,7 +1742,7 @@
if (statusStart < 1 || line.length() < statusStart + 3) {
// Not a valid HTTP Status-Line
- log ("runCGI: invalid HTTP Status-Line:" + line);
+ log(MESSAGES.cgiInvalidStatusLine(line));
return HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
}
@@ -1751,7 +1753,7 @@
statusCode = Integer.parseInt(status);
} catch (NumberFormatException nfe) {
// Not a valid status code
- log ("runCGI: invalid status code:" + status);
+ log(MESSAGES.cgiInvalidStatusCode(status));
return HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
}
@@ -1769,7 +1771,7 @@
private int getSCFromCGIStatusHeader(String value) {
if (value.length() < 3) {
// Not a valid status value
- log ("runCGI: invalid status value:" + value);
+ log(MESSAGES.cgiInvalidStatusValue(value));
return HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
}
@@ -1780,7 +1782,7 @@
statusCode = Integer.parseInt(status);
} catch (NumberFormatException nfe) {
// Not a valid status code
- log ("runCGI: invalid status code:" + status);
+ log(MESSAGES.cgiInvalidStatusCode(status));
return HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
}
@@ -1792,16 +1794,16 @@
int lineCount = 0 ;
try {
while ((line = rdr.readLine()) != null) {
- log("runCGI (stderr):" + line) ;
+ log(MESSAGES.cgiErrorLogPrefix(line)) ;
lineCount++ ;
}
} catch (IOException e) {
- log("sendToLog error", e) ;
+ log(MESSAGES.cgiStderrErrror(), e) ;
} finally {
try {
rdr.close() ;
} catch (IOException ce) {
- log("sendToLog error", ce) ;
+ log(MESSAGES.cgiStderrErrror(), ce) ;
}
}
if ( lineCount > 0 && debug > 2) {
Modified: branches/7.2.x/src/main/java/org/apache/catalina/servlets/DefaultServlet.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/servlets/DefaultServlet.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/servlets/DefaultServlet.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -1180,7 +1180,7 @@
} catch (NamingException e) {
// Something went wrong
- throw new ServletException("Error accessing resource", e);
+ throw new ServletException(MESSAGES.resourceNotAvailable(cacheEntry.name), e);
}
sb.append("</entries>");
@@ -1210,7 +1210,7 @@
osWriter.flush();
return (new ByteArrayInputStream(stream.toByteArray()));
} catch (TransformerException e) {
- throw new ServletException("XSL transformer error", e);
+ throw new ServletException(MESSAGES.xslTransformerError(), e);
}
}
@@ -1355,7 +1355,7 @@
} catch (NamingException e) {
// Something went wrong
- throw new ServletException("Error accessing resource", e);
+ throw new ServletException(MESSAGES.resourceNotAvailable(cacheEntry.name), e);
}
// Render the page footer
Modified: branches/7.2.x/src/main/java/org/apache/catalina/session/StoreBase.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/session/StoreBase.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/session/StoreBase.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -209,11 +209,11 @@
}
remove(keys[i]);
} catch (Exception e) {
- manager.getContainer().getLogger().error("Session: "+keys[i]+"; ", e);
+ manager.getContainer().getLogger().error(MESSAGES.errorProcessingSessionExpires(keys[i]), e);
try {
remove(keys[i]);
} catch (IOException e2) {
- manager.getContainer().getLogger().error("Error removing key", e2);
+ manager.getContainer().getLogger().error(MESSAGES.errorRemovingKey(keys[i]), e2);
}
}
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/ExpressionParseTree.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/ExpressionParseTree.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/ExpressionParseTree.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,9 +17,12 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.text.ParseException;
import java.util.LinkedList;
import java.util.List;
+
/**
* Represents a parsed expression.
*
@@ -187,13 +190,13 @@
// Finish off the rest of the opps
resolveGroup();
if (nodeStack.size() == 0) {
- throw new ParseException("No nodes created.", et.getIndex());
+ throw new ParseException(MESSAGES.ssiParseNoNodes(), et.getIndex());
}
if (nodeStack.size() > 1) {
- throw new ParseException("Extra nodes created.", et.getIndex());
+ throw new ParseException(MESSAGES.ssiParseExtraNodes(), et.getIndex());
}
if (oppStack.size() != 0) {
- throw new ParseException("Unused opp nodes exist.", et.getIndex());
+ throw new ParseException(MESSAGES.ssiParseUnusedNodes(), et.getIndex());
}
root = (Node)nodeStack.get(0);
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIConfig.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIConfig.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIConfig.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,7 +17,10 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.PrintWriter;
+
/**
* Implements the Server-side #exec command
*
@@ -45,7 +48,7 @@
} else if (paramName.equalsIgnoreCase("timefmt")) {
ssiMediator.setConfigTimeFmt(substitutedValue);
} else {
- ssiMediator.log("#config--Invalid attribute: " + paramName);
+ ssiMediator.log(MESSAGES.ssiInvalidAttribute("config", paramName));
//We need to fetch this value each time, since it may change
// during the
// loop
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIEcho.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIEcho.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIEcho.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,7 +17,10 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.PrintWriter;
+
/**
* Return the result associated with the supplied Server Variable.
*
@@ -49,11 +52,11 @@
if (isValidEncoding(paramValue)) {
encoding = paramValue;
} else {
- ssiMediator.log("#echo--Invalid encoding: " + paramValue);
+ ssiMediator.log(MESSAGES.ssiEchoInvlidEncoding(paramValue));
writer.write(errorMessage);
}
} else {
- ssiMediator.log("#echo--Invalid attribute: " + paramName);
+ ssiMediator.log(MESSAGES.ssiInvalidAttribute("echo", paramName));
writer.write(errorMessage);
}
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIExec.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIExec.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIExec.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,11 +17,14 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import org.apache.catalina.util.IOTools;
+
/**
* Implements the Server-side #exec command
*
@@ -74,7 +77,7 @@
//apache doesn't output an error message if it can't find
// a program
}
- ssiMediator.log("Couldn't exec file: " + substitutedValue, e);
+ ssiMediator.log(MESSAGES.ssiExecFailed(substitutedValue), e);
}
}
return lastModified;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFlastmod.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFlastmod.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFlastmod.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,11 +17,14 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import org.apache.catalina.util.DateTool;
import org.apache.catalina.util.Strftime;
+
/**
* Implements the Server-side #flastmod command
*
@@ -54,14 +57,11 @@
String configTimeFmt = ssiMediator.getConfigTimeFmt();
writer.write(formatDate(date, configTimeFmt));
} else {
- ssiMediator.log("#flastmod--Invalid attribute: "
- + paramName);
+ ssiMediator.log(MESSAGES.ssiInvalidAttribute("flastmod", paramName));
writer.write(configErrMsg);
}
} catch (IOException e) {
- ssiMediator.log(
- "#flastmod--Couldn't get last modified for file: "
- + substitutedValue, e);
+ ssiMediator.log(MESSAGES.ssiFlastmodFailed(substitutedValue), e);
writer.write(configErrMsg);
}
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFsize.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFsize.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIFsize.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,6 +17,8 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
@@ -57,12 +59,11 @@
String configSizeFmt = ssiMediator.getConfigSizeFmt();
writer.write(formatSize(size, configSizeFmt));
} else {
- ssiMediator.log("#fsize--Invalid attribute: " + paramName);
+ ssiMediator.log(MESSAGES.ssiInvalidAttribute("fsize", paramName));
writer.write(configErrMsg);
}
} catch (IOException e) {
- ssiMediator.log("#fsize--Couldn't get size for file: "
- + substitutedValue, e);
+ ssiMediator.log(MESSAGES.ssiFsizeFailed(substitutedValue), e);
writer.write(configErrMsg);
}
}
@@ -72,7 +73,7 @@
public String repeat(char aChar, int numChars) {
if (numChars < 0) {
- throw new IllegalArgumentException("Num chars can't be negative");
+ throw MESSAGES.invalidNumChars();
}
StringBuilder buf = new StringBuilder();
for (int i = 0; i < numChars; i++) {
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIInclude.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIInclude.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIInclude.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,8 +17,11 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import java.io.PrintWriter;
+
/**
* Implements the Server-side #include command
*
@@ -51,13 +54,11 @@
virtual);
writer.write(text);
} else {
- ssiMediator.log("#include--Invalid attribute: "
- + paramName);
+ ssiMediator.log(MESSAGES.ssiInvalidAttribute("include", paramName));
writer.write(configErrMsg);
}
} catch (IOException e) {
- ssiMediator.log("#include--Couldn't include file: "
- + substitutedValue, e);
+ ssiMediator.log(MESSAGES.ssiIncludeFailed(substitutedValue), e);
writer.write(configErrMsg);
}
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIMediator.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIMediator.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIMediator.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,6 +17,8 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
@@ -29,6 +31,7 @@
import org.apache.catalina.util.Strftime;
import org.apache.catalina.util.URLEncoder;
import org.apache.tomcat.util.http.HttpMessages;
+
/**
* Allows the different SSICommand implementations to share data/talk to each
* other
@@ -41,7 +44,7 @@
* @version $Revision: 1473 $, $Date: 2010-05-17 19:46:58 +0200 (Mon, 17 May 2010) $
*/
public class SSIMediator {
- protected final static String DEFAULT_CONFIG_ERR_MSG = "[an error occurred while processing this directive]";
+ protected final static String DEFAULT_CONFIG_ERR_MSG = MESSAGES.ssiDirectiveError();
protected final static String DEFAULT_CONFIG_TIME_FMT = "%A, %d-%b-%Y %T %Z";
protected final static String DEFAULT_CONFIG_SIZE_FMT = "abbrev";
protected static URLEncoder urlEncoder;
@@ -305,7 +308,7 @@
retVal = HttpMessages.filter(value);
} else {
//This shouldn't be possible
- throw new IllegalArgumentException("Unknown encoding: " + encoding);
+ throw new IllegalArgumentException(MESSAGES.ssiUnknownEncoding(encoding));
}
return retVal;
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIProcessor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIProcessor.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIProcessor.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,6 +17,8 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
@@ -25,6 +27,7 @@
import java.util.Locale;
import java.util.StringTokenizer;
import org.apache.catalina.util.IOTools;
+
/**
* The entry point to SSI processing. This class does the actual parsing,
* delegating to the SSIMediator, SSICommand, and SSIExternalResolver as
@@ -143,12 +146,11 @@
commands.get(strCmd.toLowerCase(Locale.ENGLISH));
String errorMessage = null;
if (ssiCommand == null) {
- errorMessage = "Unknown command: " + strCmd;
+ errorMessage = MESSAGES.ssiUnknownCommand(strCmd);
} else if (paramValues == null) {
- errorMessage = "Error parsing directive parameters.";
+ errorMessage = MESSAGES.ssiParsingErrorNoParameters(strCmd);
} else if (paramNames.length != paramValues.length) {
- errorMessage = "Parameter names count does not match parameter values count on command: "
- + strCmd;
+ errorMessage = MESSAGES.ssiParsingErrorBadParameterCount(strCmd);
} else {
// don't process the command if we are processing
// conditional
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServlet.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServlet.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServlet.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -157,13 +157,11 @@
if (path == null || path.toUpperCase(Locale.ENGLISH).startsWith("/WEB-INF")
|| path.toUpperCase(Locale.ENGLISH).startsWith("/META-INF")) {
res.sendError(HttpServletResponse.SC_NOT_FOUND, path);
- log("Can't serve file: " + path);
return;
}
URL resource = servletContext.getResource(path);
if (resource == null) {
res.sendError(HttpServletResponse.SC_NOT_FOUND, path);
- log("Can't find file: " + path);
return;
}
String resourceMimeType = servletContext.getMimeType(path);
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServletExternalResolver.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSIServletExternalResolver.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,6 +17,8 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
@@ -368,14 +370,12 @@
String pathWithoutContext = SSIServletRequestUtil.getRelativePath(req);
String prefix = getPathWithoutFileName(pathWithoutContext);
if (prefix == null) {
- throw new IOException("Couldn't remove filename from path: "
- + pathWithoutContext);
+ throw new IOException(MESSAGES.ssiFailedRemovingFilename(pathWithoutContext));
}
String fullPath = prefix + path;
String retVal = SSIServletRequestUtil.normalize(fullPath);
if (retVal == null) {
- throw new IOException("Normalization yielded null on path: "
- + fullPath);
+ throw new IOException(MESSAGES.ssiFailedNormalization(fullPath));
}
return retVal;
}
@@ -384,12 +384,10 @@
protected ServletContextAndPath getServletContextAndPathFromNonVirtualPath(
String nonVirtualPath) throws IOException {
if (nonVirtualPath.startsWith("/") || nonVirtualPath.startsWith("\\")) {
- throw new IOException("A non-virtual path can't be absolute: "
- + nonVirtualPath);
+ throw new IOException(MESSAGES.ssiInvalidNonVirtualPath(nonVirtualPath));
}
if (nonVirtualPath.indexOf("../") >= 0) {
- throw new IOException("A non-virtual path can't contain '../' : "
- + nonVirtualPath);
+ throw new IOException(MESSAGES.ssiInvalidNonVirtualPathWithTraversal(nonVirtualPath));
}
String path = getAbsolutePath(nonVirtualPath);
ServletContextAndPath csAndP = new ServletContextAndPath(
@@ -411,8 +409,7 @@
} else {
ServletContext normContext = context.getContext(normalized);
if (normContext == null) {
- throw new IOException("Couldn't get context for path: "
- + normalized);
+ throw new IOException(MESSAGES.ssiCannotGetContext(normalized));
}
//If it's the root context, then there is no context element
// to remove,
@@ -422,9 +419,7 @@
String noContext = getPathWithoutContext(
normContext.getContextPath(), normalized);
if (noContext == null) {
- throw new IOException(
- "Couldn't remove context from path: "
- + normalized);
+ throw new IOException(MESSAGES.ssiCannotRemoveContext(normalized));
}
return new ServletContextAndPath(normContext, noContext);
} else {
@@ -516,8 +511,7 @@
String path = csAndP.getPath();
RequestDispatcher rd = context.getRequestDispatcher(path);
if (rd == null) {
- throw new IOException(
- "Couldn't get request dispatcher for path: " + path);
+ throw new IOException(MESSAGES.ssiCannotGetRequestDispatcher(path));
}
ByteArrayServletOutputStream basos =
new ByteArrayServletOutputStream();
@@ -542,12 +536,11 @@
//were included, but not sure how else to tell.
if (retVal.equals("") && !req.getMethod().equalsIgnoreCase(
org.apache.coyote.http11.Constants.HEAD)) {
- throw new IOException("Couldn't find file: " + path);
+ throw new IOException(MESSAGES.ssiCannotFindFile(path));
}
return retVal;
} catch (ServletException e) {
- throw new IOException("Couldn't include file: " + originalPath
- + " because of ServletException: " + e.getMessage());
+ throw new IOException(MESSAGES.ssiServletIncludeFailed(originalPath), e);
}
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSISet.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSISet.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/ssi/SSISet.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -17,6 +17,8 @@
package org.apache.catalina.ssi;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.io.PrintWriter;
/**
* Implements the Server-side #set command
@@ -49,12 +51,12 @@
substitutedValue);
lastModified = System.currentTimeMillis();
} else {
- ssiMediator.log("#set--no variable specified");
+ ssiMediator.log(MESSAGES.ssiSetFailed());
writer.write(errorMessage);
throw new SSIStopProcessingException();
}
} else {
- ssiMediator.log("#set--Invalid attribute: " + paramName);
+ ssiMediator.log(MESSAGES.ssiInvalidAttribute("set", paramName));
writer.write(errorMessage);
throw new SSIStopProcessingException();
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -16,6 +16,8 @@
*/
package org.apache.catalina.util;
+import static org.jboss.web.CatalinaMessages.MESSAGES;
+
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
@@ -57,7 +59,7 @@
Queue<MessageDigest> queue = queues.get(algorithm);
if (queue == null) {
- throw new IllegalStateException("Must call init() first");
+ throw MESSAGES.uninitializedMessageDigest();
}
MessageDigest md = queue.poll();
@@ -67,7 +69,7 @@
} catch (NoSuchAlgorithmException e) {
// Ignore. Impossible if init() has been successfully called
// first.
- throw new IllegalStateException("Must call init() first");
+ throw MESSAGES.uninitializedMessageDigest();
}
}
Deleted: branches/7.2.x/src/main/java/org/apache/catalina/util/URL.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/util/URL.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/util/URL.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -1,709 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package org.apache.catalina.util;
-
-
-import java.io.Serializable;
-import java.net.MalformedURLException;
-import java.util.Locale;
-
-
-/**
- * <p><strong>URL</strong> is designed to provide public APIs for parsing
- * and synthesizing Uniform Resource Locators as similar as possible to the
- * APIs of <code>java.net.URL</code>, but without the ability to open a
- * stream or connection. One of the consequences of this is that you can
- * construct URLs for protocols for which a URLStreamHandler is not
- * available (such as an "https" URL when JSSE is not installed).</p>
- *
- * <p><strong>WARNING</strong> - This class assumes that the string
- * representation of a URL conforms to the <code>spec</code> argument
- * as described in RFC 2396 "Uniform Resource Identifiers: Generic Syntax":
- * <pre>
- * <scheme>//<authority><path>?<query>#<fragment>
- * </pre></p>
- *
- * <p><strong>FIXME</strong> - This class really ought to end up in a Commons
- * package someplace.</p>
- *
- * @author Craig R. McClanahan
- * @version $Revision: 1473 $ $Date: 2010-05-17 19:46:58 +0200 (Mon, 17 May 2010) $
- */
-
-public final class URL implements Serializable {
-
-
- // ----------------------------------------------------------- Constructors
-
-
- /**
- * Create a URL object from the specified String representation.
- *
- * @param spec String representation of the URL
- *
- * @exception MalformedURLException if the string representation
- * cannot be parsed successfully
- */
- public URL(String spec) throws MalformedURLException {
-
- this(null, spec);
-
- }
-
-
- /**
- * Create a URL object by parsing a string representation relative
- * to a specified context. Based on logic from JDK 1.3.1's
- * <code>java.net.URL</code>.
- *
- * @param context URL against which the relative representation
- * is resolved
- * @param spec String representation of the URL (usually relative)
- *
- * @exception MalformedURLException if the string representation
- * cannot be parsed successfully
- */
- public URL(URL context, String spec) throws MalformedURLException {
-
- String original = spec;
- int i, limit, c;
- int start = 0;
- String newProtocol = null;
- boolean aRef = false;
-
- try {
-
- // Eliminate leading and trailing whitespace
- limit = spec.length();
- while ((limit > 0) && (spec.charAt(limit - 1) <= ' ')) {
- limit--;
- }
- while ((start < limit) && (spec.charAt(start) <= ' ')) {
- start++;
- }
-
- // If the string representation starts with "url:", skip it
- if (spec.regionMatches(true, start, "url:", 0, 4)) {
- start += 4;
- }
-
- // Is this a ref relative to the context URL?
- if ((start < spec.length()) && (spec.charAt(start) == '#')) {
- aRef = true;
- }
-
- // Parse out the new protocol
- for (i = start; !aRef && (i < limit) &&
- ((c = spec.charAt(i)) != '/'); i++) {
- if (c == ':') {
- String s = spec.substring(start, i).toLowerCase(Locale.ENGLISH);
- // Assume all protocols are valid
- newProtocol = s;
- start = i + 1;
- break;
- }
- }
-
- // Only use our context if the protocols match
- protocol = newProtocol;
- if ((context != null) && ((newProtocol == null) ||
- newProtocol.equalsIgnoreCase(context.getProtocol()))) {
- // If the context is a hierarchical URL scheme and the spec
- // contains a matching scheme then maintain backwards
- // compatibility and treat it as if the spec didn't contain
- // the scheme; see 5.2.3 of RFC2396
- if ((context.getPath() != null) &&
- (context.getPath().startsWith("/")))
- newProtocol = null;
- if (newProtocol == null) {
- protocol = context.getProtocol();
- authority = context.getAuthority();
- userInfo = context.getUserInfo();
- host = context.getHost();
- port = context.getPort();
- file = context.getFile();
- int question = file.lastIndexOf("?");
- if (question < 0)
- path = file;
- else
- path = file.substring(0, question);
- }
- }
-
- if (protocol == null)
- throw new MalformedURLException("no protocol: " + original);
-
- // Parse out any ref portion of the spec
- i = spec.indexOf('#', start);
- if (i >= 0) {
- ref = spec.substring(i + 1, limit);
- limit = i;
- }
-
- // Parse the remainder of the spec in a protocol-specific fashion
- parse(spec, start, limit);
- if (context != null)
- normalize();
-
-
- } catch (MalformedURLException e) {
- throw e;
- } catch (Exception e) {
- throw new MalformedURLException(e.toString());
- }
-
- }
-
-
-
-
-
- /**
- * Create a URL object from the specified components. The default port
- * number for the specified protocol will be used.
- *
- * @param protocol Name of the protocol to use
- * @param host Name of the host addressed by this protocol
- * @param file Filename on the specified host
- *
- * @exception MalformedURLException is never thrown, but present for
- * compatible APIs
- */
- public URL(String protocol, String host, String file)
- throws MalformedURLException {
-
- this(protocol, host, -1, file);
-
- }
-
-
- /**
- * Create a URL object from the specified components. Specifying a port
- * number of -1 indicates that the URL should use the default port for
- * that protocol. Based on logic from JDK 1.3.1's
- * <code>java.net.URL</code>.
- *
- * @param protocol Name of the protocol to use
- * @param host Name of the host addressed by this protocol
- * @param port Port number, or -1 for the default port for this protocol
- * @param file Filename on the specified host
- *
- * @exception MalformedURLException is never thrown, but present for
- * compatible APIs
- */
- public URL(String protocol, String host, int port, String file)
- throws MalformedURLException {
-
- this.protocol = protocol;
- this.host = host;
- this.port = port;
-
- int hash = file.indexOf('#');
- this.file = hash < 0 ? file : file.substring(0, hash);
- this.ref = hash < 0 ? null : file.substring(hash + 1);
- int question = file.lastIndexOf('?');
- if (question >= 0) {
- query = file.substring(question + 1);
- path = file.substring(0, question);
- } else
- path = file;
-
- if ((host != null) && (host.length() > 0))
- authority = (port == -1) ? host : host + ":" + port;
-
- }
-
-
- // ----------------------------------------------------- Instance Variables
-
-
- /**
- * The authority part of the URL.
- */
- private String authority = null;
-
-
- /**
- * The filename part of the URL.
- */
- private String file = null;
-
-
- /**
- * The host name part of the URL.
- */
- private String host = null;
-
-
- /**
- * The path part of the URL.
- */
- private String path = null;
-
-
- /**
- * The port number part of the URL.
- */
- private int port = -1;
-
-
- /**
- * The protocol name part of the URL.
- */
- private String protocol = null;
-
-
- /**
- * The query part of the URL.
- */
- private String query = null;
-
-
- /**
- * The reference part of the URL.
- */
- private String ref = null;
-
-
- /**
- * The user info part of the URL.
- */
- private String userInfo = null;
-
-
- // --------------------------------------------------------- Public Methods
-
-
- /**
- * Compare two URLs for equality. The result is <code>true</code> if and
- * only if the argument is not null, and is a <code>URL</code> object
- * that represents the same <code>URL</code> as this object. Two
- * <code>URLs</code> are equal if they have the same protocol and
- * reference the same host, the same port number on the host,
- * and the same file and anchor on the host.
- *
- * @param obj The URL to compare against
- */
- public boolean equals(Object obj) {
-
- if (obj == null)
- return (false);
- if (!(obj instanceof URL))
- return (false);
- URL other = (URL) obj;
- if (!sameFile(other))
- return (false);
- return (compare(ref, other.getRef()));
-
- }
-
-
- /**
- * Return the authority part of the URL.
- */
- public String getAuthority() {
-
- return (this.authority);
-
- }
-
-
- /**
- * Return the filename part of the URL. <strong>NOTE</strong> - For
- * compatibility with <code>java.net.URL</code>, this value includes
- * the query string if there was one. For just the path portion,
- * call <code>getPath()</code> instead.
- */
- public String getFile() {
-
- if (file == null)
- return ("");
- return (this.file);
-
- }
-
-
- /**
- * Return the host name part of the URL.
- */
- public String getHost() {
-
- return (this.host);
-
- }
-
-
- /**
- * Return the path part of the URL.
- */
- public String getPath() {
-
- if (this.path == null)
- return ("");
- return (this.path);
-
- }
-
-
- /**
- * Return the port number part of the URL.
- */
- public int getPort() {
-
- return (this.port);
-
- }
-
-
- /**
- * Return the protocol name part of the URL.
- */
- public String getProtocol() {
-
- return (this.protocol);
-
- }
-
-
- /**
- * Return the query part of the URL.
- */
- public String getQuery() {
-
- return (this.query);
-
- }
-
-
- /**
- * Return the reference part of the URL.
- */
- public String getRef() {
-
- return (this.ref);
-
- }
-
-
- /**
- * Return the user info part of the URL.
- */
- public String getUserInfo() {
-
- return (this.userInfo);
-
- }
-
-
- /**
- * Normalize the <code>path</code> (and therefore <code>file</code>)
- * portions of this URL.
- * <p>
- * <strong>NOTE</strong> - This method is not part of the public API
- * of <code>java.net.URL</code>, but is provided as a value added
- * service of this implementation.
- *
- * @exception MalformedURLException if a normalization error occurs,
- * such as trying to move about the hierarchical root
- */
- public void normalize() throws MalformedURLException {
-
- // Special case for null path
- if (path == null) {
- if (query != null)
- file = "?" + query;
- else
- file = "";
- return;
- }
-
- // Create a place for the normalized path
- String normalized = path;
- if (normalized.equals("/.")) {
- path = "/";
- if (query != null)
- file = path + "?" + query;
- else
- file = path;
- return;
- }
-
- // Normalize the slashes and add leading slash if necessary
- if (normalized.indexOf('\\') >= 0)
- normalized = normalized.replace('\\', '/');
- if (!normalized.startsWith("/"))
- normalized = "/" + normalized;
-
- // Resolve occurrences of "//" in the normalized path
- while (true) {
- int index = normalized.indexOf("//");
- if (index < 0)
- break;
- normalized = normalized.substring(0, index) +
- normalized.substring(index + 1);
- }
-
- // Resolve occurrences of "/./" in the normalized path
- while (true) {
- int index = normalized.indexOf("/./");
- if (index < 0)
- break;
- normalized = normalized.substring(0, index) +
- normalized.substring(index + 2);
- }
-
- // Resolve occurrences of "/../" in the normalized path
- while (true) {
- int index = normalized.indexOf("/../");
- if (index < 0)
- break;
- if (index == 0)
- throw new MalformedURLException
- ("Invalid relative URL reference");
- int index2 = normalized.lastIndexOf('/', index - 1);
- normalized = normalized.substring(0, index2) +
- normalized.substring(index + 3);
- }
-
- // Resolve occurrences of "/." at the end of the normalized path
- if (normalized.endsWith("/."))
- normalized = normalized.substring(0, normalized.length() - 1);
-
- // Resolve occurrences of "/.." at the end of the normalized path
- if (normalized.endsWith("/..")) {
- int index = normalized.length() - 3;
- int index2 = normalized.lastIndexOf('/', index - 1);
- if (index2 < 0)
- throw new MalformedURLException
- ("Invalid relative URL reference");
- normalized = normalized.substring(0, index2 + 1);
- }
-
- // Return the normalized path that we have completed
- path = normalized;
- if (query != null)
- file = path + "?" + query;
- else
- file = path;
-
- }
-
-
- /**
- * Compare two URLs, excluding the "ref" fields. Returns <code>true</code>
- * if this <code>URL</code> and the <code>other</code> argument both refer
- * to the same resource. The two <code>URLs</code> might not both contain
- * the same anchor.
- */
- public boolean sameFile(URL other) {
-
- if (!compare(protocol, other.getProtocol()))
- return (false);
- if (!compare(host, other.getHost()))
- return (false);
- if (port != other.getPort())
- return (false);
- if (!compare(file, other.getFile()))
- return (false);
- return (true);
-
- }
-
-
- /**
- * Return a string representation of this URL. This follow the rules in
- * RFC 2396, Section 5.2, Step 7.
- */
- public String toExternalForm() {
-
- StringBuffer sb = new StringBuffer();
- if (protocol != null) {
- sb.append(protocol);
- sb.append(":");
- }
- if (authority != null) {
- sb.append("//");
- sb.append(authority);
- }
- if (path != null)
- sb.append(path);
- if (query != null) {
- sb.append('?');
- sb.append(query);
- }
- if (ref != null) {
- sb.append('#');
- sb.append(ref);
- }
- return (sb.toString());
-
- }
-
-
- /**
- * Return a string representation of this object.
- */
- public String toString() {
-
- StringBuffer sb = new StringBuffer("URL[");
- sb.append("authority=");
- sb.append(authority);
- sb.append(", file=");
- sb.append(file);
- sb.append(", host=");
- sb.append(host);
- sb.append(", port=");
- sb.append(port);
- sb.append(", protocol=");
- sb.append(protocol);
- sb.append(", query=");
- sb.append(query);
- sb.append(", ref=");
- sb.append(ref);
- sb.append(", userInfo=");
- sb.append(userInfo);
- sb.append("]");
- return (sb.toString());
-
- // return (toExternalForm());
-
- }
-
-
- // -------------------------------------------------------- Private Methods
-
-
- /**
- * Compare to String values for equality, taking appropriate care if one
- * or both of the values are <code>null</code>.
- *
- * @param first First string
- * @param second Second string
- */
- private boolean compare(String first, String second) {
-
- if (first == null) {
- if (second == null)
- return (true);
- else
- return (false);
- } else {
- if (second == null)
- return (false);
- else
- return (first.equals(second));
- }
-
- }
-
-
- /**
- * Parse the specified portion of the string representation of a URL,
- * assuming that it has a format similar to that for <code>http</code>.
- *
- * <p><strong>FIXME</strong> - This algorithm can undoubtedly be optimized
- * for performance. However, that needs to wait until after sufficient
- * unit tests are implemented to guarantee correct behavior with no
- * regressions.</p>
- *
- * @param spec String representation being parsed
- * @param start Starting offset, which will be just after the ':' (if
- * there is one) that determined the protocol name
- * @param limit Ending position, which will be the position of the '#'
- * (if there is one) that delimited the anchor
- *
- * @exception MalformedURLException if a parsing error occurs
- */
- private void parse(String spec, int start, int limit)
- throws MalformedURLException {
-
- // Trim the query string (if any) off the tail end
- int question = spec.lastIndexOf('?', limit - 1);
- if ((question >= 0) && (question < limit)) {
- query = spec.substring(question + 1, limit);
- limit = question;
- } else {
- query = null;
- }
-
- // Parse the authority section
- if (spec.indexOf("//", start) == start) {
- int pathStart = spec.indexOf("/", start + 2);
- if ((pathStart >= 0) && (pathStart < limit)) {
- authority = spec.substring(start + 2, pathStart);
- start = pathStart;
- } else {
- authority = spec.substring(start + 2, limit);
- start = limit;
- }
- if (authority.length() > 0) {
- int at = authority.indexOf('@');
- if( at >= 0 ) {
- userInfo = authority.substring(0,at);
- }
- int colon = authority.indexOf(':',at+1);
- if (colon >= 0) {
- try {
- port =
- Integer.parseInt(authority.substring(colon + 1));
- } catch (NumberFormatException e) {
- throw new MalformedURLException(e.toString());
- }
- host = authority.substring(at+1, colon);
- } else {
- host = authority.substring(at+1);
- port = -1;
- }
- }
- }
-
- // Parse the path section
- if (spec.indexOf("/", start) == start) { // Absolute path
- path = spec.substring(start, limit);
- if (query != null)
- file = path + "?" + query;
- else
- file = path;
- return;
- }
-
- // Resolve relative path against our context's file
- if (path == null) {
- if (query != null)
- file = "?" + query;
- else
- file = null;
- return;
- }
- if (!path.startsWith("/"))
- throw new MalformedURLException
- ("Base path does not start with '/'");
- if (!path.endsWith("/"))
- path += "/../";
- path += spec.substring(start, limit);
- if (query != null)
- file = path + "?" + query;
- else
- file = path;
- return;
-
- }
-
-
-}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/valves/AccessLogValve.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/valves/AccessLogValve.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/valves/AccessLogValve.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -45,6 +45,7 @@
import org.apache.catalina.util.LifecycleSupport;
import org.apache.coyote.RequestInfo;
import org.jboss.logging.Logger;
+import org.jboss.web.CatalinaLogger;
/**
@@ -122,8 +123,6 @@
extends ValveBase
implements Lifecycle {
- private static Logger log = Logger.getLogger(AccessLogValve.class);
-
// ----------------------------------------------------- Instance Variables
@@ -597,7 +596,7 @@
try {
holder.renameTo(new File(newFileName));
} catch (Throwable e) {
- log.error("rotate failed", e);
+ CatalinaLogger.VALVES_LOGGER.errorRotatingAccessLog(e);
}
/* Make sure date is correct */
@@ -669,7 +668,7 @@
try {
close();
} catch (Throwable e) {
- log.info("at least this wasn't swallowed", e);
+ CatalinaLogger.VALVES_LOGGER.errorClosingOldAccessLog(e);
}
/* Make sure date is correct */
Modified: branches/7.2.x/src/main/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -35,7 +35,7 @@
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.util.LifecycleSupport;
-import org.jboss.logging.Logger;
+import org.jboss.web.CatalinaLogger;
/**
* Web crawlers can trigger the creation of many thousands of sessions as they
@@ -47,8 +47,6 @@
public class CrawlerSessionManagerValve extends ValveBase
implements Lifecycle, HttpSessionBindingListener {
- private static Logger log = Logger.getLogger(CrawlerSessionManagerValve.class);
-
/**
* The lifecycle event support for this component.
*/
@@ -164,8 +162,8 @@
String sessionId = null;
String clientIp = null;
- if (log.isDebugEnabled()) {
- log.debug(request.hashCode() + ": ClientIp=" +
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug(request.hashCode() + ": ClientIp=" +
request.getRemoteAddr() + ", RequestedSessionId=" +
request.getRequestedSessionId());
}
@@ -183,15 +181,15 @@
// If more than one UA header - assume not a bot
if (uaHeader != null && !uaHeaders.hasMoreElements()) {
- if (log.isDebugEnabled()) {
- log.debug(request.hashCode() + ": UserAgent=" + uaHeader);
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug(request.hashCode() + ": UserAgent=" + uaHeader);
}
if (uaPattern.matcher(uaHeader).matches()) {
isBot = true;
- if (log.isDebugEnabled()) {
- log.debug(request.hashCode() +
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug(request.hashCode() +
": Bot found. UserAgent=" + uaHeader);
}
}
@@ -203,8 +201,8 @@
sessionId = clientIpSessionId.get(clientIp);
if (sessionId != null) {
request.setRequestedSessionId(sessionId);
- if (log.isDebugEnabled()) {
- log.debug(request.hashCode() + ": SessionID=" +
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug(request.hashCode() + ": SessionID=" +
sessionId);
}
}
@@ -224,14 +222,14 @@
s.setAttribute(this.getClass().getName(), this);
s.setMaxInactiveInterval(sessionInactiveInterval);
- if (log.isDebugEnabled()) {
- log.debug(request.hashCode() +
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug(request.hashCode() +
": New bot session. SessionID=" + s.getId());
}
}
} else {
- if (log.isDebugEnabled()) {
- log.debug(request.hashCode() +
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug(request.hashCode() +
": Bot session accessed. SessionID=" + sessionId);
}
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/valves/ExtendedAccessLogValve.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/apache/catalina/valves/ExtendedAccessLogValve.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -36,8 +36,7 @@
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.util.ServerInfo;
-import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
+import org.jboss.web.CatalinaLogger;
@@ -132,8 +131,6 @@
extends AccessLogValve
implements Lifecycle {
- private static Logger log = Logger.getLogger(ExtendedAccessLogValve.class);
-
// ----------------------------------------------------- Instance Variables
@@ -533,8 +530,8 @@
}
protected AccessLogElement[] createLogElements() {
- if (log.isDebugEnabled()) {
- log.debug("decodePattern, pattern =" + pattern);
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug("decodePattern, pattern =" + pattern);
}
List<AccessLogElement> list = new ArrayList<AccessLogElement>();
@@ -545,14 +542,14 @@
tokenizer.getWhiteSpaces();
if (tokenizer.isEnded()) {
- log.info("pattern was just empty or whitespace");
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogEmptyPattern();
return null;
}
String token = tokenizer.getToken();
while (token != null) {
- if (log.isDebugEnabled()) {
- log.debug("token = " + token);
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug("token = " + token);
}
AccessLogElement element = getLogElement(token, tokenizer);
if (element == null) {
@@ -568,12 +565,12 @@
}
token = tokenizer.getToken();
}
- if (log.isDebugEnabled()) {
- log.debug("finished decoding with element size of: " + list.size());
+ if (CatalinaLogger.VALVES_LOGGER.isDebugEnabled()) {
+ CatalinaLogger.VALVES_LOGGER.debug("finished decoding with element size of: " + list.size());
}
return (AccessLogElement[]) list.toArray(new AccessLogElement[0]);
} catch (IOException e) {
- log.error("parse error", e);
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogPatternParseError(e);
return null;
}
}
@@ -629,7 +626,7 @@
} else if ("x".equals(token)) {
return getXParameterElement(tokenizer);
}
- log.error("unable to decode with rest of chars starting: " + token);
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogUnknownToken(token);
return null;
}
@@ -677,13 +674,12 @@
} else if (tokenizer.hasParameter()) {
String parameter = tokenizer.getParameter();
if (parameter == null) {
- log.error("No closing ) found for in decode");
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogMissingClosing();
return null;
}
return new RequestHeaderElement(parameter);
}
- log.error("The next characters couldn't be decoded: "
- + tokenizer.getRemains());
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogCannotDecode(tokenizer.getRemains());
return null;
}
@@ -699,13 +695,12 @@
} else if (tokenizer.hasParameter()) {
String parameter = tokenizer.getParameter();
if (parameter == null) {
- log.error("No closing ) found for in decode");
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogMissingClosing();
return null;
}
return new ResponseHeaderElement(parameter);
}
- log.error("The next characters couldn't be decoded: "
- + tokenizer.getRemains());
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogCannotDecode(tokenizer.getRemains());
return null;
}
@@ -719,24 +714,24 @@
tokenizer.getParameter();
return new StringElement("-");
}
- log.error("The next characters couldn't be decoded: " + token);
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogCannotDecode(token);
return null;
}
protected AccessLogElement getXParameterElement(PatternTokenizer tokenizer)
throws IOException {
if (!tokenizer.hasSubToken()) {
- log.error("x param in wrong format. Needs to be 'x-#(...)' read the docs!");
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogBadXParam();
return null;
}
String token = tokenizer.getToken();
if (!tokenizer.hasParameter()) {
- log.error("x param in wrong format. Needs to be 'x-#(...)' read the docs!");
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogBadXParam();
return null;
}
String parameter = tokenizer.getParameter();
if (parameter == null) {
- log.error("No closing ) found for in decode");
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogMissingClosing();
return null;
}
if ("A".equals(token)) {
@@ -754,8 +749,7 @@
} else if ("O".equals(token)) {
return new ResponseAllHeaderElement(parameter);
}
- log.error("x param for servlet request, couldn't decode value: "
- + token);
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogCannotDecodeXParamValue(token);
return null;
}
@@ -839,8 +833,7 @@
}
};
}
- log.error("x param for servlet request, couldn't decode value: "
- + parameter);
+ CatalinaLogger.VALVES_LOGGER.extendedAccessLogCannotDecodeXParamValue(parameter);
return null;
}
Modified: branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -653,4 +653,40 @@
@Message(id = 1141, value = "NIO 2 is not available, the java.io connector will be used insteaf")
void usingJavaIoConnector();
+ @LogMessage(level = ERROR)
+ @Message(id = 1142, value = "Access log rotation failed")
+ void errorRotatingAccessLog(@Cause Throwable t);
+
+ @LogMessage(level = INFO)
+ @Message(id = 1143, value = "Error closing old log file")
+ void errorClosingOldAccessLog(@Cause Throwable t);
+
+ @LogMessage(level = INFO)
+ @Message(id = 1144, value = "Pattern was just empty or whitespace")
+ void extendedAccessLogEmptyPattern();
+
+ @LogMessage(level = ERROR)
+ @Message(id = 1145, value = "Pattern parse error")
+ void extendedAccessLogPatternParseError(@Cause Throwable t);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 1146, value = "Unable to decode with rest of chars starting: %s")
+ void extendedAccessLogUnknownToken(String token);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 1147, value = "No closing ) found for in decode")
+ void extendedAccessLogMissingClosing();
+
+ @LogMessage(level = ERROR)
+ @Message(id = 1148, value = "The next characters couldn't be decoded: %s")
+ void extendedAccessLogCannotDecode(String chars);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 1149, value = "X param for servlet request, couldn't decode value: %s")
+ void extendedAccessLogCannotDecodeXParamValue(String value);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 1150, value = "X param in wrong format. Needs to be 'x-#(...)'")
+ void extendedAccessLogBadXParam();
+
}
Modified: branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java 2012-09-27 14:22:46 UTC (rev 2090)
+++ branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java 2012-09-28 14:33:29 UTC (rev 2091)
@@ -822,4 +822,151 @@
@Message(id = 309, value = "type")
String statusType();
+ @Message(id = 310, value = "Null attribute name")
+ IllegalArgumentException invalidNullAttributeName();
+
+ @Message(id = 311, value = "Null attribute")
+ IllegalArgumentException invalidNullAttribute();
+
+ @Message(id = 312, value = "Invalid negative read ahead %s specified")
+ IllegalArgumentException invalidReadAhead(int readAhead);
+
+ @Message(id = 313, value = "Exception processing error page %s")
+ String errorProcessingErrorPage(String location);
+
+ @Message(id = 314, value = "Exception parsing number %s (zero based) of comma delimited list %s")
+ IllegalArgumentException invalidNumberInList(int number, String list);
+
+ @Message(id = 315, value = "Invalid HTTP port number specified %s")
+ IllegalArgumentException invalidHttpPortNumber(String port);
+
+ @Message(id = 316, value = "Invalid HTTPS port number specified %s")
+ IllegalArgumentException invalidHttpsPortNumber(String port);
+
+ @Message(id = 317, value = "WebDAV client problem: XP-x64-SP2 clients only work with the root context")
+ String webDavClientProblemXpRootOnly();
+
+ @Message(id = 318, value = "WebDAV client problem: XP-x64-SP2 is known not to work with WebDAV Servlet")
+ String webDavClientProblemXp();
+
+ @Message(id = 319, value = "Unknown mode %s, must be one of: strict, authOnly, strictAuthOnly")
+ IllegalArgumentException unknownAuthMode(String authMode);
+
+ @Message(id = 320, value = "Running CGI: bad header line: %s")
+ String cgiInvalidHeader(String header);
+
+ @Message(id = 321, value = "Error running CGI: %s")
+ String cgiException(String errorMessage);
+
+ @Message(id = 322, value = "Error closing header reader: %s")
+ String cgiExceptionClosingHeaderReader(String errorMessage);
+
+ @Message(id = 323, value = "Error closing output stream: %s")
+ String cgiExceptionClosingOutputStream(String errorMessage);
+
+ @Message(id = 324, value = "Interrupted waiting for stderr reader thread")
+ String cgiInterrupted();
+
+ @Message(id = 325, value = "Invalid HTTP status line: %s")
+ String cgiInvalidStatusLine(String line);
+
+ @Message(id = 326, value = "Invalid status code: %s")
+ String cgiInvalidStatusCode(String code);
+
+ @Message(id = 327, value = "Invalid status value: %s")
+ String cgiInvalidStatusValue(String value);
+
+ @Message(id = 328, value = "CGI stderr: %s")
+ String cgiErrorLogPrefix(String line);
+
+ @Message(id = 329, value = "Error reading error reader")
+ String cgiStderrErrror();
+
+ @Message(id = 330, value = "XSL transformer error")
+ String xslTransformerError();
+
+ @Message(id = 331, value = "Session %s expires processing failed")
+ String errorProcessingSessionExpires(String sessionId);
+
+ @Message(id = 332, value = "Error removing key %s")
+ String errorRemovingKey(String sessionId);
+
+ @Message(id = 333, value = "No nodes created")
+ String ssiParseNoNodes();
+
+ @Message(id = 334, value = "Extra nodes created")
+ String ssiParseExtraNodes();
+
+ @Message(id = 335, value = "Unused opp nodes exist")
+ String ssiParseUnusedNodes();
+
+ @Message(id = 336, value = "Couldn't exec file: %s")
+ String ssiExecFailed(String file);
+
+ @Message(id = 337, value = "#%s--Invalid attribute: %s")
+ String ssiInvalidAttribute(String directive, String attribute);
+
+ @Message(id = 338, value = "#flastmod--Couldn't get last modified for file: %s")
+ String ssiFlastmodFailed(String file);
+
+ @Message(id = 339, value = "#fsize--Couldn't get size for file: %s")
+ String ssiFsizeFailed(String file);
+
+ @Message(id = 340, value = "Num chars can't be negative")
+ IllegalArgumentException invalidNumChars();
+
+ @Message(id = 341, value = "#include--Couldn't include file: %s")
+ String ssiIncludeFailed(String file);
+
+ @Message(id = 342, value = "#echo--Invalid encoding: %s")
+ String ssiEchoInvlidEncoding(String encoding);
+
+ @Message(id = 343, value = "[an error occurred while processing this directive]")
+ String ssiDirectiveError();
+
+ @Message(id = 344, value = "Unknown encoding: %s")
+ String ssiUnknownEncoding(String encoding);
+
+ @Message(id = 345, value = "Unknown command: %s")
+ String ssiUnknownCommand(String command);
+
+ @Message(id = 346, value = "Error parsing command %s parameters")
+ String ssiParsingErrorNoParameters(String directive);
+
+ @Message(id = 347, value = "Parameter names count does not match parameter values count on command %s")
+ String ssiParsingErrorBadParameterCount(String directive);
+
+ @Message(id = 348, value = "#set--no variable specified")
+ String ssiSetFailed();
+
+ @Message(id = 349, value = "Couldn't remove filename from path: %s")
+ String ssiFailedRemovingFilename(String path);
+
+ @Message(id = 350, value = "Normalization yielded null on path: %s")
+ String ssiFailedNormalization(String path);
+
+ @Message(id = 351, value = "A non-virtual path can't be absolute: %s")
+ String ssiInvalidNonVirtualPath(String path);
+
+ @Message(id = 352, value = "A non-virtual path can't contain '../': %s")
+ String ssiInvalidNonVirtualPathWithTraversal(String path);
+
+ @Message(id = 353, value = "Couldn't get context for path: %s")
+ String ssiCannotGetContext(String path);
+
+ @Message(id = 354, value = "Couldn't remove context from path: %s")
+ String ssiCannotRemoveContext(String path);
+
+ @Message(id = 355, value = "Couldn't get request dispatcher for path: %s")
+ String ssiCannotGetRequestDispatcher(String path);
+
+ @Message(id = 356, value = "Couldn't find file: %s")
+ String ssiCannotFindFile(String path);
+
+ @Message(id = 357, value = "Couldn't include file: %s")
+ String ssiServletIncludeFailed(String path);
+
+ @Message(id = 358, value = "Message digest non initialized")
+ IllegalStateException uninitializedMessageDigest();
+
}
11 years, 7 months
JBossWeb SVN: r2090 - in branches/7.2.x/src/main/java/org: apache/naming and 2 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-27 10:22:46 -0400 (Thu, 27 Sep 2012)
New Revision: 2090
Added:
branches/7.2.x/src/main/java/org/jboss/web/NamingLogger.java
branches/7.2.x/src/main/java/org/jboss/web/NamingMessages.java
Removed:
branches/7.2.x/src/main/java/org/apache/naming/LocalStrings.properties
branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_es.properties
branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_fr.properties
branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_ja.properties
branches/7.2.x/src/main/java/org/apache/naming/StringManager.java
branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings.properties
branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_es.properties
branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_fr.properties
branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_ja.properties
Modified:
branches/7.2.x/src/main/java/org/apache/jasper/servlet/JasperLoader.java
branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/BaseDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/FileDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/WARDirContext.java
branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java
branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java
branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java
Log:
Add some missing strings, will review for more
Modified: branches/7.2.x/src/main/java/org/apache/jasper/servlet/JasperLoader.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/jasper/servlet/JasperLoader.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/jasper/servlet/JasperLoader.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -17,6 +17,8 @@
package org.apache.jasper.servlet;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -118,9 +120,7 @@
dot));
}
} catch (SecurityException se) {
- String error = "Security Violation, attempt to use "
- + "Restricted Class: " + name;
- throw new ClassNotFoundException(error, se);
+ throw new ClassNotFoundException(MESSAGES.securityExceptionLoadingClass(name), se);
}
}
}
Deleted: branches/7.2.x/src/main/java/org/apache/naming/LocalStrings.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/LocalStrings.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/LocalStrings.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,11 +0,0 @@
-contextBindings.unknownContext=Unknown context name : {0}
-contextBindings.noContextBoundToThread=No naming context bound to this thread
-contextBindings.noContextBoundToCL=No naming context bound to this class loader
-selectorContext.noJavaUrl=This context must be accessed throught a java: URL
-namingContext.contextExpected=Name is not bound to a Context
-namingContext.failResolvingReference=Unexpected exception resolving reference
-namingContext.nameNotBound=Name {0} is not bound in this Context
-namingContext.readOnly=Context is read only
-namingContext.invalidName=Name is not valid
-namingContext.alreadyBound=Name {0} is already bound in this Context
-namingContext.noAbsoluteName=Can''t generate an absolute name for this namespace
\ No newline at end of file
Deleted: branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_es.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_es.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_es.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,28 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# $Id: LocalStrings_es.properties 789 2008-09-22 16:52:37Z remy.maucherat(a)jboss.com $
-# language es
-# package org.apache.naming
-contextBindings.unknownContext = Contexto {0} desconocido
-contextBindings.noContextBoundToThread = No hay contexto de nombres asociado a este hilo
-contextBindings.noContextBoundToCL = No hay contexto de nombres asociado a este cargador de clase
-selectorContext.noJavaUrl = Este contexto debe de ser accedido a traves de una URL de tipo java\:
-namingContext.contextExpected = El nombre no esta asociado a ningun Contexto
-namingContext.failResolvingReference = Excepci\u00F3n inesperada resolviendo referencia
-namingContext.nameNotBound = El nombre {0} no este asociado a este contexto
-namingContext.readOnly = El contexto es de solo lectura
-namingContext.invalidName = Nombre no valido
-namingContext.alreadyBound = El nombre {0} este ya asociado en este Contexto
-namingContext.noAbsoluteName = No se puede generar un nombre absoluto para este espacio de nombres
Deleted: branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_fr.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_fr.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_fr.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,11 +0,0 @@
-contextBindings.unknownContext=Nom de Contexte inconnu : {0}
-contextBindings.noContextBoundToThread=Aucun Contexte de nommage li� � ce thread
-contextBindings.noContextBoundToCL=Aucun Contexte de nommage li� � ce chargeur de classes
-selectorContext.noJavaUrl=Ce Contexte doit �tre acc�d� par une java: URL
-namingContext.contextExpected=Le Nom n''est pas li� � un Contexte
-namingContext.failResolvingReference=Une erreur s est produite durant la r�solution de la r�f�rence
-namingContext.nameNotBound=Le Nom {0} n''est pas li� � ce Contexte
-namingContext.readOnly=Le Contexte est en lecture seule
-namingContext.invalidName=Le Nom est invalide
-namingContext.alreadyBound=Le Nom {0} est d�j� li� � ce Contexte
-namingContext.noAbsoluteName=Impossible de g�n�rer un nom absolu pour cet espace de nommage (namespace)
\ No newline at end of file
Deleted: branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_ja.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_ja.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/LocalStrings_ja.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,11 +0,0 @@
-contextBindings.unknownContext=\u672a\u77e5\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u3067\u3059: {0}
-contextBindings.noContextBoundToThread=\u540d\u524d\u4ed8\u3051\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-contextBindings.noContextBoundToCL=\u540d\u524d\u4ed8\u3051\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u3053\u306e\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-selectorContext.noJavaUrl=\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u306fjava: URL\u3092\u7528\u3044\u3066\u30a2\u30af\u30bb\u30b9\u3055\u308c\u306d\u3070\u3044\u3051\u307e\u305b\u3093
-namingContext.contextExpected=\u540d\u524d\u304c\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-namingContext.failResolvingReference=\u53c2\u7167\u306e\u89e3\u6c7a\u4e2d\u306b\u4e88\u6e2c\u3057\u306a\u3044\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f
-namingContext.nameNotBound=\u540d\u524d {0} \u306f\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-namingContext.readOnly=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u30ea\u30fc\u30c9\u30aa\u30f3\u30ea\u30fc\u3067\u3059
-namingContext.invalidName=\u540d\u524d\u306f\u7121\u52b9\u3067\u3059
-namingContext.alreadyBound=\u540d\u524d {0} \u306f\u65e2\u306b\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u3059
-namingContext.noAbsoluteName=\u3053\u306e\u540d\u524d\u7a7a\u9593\u306b\u7d76\u5bfe\u540d\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093
Deleted: branches/7.2.x/src/main/java/org/apache/naming/StringManager.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/StringManager.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/StringManager.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,225 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package org.apache.naming;
-
-import java.text.MessageFormat;
-import java.util.Hashtable;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-/**
- * An internationalization / localization helper class which reduces
- * the bother of handling ResourceBundles and takes care of the
- * common cases of message formating which otherwise require the
- * creation of Object arrays and such.
- *
- * <p>The StringManager operates on a package basis. One StringManager
- * per package can be created and accessed via the getManager method
- * call.
- *
- * <p>The StringManager will look for a ResourceBundle named by
- * the package name given plus the suffix of "LocalStrings". In
- * practice, this means that the localized information will be contained
- * in a LocalStrings.properties file located in the package
- * directory of the classpath.
- *
- * <p>Please see the documentation for java.util.ResourceBundle for
- * more information.
- *
- * @author James Duncan Davidson [duncan(a)eng.sun.com]
- * @author James Todd [gonzo(a)eng.sun.com]
- */
-
-public class StringManager {
-
- /**
- * The ResourceBundle for this StringManager.
- */
-
- private ResourceBundle bundle;
-
- /**
- * Creates a new StringManager for a given package. This is a
- * private method and all access to it is arbitrated by the
- * static getManager method call so that only one StringManager
- * per package will be created.
- *
- * @param packageName Name of package to create StringManager for.
- */
-
- private StringManager(String packageName) {
- String bundleName = packageName + ".LocalStrings";
- try {
- bundle = ResourceBundle.getBundle(bundleName);
- } catch (MissingResourceException mre) {
- // Ignore
- }
- }
-
- /**
- * Get a string from the underlying resource bundle.
- *
- * @param key
- */
-
- public String getString(String key) {
- if (key == null) {
- String msg = "key is null";
-
- throw new NullPointerException(msg);
- }
- if (bundle == null) {
- return key;
- }
-
- String str = null;
-
- try {
- str = bundle.getString(key);
- } catch (MissingResourceException mre) {
- str = "Cannot find message associated with key '" + key + "'";
- }
-
- return str;
- }
-
- /**
- * Get a string from the underlying resource bundle and format
- * it with the given set of arguments.
- *
- * @param key
- * @param args
- */
-
- public String getString(String key, Object[] args) {
- String iString = null;
- String value = getString(key);
-
- // this check for the runtime exception is some pre 1.1.6
- // VM's don't do an automatic toString() on the passed in
- // objects and barf out
-
- try {
- // ensure the arguments are not null so pre 1.2 VM's don't barf
- Object nonNullArgs[] = args;
- for (int i=0; i<args.length; i++) {
- if (args[i] == null) {
- if (nonNullArgs==args) nonNullArgs=(Object[])args.clone();
- nonNullArgs[i] = "null";
- }
- }
-
- iString = MessageFormat.format(value, nonNullArgs);
- } catch (IllegalArgumentException iae) {
- StringBuilder buf = new StringBuilder();
- buf.append(value);
- for (int i = 0; i < args.length; i++) {
- buf.append(" arg[" + i + "]=" + args[i]);
- }
- iString = buf.toString();
- }
- return iString;
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object argument. This argument can of course be
- * a String object.
- *
- * @param key
- * @param arg
- */
-
- public String getString(String key, Object arg) {
- Object[] args = new Object[] {arg};
- return getString(key, args);
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object arguments. These arguments can of course
- * be String objects.
- *
- * @param key
- * @param arg1
- * @param arg2
- */
-
- public String getString(String key, Object arg1, Object arg2) {
- Object[] args = new Object[] {arg1, arg2};
- return getString(key, args);
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object arguments. These arguments can of course
- * be String objects.
- *
- * @param key
- * @param arg1
- * @param arg2
- * @param arg3
- */
-
- public String getString(String key, Object arg1, Object arg2,
- Object arg3) {
- Object[] args = new Object[] {arg1, arg2, arg3};
- return getString(key, args);
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object arguments. These arguments can of course
- * be String objects.
- *
- * @param key
- * @param arg1
- * @param arg2
- * @param arg3
- * @param arg4
- */
-
- public String getString(String key, Object arg1, Object arg2,
- Object arg3, Object arg4) {
- Object[] args = new Object[] {arg1, arg2, arg3, arg4};
- return getString(key, args);
- }
- // --------------------------------------------------------------
- // STATIC SUPPORT METHODS
- // --------------------------------------------------------------
-
- private static Hashtable managers = new Hashtable();
-
- /**
- * Get the StringManager for a particular package. If a manager for
- * a package already exists, it will be reused, else a new
- * StringManager will be created and returned.
- *
- * @param packageName
- */
-
- public synchronized static StringManager getManager(String packageName) {
- StringManager mgr = (StringManager)managers.get(packageName);
- if (mgr == null) {
- mgr = new StringManager(packageName);
- managers.put(packageName, mgr);
- }
- return mgr;
- }
-}
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -18,6 +18,8 @@
package org.apache.naming.resources;
+import static org.jboss.web.NamingMessages.MESSAGES;
+
import java.io.File;
import java.util.Hashtable;
import java.util.Iterator;
@@ -58,8 +60,7 @@
*/
public void addAlias(String path, BaseDirContext dirContext) {
if (!path.startsWith("/")) {
- throw new IllegalArgumentException(
- sm.getString("resources.invalidAliasPath", path));
+ throw MESSAGES.invalidAliasPath(path);
}
aliases.put(path, dirContext);
}
@@ -70,8 +71,7 @@
*/
public void removeAlias(String path) {
if (!path.startsWith("/")) {
- throw new IllegalArgumentException(
- sm.getString("resources.invalidAliasPath", path));
+ throw MESSAGES.invalidAliasPath(path);
}
aliases.remove(path);
}
@@ -121,10 +121,10 @@
for (String kvp : kvps) {
String[] kv = kvp.split("=");
if (kv.length != 2 || kv[0].length() == 0 || kv[1].length() == 0)
- throw new IllegalArgumentException(sm.getString("resources.invalidAliasMapping", kvp));
+ throw MESSAGES.invalidAliasMapping(kvp);
File aliasLoc = new File(kv[1]);
if (!aliasLoc.exists()) {
- throw new IllegalArgumentException(sm.getString("resources.invalidAliasNotExist", kv[1]));
+ throw MESSAGES.aliasNotFound(kv[1]);
}
BaseDirContext context;
if (kv[1].endsWith(".war") && !(aliasLoc.isDirectory())) {
@@ -132,7 +132,7 @@
} else if (aliasLoc.isDirectory()) {
context = new FileDirContext();
} else {
- throw new IllegalArgumentException(sm.getString("resources.invalidAliasFile", kv[1]));
+ throw MESSAGES.aliasNotFolder(kv[1]);
}
context.setDocBase(kv[1]);
addAlias(kv[0], context);
@@ -175,7 +175,7 @@
if (result.dirContext != null) {
return result.dirContext.lookup(result.aliasName);
}
- throw new NameNotFoundException(sm.getString("resources.notFound", name));
+ throw new NameNotFoundException(MESSAGES.resourceNotFound(name));
}
public Object lookup(Name name) throws NamingException {
@@ -195,7 +195,7 @@
if (result.dirContext != null) {
return result.dirContext.list(result.aliasName);
}
- throw new NameNotFoundException(sm.getString("resources.notFound", name));
+ throw new NameNotFoundException(MESSAGES.resourceNotFound(name));
}
public NamingEnumeration list(Name name) throws NamingException {
@@ -207,7 +207,7 @@
if (result.dirContext != null) {
return result.dirContext.listBindings(result.aliasName);
}
- throw new NameNotFoundException(sm.getString("resources.notFound", name));
+ throw new NameNotFoundException(MESSAGES.resourceNotFound(name));
}
public NamingEnumeration listBindings(Name name) throws NamingException {
@@ -232,7 +232,7 @@
if (result.dirContext != null) {
return result.dirContext.getAttributes(result.aliasName, attrIds);
}
- throw new NameNotFoundException(sm.getString("resources.notFound", name));
+ throw new NameNotFoundException(MESSAGES.resourceNotFound(name));
}
public Attributes getAttributes(Name name, String[] attrIds) throws NamingException {
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/BaseDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/BaseDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/BaseDirContext.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -18,6 +18,8 @@
package org.apache.naming.resources;
+import static org.jboss.web.NamingMessages.MESSAGES;
+
import java.util.Hashtable;
import javax.naming.Context;
@@ -31,7 +33,6 @@
import javax.naming.directory.SearchControls;
import org.apache.naming.NameParserImpl;
-import org.apache.naming.StringManager;
/**
* Directory Context implementation helper class.
@@ -81,12 +82,6 @@
/**
- * The string manager for this package.
- */
- protected StringManager sm = StringManager.getManager(Constants.Package);
-
-
- /**
* Name parser for this context.
*/
protected final NameParser nameParser = new NameParserImpl();
@@ -141,8 +136,7 @@
// Validate the format of the proposed document root
if (docBase == null)
- throw new IllegalArgumentException
- (sm.getString("resources.null"));
+ throw MESSAGES.invalidNullDocumentBase();
// Change the document root property
this.docBase = docBase;
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/FileDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/FileDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/FileDirContext.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -18,6 +18,8 @@
package org.apache.naming.resources;
+import static org.jboss.web.NamingMessages.MESSAGES;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -47,6 +49,7 @@
import org.apache.naming.NamingContextBindingsEnumeration;
import org.apache.naming.NamingContextEnumeration;
import org.apache.naming.NamingEntry;
+import org.jboss.web.NamingLogger;
/**
* Filesystem Directory Context implementation helper class.
@@ -57,9 +60,6 @@
public class FileDirContext extends BaseDirContext {
- private static org.jboss.logging.Logger log=
- org.jboss.logging.Logger.getLogger( FileDirContext.class );
-
// -------------------------------------------------------------- Constants
@@ -132,8 +132,7 @@
// Validate the format of the proposed document root
if (docBase == null)
- throw new IllegalArgumentException
- (sm.getString("resources.null"));
+ throw MESSAGES.invalidNullDocumentBase();
// Calculate a File object referencing this document base directory
base = new File(docBase);
@@ -145,8 +144,7 @@
// Validate that the document base is an existing directory
if (!base.exists() || !base.isDirectory() || !base.canRead())
- throw new IllegalArgumentException
- (sm.getString("fileResources.base", docBase));
+ throw MESSAGES.invalidBaseFolder(docBase);
this.absoluteBase = base.getAbsolutePath();
super.setDocBase(docBase);
@@ -213,7 +211,7 @@
if (file == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name));
if (file.isDirectory()) {
FileDirContext tempContext = new FileDirContext(env);
@@ -251,11 +249,11 @@
if (file == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name));
if (!file.delete())
throw new NamingException
- (sm.getString("resources.unbindFailed", name));
+ (MESSAGES.resourceUnbindFailed(name));
}
@@ -278,7 +276,7 @@
if (file == null)
throw new NamingException
- (sm.getString("resources.notFound", oldName));
+ (MESSAGES.resourceNotFound(oldName));
File newFile = new File(base, newName);
@@ -307,7 +305,7 @@
if (file == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name));
return new NamingContextEnumeration(list(file).iterator());
@@ -334,7 +332,7 @@
if (file == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name));
return new NamingContextBindingsEnumeration(list(file).iterator(),
this);
@@ -436,7 +434,7 @@
if (file == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name));
return new FileResourceAttributes(file);
@@ -506,7 +504,7 @@
File file = new File(base, name);
if (file.exists())
throw new NameAlreadyBoundException
- (sm.getString("resources.alreadyBound", name));
+ (MESSAGES.resourceAlreadyBound(name));
rebind(name, obj, attrs);
@@ -551,15 +549,15 @@
if (file.exists()) {
if (!file.delete())
throw new NamingException
- (sm.getString("resources.bindFailed", name));
+ (MESSAGES.resourceBindFailed(name));
}
if (!file.mkdir())
throw new NamingException
- (sm.getString("resources.bindFailed", name));
+ (MESSAGES.resourceBindFailed(name));
}
if (is == null)
throw new NamingException
- (sm.getString("resources.bindFailed", name));
+ (MESSAGES.resourceBindFailed(name));
// Open os
@@ -582,7 +580,7 @@
}
} catch (IOException e) {
NamingException ne = new NamingException
- (sm.getString("resources.bindFailed", e));
+ (MESSAGES.resourceBindFailed(name));
ne.initCause(e);
throw ne;
}
@@ -613,10 +611,10 @@
File file = new File(base, name);
if (file.exists())
throw new NameAlreadyBoundException
- (sm.getString("resources.alreadyBound", name));
+ (MESSAGES.resourceAlreadyBound(name));
if (!file.mkdir())
throw new NamingException
- (sm.getString("resources.bindFailed", name));
+ (MESSAGES.resourceBindFailed(name));
return (DirContext) lookup(name);
}
@@ -843,8 +841,7 @@
if (names==null) {
/* Some IO error occurred such as bad file permissions.
Prevent a NPE with Arrays.sort(names) */
- log.warn(sm.getString("fileResources.listingNull",
- file.getAbsolutePath()));
+ NamingLogger.ROOT_LOGGER.failedListingFolder(file.getAbsolutePath());
return entries;
}
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -18,6 +18,8 @@
package org.apache.naming.resources;
+import static org.jboss.web.NamingMessages.MESSAGES;
+
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -61,9 +63,6 @@
public class JARDirContext extends BaseDirContext {
- private static org.jboss.logging.Logger log =
- org.jboss.logging.Logger.getLogger(JARDirContext.class);
-
// ----------------------------------------------------------- Constructors
@@ -125,8 +124,7 @@
// Validate the format of the proposed document root
if (jarFile == null)
- throw new IllegalArgumentException
- (sm.getString("resources.null"));
+ throw MESSAGES.invalidNullDocumentBase();
this.prefix = prefix;
if (prefix.startsWith("/")) {
@@ -189,7 +187,7 @@
Entry entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
ZipEntry zipEntry = entry.getEntry();
if (zipEntry.isDirectory())
return new JARDirContext(base, entry);
@@ -274,7 +272,7 @@
Entry entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
return new NamingContextEnumeration(list(entry).iterator());
}
@@ -319,7 +317,7 @@
Entry entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
return new NamingContextBindingsEnumeration(list(entry).iterator(),
this);
}
@@ -435,7 +433,7 @@
entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
ZipEntry zipEntry = entry.getEntry();
Deleted: branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,25 +0,0 @@
-fileResources.base=Document base {0} does not exist or is not a readable directory
-fileResources.listingNull=Could not get dir listing for {0}
-warResources.notWar=Doc base must point to a WAR file
-warResources.invalidWar=Invalid or unreadable WAR file : {0}
-jarResources.syntax=Document base {0} must start with ''jar:'' and end with ''!/''
-resources.alreadyStarted=Resources has already been started
-resources.connect=Cannot connect to document base {0}
-resources.input=Cannot create input stream for resource {0}
-resources.notStarted=Resources has not yet been started
-resources.null=Document base cannot be null
-resources.notFound=Resource {0} not found
-resources.path=Context relative path {0} must start with ''/''
-resources.alreadyBound=Name {0} is already bound in this Context
-resources.bindFailed=Bind failed: {0}
-resources.unbindFailed=Unbind failed: {0}
-resources.invalidAliasPath=Alias path {0} is invalid
-resources.invalidAliasMapping=Invalid alias mapping {0}
-resources.invalidAliasNotExist=Aliased path {0} does not exist
-resources.invalidAliasFile=Aliased path {0} is not a folder
-standardResources.alreadyStarted=Resources has already been started
-standardResources.directory=File base {0} is not a directory
-standardResources.exists=File base {0} does not exist
-standardResources.notStarted=Resources has not yet been started
-standardResources.null=Document base cannot be null
-standardResources.slash=Document base {0} must not end with a slash
Deleted: branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_es.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_es.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_es.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,35 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-fileResources.base = El Documento base {0} no existe o no es un directorio legible
-fileResources.listingNull = No pude obtener lista de directorio para {0}
-warResources.notWar = Doc base debe de apuntar a un archivo WAR
-warResources.invalidWar = Archivo WAR inv\u00E1lido o ilegible\: {0}
-jarResources.syntax = Documento base {0} debe de empezar con ''jar\:'' y acabar con ''\!/''
-resources.alreadyStarted = Ya han sido arrancados los Recursos
-resources.connect = No puedo conectar a documento base {0}
-resources.input = No puedo crear flujo (stream) de entrada para recurso {0}
-resources.notStarted = A\u00FAn no han sido arrancados los Recursos
-resources.null = El Documento base no puede ser nulo
-resources.notFound = Recurso {0} no hallado
-resources.path = Trayectoria relativa a contexto {0} debe de comenzar con ''/''
-resources.alreadyBound = El Nombre {0} ya ha sido cambiado (bound) en este Contexto
-resources.bindFailed = Fall\u00F3 el Cambio (Bind)\: {0}
-resources.unbindFailed = Fall\u00F3 el Descambio (Unbind)\: {0}
-standardResources.alreadyStarted = Ya han sido arrancados los Recursos
-standardResources.directory = El archivo base {0} no es un directorio
-standardResources.exists = El archivo base {0} no existe
-standardResources.notStarted = A\u00FAn no han sido arrancados los Recursos
-standardResources.null = El Documento base no puede ser nulo
-standardResources.slash = El Documento base {0} no debe de terminar con una barra
Deleted: branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_fr.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_fr.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_fr.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,20 +0,0 @@
-fileResources.base=Le document base {0} n''existe pas ou n''est pas un r�pertoire lisible
-warResources.notWar=Doc base doit point� vers un fichier WAR
-warResources.invalidWar=Fichier WAR invalide ou illisible : {0}
-jarResources.syntax=Le document base {0} doit commenc� par ''jar:'' et finir avec ''!/''
-resources.alreadyStarted=Les Ressources ont d�j� �t� d�marr�es
-resources.connect=Impossible de se connecter au document base {0}
-resources.input=Impossible de cr�er l''input stream pour la ressource {0}
-resources.notStarted=Les ressources n''ont pas encore �t� d�marr�es
-resources.null=Le document base ne peut �tre nul
-resources.notFound=La ressource {0} est introuvable
-resources.path=Le chemin relatif de context {0} doit commenc� par ''/''
-resources.alreadyBound=Le nom {0} est d�j� r�f�renc� par ce contexte
-resources.bindFailed=Le liage a �chou�: {0}
-resources.unbindFailed=Le d�liage a �chou�: {0}
-standardResources.alreadyStarted=Les ressources ont d�ja �t� d�marr�es
-standardResources.directory=Le file base {0} n''est pas un r�pertoire
-standardResources.exists=Le file base {0} n''existe pas
-standardResources.notStarted=Les ressources n''ont pas encore �t� d�marr�es
-standardResources.null=Le document base ne peut �tre nul
-standardResources.slash=Le document base {0} ne doit pas se terminer par un ''/''
Deleted: branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_ja.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_ja.properties 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/LocalStrings_ja.properties 2012-09-27 14:22:46 UTC (rev 2090)
@@ -1,21 +0,0 @@
-fileResources.base=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d9\u30fc\u30b9 {0} \u304c\u5b58\u5728\u3057\u306a\u3044\u3001\u53c8\u306f\u8aad\u3081\u306a\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3059
-fileResources.listingNull={0} \u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093
-warResources.notWar=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d9\u30fc\u30b9\u306fWAR\u30d5\u30a1\u30a4\u30eb\u3092\u793a\u3055\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-warResources.invalidWar=\u7121\u52b9\u53c8\u306f\u8aad\u3081\u306a\u3044WAR\u30d5\u30a1\u30a4\u30eb\u3067\u3059 : {0}
-jarResources.syntax=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d9\u30fc\u30b9 {0} \u306f''jar:''\u3067\u59cb\u307e\u308a\u3001''!/''\u3067\u7d42\u3089\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-resources.alreadyStarted=\u30ea\u30bd\u30fc\u30b9\u306f\u65e2\u306b\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u3059
-resources.connect=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d9\u30fc\u30b9 {0} \u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093
-resources.input=\u30ea\u30bd\u30fc\u30b9 {0} \u306b\u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093
-resources.notStarted=\u30ea\u30bd\u30fc\u30b9\u306f\u307e\u3060\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-resources.null=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d9\u30fc\u30b9\u306fnull\u3067\u3042\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-resources.notFound=\u30ea\u30bd\u30fc\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-resources.path=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u76f8\u5bfe\u30d1\u30b9 {0} \u306f''/''\u3067\u59cb\u307e\u3089\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-resources.alreadyBound=\u540d\u524d {0} \u306f\u65e2\u306b\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u3059
-resources.bindFailed=\u30d0\u30a4\u30f3\u30c9\u304c\u5931\u6557\u3057\u307e\u3057\u305f: {0}
-resources.unbindFailed=\u30a2\u30f3\u30d0\u30a4\u30f3\u30c9\u304c\u5931\u6557\u3057\u307e\u3057\u305f: {0}
-standardResources.alreadyStarted=\u30ea\u30bd\u30fc\u30b9\u306f\u65e2\u306b\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u3059
-standardResources.directory=\u30d5\u30a1\u30a4\u30eb\u30d9\u30fc\u30b9 {0} \u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093
-standardResources.exists=\u30d5\u30a1\u30a4\u30eb\u30d9\u30fc\u30b9 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093
-standardResources.notStarted=\u30ea\u30bd\u30fc\u30b9\u304c\u307e\u3060\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-standardResources.null=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d9\u30fc\u30b9\u306fnull\u3067\u3042\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-standardResources.slash=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d9\u30fc\u30b9 {0} \u306f\u30b9\u30e9\u30c3\u30b7\u30e5\u3067\u7d42\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -46,7 +46,6 @@
import javax.naming.directory.SearchResult;
import org.apache.naming.NamingEnumerationImpl;
-import org.apache.naming.StringManager;
/**
* Proxy Directory Context implementation. This implementation looks up the
@@ -117,12 +116,6 @@
/**
- * The string manager for this package.
- */
- protected StringManager sm = StringManager.getManager(Constants.Package);
-
-
- /**
* Associated DirContext.
*/
protected DirContext dirContext;
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/WARDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/WARDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/WARDirContext.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -18,6 +18,8 @@
package org.apache.naming.resources;
+import static org.jboss.web.NamingMessages.MESSAGES;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -43,6 +45,7 @@
import org.apache.naming.NamingContextBindingsEnumeration;
import org.apache.naming.NamingContextEnumeration;
import org.apache.naming.NamingEntry;
+import org.jboss.web.NamingLogger;
/**
* WAR Directory Context implementation.
@@ -53,9 +56,6 @@
public class WARDirContext extends BaseDirContext {
- private static org.jboss.logging.Logger log=
- org.jboss.logging.Logger.getLogger( WARDirContext.class );
-
// ----------------------------------------------------------- Constructors
@@ -114,26 +114,22 @@
*/
public void setDocBase(String docBase) {
- // Validate the format of the proposed document root
- if (docBase == null)
- throw new IllegalArgumentException
- (sm.getString("resources.null"));
- if (!(docBase.endsWith(".war")))
- throw new IllegalArgumentException
- (sm.getString("warResources.notWar"));
+ // Validate the format of the proposed document root
+ if (docBase == null)
+ throw MESSAGES.invalidNullDocumentBase();
+ if (!(docBase.endsWith(".war")))
+ throw MESSAGES.docBaseNotWar(docBase);
- // Calculate a File object referencing this document base directory
- File base = new File(docBase);
+ // Calculate a File object referencing this document base directory
+ File base = new File(docBase);
- // Validate that the document base is an existing directory
- if (!base.exists() || !base.canRead() || base.isDirectory())
- throw new IllegalArgumentException
- (sm.getString("warResources.invalidWar", docBase));
+ // Validate that the document base is an existing directory
+ if (!base.exists() || !base.canRead() || base.isDirectory())
+ throw MESSAGES.docBaseNotWar(docBase);
try {
this.base = new ZipFile(base);
} catch (Exception e) {
- throw new IllegalArgumentException
- (sm.getString("warResources.invalidWar", e.getMessage()));
+ throw MESSAGES.failedOpeningWar(e.getMessage());
}
super.setDocBase(docBase);
@@ -155,8 +151,7 @@
try {
base.close();
} catch (IOException e) {
- log.warn
- ("Exception closing WAR File " + base.getName(), e);
+ NamingLogger.ROOT_LOGGER.failedClosingWar(base.getName(), e);
}
}
base = null;
@@ -198,7 +193,7 @@
Entry entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
ZipEntry zipEntry = entry.getEntry();
if (zipEntry.isDirectory())
return new WARDirContext(base, entry);
@@ -283,7 +278,7 @@
Entry entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
return new NamingContextEnumeration(list(entry).iterator());
}
@@ -328,7 +323,7 @@
Entry entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
return new NamingContextBindingsEnumeration(list(entry).iterator(),
this);
}
@@ -444,7 +439,7 @@
entry = treeLookup(name);
if (entry == null)
throw new NamingException
- (sm.getString("resources.notFound", name));
+ (MESSAGES.resourceNotFound(name.toString()));
ZipEntry zipEntry = entry.getEntry();
Modified: branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -30,7 +30,7 @@
import org.jboss.logging.MessageLogger;
/**
- * Logging IDs 6500-7000
+ * Logging IDs 6300-6500
* @author Remy Maucherat
*/
@MessageLogger(projectCode = "JBWEB")
Modified: branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -24,7 +24,7 @@
import org.jboss.logging.Messages;
/**
- * Logging IDs 6000-6500
+ * Logging IDs 6000-6300
* @author Remy Maucherat
*/
@MessageBundle(projectCode = "JBWEB")
Modified: branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java 2012-09-26 17:13:02 UTC (rev 2089)
+++ branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -667,4 +667,7 @@
@Message(id = 4209, value = "An exception occurred processing JSP page %s at line %s")
String jspException(String jsp, int line);
+ @Message(id = 4210, value = "Security exception for class %s")
+ String securityExceptionLoadingClass(String className);
+
}
Added: branches/7.2.x/src/main/java/org/jboss/web/NamingLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/NamingLogger.java (rev 0)
+++ branches/7.2.x/src/main/java/org/jboss/web/NamingLogger.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jboss.web;
+
+import static org.jboss.logging.Logger.Level.ERROR;
+import static org.jboss.logging.Logger.Level.INFO;
+import static org.jboss.logging.Logger.Level.WARN;
+
+import org.jboss.logging.BasicLogger;
+import org.jboss.logging.Cause;
+import org.jboss.logging.LogMessage;
+import org.jboss.logging.Logger;
+import org.jboss.logging.Message;
+import org.jboss.logging.MessageLogger;
+
+/**
+ * Logging IDs 6500-6700
+ * @author Remy Maucherat
+ */
+@MessageLogger(projectCode = "JBWEB")
+public interface NamingLogger extends BasicLogger {
+
+ /**
+ * A logger with the category of the package name.
+ */
+ NamingLogger ROOT_LOGGER = Logger.getMessageLogger(NamingLogger.class, "org.apache.naming");
+
+ @LogMessage(level = WARN)
+ @Message(id = 6500, value = "Could not get directory listing for %s")
+ void failedListingFolder(String path);
+
+ @LogMessage(level = WARN)
+ @Message(id = 6501, value = "Error closing WAR %s")
+ void failedClosingWar(String path, @Cause Throwable t);
+
+}
Added: branches/7.2.x/src/main/java/org/jboss/web/NamingMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/NamingMessages.java (rev 0)
+++ branches/7.2.x/src/main/java/org/jboss/web/NamingMessages.java 2012-09-27 14:22:46 UTC (rev 2090)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jboss.web;
+
+import org.jboss.logging.Cause;
+import org.jboss.logging.Message;
+import org.jboss.logging.MessageBundle;
+import org.jboss.logging.Messages;
+
+/**
+ * Logging IDs 6700-7000
+ * @author Remy Maucherat
+ */
+@MessageBundle(projectCode = "JBWEB")
+public interface NamingMessages {
+
+ /**
+ * The messages
+ */
+ NamingMessages MESSAGES = Messages.getBundle(NamingMessages.class);
+
+ @Message(id = 6700, value = "Alias path %s is invalid")
+ IllegalArgumentException invalidAliasPath(String path);
+
+ @Message(id = 6701, value = "Invalid alias mapping %s")
+ IllegalArgumentException invalidAliasMapping(String mapping);
+
+ @Message(id = 6702, value = "Aliased path %s does not exist")
+ IllegalArgumentException aliasNotFound(String path);
+
+ @Message(id = 6703, value = "Aliased path %s is not a folder")
+ IllegalArgumentException aliasNotFolder(String path);
+
+ @Message(id = 6704, value = "Resource %s not found")
+ String resourceNotFound(String path);
+
+ @Message(id = 6705, value = "Document base cannot be null")
+ IllegalArgumentException invalidNullDocumentBase();
+
+ @Message(id = 6706, value = "Document base %s does not exist or is not a readable directory")
+ IllegalArgumentException invalidBaseFolder(String docBase);
+
+ @Message(id = 6707, value = "Unbind failed: %s")
+ String resourceUnbindFailed(String path);
+
+ @Message(id = 6708, value = "Name %s is already bound in this Context")
+ String resourceAlreadyBound(String path);
+
+ @Message(id = 6709, value = "Bind failed: %s")
+ String resourceBindFailed(String path);
+
+ @Message(id = 6710, value = "Could not get directory listing for %s")
+ String failedListingFolder(String path);
+
+ @Message(id = 6711, value = "Doc base %s must point to a WAR file")
+ IllegalArgumentException docBaseNotWar(String docBase);
+
+ @Message(id = 6712, value = "Invalid or unreadable WAR file : %s")
+ IllegalArgumentException failedOpeningWar(String docBase);
+
+}
11 years, 7 months
JBossWeb SVN: r2089 - in branches/7.2.x: src/main/java/org/apache/catalina/connector and 18 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-26 13:13:02 -0400 (Wed, 26 Sep 2012)
New Revision: 2089
Added:
branches/7.2.x/src/main/resources/org/apache/tomcat/jni/
branches/7.2.x/src/main/resources/org/apache/tomcat/jni/Library.properties
Removed:
branches/7.2.x/src/main/java/org/apache/tomcat/jni/Library.properties
Modified:
branches/7.2.x/LICENSE
branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteAdapter.java
branches/7.2.x/src/main/java/org/apache/catalina/connector/Request.java
branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContext.java
branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java
branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterChain.java
branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfig.java
branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfigFacade.java
branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterFactory.java
branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperFacade.java
branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperValve.java
branches/7.2.x/src/main/java/org/apache/catalina/deploy/JspPropertyGroup.java
branches/7.2.x/src/main/java/org/apache/catalina/deploy/Multipart.java
branches/7.2.x/src/main/java/org/apache/catalina/startup/ContextConfig.java
branches/7.2.x/src/main/java/org/apache/coyote/ProtocolHandler.java
branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProcessor.java
branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java
branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java
branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalInputBuffer.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalOutputBuffer.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProcessor.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProtocol.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AprProtocol.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProcessor.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioInputBuffer.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
branches/7.2.x/src/main/java/org/apache/jasper/compiler/JspConfig.java
branches/7.2.x/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java
branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContextFacade.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/http/mapper/OnDemandContextMappingListener.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AbstractEndpoint.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AprEndpoint.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/CompletionHandlerAdapter.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultNioServerSocketChannelFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioChannel.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioServerSocketChannelFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEImplementation.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESupport.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/SecureNioChannel.java
branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEvent.java
branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilter.java
branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilterChain.java
branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventServlet.java
branches/7.2.x/src/main/java/org/jboss/servlet/http/UpgradableHttpServletResponse.java
branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java
branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java
branches/7.2.x/src/main/java/org/jboss/web/CoyoteLogger.java
branches/7.2.x/src/main/java/org/jboss/web/CoyoteMessages.java
branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java
branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java
branches/7.2.x/src/main/java/org/jboss/web/JasperLogger.java
branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java
branches/7.2.x/src/main/java/org/jboss/web/Version.java
branches/7.2.x/src/main/java/org/jboss/web/WebLogger.java
branches/7.2.x/src/main/java/org/jboss/web/WebMessages.java
branches/7.2.x/src/main/java/org/jboss/web/php/Constants.java
branches/7.2.x/src/main/java/org/jboss/web/php/Handler.java
branches/7.2.x/src/main/java/org/jboss/web/php/Highlight.java
branches/7.2.x/src/main/java/org/jboss/web/php/Library.java
branches/7.2.x/src/main/java/org/jboss/web/php/LifecycleListener.java
branches/7.2.x/src/main/java/org/jboss/web/php/PhpThread.java
branches/7.2.x/src/main/java/org/jboss/web/php/SAPI.java
branches/7.2.x/src/main/java/org/jboss/web/php/ScriptEnvironment.java
branches/7.2.x/src/main/java/org/jboss/web/rewrite/Resolver.java
branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteCond.java
branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteMap.java
branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteRule.java
branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteValve.java
branches/7.2.x/src/main/java/org/jboss/web/rewrite/Substitution.java
branches/7.2.x/src/main/java/org/jboss/web/rewrite/TomcatResolver.java
Log:
Change to ASL
Modified: branches/7.2.x/LICENSE
===================================================================
--- branches/7.2.x/LICENSE 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/LICENSE 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,166 +1,202 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ 1. Definitions.
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
- 0. Additional Definitions.
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
- 1. Exception to Section 3 of the GNU GPL.
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
- 2. Conveying Modified Versions.
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
- 3. Object Code Incorporating Material from Library Header Files.
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
- 4. Combined Works.
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
- d) Do one of the following:
+ END OF TERMS AND CONDITIONS
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
+ APPENDIX: How to apply the Apache License to your work.
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
+ Copyright [yyyy] [name of copyright owner]
- 5. Combined Libraries.
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
+ http://www.apache.org/licenses/LICENSE-2.0
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
Modified: branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteAdapter.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteAdapter.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/connector/CoyoteAdapter.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.connector;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/connector/Request.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/connector/Request.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/connector/Request.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.connector;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContext.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContext.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationContextFacade.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterChain.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterChain.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterChain.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfig.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfig.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfig.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
@@ -86,6 +58,7 @@
* is first started.
*
* @author Craig R. McClanahan
+ * @author Remy Maucherat
* @version $Revision: 1673 $ $Date: 2011-03-12 18:58:07 +0100 (Sat, 12 Mar 2011) $
*/
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfigFacade.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfigFacade.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterConfigFacade.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterFactory.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/ApplicationFilterFactory.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperFacade.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperFacade.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperFacade.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperValve.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperValve.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/core/StandardWrapperValve.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.core;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/deploy/JspPropertyGroup.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/deploy/JspPropertyGroup.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/deploy/JspPropertyGroup.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.catalina.deploy;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/deploy/Multipart.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/deploy/Multipart.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/deploy/Multipart.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.catalina.deploy;
Modified: branches/7.2.x/src/main/java/org/apache/catalina/startup/ContextConfig.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/startup/ContextConfig.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/catalina/startup/ContextConfig.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.catalina.startup;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/ProtocolHandler.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ProtocolHandler.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ProtocolHandler.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProcessor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProcessor.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProcessor.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.ajp;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.ajp;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.ajp;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.ajp;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalInputBuffer.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalInputBuffer.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalInputBuffer.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.coyote.http11;
import static org.jboss.web.CoyoteMessages.MESSAGES;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalOutputBuffer.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalOutputBuffer.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/AbstractInternalOutputBuffer.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.coyote.http11;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProcessor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProcessor.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProcessor.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2011, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.coyote.http11;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProtocol.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AbstractProtocol.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2011, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.coyote.http11;
import java.util.HashMap;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AprProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AprProtocol.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11AprProtocol.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.http11;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProcessor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProcessor.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProcessor.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,18 +1,19 @@
/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.http11;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2011, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.coyote.http11;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.http11;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.coyote.http11;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioInputBuffer.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioInputBuffer.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioInputBuffer.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.coyote.http11;
import static org.jboss.web.CoyoteMessages.MESSAGES;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioOutputBuffer.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalNioOutputBuffer.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.coyote.http11;
import static org.jboss.web.CoyoteMessages.MESSAGES;
Modified: branches/7.2.x/src/main/java/org/apache/jasper/compiler/JspConfig.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/jasper/compiler/JspConfig.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/jasper/compiler/JspConfig.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.jasper.compiler;
import java.util.ArrayList;
Modified: branches/7.2.x/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.jasper.compiler;
import static org.jboss.web.JasperMessages.MESSAGES;
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/AliasDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2010, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.naming.resources;
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/JARDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.naming.resources;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContext.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.naming.resources;
import java.io.ByteArrayInputStream;
Modified: branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContextFacade.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContextFacade.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/naming/resources/ProxyDirContextFacade.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,49 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 1999-2009 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.apache.naming.resources;
import java.util.Hashtable;
Deleted: branches/7.2.x/src/main/java/org/apache/tomcat/jni/Library.properties
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/jni/Library.properties 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/jni/Library.properties 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,59 +0,0 @@
-# Copyright(c) 2011 Red Hat Middleware, LLC,
-# and individual contributors as indicated by the @authors tag.
-# See the copyright.txt in the distribution for a
-# full listing of individual contributors.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library in the file COPYING.LIB;
-# if not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-#
-# @author Mladen Turk
-# @author Jean-Frederic Clere
-#
-# Library.properties
-#
-windows.count=5
-windows.0=?*tcnative-1
-windows.1=?libapr-1
-windows.2=?libeay32
-windows.3=?ssleay32
-windows.4=libtcnative-1
-
-linux2.count=5
-linux2.0=apr-1
-linux2.1=?z
-linux2.2=?crypto
-linux2.3=?ssl
-linux2.4=tcnative-1
-
-solaris.count=5
-solaris.0=apr-1
-solaris.1=?z
-solaris.2=?crypto
-solaris.3=?ssl
-solaris.4=tcnative-1
-
-hpux.count=5
-hpux.0=apr-1
-hpux.1=?z
-hpux.2=?crypto
-hpux.3=?ssl
-hpux.4=tcnative-1
-
-macosx.count=5
-macosx.0=apr-1
-macosx.1=?z
-macosx.2=?crypto
-macosx.3=?ssl
-macosx.4=tcnative-1
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/http/mapper/OnDemandContextMappingListener.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/http/mapper/OnDemandContextMappingListener.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/http/mapper/OnDemandContextMappingListener.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2010, Red Hat, Inc, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.http.mapper;
/**
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AbstractEndpoint.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AbstractEndpoint.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AbstractEndpoint.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2011, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net;
import java.net.InetAddress;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AprEndpoint.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AprEndpoint.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/AprEndpoint.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.tomcat.util.net;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/CompletionHandlerAdapter.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/CompletionHandlerAdapter.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/CompletionHandlerAdapter.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net;
import java.nio.channels.CompletionHandler;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultNioServerSocketChannelFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultNioServerSocketChannelFactory.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultNioServerSocketChannelFactory.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.tomcat.util.net;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioChannel.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioChannel.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioChannel.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2011, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2011, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.tomcat.util.net;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioServerSocketChannelFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioServerSocketChannelFactory.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioServerSocketChannelFactory.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEFactory.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEFactory.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net.jsse;
import javax.net.ssl.SSLSession;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEImplementation.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEImplementation.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSEImplementation.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net.jsse;
import java.net.Socket;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net.jsse;
import static org.jboss.web.CoyoteMessages.MESSAGES;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESupport.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESupport.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESupport.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net.jsse;
import java.io.ByteArrayInputStream;
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/SecureNioChannel.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/SecureNioChannel.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/SecureNioChannel.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,24 +1,21 @@
-/**
- * JBoss, Home of Professional Open Source. Copyright 2012, Red Hat, Inc., and
- * individual contributors as indicated by the @author tags. See the
- * copyright.txt file in the distribution for a full listing of individual
- * contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.apache.tomcat.util.net.jsse;
import java.io.IOException;
Modified: branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEvent.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEvent.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEvent.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.servlet.http;
@@ -30,6 +26,8 @@
/**
* The HttpEvent interface, which indicates the type of the event that is
* being processed, as well as provides useful callbacks and utility objects.
+ *
+ * @author Remy Maucherat
*/
public interface HttpEvent {
Modified: branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilter.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilter.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilter.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.servlet.http;
@@ -30,6 +26,8 @@
/**
* An event filter, similar to regular filters, performs filtering tasks on either
* the request to a resource (an event driven Servlet), or on the response from a resource, or both.
+ *
+ * @author Remy Maucherat
*/
public interface HttpEventFilter extends Filter {
Modified: branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilterChain.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilterChain.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventFilterChain.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.servlet.http;
@@ -31,6 +27,8 @@
* giving a view into the invocation chain of a filtered event for a resource. Filters
* use the HttpEventFilterChain to invoke the next filter in the chain, or if the calling filter
* is the last filter in the chain, to invoke the resource at the end of the chain.
+ *
+ * @author Remy Maucherat
*/
public interface HttpEventFilterChain {
Modified: branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventServlet.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventServlet.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/servlet/http/HttpEventServlet.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.servlet.http;
@@ -33,6 +29,8 @@
* being able to output data without the need for being invoked by the container.
* Note: When this interface is implemented, the service method of the Servlet will
* never be called, and will be replaced with a begin event.
+ *
+ * @author Remy Maucherat
*/
public interface HttpEventServlet extends Servlet
{
Modified: branches/7.2.x/src/main/java/org/jboss/servlet/http/UpgradableHttpServletResponse.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/servlet/http/UpgradableHttpServletResponse.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/servlet/http/UpgradableHttpServletResponse.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.servlet.http;
@@ -27,7 +23,7 @@
/**
* Upgradable HTTP Servlet response.
*
- * @author remm
+ * @author Remy Maucherat
*/
public interface UpgradableHttpServletResponse {
Modified: branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -39,7 +35,7 @@
/**
* Logging IDs 1000-2000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageLogger(projectCode = "JBWEB")
public interface CatalinaLogger extends BasicLogger {
Modified: branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/CatalinaMessages.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -33,7 +29,7 @@
/**
* Logging IDs 1-1000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageBundle(projectCode = "JBWEB")
public interface CatalinaMessages {
Modified: branches/7.2.x/src/main/java/org/jboss/web/CoyoteLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/CoyoteLogger.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/CoyoteLogger.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -38,7 +34,7 @@
/**
* Logging IDs 3000-4000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageLogger(projectCode = "JBWEB")
public interface CoyoteLogger extends BasicLogger {
Modified: branches/7.2.x/src/main/java/org/jboss/web/CoyoteMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/CoyoteMessages.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/CoyoteMessages.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -31,7 +27,7 @@
/**
* Logging IDs 2000-3000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageBundle(projectCode = "JBWEB")
public interface CoyoteMessages {
Modified: branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/ELLogger.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -35,7 +31,7 @@
/**
* Logging IDs 6500-7000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageLogger(projectCode = "JBWEB")
public interface ELLogger extends BasicLogger {
Modified: branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/ELMessages.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -29,7 +25,7 @@
/**
* Logging IDs 6000-6500
- * @author remm
+ * @author Remy Maucherat
*/
@MessageBundle(projectCode = "JBWEB")
public interface ELMessages {
Modified: branches/7.2.x/src/main/java/org/jboss/web/JasperLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/JasperLogger.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/JasperLogger.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -36,7 +32,7 @@
/**
* Logging IDs 5000-6000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageLogger(projectCode = "JBWEB")
public interface JasperLogger extends BasicLogger {
Modified: branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/JasperMessages.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -31,7 +27,7 @@
/**
* Logging IDs 4000-5000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageBundle(projectCode = "JBWEB")
public interface JasperMessages {
Modified: branches/7.2.x/src/main/java/org/jboss/web/Version.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/Version.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/Version.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
Modified: branches/7.2.x/src/main/java/org/jboss/web/WebLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/WebLogger.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/WebLogger.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -35,7 +31,7 @@
/**
* Logging IDs 7500-8000
- * @author remm
+ * @author Remy Maucherat
*/
@MessageLogger(projectCode = "JBWEB")
public interface WebLogger extends BasicLogger {
Modified: branches/7.2.x/src/main/java/org/jboss/web/WebMessages.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/WebMessages.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/WebMessages.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2012, Red Hat, Inc., and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web;
@@ -29,7 +25,7 @@
/**
* Logging IDs 7000-7500
- * @author remm
+ * @author Remy Maucherat
*/
@MessageBundle(projectCode = "JBWEB")
public interface WebMessages {
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/Constants.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/Constants.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/Constants.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web.php;
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/Handler.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/Handler.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/Handler.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web.php;
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/Highlight.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/Highlight.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/Highlight.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web.php;
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/Library.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/Library.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/Library.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web.php;
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/LifecycleListener.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/LifecycleListener.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/LifecycleListener.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web.php;
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/PhpThread.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/PhpThread.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/PhpThread.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,27 +1,21 @@
/*
- * Copyright(c) 2007 Red Hat Middleware, LLC,
- * and individual contributors as indicated by the @authors tag.
- * See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library in the file COPYING.LIB;
- * if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- *
- * @author Jean-Frederic Clere
- * @version $Revision: 515 $, $Date: 2008-03-17 22:02:23 +0100 (Mon, 17 Mar 2008) $
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.jboss.web.php;
import java.lang.Thread;
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/SAPI.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/SAPI.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/SAPI.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web.php;
Modified: branches/7.2.x/src/main/java/org/jboss/web/php/ScriptEnvironment.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/php/ScriptEnvironment.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/php/ScriptEnvironment.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,23 +1,19 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.jboss.web.php;
Modified: branches/7.2.x/src/main/java/org/jboss/web/rewrite/Resolver.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/rewrite/Resolver.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/rewrite/Resolver.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,28 +1,27 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jboss.web.rewrite;
+/**
+ * Resolver abstract class.
+ * @author Remy Maucherat
+ */
public abstract class Resolver {
public abstract String resolve(String key);
Modified: branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteCond.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteCond.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteCond.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,26 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jboss.web.rewrite;
import java.util.Locale;
@@ -28,6 +23,10 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+/**
+ *
+ * @author Remy Maucherat
+ */
public class RewriteCond {
public abstract class Condition {
Modified: branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteMap.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteMap.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteMap.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,28 +1,27 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jboss.web.rewrite;
+/**
+ *
+ * @author Remy Maucherat
+ */
public interface RewriteMap {
public String setParameters(String params);
Modified: branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteRule.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteRule.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteRule.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,26 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jboss.web.rewrite;
import java.util.ArrayList;
@@ -28,6 +23,10 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+/**
+ *
+ * @author Remy Maucherat
+ */
public class RewriteRule {
protected RewriteCond[] conditions = new RewriteCond[0];
Modified: branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteValve.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteValve.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/rewrite/RewriteValve.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,26 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jboss.web.rewrite;
import static org.jboss.web.WebMessages.MESSAGES;
@@ -57,6 +52,10 @@
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.net.URL;
+/**
+ *
+ * @author Remy Maucherat
+ */
public class RewriteValve extends ValveBase
implements Lifecycle {
Modified: branches/7.2.x/src/main/java/org/jboss/web/rewrite/Substitution.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/rewrite/Substitution.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/rewrite/Substitution.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,32 +1,31 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jboss.web.rewrite;
import java.util.ArrayList;
import java.util.Map;
import java.util.regex.Matcher;
+/**
+ *
+ * @author Remy Maucherat
+ */
public class Substitution {
public abstract class SubstitutionElement {
Modified: branches/7.2.x/src/main/java/org/jboss/web/rewrite/TomcatResolver.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/rewrite/TomcatResolver.java 2012-09-26 15:10:10 UTC (rev 2088)
+++ branches/7.2.x/src/main/java/org/jboss/web/rewrite/TomcatResolver.java 2012-09-26 17:13:02 UTC (rev 2089)
@@ -1,26 +1,21 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012 Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags.
*
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jboss.web.rewrite;
import java.util.Calendar;
@@ -31,6 +26,10 @@
import org.apache.naming.resources.ProxyDirContext;
import org.apache.tomcat.util.http.FastHttpDateFormat;
+/**
+ *
+ * @author Remy Maucherat
+ */
public class TomcatResolver extends Resolver {
protected Request request = null;
Added: branches/7.2.x/src/main/resources/org/apache/tomcat/jni/Library.properties
===================================================================
--- branches/7.2.x/src/main/resources/org/apache/tomcat/jni/Library.properties (rev 0)
+++ branches/7.2.x/src/main/resources/org/apache/tomcat/jni/Library.properties 2012-09-26 17:13:02 UTC (rev 2089)
@@ -0,0 +1,56 @@
+# JBoss, Home of Professional Open Source.
+# Copyright 2012 Red Hat, Inc., and individual contributors
+# as indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+# @author Mladen Turk
+# @author Jean-Frederic Clere
+#
+# Library.properties
+#
+windows.count=5
+windows.0=?*tcnative-1
+windows.1=?libapr-1
+windows.2=?libeay32
+windows.3=?ssleay32
+windows.4=libtcnative-1
+
+linux2.count=5
+linux2.0=apr-1
+linux2.1=?z
+linux2.2=?crypto
+linux2.3=?ssl
+linux2.4=tcnative-1
+
+solaris.count=5
+solaris.0=apr-1
+solaris.1=?z
+solaris.2=?crypto
+solaris.3=?ssl
+solaris.4=tcnative-1
+
+hpux.count=5
+hpux.0=apr-1
+hpux.1=?z
+hpux.2=?crypto
+hpux.3=?ssl
+hpux.4=tcnative-1
+
+macosx.count=5
+macosx.0=apr-1
+macosx.1=?z
+macosx.2=?crypto
+macosx.3=?ssl
+macosx.4=tcnative-1
11 years, 7 months
JBossWeb SVN: r2088 - branches/7.2.x.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-26 11:10:10 -0400 (Wed, 26 Sep 2012)
New Revision: 2088
Removed:
branches/7.2.x/BUILDING.txt
branches/7.2.x/PATCHES.txt
branches/7.2.x/RELEASE-NOTES
branches/7.2.x/build.properties.default
branches/7.2.x/build.xml
branches/7.2.x/java/
branches/7.2.x/lib/
branches/7.2.x/res/
Modified:
branches/7.2.x/NOTICE
branches/7.2.x/pom.xml
Log:
Remove old code moved to Maven [will do it in trunk later].
Deleted: branches/7.2.x/BUILDING.txt
===================================================================
--- branches/7.2.x/BUILDING.txt 2012-09-26 13:54:12 UTC (rev 2087)
+++ branches/7.2.x/BUILDING.txt 2012-09-26 15:10:10 UTC (rev 2088)
@@ -1,115 +0,0 @@
-
- ============================================
- Building The JBoss Web Servlet/JSP Container
- ============================================
-
-This subproject contains the source code for JBoss Web, a container that
-implements the Servlet 2.5 and JSP 2.1 specifications from the Java
-Community Process <http://www.jcp.org/>. In order to build a binary
-distribution version of the container from a source distribution,
-do the following:
-
-
-(0) Download and Install a Java Development Kit
-
-* If the JDK is already installed, skip to (1).
-
-* Download a Java Development Kit (JDK) release (version 1.5.x or later) from:
-
- http://java.sun.com/j2se/
-
-* Install the JDK according to the instructions included with the release.
-
-* Set an environment variable JAVA_HOME to the pathname of the directory
- into which you installed the JDK release.
-
-
-(1) Install Apache Ant 1.6.x on your computer
-
-* If Apache Ant 1.6.x is already installed on your computer, skip to (2).
-
-* Download a binary distribution of Ant 1.6.x from:
-
- http://ant.apache.org/bindownload.cgi
-
-* Unpack the binary distribution into a convenient location so that the
- Ant release resides in its own directory (conventionally named
- "apache-ant-[version]"). For the purposes of the remainder of this document,
- the symbolic name "${ant.home}" is used to refer to the full pathname of
- the release directory.
-
-* Create an ANT_HOME environment variable to point the directory
- ${ant.home}.
-
-* Modify the PATH environment variable to include the directory
- ${ant.home}/bin in its list. This makes the "ant" command line script
- available, which will be used to actually perform the build.
-
-
-(2) Building JBoss Web
-
-(2.1) Checkout or obtain the source code for JBoss Web
-
-* JBoss Web SVN repository URL:
- http://anonsvn.jboss.org/repos/jbossweb/trunk/
-
-* Download a source package from:
- http://labs.jboss.com/jbossweb/
-
-* Checkout the source using SVN, selecting the desired version or
- branch (current development source is at
- http://anonsvn.jboss.org/repos/jbossweb/trunk/), or
- unpack the source package. The location where the source has been
- placed will be referred as ${jboss-web.source}.
-
-(2.2) Building
-
-* Go to that directory, and do:
-
- cd ${jboss-web.source}
- ant download
- ant
-
-* NOTE: Users accessing the Internet through a proxy must use a properties
- file to indicate to Ant the proxy configuration. Read below.
-
-* WARNING: Running this command will download binaries to the /usr/share/java
- directory. Make sure this is appropriate to do on your computer. On Windows,
- this usually corresponds to the "C:\usr\share\java" directory, unless Cygwin
- is used. Read below to customize the directory used to download the binaries.
-
-* The build can be controlled by creating a ${jboss-web.source}/build.properties
- file, and adding the following content to it:
-
- # ----- Proxy setup -----
- # Uncomment if using a proxy server
- #proxy.host=proxy.domain
- #proxy.port=8080
- #proxy.use=on
-
- # ----- Default Base Path for Dependent Packages -----
- # Replace this path with the directory path where dependencies binaries
- # should be downloaded
- base.path=/usr/share/java
-
-
-(3) Updating sources
-
-It is recommended that you regularly update the downloaded JBoss Web sources
-using your SVN client.
-
-(4) Rebuilds
-
-For a quick rebuild of only modified code you can use:
-
- cd ${jboss-web.source}
- ant
-
-(5) Building EL parser with JavaCC 4.1+:
-
- Download JavaCC 4.1+
- export JAVACC_HOME=/somepath/javacc-4.1
- export PATH=$JAVACC_HOME/bin:$PATH
- cd ${jboss-web.source}/java/org/apache/el/parser
- jjtree ELParser.jjt
- javacc ELParser.jj
Modified: branches/7.2.x/NOTICE
===================================================================
--- branches/7.2.x/NOTICE 2012-09-26 13:54:12 UTC (rev 2087)
+++ branches/7.2.x/NOTICE 2012-09-26 15:10:10 UTC (rev 2088)
@@ -1,8 +1,8 @@
JBoss Web
-Copyright 2006-2010 Red Hat Middleware, LLC. All rights reserved.
+Copyright 2006-2012 Red Hat Middleware, LLC. All rights reserved.
Apache Tomcat
-Copyright 1999-2010 The Apache Software Foundation
+Copyright 1999-2012 The Apache Software Foundation
Servlet API 3.0
Copyright 1997-2009 Sun Microsystems, Inc
Deleted: branches/7.2.x/PATCHES.txt
===================================================================
--- branches/7.2.x/PATCHES.txt 2012-09-26 13:54:12 UTC (rev 2087)
+++ branches/7.2.x/PATCHES.txt 2012-09-26 15:10:10 UTC (rev 2088)
@@ -1,88 +0,0 @@
-Dropped Tomcat patches
-SVN URL: http://svn.apache.org/viewvc?rev=XXXXXX&view=rev
-
-701358
-Some symlink fix (too many checks needed)
-
-701355
-XML parser in webapp fix (significant refactoring, partial)
-
-709821
-Endline configuration for PrintWriter based on a server system property
-
-709018
-Async logger is not ready
-
-710179
-Invoker servlet removal
-
-711711 711714 711716 711720
-Useless session access time refactoring
-
-719602
-Dynamic change for maxThreads in the bare bones thread pool, which goes against its simplicity goal
-(an executor should be used instead)
-
-720728
-Multiple pollers, which adds the complexity of needing a map to track to which poller a connection belongs
-(needed in IO event mode). There are 3 pollers already, which should be able to handle a lot of traffic.
-
-various
-All changesets introducing generics, which have small value (new code or refactorings should use generics,
-however)
-
-724886
-Executor modifications, very specialized work that breaks the Executor design (a single task can be submitted
-to the real executor more than once) to supposedly work better with the NIO connector.
-
-various
-New JDBC pool module
-
-733748
-SSL session tracking (may not be practical at all)
-
-733768 733769 733775
-Generics in Servlet API (not accepted yet)
-
-733771
-Deprecate some wrapper methods in Servlet API (not accepted yet)
-
-751502
-Per context validation (incomplete, and looks a bit useless anyway)
-
-752651, 752936
-XmlBase configuration
-
-757223
-AJP hack to pass remote port (the protocol does not do it, well, too bad)
-
-763654
-Specific hack to address some error condition in HTTP method
-
-765727 (reverted)
-ETag should normally be different if the content encoding changes; content-encoding is used because
-transfer-encoding does not work with IE, and is not normally appropriate for transparent compression
-
-770809
-Fix 47080: NPE in RealmBase.findSecurityConstraints when uri is null (normally useless, a redirection should always occur)
-
-770876
-Windows 64 bit stuff ... Zzzzz
-
-781036
-Some configBase creation flag
-
-781779 and all followups
-Useless syncing
-
-782000 782005 782007 782010 782013 782032
-Changes to APR init
-
-784083
-Useless alias feature, redundant with overlays
-
-890139
-EL coercion patch
-
-920449
-Generating broken pages using included error pages
Deleted: branches/7.2.x/RELEASE-NOTES
===================================================================
--- branches/7.2.x/RELEASE-NOTES 2012-09-26 13:54:12 UTC (rev 2087)
+++ branches/7.2.x/RELEASE-NOTES 2012-09-26 15:10:10 UTC (rev 2088)
@@ -1,72 +0,0 @@
-
-
- JBoss Web @VERSION@
- Release Notes
-
-
-===================
-Dependency Changes:
-===================
-JBoss Web 3.0 is designed to run on JSE 6.0 and later, and requires
-configuration to run on JSE 6.0.
-
-In addition, JBoss Web 3.0 uses the Eclipse JDT Java compiler for compiling
-JSP pages. This means you no longer need to have the complete
-Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment
-(JRE) is sufficient. The Eclipse JDT Java compiler is bundled with the
-binary Tomcat distributions. Tomcat can also be configured to use the
-compiler from the JDK to compile JSPs, or any other Java compiler supported
-by Apache Ant.
-
-
-=======================
-JNI Based Applications:
-=======================
-Applications that require native libraries must ensure that the libraries have
-been loaded prior to use. Typically, this is done with a call like:
-
- static {
- System.loadLibrary("path-to-library-file");
- }
-
-in some class. However, the application must also ensure that the library is
-not loaded more than once. If the above code were placed in a class inside
-the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the
-application were reloaded, the loadLibrary() call would be attempted a second
-time.
-
-To avoid this problem, place classes that load native libraries outside of the
-web application, and ensure that the loadLibrary() call is executed only once
-during the lifetime of a particular JVM.
-
-
-=============================
-Enabling SSI and CGI Support:
-=============================
-SSI, CGI will only will run in privileged web applications. See the Context
-attributes documentation for more details.
-
-
-============================
-Symlinking static resources:
-============================
-By default, Unix symlinks will not work when used in a web application to link
-resources located outside the web application root directory.
-
-This behavior is optional, and the "allowLinking" flag may be used to disable
-the check.
-
-
-================================
-Viewing the JBoss Web Change Log:
-================================
-See changelog.html in this directory.
-
-
-====================
-When all else fails:
-====================
-See the Wiki:
-http://labs.jboss.com/wiki/Jbossweb
-Tomcat FAQ for related common questions:
-http://tomcat.apache.org/faq/
Deleted: branches/7.2.x/build.properties.default
===================================================================
--- branches/7.2.x/build.properties.default 2012-09-26 13:54:12 UTC (rev 2087)
+++ branches/7.2.x/build.properties.default 2012-09-26 15:10:10 UTC (rev 2088)
@@ -1,48 +0,0 @@
-# -----------------------------------------------------------------------------
-# build.properties.sample
-#
-# This is an example "build.properties" file, used to customize building
-# JBoss Web for your local environment. It defines the location of all external
-# modules that JBoss Web depends on. Copy this file to "build.properties"
-# in the top-level source directory, and customize it as needed.
-#
-# $Id: build.properties.default 526202 2007-04-06 15:44:38Z remm $
-# -----------------------------------------------------------------------------
-
-# ----- Version Control Flags -----
-version.major=7
-version.minor=7
-version.build=0
-version.patch=0
-version.tag=SNAPSHOT
-
-# ----- Default Base Path for Dependent Packages -----
-# Please note this path must be absolute, not relative,
-# as it is referenced with different working directory
-# contexts by the various build scripts.
-base.path=/usr/share/java
-#base.path=C:/path/to/the/repository
-#base.path=/usr/local
-
-compile.source=1.7
-compile.target=1.7
-compile.debug=true
-
-base-commons.loc=http://archive.apache.org/dist/commons
-base-tomcat.loc=http://archive.apache.org/dist/tomcat
-base-sf.loc=http://downloads.sourceforge.net
-
-# ----- Eclipse JDT, version 3.2 or later -----
-jdt.home=${base.path}/plugins
-jdt.lib=${jdt.home}
-jdt.jar=${jdt.lib}/org.eclipse.jdt.core_3.7.0.v_B61.jar
-jdt.loc=http://download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/org.eclipse.jdt-3.7.zip
-
-jdt-src.home=${base.path}/eclipse/plugins
-jdt-src.lib=${jdt.home}
-jdt-src.loc=http://download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/eclipse-sourceBuild-srcIncluded-3.7.zip
-
-# ----- Dojo Toolkit (for test webapp) -----
-dojo-js.home=${base.path}/dojo-release-1.4.3
-dojo-js.loc=http://download.dojotoolkit.org/release-1.4.3/dojo-release-1.4.3.tar.gz
-dojo-js.jar=${dojo-js.home}/dojo/dojo.js
Deleted: branches/7.2.x/build.xml
===================================================================
--- branches/7.2.x/build.xml 2012-09-26 13:54:12 UTC (rev 2087)
+++ branches/7.2.x/build.xml 2012-09-26 15:10:10 UTC (rev 2088)
@@ -1,545 +0,0 @@
-<?xml version="1.0"?>
-<project name="JBoss Web" default="deploy" basedir=".">
-
- <!-- ===================== Initialize Property Values =================== -->
-
- <!-- See "build.properties.sample" in the top level directory for all -->
- <!-- property values you must customize for successful building!!! -->
- <property file="${user.home}/build.properties"/>
- <property file="build.properties"/>
-
- <property file="build.properties.default"/>
-
- <!-- Project Properties -->
- <property name="name" value="JBoss Web" />
- <property name="year" value="2010" />
- <property name="version.major" value="7" />
- <property name="version.minor" value="0" />
- <property name="version.build" value="0" />
- <property name="version.patch" value="0" />
- <property name="version.tag" value="SNAPSHOT" />
- <property name="version" value="${version.major}.${version.minor}.${version.build}.${version.tag}" />
- <property name="version.number" value="${version.major}.${version.minor}.${version.build}.${version.patch}" />
-
- <property name="project" value="jboss-web" />
- <property name="final.name" value="${project}-${version}" />
- <property name="final-src.name" value="${project}-${version}-src" />
-
- <!-- Build Defaults -->
- <property name="tomcat.build" value="${basedir}/output/build"/>
- <property name="tomcat.classes" value="${basedir}/output/classes"/>
- <property name="tomcat.dist" value="${basedir}/output/dist"/>
- <property name="tomcat.jars" value="${basedir}/output/jars"/>
- <property name="jbossweb.site" value="${basedir}/output/site"/>
- <property name="test.failonerror" value="true"/>
- <property name="test.runner" value="junit.textui.TestRunner"/>
-
- <!-- Can't be lower - jsp uses templates -->
- <property name="compile.source" value="1.7"/>
-
- <property name="jasper-jdt.home" value="${base.path}/jbossweb-deps/jdt" />
- <property name="jasper-jdt.jar" value="${jasper-jdt.home}/jasper-jdt.jar"/>
-
- <property name="jasper-jdt-src.home" value="${base.path}/jbossweb-deps/jdt-src" />
- <property name="jasper-jdt-src.jar" value="${jasper-jdt-src.home}/jasper-jdt-src.jar"/>
-
- <!-- Classpath -->
- <path id="tomcat.classpath">
- <fileset dir="${basedir}/lib">
- <include name="*.jar"/>
- </fileset>
- <pathelement path="${jasper-jdt.jar}"/>
- </path>
-
- <!-- Just build Tomcat -->
- <target name="build-prepare">
-
- <available classname="junit.framework.TestCase" property="junit.present" />
-
- <mkdir dir="${tomcat.classes}"/>
-
- <mkdir dir="${tomcat.build}"/>
- <mkdir dir="${tomcat.build}/webapps"/>
-
- <mkdir dir="${tomcat.jars}"/>
-
- </target>
-
- <target name="compile">
-
- <!-- Compile internal server components -->
- <javac srcdir="java" destdir="${tomcat.classes}"
- debug="${compile.debug}"
- optimize="${compile.optimize}"
- deprecation="${compile.deprecation}"
- source="${compile.source}"
- target="${compile.target}"
- excludes="**/CVS/**,**/.svn/**">
- <!-- Comment this in to show unchecked warnings: <compilerarg value="-Xlint:unchecked"/> -->
- <classpath refid="tomcat.classpath" />
- </javac>
- <tstamp>
- <format property="TODAY" pattern="MMM d yyyy" locale="en"/>
- <format property="TSTAMP" pattern="hh:mm:ss"/>
- </tstamp>
- <!-- Copy static resource files -->
- <filter token="VERSION" value="${version}"/>
- <filter token="VERSION_NUMBER" value="${version.number}"/>
- <filter token="VERSION_BUILT" value="${TODAY} ${TSTAMP}"/>
- <copy todir="${tomcat.classes}" filtering="true" encoding="ISO-8859-1">
- <fileset dir="java">
- <include name="**/*.properties"/>
- <include name="**/*.dtd"/>
- <include name="**/*.tasks"/>
- <include name="**/*.xsd"/>
- <include name="**/*.xml"/>
- </fileset>
- </copy>
-
- </target>
-
- <target name="build-only" depends="build-prepare,compile" />
-
- <target name="build-docs">
-
- <copy todir="${tomcat.build}/webapps">
- <fileset dir="webapps">
- <include name="docs/images/**"/>
- <include name="docs/**/*.css"/>
- <include name="docs/**/*.html"/>
- <include name="docs/WEB-INF/**"/>
- <include name="docs/appdev/*.txt"/>
- <include name="docs/appdev/sample/**"/>
- </fileset>
- <fileset dir="webapps">
- <include name="docs/architecture/**"/>
- <exclude name="docs/architecture/*.xml"/>
- </fileset>
- </copy>
- <copy todir="${tomcat.build}/webapps/docs">
- <fileset dir=".">
- <include name="BUILDING.txt"/>
- <include name="NOTICE"/>
- <include name="RUNNING.txt"/>
- </fileset>
- </copy>
- <filter token="VERSION" value="${version}"/>
- <copy tofile="${tomcat.build}/webapps/docs/RELEASE-NOTES.txt" file="RELEASE-NOTES"
- filtering="true" encoding="ISO-8859-1" />
-
- <copy tofile="${tomcat.build}/webapps/docs/appdev/sample/build.xml"
- file="webapps/docs/appdev/build.xml.txt"/>
-
- <mkdir dir="${tomcat.build}/webapps/docs/funcspec" />
-
- <!-- XSL processing -->
- <xslt basedir="webapps/docs"
- destdir="${tomcat.build}/webapps/docs"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="build.xml project.xml"
- includes="*.xml">
- <param name="relative-path" expression="."/>
- </xslt>
- <xslt basedir="webapps/docs/appdev"
- destdir="${tomcat.build}/webapps/docs/appdev"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression=".."/>
- </xslt>
- <xslt basedir="webapps/docs/funcspecs"
- destdir="${tomcat.build}/webapps/docs/funcspecs"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression=".."/>
- </xslt>
- <xslt basedir="webapps/docs/config"
- destdir="${tomcat.build}/webapps/docs/config"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression=".."/>
- </xslt>
-
- <!-- Print friendly version -->
- <mkdir dir="${tomcat.build}/webapps/docs/printer" />
- <copy todir="${tomcat.build}/webapps/docs/printer">
- <fileset dir=".">
- <include name="BUILDING.txt"/>
- <include name="NOTICE"/>
- <include name="RUNNING.txt"/>
- </fileset>
- </copy>
- <mkdir dir="${tomcat.build}/webapps/docs/appdev/printer" />
- <copy todir="${tomcat.build}/webapps/docs/appdev/printer">
- <fileset dir="webapps">
- <include name="docs/appdev/*.txt"/>
- </fileset>
- </copy>
- <mkdir dir="${tomcat.build}/webapps/docs/funcspecs/printer" />
- <mkdir dir="${tomcat.build}/webapps/docs/architecture/printer"/>
- <mkdir dir="${tomcat.build}/webapps/docs/config/printer"/>
-
- <xslt basedir="webapps/docs"
- destdir="${tomcat.build}/webapps/docs/printer"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="build.xml project.xml"
- includes="*.xml">
- <param name="relative-path" expression="./.."/>
- <param name="project-menu" expression="nomenu"/>
- </xslt>
- <xslt basedir="webapps/docs/appdev"
- destdir="${tomcat.build}/webapps/docs/appdev/printer"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression="../.."/>
- <param name="project-menu" expression="nomenu"/>
- </xslt>
- <xslt basedir="webapps/docs/funcspecs"
- destdir="${tomcat.build}/webapps/docs/funcspecs/printer"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression="../.."/>
- <param name="project-menu" expression="nomenu"/>
- </xslt>
- <xslt basedir="webapps/docs/config"
- destdir="${tomcat.build}/webapps/docs/config/printer"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression="../.."/>
- <param name="project-menu" expression="nomenu"/>
- </xslt>
-
- <!-- Website version -->
- <mkdir dir="${jbossweb.site}" />
- <copy todir="${jbossweb.site}">
- <fileset dir="webapps/docs">
- <include name="images/**"/>
- <include name="**/*.html"/>
- <include name="appdev/*.txt"/>
- <include name="appdev/sample/**"/>
- </fileset>
- <fileset dir="webapps/docs">
- <include name="architecture/**"/>
- <exclude name="architecture/*.xml"/>
- </fileset>
- </copy>
- <copy todir="${jbossweb.site}">
- <fileset dir=".">
- <include name="BUILDING.txt"/>
- <include name="NOTICE"/>
- <include name="RUNNING.txt"/>
- </fileset>
- </copy>
- <mkdir dir="${jbossweb.site}/appdev" />
- <copy todir="${jbossweb.site}/appdev">
- <fileset dir="webapps">
- <include name="docs/appdev/*.txt"/>
- </fileset>
- </copy>
- <mkdir dir="${jbossweb.site}/funcspecs" />
- <mkdir dir="${jbossweb.site}/architecture"/>
- <mkdir dir="${jbossweb.site}/config"/>
-
- <xslt basedir="webapps/docs"
- destdir="${jbossweb.site}"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="build.xml project.xml"
- includes="*.xml">
- <param name="relative-path" expression="."/>
- <param name="project-menu" expression="nomenu"/>
- <param name="bodyonly" expression="true"/>
- <param name="usehead" expression="true"/>
- </xslt>
- <xslt basedir="webapps/docs/appdev"
- destdir="${jbossweb.site}/appdev"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression=".."/>
- <param name="project-menu" expression="nomenu"/>
- <param name="bodyonly" expression="true"/>
- <param name="usehead" expression="true"/>
- </xslt>
- <xslt basedir="webapps/docs/funcspecs"
- destdir="${jbossweb.site}/funcspecs"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression="../.."/>
- <param name="project-menu" expression="nomenu"/>
- <param name="bodyonly" expression="true"/>
- <param name="usehead" expression="true"/>
- </xslt>
- <xslt basedir="webapps/docs/config"
- destdir="${jbossweb.site}/config"
- extension=".html"
- style="webapps/docs/tomcat-docs.xsl"
- excludes="project.xml"
- includes="*.xml">
- <param name="relative-path" expression=".."/>
- <param name="project-menu" expression="nomenu"/>
- <param name="bodyonly" expression="true"/>
- <param name="usehead" expression="true"/>
- </xslt>
-
- </target>
-
- <target name="deploy" depends="build-only,build-docs">
-
- <!-- JBoss Web Main JAR File -->
- <jar jarfile="${tomcat.jars}/jbossweb.jar" index="true">
- <fileset dir="${tomcat.classes}">
- <!-- Temp EE class -->
- <include name="org/apache/catalina/**" />
- <include name="org/apache/catalina/ha/backend/**" />
- <include name="org/apache/naming/**" />
- <include name="org/apache/comet/**" />
- <include name="org/apache/coyote/**" />
- <include name="org/apache/tomcat/**" />
- <include name="org/apache/jasper/**" />
- <include name="org/apache/cometd/bayeux/**" />
- <include name="org/apache/el/**" />
- <include name="org/jboss/servlet/**" />
- <include name="org/jboss/web/**" />
- <!-- Javadoc and i18n exclusions -->
- <exclude name="**/package.html" />
- </fileset>
- </jar>
-
- <copy file="${jasper-jdt.jar}" todir="${tomcat.jars}" />
- <copy file="${jasper-jdt-src.jar}" todir="${tomcat.jars}" />
-
- <!-- Create a source jar of the jbossweb/servlet classes -->
- <jar destfile="${tomcat.jars}/jbossweb-src.jar" index="true">
- <fileset dir="${basedir}/java">
- <include name="org/**" />
- <exclude name="org/jboss/logging/**" />
- <exclude name="javax/servlet/**" />
- <exclude name="javax/el/**" />
- </fileset>
- </jar>
-
- </target>
-
- <target name="clean-depend"
- description="Clean depend src components">
- <delete dir="${jasper-jdt.home}"/>
- <delete dir="${jasper-jdt-src.home}"/>
- </target>
-
- <target name="clean">
- <delete dir="${tomcat.classes}" />
- <delete dir="${tomcat.build}" />
- <delete dir="${tomcat.jars}" />
- <delete dir="${jbossweb.site}" />
- </target>
-
- <!-- Download and dependency building -->
- <target name="proxyflags">
- <!-- check proxy parameters. -->
- <condition property="useproxy">
- <equals arg1="${proxy.use}" arg2="on" />
- </condition>
- </target>
-
- <target name="setproxy" depends="proxyflags" if="useproxy">
- <taskdef name="setproxy"
- classname="org.apache.tools.ant.taskdefs.optional.net.SetProxy" />
- <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}"
- proxyuser="${proxy.user}" proxypassword="${proxy.password}" />
- <echo message="Using ${proxy.host}:${proxy.port} to download ${sourcefile}"/>
- </target>
-
- <target name="testexist">
- <echo message="Testing for ${destfile}"/>
- <available file="${destfile}" property="exist"/>
- </target>
-
- <target name="downloadgz" unless="exist" depends="setproxy,testexist">
- <!-- Download and extract the package -->
- <get src="${sourcefile}" dest="${base.path}/file.tar.gz" />
- <gunzip src="${base.path}/file.tar.gz" dest="${base.path}/file.tar"/>
- <untar src="${base.path}/file.tar" dest="${base.path}"/>
- <delete file="${base.path}/file.tar"/>
- <delete file="${base.path}/file.tar.gz"/>
- </target>
-
- <target name="downloadzip" unless="exist" depends="setproxy,testexist">
- <!-- Download and extract the package -->
- <get src="${sourcefile}" dest="${base.path}/file.zip" />
- <mkdir dir="${destdir}" />
- <unzip src="${base.path}/file.zip" dest="${destdir}"/>
- <delete file="${base.path}/file.zip"/>
- </target>
-
- <target name="downloadfile" unless="exist" depends="setproxy,testexist">
- <!-- Download extract the file -->
- <mkdir dir="${destdir}" />
- <get src="${sourcefile}" dest="${destfile}" />
- </target>
-
- <target name="download"
- description="Builds and download dependent components">
-
- <mkdir dir="${base.path}" />
-
- <!-- Download json libraries
- <antcall target="downloadfile">
- <param name="sourcefile" value="${json-lib.loc}"/>
- <param name="destfile" value="${json-lib.jar}"/>
- <param name="destdir" value="${json-lib.home}"/>
- </antcall> -->
-
- <!-- Build Jasper JDT bundle -->
- <antcall target="downloadzip">
- <param name="sourcefile" value="${jdt.loc}"/>
- <param name="destdir" value="${base.path}"/>
- </antcall>
- <mkdir dir="${jasper-jdt.home}"/>
- <antcall target="build-jasper-jdt">
- <param name="basedir" value="${jasper-jdt.home}" />
- </antcall>
-
- <!-- Build Jasper JDT sources bundle -->
- <antcall target="downloadzip">
- <param name="sourcefile" value="${jdt-src.loc}"/>
- <param name="destdir" value="${jasper-jdt-src.home}"/>
- </antcall>
- <mkdir dir="${jasper-jdt-src.home}"/>
- <antcall target="build-jasper-jdt-src">
- <param name="basedir" value="${jasper-jdt-src.home}" />
- </antcall>
-
- </target>
-
- <target name="build-jasper-jdt">
- <unjar src="${jdt.jar}" dest="${jasper-jdt.home}" />
- <jar destfile="${jasper-jdt.jar}" index="true">
- <fileset dir="${jasper-jdt.home}">
- <include name="org/eclipse/jdt/core/compiler/**"/>
- <include name="org/eclipse/jdt/internal/compiler/**"/>
- <include name="org/eclipse/jdt/internal/core/util/CommentRecorder*"/>
- </fileset>
- </jar>
- </target>
-
- <target name="build-jasper-jdt-src">
- <jar destfile="${jasper-jdt-src.jar}" index="true">
- <fileset dir="${jasper-jdt-src.home}/src/plugins/org.eclipse.jdt.core/model">
- <include name="org/eclipse/jdt/core/compiler/**"/>
- <include name="org/eclipse/jdt/internal/compiler/**"/>
- <include name="org/eclipse/jdt/internal/core/util/CommentRecorder*"/>
- </fileset>
- </jar>
- </target>
-
- <target name="tests">
- <antcall target="downloadgz">
- <param name="sourcefile" value="${dojo-js.loc}"/>
- <param name="destfile" value="${dojo-js.jar}"/>
- </antcall>
-
- <mkdir dir="${tomcat.build}/webapps/cometd"/>
- <mkdir dir="${tomcat.build}/webapps/cometd/WEB-INF/classes"/>
- <copy todir="${tomcat.build}/webapps/cometd">
- <fileset dir="${basedir}/test/webapps/cometd">
- </fileset>
- <fileset dir="${dojo-js.home}">
- <include name="dojo/**"/>
- <include name="dojox/**"/>
- </fileset>
- </copy>
- <javac srcdir="${basedir}/test/java" destdir="${tomcat.build}/webapps/cometd/WEB-INF/classes"
- debug="${compile.debug}"
- deprecation="${compile.deprecation}"
- source="${compile.source}"
- optimize="${compile.optimize}"
- classpath="${tomcat.classes}">
- <include name="org/jboss/web/comet/**" />
- <include name="org/apache/cometd/**" />
- </javac>
- </target>
-
- <target name="maven" description="Upload to Maven repository; if this looks like a hack, it's because it's one">
-
- <filter token="VERSION" value="${version}"/>
- <copy todir="${tomcat.jars}" filtering="true">
- <fileset dir="res">
- <include name="*-pom.xml"/>
- </fileset>
- </copy>
-
- <!-- Maven repository configuration -->
- <property name="maven.repository.url" value="https://repository.jboss.org/nexus/service/local/staging/deploy/maven2"/>
- <property name="maven.repository.id" value="jboss-releases-repository"/>
-
- <!-- Linux/Unix execs -->
- <exec dir="." executable="/bin/sh" os="Linux">
- <arg value="-c" />
- <arg value="mvn deploy:deploy-file -Dfile=${tomcat.jars}/jbossweb-src.jar -Durl=${maven.repository.url} -Dpackaging=jar -DrepositoryId=${maven.repository.id} -DgroupId=org.jboss.web -DartifactId=jbossweb -Dversion=${version} -Dclassifier=sources"/>
- </exec>
- <exec dir="." executable="/bin/sh" os="Linux">
- <arg value="-c" />
- <arg value="mvn deploy:deploy-file -Dfile=${tomcat.jars}/jbossweb.jar -DpomFile=${tomcat.jars}/jbossweb-pom.xml -Durl=${maven.repository.url} -Dpackaging=jar -DrepositoryId=${maven.repository.id}"/>
- </exec>
-
- <!-- Windows exec -->
- <exec dir="." executable="cmd" os="Windows NT">
- <arg value="/c" />
- <arg value="mvn deploy:deploy-file -Dfile=${tomcat.jars}/jbossweb-src.jar -Durl=${maven.repository.url} -Dpackaging=jar -DrepositoryId=${maven.repository.id} -DgroupId=org.jboss.web -DartifactId=jbossweb -Dversion=${version} -Dclassifier=sources"/>
- </exec>
- <exec dir="." executable="cmd" os="Windows NT">
- <arg value="/c" />
- <arg value="mvn deploy:deploy-file -Dfile=${tomcat.jars}/jbossweb.jar -DpomFile=${tomcat.jars}/jbossweb-pom.xml -Durl=${maven.repository.url} -Dpackaging=jar -DrepositoryId=${maven.repository.id}"/>
- </exec>
-
- </target>
-
- <target name="maven-jdt" description="Upload to Maven repository; if this looks like a hack, it's because it's one">
-
- <filter token="VERSION" value="${version}"/>
- <copy todir="${tomcat.jars}" filtering="true">
- <fileset dir="res">
- <include name="*-pom.xml"/>
- </fileset>
- </copy>
-
- <!-- Maven repository configuration -->
- <property name="maven.repository.url" value="https://repository.jboss.org/nexus/service/local/staging/deploy/maven2"/>
- <property name="maven.repository.id" value="jboss-releases-repository"/>
-
- <!-- Linux/Unix execs -->
- <exec dir="." executable="/bin/sh" os="Linux">
- <arg value="-c" />
- <arg value="mvn deploy:deploy-file -Dfile=${tomcat.jars}/jasper-jdt-src.jar -Durl=${maven.repository.url} -Dpackaging=jar -DrepositoryId=${maven.repository.id} -DgroupId=org.jboss.web -DartifactId=jasper-jdt -Dversion=${version} -Dclassifier=sources"/>
- </exec>
- <exec dir="." executable="/bin/sh" os="Linux">
- <arg value="-c" />
- <arg value="mvn deploy:deploy-file -Dfile=${tomcat.jars}/jasper-jdt.jar -DpomFile=${tomcat.jars}/jasper-jdt-pom.xml -Durl=${maven.repository.url} -Dpackaging=jar -DrepositoryId=${maven.repository.id}"/>
- </exec>
-
- <!-- Windows exec -->
- <exec dir="." executable="cmd" os="Windows NT">
- <arg value="/c" />
- <arg value="mvn deploy:deploy-file -Dfile=${tomcat.jars}/jasper-jdt.jar -DpomFile=${tomcat.jars}/jasper-jdt-pom.xml -Durl=${maven.repository.url} -Dpackaging=jar -DrepositoryId=${maven.repository.id}"/>
- </exec>
-
- </target>
-
-</project>
Modified: branches/7.2.x/pom.xml
===================================================================
(Binary files differ)
11 years, 7 months
JBossWeb SVN: r2087 - in branches/7.2.x: src/main/java/org/apache/catalina/connector and 7 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-26 09:54:12 -0400 (Wed, 26 Sep 2012)
New Revision: 2087
Added:
branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java
branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalInputBuffer.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalOutputBuffer.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultServerSocketFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/ServerSocketFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESupport.java
Modified:
branches/7.2.x/pom.xml
branches/7.2.x/src/main/java/org/apache/catalina/connector/Connector.java
branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java
branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java
branches/7.2.x/src/main/java/org/apache/coyote/ajp/Constants.java
branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/SSLImplementation.java
branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java
branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java
branches/7.2.x/webapps/docs/changelog.xml
Log:
- Add back java.io AJP and HTTP, with i18n.
- Compile for Java 6.
- Try to run NIO 2 HTTP if possible.
- Done ?
Modified: branches/7.2.x/pom.xml
===================================================================
(Binary files differ)
Modified: branches/7.2.x/src/main/java/org/apache/catalina/connector/Connector.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/connector/Connector.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/catalina/connector/Connector.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -549,6 +549,8 @@
if ("org.apache.coyote.http11.Http11Protocol".equals
(getProtocolHandlerClassName())
|| "org.apache.coyote.http11.Http11AprProtocol".equals
+ (getProtocolHandlerClassName())
+ || "org.apache.coyote.http11.Http11NioProtocol".equals
(getProtocolHandlerClassName())) {
return "HTTP/1.1";
} else if ("org.apache.coyote.ajp.AjpProtocol".equals
@@ -583,8 +585,19 @@
}
} else {
if ("HTTP/1.1".equals(protocol) || "http".equals(protocol)) {
+ try {
+ Class.forName("java.nio.channels.CompletionHandler");
+ setProtocolHandlerClassName
+ ("org.apache.coyote.http11.Http11NioProtocol");
+ } catch (Exception e) {
+ // NIO 2 is not available
+ setProtocolHandlerClassName
+ ("org.apache.coyote.http11.Http11Protocol");
+ CatalinaLogger.CONNECTOR_LOGGER.usingJavaIoConnector();
+ }
+ } else if ("AJP/1.3".equals(protocol) || "ajp".equals(protocol)) {
setProtocolHandlerClassName
- ("org.apache.coyote.http11.Http11NioProtocol");
+ ("org.apache.coyote.ajp.AjpProtocol");
} else if (protocol != null) {
setProtocolHandlerClassName(protocol);
}
Modified: branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/catalina/util/ConcurrentMessageDigest.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -33,7 +33,7 @@
private static final String MD5 = "MD5";
private static final Map<String,Queue<MessageDigest>> queues =
- new HashMap<>();
+ new HashMap<String,Queue<MessageDigest>>();
private ConcurrentMessageDigest() {
@@ -95,7 +95,7 @@
synchronized (queues) {
if (!queues.containsKey(algorithm)) {
MessageDigest md = MessageDigest.getInstance(algorithm);
- Queue<MessageDigest> queue = new ConcurrentLinkedQueue<>();
+ Queue<MessageDigest> queue = new ConcurrentLinkedQueue<MessageDigest>();
queue.add(md);
queues.put(algorithm, queue);
}
Modified: branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpAprProtocol.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -321,7 +321,7 @@
* Should authentication be done in the native webserver layer,
* or in the Servlet container ?
*/
- protected boolean tomcatAuthentication = true;
+ protected boolean tomcatAuthentication = Constants.DEFAULT_TOMCAT_AUTHENTICATION;
public boolean getTomcatAuthentication() { return tomcatAuthentication; }
public void setTomcatAuthentication(boolean tomcatAuthentication) { this.tomcatAuthentication = tomcatAuthentication; }
Added: branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProcessor.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,1337 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.apache.coyote.ajp;
+
+import static org.jboss.web.CoyoteMessages.MESSAGES;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InterruptedIOException;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+
+import org.apache.coyote.ActionCode;
+import org.apache.coyote.ActionHook;
+import org.apache.coyote.Adapter;
+import org.apache.coyote.InputBuffer;
+import org.apache.coyote.OutputBuffer;
+import org.apache.coyote.Request;
+import org.apache.coyote.RequestInfo;
+import org.apache.coyote.Response;
+import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.HexUtils;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.HttpMessages;
+import org.apache.tomcat.util.http.MimeHeaders;
+import org.apache.tomcat.util.net.JIoEndpoint;
+import org.apache.tomcat.util.net.SocketStatus;
+import org.apache.tomcat.util.net.JIoEndpoint.Handler.SocketState;
+import org.jboss.web.CoyoteLogger;
+
+
+/**
+ * Processes HTTP requests.
+ *
+ * @author Remy Maucherat
+ * @author Henri Gomez
+ * @author Dan Milstein
+ * @author Keith Wannamaker
+ * @author Kevin Seguin
+ * @author Costin Manolache
+ * @author Bill Barker
+ */
+public class AjpProcessor implements ActionHook {
+
+
+ // ----------------------------------------------------------- Constructors
+
+
+ public AjpProcessor(int packetSize, JIoEndpoint endpoint) {
+
+ this.endpoint = endpoint;
+
+ request = new Request();
+ request.setInputBuffer(new SocketInputBuffer());
+
+ response = new Response();
+ response.setHook(this);
+ response.setOutputBuffer(new SocketOutputBuffer());
+ request.setResponse(response);
+
+ requestHeaderMessage = new AjpMessage(packetSize);
+ responseHeaderMessage = new AjpMessage(packetSize);
+ bodyMessage = new AjpMessage(packetSize);
+
+ // Set the get body message buffer
+ AjpMessage getBodyMessage = new AjpMessage(16);
+ getBodyMessage.reset();
+ getBodyMessage.appendByte(Constants.JK_AJP13_GET_BODY_CHUNK);
+ getBodyMessage.appendInt(packetSize - Constants.READ_HEAD_LEN);
+ getBodyMessage.end();
+ getBodyMessageArray = new byte[getBodyMessage.getLen()];
+ System.arraycopy(getBodyMessage.getBuffer(), 0, getBodyMessageArray,
+ 0, getBodyMessage.getLen());
+
+ // Cause loading of HexUtils
+ int foo = HexUtils.DEC[0];
+
+ // Cause loading of HttpMessages
+ HttpMessages.getMessage(200);
+
+ }
+
+
+ // ----------------------------------------------------- Instance Variables
+
+
+ /**
+ * Associated adapter.
+ */
+ protected Adapter adapter = null;
+
+
+ /**
+ * Request object.
+ */
+ protected Request request = null;
+
+
+ /**
+ * Response object.
+ */
+ protected Response response = null;
+
+
+ /**
+ * Header message. Note that this header is merely the one used during the
+ * processing of the first message of a "request", so it might not be a request
+ * header. It will stay unchanged during the processing of the whole request.
+ */
+ protected AjpMessage requestHeaderMessage = null;
+
+
+ /**
+ * Message used for response header composition.
+ */
+ protected AjpMessage responseHeaderMessage = null;
+
+
+ /**
+ * Body message.
+ */
+ protected AjpMessage bodyMessage = null;
+
+
+ /**
+ * Body message.
+ */
+ protected MessageBytes bodyBytes = MessageBytes.newInstance();
+
+
+ /**
+ * Error flag.
+ */
+ protected boolean error = false;
+
+
+ /**
+ * Socket associated with the current connection.
+ */
+ protected Socket socket;
+
+
+ /**
+ * Input stream.
+ */
+ protected InputStream input;
+
+
+ /**
+ * Output stream.
+ */
+ protected OutputStream output;
+
+
+ /**
+ * Host name (used to avoid useless B2C conversion on the host name).
+ */
+ protected char[] hostNameC = new char[0];
+
+
+ /**
+ * Associated endpoint.
+ */
+ protected JIoEndpoint endpoint;
+
+
+ /**
+ * The socket timeout used when reading the first block of the request
+ * header.
+ */
+ protected long readTimeout;
+
+
+ /**
+ * Temp message bytes used for processing.
+ */
+ protected MessageBytes tmpMB = MessageBytes.newInstance();
+
+
+ /**
+ * Byte chunk for certs.
+ */
+ protected MessageBytes certificates = MessageBytes.newInstance();
+
+
+ /**
+ * End of stream flag.
+ */
+ protected boolean endOfStream = false;
+
+
+ /**
+ * Body empty flag.
+ */
+ protected boolean empty = true;
+
+
+ /**
+ * First read.
+ */
+ protected boolean first = true;
+
+
+ /**
+ * Replay read.
+ */
+ protected boolean replay = false;
+
+
+ /**
+ * Finished response.
+ */
+ protected boolean finished = false;
+
+
+ /**
+ * Direct buffer used for sending right away a get body message.
+ */
+ protected final byte[] getBodyMessageArray;
+
+
+ /**
+ * Direct buffer used for sending right away a pong message.
+ */
+ protected static final byte[] pongMessageArray;
+
+
+ /**
+ * End message array.
+ */
+ protected static final byte[] endMessageArray;
+
+ /**
+ * Flush message array.
+ */
+ protected static final byte[] flushMessageArray;
+
+
+ /**
+ * Event used.
+ */
+ protected boolean event = false;
+
+
+ /**
+ * Event processing.
+ */
+ protected boolean eventProcessing = true;
+ public void startProcessing() { eventProcessing = true; }
+ public void endProcessing() { eventProcessing = false; }
+
+
+ // ----------------------------------------------------- Static Initializer
+
+
+ static {
+
+ // Set the read body message buffer
+ AjpMessage pongMessage = new AjpMessage(16);
+ pongMessage.reset();
+ pongMessage.appendByte(Constants.JK_AJP13_CPONG_REPLY);
+ pongMessage.end();
+ pongMessageArray = new byte[pongMessage.getLen()];
+ System.arraycopy(pongMessage.getBuffer(), 0, pongMessageArray,
+ 0, pongMessage.getLen());
+
+ // Allocate the end message array
+ AjpMessage endMessage = new AjpMessage(16);
+ endMessage.reset();
+ endMessage.appendByte(Constants.JK_AJP13_END_RESPONSE);
+ endMessage.appendByte(1);
+ endMessage.end();
+ endMessageArray = new byte[endMessage.getLen()];
+ System.arraycopy(endMessage.getBuffer(), 0, endMessageArray, 0,
+ endMessage.getLen());
+
+ // Allocate the flush message array
+ AjpMessage flushMessage = new AjpMessage(16);
+ flushMessage.reset();
+ flushMessage.appendByte(Constants.JK_AJP13_SEND_BODY_CHUNK);
+ flushMessage.appendInt(0);
+ flushMessage.appendByte(0);
+ flushMessage.end();
+ flushMessageArray = new byte[flushMessage.getLen()];
+ System.arraycopy(flushMessage.getBuffer(), 0, flushMessageArray, 0,
+ flushMessage.getLen());
+
+ }
+
+
+ // ------------------------------------------------------------- Properties
+
+
+ /**
+ * Use Tomcat authentication ?
+ */
+ protected boolean tomcatAuthentication = true;
+ public boolean getTomcatAuthentication() { return tomcatAuthentication; }
+ public void setTomcatAuthentication(boolean tomcatAuthentication) { this.tomcatAuthentication = tomcatAuthentication; }
+
+
+ /**
+ * Required secret.
+ */
+ protected String requiredSecret = null;
+ public void setRequiredSecret(String requiredSecret) { this.requiredSecret = requiredSecret; }
+
+
+ /**
+ * The number of milliseconds Tomcat will wait for a subsequent request
+ * before closing the connection. The default is the same as for
+ * Apache HTTP Server (15 000 milliseconds).
+ */
+ protected int keepAliveTimeout = -1;
+ public int getKeepAliveTimeout() { return keepAliveTimeout; }
+ public void setKeepAliveTimeout(int timeout) { keepAliveTimeout = timeout; }
+
+
+ /**
+ * Timeout.
+ */
+ protected int timeout = -1;
+ public void setTimeout(int timeout) { this.timeout = timeout; }
+ public int getTimeout() { return timeout; }
+
+
+ /**
+ * A resume has been requested.
+ */
+ protected boolean resumeNotification = false;
+ public boolean getResumeNotification() { return resumeNotification; }
+
+
+ // --------------------------------------------------------- Public Methods
+
+
+ /** Get the request associated with this processor.
+ *
+ * @return The request
+ */
+ public Request getRequest() {
+ return request;
+ }
+
+
+ public SocketState event(SocketStatus status)
+ throws IOException {
+
+ RequestInfo rp = request.getRequestProcessor();
+ try {
+ if (status == SocketStatus.OPEN_CALLBACK) {
+ // The resume notification is now done
+ resumeNotification = false;
+ } else if (status == SocketStatus.ERROR) {
+ // Set error flag right away
+ error = true;
+ }
+ rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
+ error = !adapter.event(request, response, status);
+ } catch (InterruptedIOException e) {
+ error = true;
+ } catch (Throwable t) {
+ CoyoteLogger.AJP_LOGGER.errorProcessingRequest(t);
+ // 500 - Internal Server Error
+ response.setStatus(500);
+ error = true;
+ }
+
+ rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
+
+ if (error) {
+ recycle();
+ return SocketState.CLOSED;
+ } else if (!event) {
+ finish();
+ recycle();
+ return SocketState.OPEN;
+ } else {
+ return SocketState.LONG;
+ }
+ }
+
+
+ /**
+ * Process pipelined HTTP requests using the specified input and output
+ * streams.
+ *
+ * @throws IOException error during an I/O operation
+ */
+ public SocketState process(Socket socket)
+ throws IOException {
+ RequestInfo rp = request.getRequestProcessor();
+ rp.setStage(org.apache.coyote.Constants.STAGE_PARSE);
+
+ // Setting up the socket
+ this.socket = socket;
+ input = socket.getInputStream();
+ output = socket.getOutputStream();
+ int soTimeout = -1;
+ if (keepAliveTimeout > 0) {
+ soTimeout = socket.getSoTimeout();
+ }
+
+ // Error flag
+ error = false;
+
+ while (!error && !event) {
+
+ // Parsing the request header
+ try {
+ // Set keep alive timeout if enabled
+ if (keepAliveTimeout > 0) {
+ socket.setSoTimeout(keepAliveTimeout);
+ }
+ // Get first message of the request
+ if (!readMessage(requestHeaderMessage)) {
+ // This means a connection timeout
+ rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
+ break;
+ }
+ // Set back timeout if keep alive timeout is enabled
+ if (keepAliveTimeout > 0) {
+ socket.setSoTimeout(soTimeout);
+ }
+ // Check message type, process right away and break if
+ // not regular request processing
+ int type = requestHeaderMessage.getByte();
+ if (type == Constants.JK_AJP13_CPING_REQUEST) {
+ try {
+ output.write(pongMessageArray);
+ } catch (IOException e) {
+ error = true;
+ }
+ continue;
+ } else if(type != Constants.JK_AJP13_FORWARD_REQUEST) {
+ // Usually the servlet didn't read the previous request body
+ CoyoteLogger.AJP_LOGGER.unexpectedAjpMessage(type);
+ error = true;
+ break;
+ }
+
+ request.setStartTime(System.currentTimeMillis());
+ } catch (IOException e) {
+ error = true;
+ break;
+ } catch (Throwable t) {
+ CoyoteLogger.AJP_LOGGER.errorParsingAjpHeaderMessage(t);
+ // 400 - Bad Request
+ response.setStatus(400);
+ error = true;
+ }
+
+ // Setting up filters, and parse some request headers
+ rp.setStage(org.apache.coyote.Constants.STAGE_PREPARE);
+ try {
+ prepareRequest();
+ } catch (Throwable t) {
+ CoyoteLogger.AJP_LOGGER.errorPreparingAjpRequest(t);
+ // 400 - Internal Server Error
+ response.setStatus(400);
+ error = true;
+ }
+
+ // Process the request in the adapter
+ if (!error) {
+ try {
+ rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
+ adapter.service(request, response);
+ } catch (InterruptedIOException e) {
+ error = true;
+ } catch (Throwable t) {
+ CoyoteLogger.AJP_LOGGER.errorProcessingRequest(t);
+ // 500 - Internal Server Error
+ response.setStatus(500);
+ error = true;
+ }
+ }
+
+ // Finish the response if not done yet
+ if (!event && !finished) {
+ try {
+ finish();
+ } catch (Throwable t) {
+ error = true;
+ }
+ }
+
+ // If there was an error, make sure the request is counted as
+ // and error, and update the statistics counter
+ if (error) {
+ response.setStatus(500);
+ }
+ request.updateCounters();
+
+ if (!event) {
+ recycle();
+ }
+
+ rp.setStage(org.apache.coyote.Constants.STAGE_KEEPALIVE);
+
+ }
+
+ rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
+
+ if (event) {
+ if (error) {
+ input = null;
+ output = null;
+ recycle();
+ return SocketState.CLOSED;
+ } else {
+ eventProcessing = false;
+ return SocketState.LONG;
+ }
+ } else {
+ input = null;
+ output = null;
+ recycle();
+ return SocketState.CLOSED;
+ }
+ }
+
+
+ // ----------------------------------------------------- ActionHook Methods
+
+
+ /**
+ * Send an action to the connector.
+ *
+ * @param actionCode Type of the action
+ * @param param Action parameter
+ */
+ public void action(ActionCode actionCode, Object param) {
+
+ if (actionCode == ActionCode.ACTION_COMMIT) {
+
+ if (response.isCommitted())
+ return;
+
+ // Validate and write response headers
+ try {
+ prepareResponse();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+
+ } else if (actionCode == ActionCode.ACTION_CLIENT_FLUSH) {
+
+ if (!response.isCommitted()) {
+ // Validate and write response headers
+ try {
+ prepareResponse();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ return;
+ }
+ }
+
+ try {
+ flush();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+
+ } else if (actionCode == ActionCode.ACTION_CLOSE) {
+ // Close
+
+ // End the processing of the current request, and stop any further
+ // transactions with the client
+
+ try {
+ finish();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+
+ } else if (actionCode == ActionCode.ACTION_REQ_SSL_ATTRIBUTE ) {
+
+ if (!certificates.isNull()) {
+ ByteChunk certData = certificates.getByteChunk();
+ X509Certificate jsseCerts[] = null;
+ ByteArrayInputStream bais =
+ new ByteArrayInputStream(certData.getBytes(),
+ certData.getStart(),
+ certData.getLength());
+ // Fill the elements.
+ try {
+ CertificateFactory cf =
+ CertificateFactory.getInstance("X.509");
+ while(bais.available() > 0) {
+ X509Certificate cert = (X509Certificate)
+ cf.generateCertificate(bais);
+ if(jsseCerts == null) {
+ jsseCerts = new X509Certificate[1];
+ jsseCerts[0] = cert;
+ } else {
+ X509Certificate [] temp = new X509Certificate[jsseCerts.length+1];
+ System.arraycopy(jsseCerts,0,temp,0,jsseCerts.length);
+ temp[jsseCerts.length] = cert;
+ jsseCerts = temp;
+ }
+ }
+ } catch (java.security.cert.CertificateException e) {
+ CoyoteLogger.AJP_LOGGER.errorProcessingCertificates(e);
+ return;
+ }
+ request.setAttribute(org.apache.tomcat.util.net.Constants.CERTIFICATE_KEY, jsseCerts);
+ }
+
+ } else if (actionCode == ActionCode.ACTION_REQ_HOST_ATTRIBUTE) {
+
+ // Get remote host name using a DNS resolution
+ if (request.remoteHost().isNull()) {
+ try {
+ request.remoteHost().setString(InetAddress.getByName
+ (request.remoteAddr().toString()).getHostName());
+ } catch (IOException iex) {
+ // Ignore
+ }
+ }
+
+ } else if (actionCode == ActionCode.ACTION_REQ_LOCAL_ADDR_ATTRIBUTE) {
+
+ // Copy from local name for now, which should simply be an address
+ request.localAddr().setString(request.localName().toString());
+
+ } else if (actionCode == ActionCode.ACTION_REQ_SET_BODY_REPLAY) {
+
+ // Set the given bytes as the content
+ ByteChunk bc = (ByteChunk) param;
+ int length = bc.getLength();
+ bodyBytes.setBytes(bc.getBytes(), bc.getStart(), length);
+ request.setContentLength(length);
+ first = false;
+ empty = false;
+ replay = true;
+ endOfStream = false;
+
+ } else if (actionCode == ActionCode.ACTION_EVENT_BEGIN) {
+ event = true;
+ } else if (actionCode == ActionCode.ACTION_EVENT_END) {
+ event = false;
+ } else if (actionCode == ActionCode.ACTION_EVENT_SUSPEND) {
+ // No action needed
+ } else if (actionCode == ActionCode.ACTION_EVENT_RESUME) {
+ // An event is being processed already: adding for resume will be done
+ // when the socket gets back to the poller
+ if (!eventProcessing && !resumeNotification) {
+ endpoint.getEventPoller().add(socket, timeout, true, true);
+ }
+ resumeNotification = true;
+ } else if (actionCode == ActionCode.ACTION_EVENT_TIMEOUT) {
+ timeout = ((Integer) param).intValue();
+ }
+
+
+ }
+
+
+ // ------------------------------------------------------ Connector Methods
+
+
+ /**
+ * Set the associated adapter.
+ *
+ * @param adapter the new adapter
+ */
+ public void setAdapter(Adapter adapter) {
+ this.adapter = adapter;
+ }
+
+
+ /**
+ * Get the associated adapter.
+ *
+ * @return the associated adapter
+ */
+ public Adapter getAdapter() {
+ return adapter;
+ }
+
+
+ // ------------------------------------------------------ Protected Methods
+
+
+ /**
+ * After reading the request headers, we have to setup the request filters.
+ */
+ protected void prepareRequest() {
+
+ // Translate the HTTP method code to a String.
+ byte methodCode = requestHeaderMessage.getByte();
+ if (methodCode != Constants.SC_M_JK_STORED) {
+ String methodName = Constants.methodTransArray[(int)methodCode - 1];
+ request.method().setString(methodName);
+ }
+
+ requestHeaderMessage.getBytes(request.protocol());
+ requestHeaderMessage.getBytes(request.requestURI());
+
+ requestHeaderMessage.getBytes(request.remoteAddr());
+ requestHeaderMessage.getBytes(request.remoteHost());
+ requestHeaderMessage.getBytes(request.localName());
+ request.setLocalPort(requestHeaderMessage.getInt());
+
+ boolean isSSL = requestHeaderMessage.getByte() != 0;
+ if (isSSL) {
+ request.scheme().setString("https");
+ }
+
+ // Decode headers
+ MimeHeaders headers = request.getMimeHeaders();
+
+ int hCount = requestHeaderMessage.getInt();
+ for(int i = 0 ; i < hCount ; i++) {
+ String hName = null;
+
+ // Header names are encoded as either an integer code starting
+ // with 0xA0, or as a normal string (in which case the first
+ // two bytes are the length).
+ int isc = requestHeaderMessage.peekInt();
+ int hId = isc & 0xFF;
+
+ MessageBytes vMB = null;
+ isc &= 0xFF00;
+ if(0xA000 == isc) {
+ requestHeaderMessage.getInt(); // To advance the read position
+ hName = Constants.headerTransArray[hId - 1];
+ vMB = headers.addValue(hName);
+ } else {
+ // reset hId -- if the header currently being read
+ // happens to be 7 or 8 bytes long, the code below
+ // will think it's the content-type header or the
+ // content-length header - SC_REQ_CONTENT_TYPE=7,
+ // SC_REQ_CONTENT_LENGTH=8 - leading to unexpected
+ // behaviour. see bug 5861 for more information.
+ hId = -1;
+ requestHeaderMessage.getBytes(tmpMB);
+ ByteChunk bc = tmpMB.getByteChunk();
+ vMB = headers.addValue(bc.getBuffer(),
+ bc.getStart(), bc.getLength());
+ }
+
+ requestHeaderMessage.getBytes(vMB);
+
+ if (hId == Constants.SC_REQ_CONTENT_LENGTH ||
+ (hId == -1 && tmpMB.equalsIgnoreCase("Content-Length"))) {
+ // just read the content-length header, so set it
+ request.setContentLength( vMB.getInt() );
+ } else if (hId == Constants.SC_REQ_CONTENT_TYPE ||
+ (hId == -1 && tmpMB.equalsIgnoreCase("Content-Type"))) {
+ // just read the content-type header, so set it
+ ByteChunk bchunk = vMB.getByteChunk();
+ request.contentType().setBytes(bchunk.getBytes(),
+ bchunk.getOffset(),
+ bchunk.getLength());
+ }
+ }
+
+ // Decode extra attributes
+ boolean secret = false;
+ byte attributeCode;
+ while ((attributeCode = requestHeaderMessage.getByte())
+ != Constants.SC_A_ARE_DONE) {
+
+ switch (attributeCode) {
+
+ case Constants.SC_A_REQ_ATTRIBUTE :
+ requestHeaderMessage.getBytes(tmpMB);
+ String n = tmpMB.toString();
+ requestHeaderMessage.getBytes(tmpMB);
+ String v = tmpMB.toString();
+ request.setAttribute(n, v);
+ break;
+
+ case Constants.SC_A_CONTEXT :
+ requestHeaderMessage.getBytes(tmpMB);
+ // nothing
+ break;
+
+ case Constants.SC_A_SERVLET_PATH :
+ requestHeaderMessage.getBytes(tmpMB);
+ // nothing
+ break;
+
+ case Constants.SC_A_REMOTE_USER :
+ if (tomcatAuthentication) {
+ // ignore server
+ requestHeaderMessage.getBytes(tmpMB);
+ } else {
+ requestHeaderMessage.getBytes(request.getRemoteUser());
+ }
+ break;
+
+ case Constants.SC_A_AUTH_TYPE :
+ if (tomcatAuthentication) {
+ // ignore server
+ requestHeaderMessage.getBytes(tmpMB);
+ } else {
+ requestHeaderMessage.getBytes(request.getAuthType());
+ }
+ break;
+
+ case Constants.SC_A_QUERY_STRING :
+ requestHeaderMessage.getBytes(request.queryString());
+ break;
+
+ case Constants.SC_A_JVM_ROUTE :
+ requestHeaderMessage.getBytes(request.instanceId());
+ break;
+
+ case Constants.SC_A_SSL_CERT :
+ request.scheme().setString("https");
+ // SSL certificate extraction is lazy, moved to JkCoyoteHandler
+ requestHeaderMessage.getBytes(certificates);
+ break;
+
+ case Constants.SC_A_SSL_CIPHER :
+ request.scheme().setString("https");
+ requestHeaderMessage.getBytes(tmpMB);
+ request.setAttribute(org.apache.tomcat.util.net.Constants.CIPHER_SUITE_KEY,
+ tmpMB.toString());
+ break;
+
+ case Constants.SC_A_SSL_SESSION :
+ request.scheme().setString("https");
+ requestHeaderMessage.getBytes(tmpMB);
+ request.setAttribute(org.apache.tomcat.util.net.Constants.SESSION_ID_KEY,
+ tmpMB.toString());
+ break;
+
+ case Constants.SC_A_SSL_KEY_SIZE :
+ request.setAttribute(org.apache.tomcat.util.net.Constants.KEY_SIZE_KEY,
+ new Integer(requestHeaderMessage.getInt()));
+ break;
+
+ case Constants.SC_A_STORED_METHOD:
+ requestHeaderMessage.getBytes(request.method());
+ break;
+
+ case Constants.SC_A_SECRET:
+ requestHeaderMessage.getBytes(tmpMB);
+ if (requiredSecret != null) {
+ secret = true;
+ if (!tmpMB.equals(requiredSecret)) {
+ response.setStatus(403);
+ error = true;
+ }
+ }
+ break;
+
+ default:
+ // Ignore unknown attribute for backward compatibility
+ break;
+
+ }
+
+ }
+
+ // Check if secret was submitted if required
+ if ((requiredSecret != null) && !secret) {
+ response.setStatus(403);
+ error = true;
+ }
+
+ // Check for a full URI (including protocol://host:port/)
+ ByteChunk uriBC = request.requestURI().getByteChunk();
+ if (uriBC.startsWithIgnoreCase("http", 0)) {
+
+ int pos = uriBC.indexOf("://", 0, 3, 4);
+ int uriBCStart = uriBC.getStart();
+ int slashPos = -1;
+ if (pos != -1) {
+ byte[] uriB = uriBC.getBytes();
+ slashPos = uriBC.indexOf('/', pos + 3);
+ if (slashPos == -1) {
+ slashPos = uriBC.getLength();
+ // Set URI as "/"
+ request.requestURI().setBytes
+ (uriB, uriBCStart + pos + 1, 1);
+ } else {
+ request.requestURI().setBytes
+ (uriB, uriBCStart + slashPos,
+ uriBC.getLength() - slashPos);
+ }
+ MessageBytes hostMB = headers.setValue("host");
+ hostMB.setBytes(uriB, uriBCStart + pos + 3,
+ slashPos - pos - 3);
+ }
+
+ }
+
+ MessageBytes valueMB = request.getMimeHeaders().getValue("host");
+ parseHost(valueMB);
+
+ }
+
+
+ /**
+ * Parse host.
+ */
+ public void parseHost(MessageBytes valueMB) {
+
+ if (valueMB == null || (valueMB != null && valueMB.isNull()) ) {
+ // HTTP/1.0
+ request.setServerPort(request.getLocalPort());
+ try {
+ request.serverName().duplicate(request.localName());
+ } catch (IOException e) {
+ response.setStatus(400);
+ error = true;
+ }
+ return;
+ }
+
+ ByteChunk valueBC = valueMB.getByteChunk();
+ byte[] valueB = valueBC.getBytes();
+ int valueL = valueBC.getLength();
+ int valueS = valueBC.getStart();
+ int colonPos = -1;
+ if (hostNameC.length < valueL) {
+ hostNameC = new char[valueL];
+ }
+
+ boolean ipv6 = (valueB[valueS] == '[');
+ boolean bracketClosed = false;
+ for (int i = 0; i < valueL; i++) {
+ char b = (char) valueB[i + valueS];
+ hostNameC[i] = b;
+ if (b == ']') {
+ bracketClosed = true;
+ } else if (b == ':') {
+ if (!ipv6 || bracketClosed) {
+ colonPos = i;
+ break;
+ }
+ }
+ }
+
+ if (colonPos < 0) {
+ if (request.scheme().equalsIgnoreCase("https")) {
+ // 443 - Default HTTPS port
+ request.setServerPort(443);
+ } else {
+ // 80 - Default HTTTP port
+ request.setServerPort(80);
+ }
+ request.serverName().setChars(hostNameC, 0, valueL);
+ } else {
+
+ request.serverName().setChars(hostNameC, 0, colonPos);
+
+ int port = 0;
+ int mult = 1;
+ for (int i = valueL - 1; i > colonPos; i--) {
+ int charValue = HexUtils.DEC[valueB[i + valueS] & 0xff];
+ if (charValue == -1) {
+ // Invalid character
+ error = true;
+ // 400 - Bad request
+ response.setStatus(400);
+ break;
+ }
+ port = port + (charValue * mult);
+ mult = 10 * mult;
+ }
+ request.setServerPort(port);
+
+ }
+
+ }
+
+
+ /**
+ * When committing the response, we have to validate the set of headers, as
+ * well as setup the response filters.
+ */
+ protected void prepareResponse()
+ throws IOException {
+
+ response.setCommitted(true);
+
+ responseHeaderMessage.reset();
+ responseHeaderMessage.appendByte(Constants.JK_AJP13_SEND_HEADERS);
+
+ // HTTP header contents
+ responseHeaderMessage.appendInt(response.getStatus());
+ String message = null;
+ if (org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER) {
+ message = response.getMessage();
+ }
+ if (message == null){
+ message = HttpMessages.getMessage(response.getStatus());
+ } else {
+ message = message.replace('\n', ' ').replace('\r', ' ');
+ }
+ if (message == null) {
+ // Many httpd 2.x wants a non empty status message
+ message = Integer.toString(response.getStatus());
+ }
+ tmpMB.setString(message);
+ responseHeaderMessage.appendBytes(tmpMB);
+
+ // Special headers
+ MimeHeaders headers = response.getMimeHeaders();
+ String contentType = response.getContentType();
+ if (contentType != null) {
+ headers.setValue("Content-Type").setString(contentType);
+ }
+ String contentLanguage = response.getContentLanguage();
+ if (contentLanguage != null) {
+ headers.setValue("Content-Language").setString(contentLanguage);
+ }
+ int contentLength = response.getContentLength();
+ if (contentLength >= 0) {
+ headers.setValue("Content-Length").setInt(contentLength);
+ }
+
+ // Other headers
+ int numHeaders = headers.size();
+ responseHeaderMessage.appendInt(numHeaders);
+ for (int i = 0; i < numHeaders; i++) {
+ MessageBytes hN = headers.getName(i);
+ MessageBytes hV=headers.getValue(i);
+ if (hN.getLength() > 0 && !hV.isNull()) {
+ int hC = Constants.getResponseAjpIndex(hN.toString());
+ if (hC > 0) {
+ responseHeaderMessage.appendInt(hC);
+ }
+ else {
+ responseHeaderMessage.appendBytes(hN);
+ }
+ responseHeaderMessage.appendBytes(hV);
+ }
+ }
+
+ // Write to buffer
+ responseHeaderMessage.end();
+ output.write(responseHeaderMessage.getBuffer(), 0, responseHeaderMessage.getLen());
+
+ }
+
+
+ /**
+ * Finish AJP response.
+ */
+ protected void finish()
+ throws IOException {
+
+ if (!response.isCommitted()) {
+ // Validate and write response headers
+ try {
+ prepareResponse();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+ }
+
+ if (finished)
+ return;
+
+ finished = true;
+
+ // Add the end message
+ output.write(endMessageArray);
+
+
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLengthLong() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
+ }
+
+
+ /**
+ * Read at least the specified amount of bytes, and place them
+ * in the input buffer.
+ */
+ protected boolean read(byte[] buf, int pos, int n)
+ throws IOException {
+
+ int read = 0;
+ int res = 0;
+ while (read < n) {
+ res = input.read(buf, read + pos, n - read);
+ if (res > 0) {
+ read += res;
+ } else {
+ throw new IOException(MESSAGES.failedRead());
+ }
+ }
+
+ return true;
+
+ }
+
+
+ /** Receive a chunk of data. Called to implement the
+ * 'special' packet in ajp13 and to receive the data
+ * after we send a GET_BODY packet
+ */
+ public boolean receive() throws IOException {
+
+ first = false;
+ bodyMessage.reset();
+ readMessage(bodyMessage);
+
+ // No data received.
+ if (bodyMessage.getLen() == 0) {
+ // just the header
+ // Don't mark 'end of stream' for the first chunk.
+ return false;
+ }
+ int blen = bodyMessage.peekInt();
+ if (blen == 0) {
+ return false;
+ }
+
+ bodyMessage.getBytes(bodyBytes);
+ empty = false;
+ return true;
+ }
+
+ /**
+ * Get more request body data from the web server and store it in the
+ * internal buffer.
+ *
+ * @return true if there is more data, false if not.
+ */
+ private boolean refillReadBuffer() throws IOException {
+ // If the server returns an empty packet, assume that that end of
+ // the stream has been reached (yuck -- fix protocol??).
+ // FORM support
+ if (replay) {
+ endOfStream = true; // we've read everything there is
+ }
+ if (endOfStream) {
+ return false;
+ }
+ if (finished) {
+ return false;
+ }
+
+ // Request more data immediately
+ output.write(getBodyMessageArray);
+
+ boolean moreData = receive();
+ if( !moreData ) {
+ endOfStream = true;
+ }
+ return moreData;
+ }
+
+
+ /**
+ * Read an AJP message.
+ *
+ * @return true if the message has been read, false if the short read
+ * didn't return anything
+ * @throws IOException any other failure, including incomplete reads
+ */
+ protected boolean readMessage(AjpMessage message)
+ throws IOException {
+
+ byte[] buf = message.getBuffer();
+
+ read(buf, 0, message.getHeaderLength());
+
+ if (message.processHeader() < 0) {
+ throw new IOException(MESSAGES.invalidAjpMessage());
+ }
+ read(buf, message.getHeaderLength(), message.getLen());
+
+ return true;
+
+ }
+
+
+ /**
+ * Recycle the processor.
+ */
+ public void recycle() {
+
+ // Recycle Request object
+ first = true;
+ endOfStream = false;
+ empty = true;
+ replay = false;
+ finished = false;
+ timeout = -1;
+ resumeNotification = false;
+ eventProcessing = true;
+ request.recycle();
+ response.recycle();
+ certificates.recycle();
+
+ }
+
+
+ /**
+ * Callback to write data from the buffer.
+ */
+ protected void flush()
+ throws IOException {
+ // Send the flush message
+ output.write(flushMessageArray);
+ }
+
+
+ // ------------------------------------- InputStreamInputBuffer Inner Class
+
+
+ /**
+ * This class is an input buffer which will read its data from an input
+ * stream.
+ */
+ protected class SocketInputBuffer
+ implements InputBuffer {
+
+
+ /**
+ * Read bytes into the specified chunk.
+ */
+ public int doRead(ByteChunk chunk, Request req )
+ throws IOException {
+
+ if (endOfStream) {
+ return -1;
+ }
+ if (first && req.getContentLength() > 0) {
+ // Handle special first-body-chunk
+ if (!receive()) {
+ return 0;
+ }
+ } else if (empty) {
+ if (!refillReadBuffer()) {
+ return -1;
+ }
+ }
+ ByteChunk bc = bodyBytes.getByteChunk();
+ chunk.setBytes(bc.getBuffer(), bc.getStart(), bc.getLength());
+ empty = true;
+ return chunk.getLength();
+
+ }
+
+ }
+
+
+ // ----------------------------------- OutputStreamOutputBuffer Inner Class
+
+
+ /**
+ * This class is an output buffer which will write data to an output
+ * stream.
+ */
+ protected class SocketOutputBuffer
+ implements OutputBuffer {
+
+
+ /**
+ * Write chunk.
+ */
+ public int doWrite(ByteChunk chunk, Response res)
+ throws IOException {
+
+ if (!response.isCommitted()) {
+ // Validate and write response headers
+ try {
+ prepareResponse();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+ }
+
+ int len = chunk.getLength();
+ // 4 - hardcoded, byte[] marshalling overhead
+ int chunkSize = Constants.MAX_SEND_SIZE;
+ int off = 0;
+ while (len > 0) {
+ int thisTime = len;
+ if (thisTime > chunkSize) {
+ thisTime = chunkSize;
+ }
+ len -= thisTime;
+ responseHeaderMessage.reset();
+ responseHeaderMessage.appendByte(Constants.JK_AJP13_SEND_BODY_CHUNK);
+ responseHeaderMessage.appendBytes(chunk.getBytes(), chunk.getOffset() + off, thisTime);
+ responseHeaderMessage.end();
+ output.write(responseHeaderMessage.getBuffer(), 0, responseHeaderMessage.getLen());
+
+ off += thisTime;
+ }
+
+ return chunk.getLength();
+
+ }
+
+
+ }
+
+
+}
Added: branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/AjpProtocol.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,538 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.apache.coyote.ajp;
+
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.URLEncoder;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+import javax.management.MBeanRegistration;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.coyote.Adapter;
+import org.apache.coyote.ProtocolHandler;
+import org.apache.coyote.RequestGroupInfo;
+import org.apache.coyote.RequestInfo;
+import org.apache.tomcat.util.modeler.Registry;
+import org.apache.tomcat.util.net.JIoEndpoint;
+import org.apache.tomcat.util.net.SocketStatus;
+import org.apache.tomcat.util.net.JIoEndpoint.Handler;
+import org.jboss.web.CoyoteLogger;
+
+
+/**
+ * Abstract the protocol implementation, including threading, etc.
+ * Processor is single threaded and specific to stream-based protocols,
+ * will not fit Jk protocols like JNI.
+ *
+ * @author Remy Maucherat
+ * @author Costin Manolache
+ */
+public class AjpProtocol
+ implements ProtocolHandler, MBeanRegistration {
+
+
+ // ------------------------------------------------------------ Constructor
+
+
+ public AjpProtocol() {
+ cHandler = new AjpConnectionHandler(this);
+ setSoLinger(Constants.DEFAULT_CONNECTION_LINGER);
+ setSoTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT);
+ //setServerSoTimeout(Constants.DEFAULT_SERVER_SOCKET_TIMEOUT);
+ setTcpNoDelay(Constants.DEFAULT_TCP_NO_DELAY);
+ }
+
+
+ // ----------------------------------------------------- Instance Variables
+
+
+ protected ObjectName tpOname;
+
+
+ protected ObjectName rgOname;
+
+
+ /**
+ * Associated java.io endpoint.
+ */
+ protected JIoEndpoint endpoint = new JIoEndpoint();
+
+
+ /**
+ * Configuration attributes.
+ */
+ protected Hashtable attributes = new Hashtable();
+
+
+ /**
+ * Adapter which will process the requests recieved by this endpoint.
+ */
+ private Adapter adapter;
+
+
+ /**
+ * Connection handler for AJP.
+ */
+ private AjpConnectionHandler cHandler;
+
+
+ // --------------------------------------------------------- Public Methods
+
+
+ /**
+ * Pass config info
+ */
+ public void setAttribute(String name, Object value) {
+ attributes.put(name, value);
+ }
+
+ public Object getAttribute(String key) {
+ return attributes.get(key);
+ }
+
+
+ public Iterator getAttributeNames() {
+ return attributes.keySet().iterator();
+ }
+
+
+ /**
+ * The adapter, used to call the connector
+ */
+ public void setAdapter(Adapter adapter) {
+ this.adapter = adapter;
+ }
+
+
+ public Adapter getAdapter() {
+ return adapter;
+ }
+
+
+ public boolean hasIoEvents() {
+ return false;
+ }
+
+ public RequestGroupInfo getRequestGroupInfo() {
+ return cHandler.global;
+ }
+
+
+ /** Start the protocol
+ */
+ public void init() throws Exception {
+ endpoint.setName(getName());
+ endpoint.setHandler(cHandler);
+
+ try {
+ endpoint.init();
+ } catch (Exception ex) {
+ CoyoteLogger.AJP_LOGGER.errorInitializingEndpoint(ex);
+ throw ex;
+ }
+ }
+
+
+ public void start() throws Exception {
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER) {
+ if (this.domain != null ) {
+ try {
+ tpOname = new ObjectName
+ (domain + ":" + "type=ThreadPool,name=" + getJmxName());
+ Registry.getRegistry(null, null)
+ .registerComponent(endpoint, tpOname, null );
+ } catch (Exception e) {
+ CoyoteLogger.AJP_LOGGER.errorRegisteringPool(e);
+ }
+ rgOname = new ObjectName
+ (domain + ":type=GlobalRequestProcessor,name=" + getJmxName());
+ Registry.getRegistry(null, null).registerComponent
+ (cHandler.global, rgOname, null);
+ }
+ }
+ try {
+ endpoint.start();
+ } catch (Exception ex) {
+ CoyoteLogger.AJP_LOGGER.errorStartingEndpoint(ex);
+ throw ex;
+ }
+ CoyoteLogger.AJP_LOGGER.startingAjpProtocol(getName());
+ }
+
+ public void pause() throws Exception {
+ try {
+ endpoint.pause();
+ } catch (Exception ex) {
+ CoyoteLogger.AJP_LOGGER.errorPausingEndpoint(ex);
+ throw ex;
+ }
+ // Wait for a while until all the processors are idle
+ RequestInfo[] states = cHandler.global.getRequestProcessors();
+ int retry = 0;
+ boolean done = false;
+ while (!done && retry < org.apache.coyote.Constants.MAX_PAUSE_WAIT) {
+ retry++;
+ done = true;
+ for (int i = 0; i < states.length; i++) {
+ if (states[i].getStage() == org.apache.coyote.Constants.STAGE_SERVICE) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ ;
+ }
+ done = false;
+ break;
+ }
+ }
+ }
+ CoyoteLogger.AJP_LOGGER.pausingAjpProtocol(getName());
+ }
+
+ public void resume() throws Exception {
+ try {
+ endpoint.resume();
+ } catch (Exception ex) {
+ CoyoteLogger.AJP_LOGGER.errorResumingEndpoint(ex);
+ throw ex;
+ }
+ CoyoteLogger.AJP_LOGGER.resumingAjpProtocol(getName());
+ }
+
+ public void destroy() throws Exception {
+ CoyoteLogger.AJP_LOGGER.stoppingAjpProtocol(getName());
+ endpoint.destroy();
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER) {
+ if (tpOname!=null)
+ Registry.getRegistry(null, null).unregisterComponent(tpOname);
+ if (rgOname != null)
+ Registry.getRegistry(null, null).unregisterComponent(rgOname);
+ }
+ }
+
+ public String getJmxName() {
+ String encodedAddr = "";
+ if (getAddress() != null) {
+ encodedAddr = "" + getAddress();
+ encodedAddr = URLEncoder.encode(encodedAddr.replace('/', '-').replace(':', '_').replace('%', '-')) + "-";
+ }
+ return ("ajp-" + encodedAddr + endpoint.getPort());
+ }
+
+ public String getName() {
+ String encodedAddr = "";
+ if (getAddress() != null) {
+ encodedAddr = getAddress() + ":";
+ }
+ return ("ajp-" + encodedAddr + endpoint.getPort());
+ }
+
+ /**
+ * Processor cache.
+ */
+ protected int processorCache = -1;
+ public int getProcessorCache() { return this.processorCache; }
+ public void setProcessorCache(int processorCache) { this.processorCache = processorCache; }
+
+ public Executor getExecutor() { return endpoint.getExecutor(); }
+ public void setExecutor(Executor executor) { endpoint.setExecutor(executor); }
+
+ public int getMaxThreads() { return endpoint.getMaxThreads(); }
+ public void setMaxThreads(int maxThreads) { endpoint.setMaxThreads(maxThreads); }
+
+ public int getThreadPriority() { return endpoint.getThreadPriority(); }
+ public void setThreadPriority(int threadPriority) { endpoint.setThreadPriority(threadPriority); }
+
+ public int getBacklog() { return endpoint.getBacklog(); }
+ public void setBacklog(int backlog) { endpoint.setBacklog(backlog); }
+
+ public int getPort() { return endpoint.getPort(); }
+ public void setPort(int port) { endpoint.setPort(port); }
+
+ public InetAddress getAddress() { return endpoint.getAddress(); }
+ public void setAddress(InetAddress ia) { endpoint.setAddress(ia); }
+
+ public boolean getTcpNoDelay() { return endpoint.getTcpNoDelay(); }
+ public void setTcpNoDelay(boolean tcpNoDelay) { endpoint.setTcpNoDelay(tcpNoDelay); }
+
+ public int getSoLinger() { return endpoint.getSoLinger(); }
+ public void setSoLinger(int soLinger) { endpoint.setSoLinger(soLinger); }
+
+ public int getSoTimeout() { return endpoint.getSoTimeout(); }
+ public void setSoTimeout(int soTimeout) { endpoint.setSoTimeout(soTimeout); }
+
+ public void setPollerSize(int pollerSize) { endpoint.setPollerSize(pollerSize); }
+ public int getPollerSize() { return endpoint.getPollerSize(); }
+
+ /**
+ * Should authentication be done in the native webserver layer,
+ * or in the Servlet container ?
+ */
+ protected boolean tomcatAuthentication = Constants.DEFAULT_TOMCAT_AUTHENTICATION;
+ public boolean getTomcatAuthentication() { return tomcatAuthentication; }
+ public void setTomcatAuthentication(boolean tomcatAuthentication) { this.tomcatAuthentication = tomcatAuthentication; }
+
+ /**
+ * Required secret.
+ */
+ protected String requiredSecret = null;
+ public void setRequiredSecret(String requiredSecret) { this.requiredSecret = requiredSecret; }
+
+ /**
+ * AJP packet size.
+ */
+ protected int packetSize = Constants.MAX_PACKET_SIZE;
+ public int getPacketSize() { return packetSize; }
+ public void setPacketSize(int packetSize) { this.packetSize = packetSize; }
+
+
+ /**
+ * The number of seconds Tomcat will wait for a subsequent request
+ * before closing the connection.
+ */
+ protected int keepAliveTimeout = -1;
+ public int getKeepAliveTimeout() { return keepAliveTimeout; }
+ public void setKeepAliveTimeout(int timeout) { keepAliveTimeout = timeout; }
+
+
+ // -------------------------------------- AjpConnectionHandler Inner Class
+
+
+ protected static class AjpConnectionHandler implements Handler {
+
+ protected AjpProtocol proto;
+ protected AtomicLong registerCount = new AtomicLong(0);
+ protected RequestGroupInfo global = new RequestGroupInfo();
+
+ protected ConcurrentHashMap<Socket, AjpProcessor> connections =
+ new ConcurrentHashMap<Socket, AjpProcessor>();
+ protected ConcurrentLinkedQueue<AjpProcessor> recycledProcessors =
+ new ConcurrentLinkedQueue<AjpProcessor>() {
+ protected AtomicInteger size = new AtomicInteger(0);
+ public boolean offer(AjpProcessor processor) {
+ boolean offer = (proto.processorCache == -1) ? true : (size.get() < proto.processorCache);
+ //avoid over growing our cache or add after we have stopped
+ boolean result = false;
+ if ( offer ) {
+ result = super.offer(processor);
+ if ( result ) {
+ size.incrementAndGet();
+ }
+ }
+ if (!result) unregister(processor);
+ return result;
+ }
+
+ public AjpProcessor poll() {
+ AjpProcessor result = super.poll();
+ if ( result != null ) {
+ size.decrementAndGet();
+ }
+ return result;
+ }
+
+ public void clear() {
+ AjpProcessor next = poll();
+ while ( next != null ) {
+ unregister(next);
+ next = poll();
+ }
+ super.clear();
+ size.set(0);
+ }
+ };
+
+ public AjpConnectionHandler(AjpProtocol proto) {
+ this.proto = proto;
+ }
+
+ public SocketState event(Socket socket, SocketStatus status) {
+ AjpProcessor result = connections.get(socket);
+ SocketState state = SocketState.CLOSED;
+ if (result != null) {
+ result.startProcessing();
+ // Call the appropriate event
+ try {
+ state = result.event(status);
+ } catch (java.net.SocketException e) {
+ // SocketExceptions are normal
+ CoyoteLogger.AJP_LOGGER.socketException(e);
+ } catch (java.io.IOException e) {
+ // IOExceptions are normal
+ CoyoteLogger.AJP_LOGGER.socketException(e);
+ }
+ // Future developers: if you discover any other
+ // rare-but-nonfatal exceptions, catch them here, and log as
+ // above.
+ catch (Throwable e) {
+ // any other exception or error is odd. Here we log it
+ // with "ERROR" level, so it will show up even on
+ // less-than-verbose logs.
+ CoyoteLogger.AJP_LOGGER.socketError(e);
+ } finally {
+ if (state != SocketState.LONG) {
+ connections.remove(socket);
+ recycledProcessors.offer(result);
+ } else {
+ if (proto.endpoint.isRunning()) {
+ proto.endpoint.getEventPoller().add(socket, result.getTimeout(),
+ result.getResumeNotification(), false);
+ }
+ }
+ result.endProcessing();
+ }
+ }
+ return state;
+ }
+
+ public SocketState process(Socket socket) {
+ AjpProcessor processor = recycledProcessors.poll();
+ try {
+
+ if (processor == null) {
+ processor = createProcessor();
+ }
+
+ SocketState state = processor.process(socket);
+ if (state == SocketState.LONG) {
+ // Associate the connection with the processor. The next request
+ // processed by this thread will use either a new or a recycled
+ // processor.
+ connections.put(socket, processor);
+ proto.endpoint.getEventPoller().add(socket, processor.getTimeout(),
+ processor.getResumeNotification(), false);
+ } else {
+ recycledProcessors.offer(processor);
+ }
+ return state;
+
+ } catch(java.net.SocketException e) {
+ // SocketExceptions are normal
+ CoyoteLogger.AJP_LOGGER.socketException(e);
+ } catch (java.io.IOException e) {
+ // IOExceptions are normal
+ CoyoteLogger.AJP_LOGGER.socketException(e);
+ }
+ // Future developers: if you discover any other
+ // rare-but-nonfatal exceptions, catch them here, and log as
+ // above.
+ catch (Throwable e) {
+ // any other exception or error is odd. Here we log it
+ // with "ERROR" level, so it will show up even on
+ // less-than-verbose logs.
+ CoyoteLogger.AJP_LOGGER.socketError(e);
+ }
+ recycledProcessors.offer(processor);
+ return SocketState.CLOSED;
+ }
+
+ protected AjpProcessor createProcessor() {
+ AjpProcessor processor = new AjpProcessor(proto.packetSize, proto.endpoint);
+ processor.setAdapter(proto.adapter);
+ processor.setTomcatAuthentication(proto.tomcatAuthentication);
+ processor.setRequiredSecret(proto.requiredSecret);
+ processor.setKeepAliveTimeout(proto.keepAliveTimeout);
+ register(processor);
+ return processor;
+ }
+
+ protected void register(AjpProcessor processor) {
+ RequestInfo rp = processor.getRequest().getRequestProcessor();
+ rp.setGlobalProcessor(global);
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER && proto.getDomain() != null) {
+ synchronized (this) {
+ try {
+ long count = registerCount.incrementAndGet();
+ ObjectName rpName = new ObjectName
+ (proto.getDomain() + ":type=RequestProcessor,worker="
+ + proto.getJmxName() + ",name=AjpRequest" + count);
+ Registry.getRegistry(null, null).registerComponent(rp, rpName, null);
+ rp.setRpName(rpName);
+ } catch (Exception e) {
+ CoyoteLogger.AJP_LOGGER.errorRegisteringRequest(e);
+ }
+ }
+ }
+ }
+
+ protected void unregister(AjpProcessor processor) {
+ RequestInfo rp = processor.getRequest().getRequestProcessor();
+ rp.setGlobalProcessor(null);
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER && proto.getDomain() != null) {
+ synchronized (this) {
+ try {
+ ObjectName rpName = rp.getRpName();
+ Registry.getRegistry(null, null).unregisterComponent(rpName);
+ rp.setRpName(null);
+ } catch (Exception e) {
+ CoyoteLogger.AJP_LOGGER.errorUnregisteringRequest(e);
+ }
+ }
+ }
+ }
+
+ }
+
+
+ // -------------------- Various implementation classes --------------------
+
+
+ protected String domain;
+ protected ObjectName oname;
+ protected MBeanServer mserver;
+
+ public ObjectName getObjectName() {
+ return oname;
+ }
+
+ public String getDomain() {
+ return domain;
+ }
+
+ public ObjectName preRegister(MBeanServer server,
+ ObjectName name) throws Exception {
+ oname=name;
+ mserver=server;
+ domain=name.getDomain();
+ return name;
+ }
+
+ public void postRegister(Boolean registrationDone) {
+ }
+
+ public void preDeregister() throws Exception {
+ }
+
+ public void postDeregister() {
+ }
+
+
+}
Modified: branches/7.2.x/src/main/java/org/apache/coyote/ajp/Constants.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/ajp/Constants.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/coyote/ajp/Constants.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -44,6 +44,8 @@
public static final int DEFAULT_CONNECTION_UPLOAD_TIMEOUT = 300000;
public static final int DEFAULT_SERVER_SOCKET_TIMEOUT = 0;
public static final boolean DEFAULT_TCP_NO_DELAY = true;
+ public static final boolean DEFAULT_TOMCAT_AUTHENTICATION =
+ Boolean.valueOf(System.getProperty("org.apache.coyote.ajp.DEFAULT_TOMCAT_AUTHENTICATION", "true")).booleanValue();
// Prefix codes for message types from server to container
public static final byte JK_AJP13_FORWARD_REQUEST = 2;
Modified: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11NioProtocol.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -41,7 +41,6 @@
import org.apache.tomcat.util.modeler.Registry;
import org.apache.tomcat.util.net.NioChannel;
import org.apache.tomcat.util.net.NioEndpoint;
-import org.apache.tomcat.util.net.SSLImplementation;
import org.apache.tomcat.util.net.SocketStatus;
import org.apache.tomcat.util.net.jsse.NioJSSEImplementation;
import org.apache.tomcat.util.net.jsse.NioJSSESocketChannelFactory;
@@ -92,9 +91,9 @@
// Verify the validity of the configured socket factory
try {
if (isSSLEnabled()) {
- sslImplementation = SSLImplementation.getInstance(NioJSSEImplementation.class
- .getName());
- socketFactory = sslImplementation.getServerSocketChannelFactory();
+ sslImplementation = new NioJSSEImplementation();
+ //Possible pluggability ? SSLImplementation.getInstance(NioJSSEImplementation.class.getName());
+ socketFactory = ((NioJSSEImplementation) sslImplementation).getServerSocketChannelFactory();
endpoint.setServerSocketChannelFactory(socketFactory);
}
} catch (Exception ex) {
@@ -896,7 +895,7 @@
}
if (proto.secure && (proto.sslImplementation != null)) {
- processor.setSSLSupport(proto.sslImplementation.getSSLSupport(channel));
+ processor.setSSLSupport(((NioJSSEImplementation) proto.sslImplementation).getSSLSupport(channel));
} else {
processor.setSSLSupport(null);
}
Added: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Processor.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,1721 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.apache.coyote.http11;
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.util.Locale;
+import java.util.StringTokenizer;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+import org.apache.coyote.ActionCode;
+import org.apache.coyote.ActionHook;
+import org.apache.coyote.Adapter;
+import org.apache.coyote.Request;
+import org.apache.coyote.RequestInfo;
+import org.apache.coyote.Response;
+import org.apache.coyote.http11.filters.BufferedInputFilter;
+import org.apache.coyote.http11.filters.ChunkedInputFilter;
+import org.apache.coyote.http11.filters.ChunkedOutputFilter;
+import org.apache.coyote.http11.filters.GzipOutputFilter;
+import org.apache.coyote.http11.filters.IdentityInputFilter;
+import org.apache.coyote.http11.filters.IdentityOutputFilter;
+import org.apache.coyote.http11.filters.SavedRequestInputFilter;
+import org.apache.coyote.http11.filters.VoidInputFilter;
+import org.apache.coyote.http11.filters.VoidOutputFilter;
+import org.apache.tomcat.util.buf.Ascii;
+import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.HexUtils;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.FastHttpDateFormat;
+import org.apache.tomcat.util.http.MimeHeaders;
+import org.apache.tomcat.util.net.JIoEndpoint;
+import org.apache.tomcat.util.net.SSLSupport;
+import org.apache.tomcat.util.net.SocketStatus;
+import org.apache.tomcat.util.net.JIoEndpoint.Handler.SocketState;
+import org.jboss.web.CoyoteLogger;
+
+
+/**
+ * Processes HTTP requests.
+ *
+ * @author Remy Maucherat
+ */
+public class Http11Processor implements ActionHook {
+
+
+ protected static final boolean CHUNK_ON_CLOSE =
+ Boolean.valueOf(System.getProperty("org.apache.coyote.http11.Http11Processor.CHUNK_ON_CLOSE", "false")).booleanValue();
+
+
+ // ------------------------------------------------------------ Constructor
+
+
+ public Http11Processor(int headerBufferSize, JIoEndpoint endpoint) {
+
+ this.endpoint = endpoint;
+
+ request = new Request();
+ inputBuffer = new InternalInputBuffer(request, headerBufferSize);
+ request.setInputBuffer(inputBuffer);
+
+ response = new Response();
+ response.setHook(this);
+ outputBuffer = new InternalOutputBuffer(response, headerBufferSize);
+ response.setOutputBuffer(outputBuffer);
+ request.setResponse(response);
+
+ initializeFilters();
+
+ // Cause loading of HexUtils
+ int foo = HexUtils.DEC[0];
+
+ // Cause loading of FastHttpDateFormat
+ FastHttpDateFormat.getCurrentDate();
+
+ }
+
+
+ // ----------------------------------------------------- Instance Variables
+
+
+ /**
+ * Associated adapter.
+ */
+ protected Adapter adapter = null;
+
+
+ /**
+ * Request object.
+ */
+ protected Request request = null;
+
+
+ /**
+ * Response object.
+ */
+ protected Response response = null;
+
+
+ /**
+ * Input.
+ */
+ protected InternalInputBuffer inputBuffer = null;
+
+
+ /**
+ * Output.
+ */
+ protected InternalOutputBuffer outputBuffer = null;
+
+
+ /**
+ * Error flag.
+ */
+ protected boolean error = false;
+
+
+ /**
+ * Keep-alive.
+ */
+ protected boolean keepAlive = true;
+
+
+ /**
+ * HTTP/1.1 flag.
+ */
+ protected boolean http11 = true;
+
+
+ /**
+ * HTTP/0.9 flag.
+ */
+ protected boolean http09 = false;
+
+
+ /**
+ * Content delimitator for the request (if false, the connection will
+ * be closed at the end of the request).
+ */
+ protected boolean contentDelimitation = true;
+
+
+ /**
+ * Is there an expectation ?
+ */
+ protected boolean expectation = false;
+
+
+ /**
+ * List of restricted user agents.
+ */
+ protected Pattern[] restrictedUserAgents = null;
+
+
+ /**
+ * Maximum number of Keep-Alive requests to honor.
+ */
+ protected int maxKeepAliveRequests = -1;
+
+ /**
+ * The number of seconds Tomcat will wait for a subsequent request
+ * before closing the connection.
+ */
+ protected int keepAliveTimeout = -1;
+
+
+ /**
+ * SSL information.
+ */
+ protected SSLSupport sslSupport;
+
+
+ /**
+ * Socket associated with the current connection.
+ */
+ protected Socket socket;
+
+
+ /**
+ * Remote Address associated with the current connection.
+ */
+ protected String remoteAddr = null;
+
+
+ /**
+ * Remote Host associated with the current connection.
+ */
+ protected String remoteHost = null;
+
+
+ /**
+ * Local Host associated with the current connection.
+ */
+ protected String localName = null;
+
+
+
+ /**
+ * Local port to which the socket is connected
+ */
+ protected int localPort = -1;
+
+
+ /**
+ * Remote port to which the socket is connected
+ */
+ protected int remotePort = -1;
+
+
+ /**
+ * The local Host address.
+ */
+ protected String localAddr = null;
+
+
+ /**
+ * Flag to disable setting a different time-out on uploads.
+ */
+ protected boolean disableUploadTimeout = false;
+
+
+ /**
+ * Allowed compression level.
+ */
+ protected int compressionLevel = 0;
+
+
+ /**
+ * Minimum contentsize to make compression.
+ */
+ protected int compressionMinSize = 2048;
+
+
+ /**
+ * Socket buffering.
+ */
+ protected int socketBuffer = -1;
+
+
+ /**
+ * Max saved post size.
+ */
+ protected int maxSavePostSize = 4 * 1024;
+
+
+ /**
+ * List of user agents to not use gzip with
+ */
+ protected Pattern noCompressionUserAgents[] = null;
+
+ /**
+ * List of MIMES which could be gzipped
+ */
+ protected String[] compressableMimeTypes =
+ { "text/html", "text/xml", "text/plain" };
+
+
+ /**
+ * Host name (used to avoid useless B2C conversion on the host name).
+ */
+ protected char[] hostNameC = new char[0];
+
+
+ /**
+ * Associated endpoint.
+ */
+ protected JIoEndpoint endpoint;
+
+
+ /**
+ * Allow a customized the server header for the tin-foil hat folks.
+ */
+ protected String server = null;
+
+
+ /**
+ * Event used.
+ */
+ protected boolean event = false;
+
+
+ /**
+ * True if a resume has been requested.
+ */
+ protected boolean resumeNotification = false;
+
+
+ /**
+ * Event processing.
+ */
+ protected boolean eventProcessing = true;
+ public void startProcessing() { eventProcessing = true; }
+ public void endProcessing() { eventProcessing = false; }
+
+
+ // ------------------------------------------------------------- Properties
+
+
+ /**
+ * Return compression level.
+ */
+ public String getCompression() {
+ switch (compressionLevel) {
+ case 0:
+ return "off";
+ case 1:
+ return "on";
+ case 2:
+ return "force";
+ }
+ return "off";
+ }
+
+
+ /**
+ * Set compression level.
+ */
+ public void setCompression(String compression) {
+ if (compression.equals("on")) {
+ this.compressionLevel = 1;
+ } else if (compression.equals("force")) {
+ this.compressionLevel = 2;
+ } else if (compression.equals("off")) {
+ this.compressionLevel = 0;
+ } else {
+ try {
+ // Try to parse compression as an int, which would give the
+ // minimum compression size
+ compressionMinSize = Integer.parseInt(compression);
+ this.compressionLevel = 1;
+ } catch (Exception e) {
+ this.compressionLevel = 0;
+ }
+ }
+ }
+
+ /**
+ * Set Minimum size to trigger compression.
+ */
+ public void setCompressionMinSize(int compressionMinSize) {
+ this.compressionMinSize = compressionMinSize;
+ }
+
+
+ /**
+ * Add user-agent for which gzip compression didn't works
+ * The user agent String given will be exactly matched
+ * to the user-agent header submitted by the client.
+ *
+ * @param userAgent user-agent string
+ */
+ public void addNoCompressionUserAgent(String userAgent) {
+ try {
+ Pattern nRule = Pattern.compile(userAgent);
+ noCompressionUserAgents =
+ addREArray(noCompressionUserAgents, nRule);
+ } catch (PatternSyntaxException pse) {
+ CoyoteLogger.HTTP_LOGGER.errorParsingRegexp(userAgent, pse);
+ }
+ }
+
+
+ /**
+ * Set no compression user agent list (this method is best when used with
+ * a large number of connectors, where it would be better to have all of
+ * them referenced a single array).
+ */
+ public void setNoCompressionUserAgents(Pattern[] noCompressionUserAgents) {
+ this.noCompressionUserAgents = noCompressionUserAgents;
+ }
+
+
+ /**
+ * Set no compression user agent list.
+ * List contains users agents separated by ',' :
+ *
+ * ie: "gorilla,desesplorer,tigrus"
+ */
+ public void setNoCompressionUserAgents(String noCompressionUserAgents) {
+ if (noCompressionUserAgents != null) {
+ StringTokenizer st = new StringTokenizer(noCompressionUserAgents, ",");
+
+ while (st.hasMoreTokens()) {
+ addNoCompressionUserAgent(st.nextToken().trim());
+ }
+ }
+ }
+
+ /**
+ * Add a mime-type which will be compressable
+ * The mime-type String will be exactly matched
+ * in the response mime-type header .
+ *
+ * @param mimeType mime-type string
+ */
+ public void addCompressableMimeType(String mimeType) {
+ compressableMimeTypes =
+ addStringArray(compressableMimeTypes, mimeType);
+ }
+
+
+ /**
+ * Set compressable mime-type list (this method is best when used with
+ * a large number of connectors, where it would be better to have all of
+ * them referenced a single array).
+ */
+ public void setCompressableMimeTypes(String[] compressableMimeTypes) {
+ this.compressableMimeTypes = compressableMimeTypes;
+ }
+
+
+ /**
+ * Set compressable mime-type list
+ * List contains users agents separated by ',' :
+ *
+ * ie: "text/html,text/xml,text/plain"
+ */
+ public void setCompressableMimeTypes(String compressableMimeTypes) {
+ if (compressableMimeTypes != null) {
+ this.compressableMimeTypes = null;
+ StringTokenizer st = new StringTokenizer(compressableMimeTypes, ",");
+ while (st.hasMoreTokens()) {
+ addCompressableMimeType(st.nextToken().trim());
+ }
+ }
+ }
+
+
+ /**
+ * Return the list of restricted user agents.
+ */
+ public String[] findCompressableMimeTypes() {
+ return (compressableMimeTypes);
+ }
+
+
+ /**
+ * Timeout.
+ */
+ protected int timeout = -1;
+ public void setTimeout(int timeout) { this.timeout = timeout; }
+ public int getTimeout() { return timeout; }
+
+
+ // --------------------------------------------------------- Public Methods
+
+
+ /**
+ * Add input or output filter.
+ *
+ * @param className class name of the filter
+ */
+ protected void addFilter(String className) {
+ try {
+ Class<?> clazz = Class.forName(className);
+ Object obj = clazz.newInstance();
+ if (obj instanceof InputFilter) {
+ inputBuffer.addFilter((InputFilter) obj);
+ } else if (obj instanceof OutputFilter) {
+ outputBuffer.addFilter((OutputFilter) obj);
+ } else {
+ CoyoteLogger.HTTP_LOGGER.unknownFilter(className);
+ }
+ } catch (Exception e) {
+ CoyoteLogger.HTTP_LOGGER.errorInitializingFilter(className, e);
+ }
+ }
+
+
+ /**
+ * General use method
+ *
+ * @param sArray the StringArray
+ * @param value string
+ */
+ private String[] addStringArray(String sArray[], String value) {
+ String[] result = null;
+ if (sArray == null) {
+ result = new String[1];
+ result[0] = value;
+ }
+ else {
+ result = new String[sArray.length + 1];
+ for (int i = 0; i < sArray.length; i++)
+ result[i] = sArray[i];
+ result[sArray.length] = value;
+ }
+ return result;
+ }
+
+
+ /**
+ * General use method
+ *
+ * @param rArray the REArray
+ * @param value Obj
+ */
+ private Pattern[] addREArray(Pattern rArray[], Pattern value) {
+ Pattern[] result = null;
+ if (rArray == null) {
+ result = new Pattern[1];
+ result[0] = value;
+ }
+ else {
+ result = new Pattern[rArray.length + 1];
+ for (int i = 0; i < rArray.length; i++)
+ result[i] = rArray[i];
+ result[rArray.length] = value;
+ }
+ return result;
+ }
+
+
+ /**
+ * Checks if any entry in the string array starts with the specified value
+ *
+ * @param sArray the StringArray
+ * @param value string
+ */
+ private boolean startsWithStringArray(String sArray[], String value) {
+ if (value == null)
+ return false;
+ for (int i = 0; i < sArray.length; i++) {
+ if (value.startsWith(sArray[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ /**
+ * Add restricted user-agent (which will downgrade the connector
+ * to HTTP/1.0 mode). The user agent String given will be matched
+ * via regexp to the user-agent header submitted by the client.
+ *
+ * @param userAgent user-agent string
+ */
+ public void addRestrictedUserAgent(String userAgent) {
+ try {
+ Pattern nRule = Pattern.compile(userAgent);
+ restrictedUserAgents = addREArray(restrictedUserAgents, nRule);
+ } catch (PatternSyntaxException pse) {
+ CoyoteLogger.HTTP_LOGGER.errorParsingRegexp(userAgent, pse);
+ }
+ }
+
+
+ /**
+ * Set restricted user agent list (this method is best when used with
+ * a large number of connectors, where it would be better to have all of
+ * them referenced a single array).
+ */
+ public void setRestrictedUserAgents(Pattern[] restrictedUserAgents) {
+ this.restrictedUserAgents = restrictedUserAgents;
+ }
+
+
+ /**
+ * Set restricted user agent list (which will downgrade the connector
+ * to HTTP/1.0 mode). List contains users agents separated by ',' :
+ *
+ * ie: "gorilla,desesplorer,tigrus"
+ */
+ public void setRestrictedUserAgents(String restrictedUserAgents) {
+ if (restrictedUserAgents != null) {
+ StringTokenizer st =
+ new StringTokenizer(restrictedUserAgents, ",");
+ while (st.hasMoreTokens()) {
+ addRestrictedUserAgent(st.nextToken().trim());
+ }
+ }
+ }
+
+
+ /**
+ * Return the list of restricted user agents.
+ */
+ public String[] findRestrictedUserAgents() {
+ String[] sarr = new String [restrictedUserAgents.length];
+
+ for (int i = 0; i < restrictedUserAgents.length; i++)
+ sarr[i] = restrictedUserAgents[i].toString();
+
+ return (sarr);
+ }
+
+
+ /**
+ * Set the maximum number of Keep-Alive requests to honor.
+ * This is to safeguard from DoS attacks. Setting to a negative
+ * value disables the check.
+ */
+ public void setMaxKeepAliveRequests(int mkar) {
+ maxKeepAliveRequests = mkar;
+ }
+
+
+ /**
+ * Return the number of Keep-Alive requests that we will honor.
+ */
+ public int getMaxKeepAliveRequests() {
+ return maxKeepAliveRequests;
+ }
+
+ /**
+ * Set the Keep-Alive timeout.
+ */
+ public void setKeepAliveTimeout(int timeout) {
+ keepAliveTimeout = timeout;
+ }
+
+
+ /**
+ * Return the number Keep-Alive timeout.
+ */
+ public int getKeepAliveTimeout() {
+ return keepAliveTimeout;
+ }
+
+
+ /**
+ * Set the maximum size of a POST which will be buffered in SSL mode.
+ */
+ public void setMaxSavePostSize(int msps) {
+ maxSavePostSize = msps;
+ }
+
+
+ /**
+ * Return the maximum size of a POST which will be buffered in SSL mode.
+ */
+ public int getMaxSavePostSize() {
+ return maxSavePostSize;
+ }
+
+
+ /**
+ * Set the SSL information for this HTTP connection.
+ */
+ public void setSSLSupport(SSLSupport sslSupport) {
+ this.sslSupport = sslSupport;
+ }
+
+
+ /**
+ * Set the flag to control upload time-outs.
+ */
+ public void setDisableUploadTimeout(boolean isDisabled) {
+ disableUploadTimeout = isDisabled;
+ }
+
+ /**
+ * Get the flag that controls upload time-outs.
+ */
+ public boolean getDisableUploadTimeout() {
+ return disableUploadTimeout;
+ }
+
+ public boolean getResumeNotification() {
+ return resumeNotification;
+ }
+
+
+ /**
+ * Set the socket buffer flag.
+ */
+ public void setSocketBuffer(int socketBuffer) {
+ this.socketBuffer = socketBuffer;
+ outputBuffer.setSocketBuffer(socketBuffer);
+ }
+
+ /**
+ * Get the socket buffer flag.
+ */
+ public int getSocketBuffer() {
+ return socketBuffer;
+ }
+
+
+ /**
+ * Set the server header name.
+ */
+ public void setServer( String server ) {
+ if (server==null || server.equals("")) {
+ this.server = null;
+ } else {
+ this.server = server;
+ }
+ }
+
+ /**
+ * Get the server header name.
+ */
+ public String getServer() {
+ return server;
+ }
+
+
+ /** Get the request associated with this processor.
+ *
+ * @return The request
+ */
+ public Request getRequest() {
+ return request;
+ }
+
+ public SocketState event(SocketStatus status)
+ throws IOException {
+
+ RequestInfo rp = request.getRequestProcessor();
+ try {
+ if (status == SocketStatus.OPEN_CALLBACK) {
+ // The resume notification is now done
+ resumeNotification = false;
+ } else if (status == SocketStatus.ERROR) {
+ // Set error flag right away
+ error = true;
+ }
+ rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
+ error = !adapter.event(request, response, status);
+ } catch (InterruptedIOException e) {
+ error = true;
+ } catch (Throwable t) {
+ CoyoteLogger.HTTP_LOGGER.errorProcessingRequest(t);
+ // 500 - Internal Server Error
+ response.setStatus(500);
+ error = true;
+ }
+
+ rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
+
+ if (error) {
+ inputBuffer.nextRequest();
+ outputBuffer.nextRequest();
+ recycle();
+ return SocketState.CLOSED;
+ } else if (!event) {
+ endRequest();
+ boolean pipelined = inputBuffer.nextRequest();
+ outputBuffer.nextRequest();
+ recycle();
+ return (pipelined || !keepAlive) ? SocketState.CLOSED : SocketState.OPEN;
+ } else {
+ return SocketState.LONG;
+ }
+ }
+
+ /**
+ * Process pipelined HTTP requests on the specified socket.
+ *
+ * @param socket Socket from which the HTTP requests will be read
+ * and the HTTP responses will be written.
+ *
+ * @throws IOException error during an I/O operation
+ */
+ public SocketState process(Socket socket)
+ throws IOException {
+ RequestInfo rp = request.getRequestProcessor();
+ rp.setStage(org.apache.coyote.Constants.STAGE_PARSE);
+
+ // Set the remote address
+ remoteAddr = null;
+ remoteHost = null;
+ localAddr = null;
+ localName = null;
+ remotePort = -1;
+ localPort = -1;
+
+ // Setting up the I/O
+ this.socket = socket;
+ inputBuffer.setInputStream(socket.getInputStream());
+ outputBuffer.setOutputStream(socket.getOutputStream());
+
+ // Error flag
+ error = false;
+ keepAlive = true;
+
+ int keepAliveLeft = maxKeepAliveRequests;
+ int soTimeout = socket.getSoTimeout();
+
+ int threadRatio = (endpoint.getCurrentThreadsBusy() * 100)
+ / endpoint.getMaxThreads();
+ if (threadRatio > 75) {
+ keepAliveLeft = 1;
+ }
+
+ boolean keptAlive = false;
+
+ while (!error && keepAlive && !event) {
+
+ // Parsing the request header
+ try {
+ if (!disableUploadTimeout && keptAlive) {
+ if (keepAliveTimeout > 0) {
+ socket.setSoTimeout(keepAliveTimeout);
+ }
+ else if (soTimeout > 0) {
+ socket.setSoTimeout(soTimeout);
+ }
+ }
+ inputBuffer.parseRequestLine();
+ request.setStartTime(System.currentTimeMillis());
+ keptAlive = true;
+ if (!disableUploadTimeout) {
+ socket.setSoTimeout(timeout);
+ }
+ inputBuffer.parseHeaders();
+ } catch (IOException e) {
+ error = true;
+ break;
+ } catch (Throwable t) {
+ CoyoteLogger.HTTP_LOGGER.errorParsingHeader(t);
+ // 400 - Bad Request
+ response.setStatus(400);
+ error = true;
+ }
+
+ // Setting up filters, and parse some request headers
+ rp.setStage(org.apache.coyote.Constants.STAGE_PREPARE);
+ try {
+ prepareRequest();
+ } catch (Throwable t) {
+ CoyoteLogger.HTTP_LOGGER.errorPreparingRequest(t);
+ // 400 - Internal Server Error
+ response.setStatus(400);
+ error = true;
+ }
+
+ if (maxKeepAliveRequests > 0 && --keepAliveLeft == 0)
+ keepAlive = false;
+
+ // Process the request in the adapter
+ if (!error) {
+ try {
+ rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
+ adapter.service(request, response);
+ // Handle when the response was committed before a serious
+ // error occurred. Throwing a ServletException should both
+ // set the status to 500 and set the errorException.
+ // If we fail here, then the response is likely already
+ // committed, so we can't try and set headers.
+ if(keepAlive && !error) { // Avoid checking twice.
+ error = response.getErrorException() != null ||
+ statusDropsConnection(response.getStatus());
+ }
+
+ } catch (InterruptedIOException e) {
+ error = true;
+ } catch (Throwable t) {
+ CoyoteLogger.HTTP_LOGGER.errorProcessingRequest(t);
+ // 500 - Internal Server Error
+ response.setStatus(500);
+ error = true;
+ }
+ }
+
+ // Finish the handling of the request
+ if (error) {
+ // If there is an unspecified error, the connection will be closed
+ inputBuffer.setSwallowInput(false);
+ }
+ if (!event) {
+ endRequest();
+ }
+
+ // If there was an error, make sure the request is counted as
+ // and error, and update the statistics counter
+ if (error) {
+ response.setStatus(500);
+ }
+ request.updateCounters();
+
+ if (!event) {
+ // Next request
+ inputBuffer.nextRequest();
+ outputBuffer.nextRequest();
+ }
+
+ rp.setStage(org.apache.coyote.Constants.STAGE_KEEPALIVE);
+
+ }
+
+ rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
+
+ if (event) {
+ if (error) {
+ inputBuffer.nextRequest();
+ outputBuffer.nextRequest();
+ recycle();
+ return SocketState.CLOSED;
+ } else {
+ eventProcessing = false;
+ return SocketState.LONG;
+ }
+ } else {
+ recycle();
+ return SocketState.CLOSED;
+ }
+
+ }
+
+
+ public void endRequest() {
+
+ // Finish the handling of the request
+ try {
+ inputBuffer.endRequest();
+ } catch (IOException e) {
+ error = true;
+ } catch (Throwable t) {
+ CoyoteLogger.HTTP_LOGGER.errorFinishingRequest(t);
+ // 500 - Internal Server Error
+ response.setStatus(500);
+ error = true;
+ }
+ try {
+ outputBuffer.endRequest();
+ } catch (IOException e) {
+ error = true;
+ } catch (Throwable t) {
+ CoyoteLogger.HTTP_LOGGER.errorFinishingResponse(t);
+ error = true;
+ }
+
+ }
+
+
+ public void recycle() {
+ inputBuffer.recycle();
+ outputBuffer.recycle();
+ this.socket = null;
+ sslSupport = null;
+ timeout = -1;
+ resumeNotification = false;
+ eventProcessing = true;
+ }
+
+
+ // ----------------------------------------------------- ActionHook Methods
+
+
+ /**
+ * Send an action to the connector.
+ *
+ * @param actionCode Type of the action
+ * @param param Action parameter
+ */
+ public void action(ActionCode actionCode, Object param) {
+
+ if (actionCode == ActionCode.ACTION_COMMIT) {
+ // Commit current response
+
+ if (response.isCommitted())
+ return;
+
+ // Validate and write response headers
+ prepareResponse();
+ try {
+ outputBuffer.commit();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+
+ } else if (actionCode == ActionCode.ACTION_ACK) {
+
+ // Acknowlege request
+
+ // Send a 100 status back if it makes sense (response not committed
+ // yet, and client specified an expectation for 100-continue)
+
+ if ((response.isCommitted()) || !expectation)
+ return;
+
+ inputBuffer.setSwallowInput(true);
+ try {
+ outputBuffer.sendAck();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+
+ } else if (actionCode == ActionCode.ACTION_CLIENT_FLUSH) {
+
+ try {
+ outputBuffer.flush();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ response.setErrorException(e);
+ }
+
+ } else if (actionCode == ActionCode.ACTION_CLOSE) {
+ // Close
+
+ // End the processing of the current request, and stop any further
+ // transactions with the client
+
+ try {
+ outputBuffer.endRequest();
+ } catch (IOException e) {
+ // Set error flag
+ error = true;
+ }
+
+ } else if (actionCode == ActionCode.ACTION_CUSTOM) {
+
+ // Do nothing
+
+ } else if (actionCode == ActionCode.ACTION_REQ_SSL_ATTRIBUTE ) {
+
+ try {
+ if (sslSupport != null) {
+ Object sslO = sslSupport.getCipherSuite();
+ if (sslO != null)
+ request.setAttribute
+ (org.apache.tomcat.util.net.Constants.CIPHER_SUITE_KEY, sslO);
+ sslO = sslSupport.getPeerCertificateChain(false);
+ if (sslO != null)
+ request.setAttribute
+ (org.apache.tomcat.util.net.Constants.CERTIFICATE_KEY, sslO);
+ sslO = sslSupport.getKeySize();
+ if (sslO != null)
+ request.setAttribute
+ (org.apache.tomcat.util.net.Constants.KEY_SIZE_KEY, sslO);
+ sslO = sslSupport.getSessionId();
+ if (sslO != null)
+ request.setAttribute
+ (org.apache.tomcat.util.net.Constants.SESSION_ID_KEY, sslO);
+ }
+ } catch (Exception e) {
+ CoyoteLogger.HTTP_LOGGER.errorGettingSslAttributes(e);
+ }
+
+ } else if (actionCode == ActionCode.ACTION_REQ_HOST_ADDR_ATTRIBUTE) {
+
+ if ((remoteAddr == null) && (socket != null)) {
+ InetAddress inetAddr = socket.getInetAddress();
+ if (inetAddr != null) {
+ remoteAddr = inetAddr.getHostAddress();
+ }
+ }
+ request.remoteAddr().setString(remoteAddr);
+
+ } else if (actionCode == ActionCode.ACTION_REQ_LOCAL_NAME_ATTRIBUTE) {
+
+ if ((localName == null) && (socket != null)) {
+ InetAddress inetAddr = socket.getLocalAddress();
+ if (inetAddr != null) {
+ localName = inetAddr.getHostName();
+ }
+ }
+ request.localName().setString(localName);
+
+ } else if (actionCode == ActionCode.ACTION_REQ_HOST_ATTRIBUTE) {
+
+ if ((remoteHost == null) && (socket != null)) {
+ InetAddress inetAddr = socket.getInetAddress();
+ if (inetAddr != null) {
+ remoteHost = inetAddr.getHostName();
+ }
+ if(remoteHost == null) {
+ if(remoteAddr != null) {
+ remoteHost = remoteAddr;
+ } else { // all we can do is punt
+ request.remoteHost().recycle();
+ }
+ }
+ }
+ request.remoteHost().setString(remoteHost);
+
+ } else if (actionCode == ActionCode.ACTION_REQ_LOCAL_ADDR_ATTRIBUTE) {
+
+ if (localAddr == null)
+ localAddr = socket.getLocalAddress().getHostAddress();
+
+ request.localAddr().setString(localAddr);
+
+ } else if (actionCode == ActionCode.ACTION_REQ_REMOTEPORT_ATTRIBUTE) {
+
+ if ((remotePort == -1 ) && (socket !=null)) {
+ remotePort = socket.getPort();
+ }
+ request.setRemotePort(remotePort);
+
+ } else if (actionCode == ActionCode.ACTION_REQ_LOCALPORT_ATTRIBUTE) {
+
+ if ((localPort == -1 ) && (socket !=null)) {
+ localPort = socket.getLocalPort();
+ }
+ request.setLocalPort(localPort);
+
+ } else if (actionCode == ActionCode.ACTION_REQ_SSL_CERTIFICATE) {
+ if( sslSupport != null) {
+ // Consume and buffer the request body, so that it does not
+ // interfere with the client's handshake messages
+ if (maxSavePostSize != 0) {
+ BufferedInputFilter buffredInputFilter = new BufferedInputFilter();
+ buffredInputFilter.setLimit(maxSavePostSize);
+ inputBuffer.addActiveFilter(buffredInputFilter);
+ }
+ try {
+ Object sslO = sslSupport.getPeerCertificateChain(true);
+ if( sslO != null) {
+ request.setAttribute
+ (org.apache.tomcat.util.net.Constants.CERTIFICATE_KEY, sslO);
+ }
+ } catch (Exception e) {
+ CoyoteLogger.HTTP_LOGGER.errorGettingSslAttributes(e);
+ }
+ }
+ } else if (actionCode == ActionCode.ACTION_REQ_SET_BODY_REPLAY) {
+ ByteChunk body = (ByteChunk) param;
+
+ InputFilter savedBody = new SavedRequestInputFilter(body);
+ savedBody.setRequest(request);
+
+ InternalInputBuffer internalBuffer = (InternalInputBuffer)
+ request.getInputBuffer();
+ internalBuffer.addActiveFilter(savedBody);
+ } else if (actionCode == ActionCode.ACTION_EVENT_BEGIN) {
+ event = true;
+ } else if (actionCode == ActionCode.ACTION_EVENT_END) {
+ event = false;
+ } else if (actionCode == ActionCode.ACTION_EVENT_SUSPEND) {
+ // No action needed
+ } else if (actionCode == ActionCode.ACTION_EVENT_RESUME) {
+ // An event is being processed already: adding for resume will be done
+ // when the socket gets back to the poller
+ if (!eventProcessing && !resumeNotification) {
+ endpoint.getEventPoller().add(socket, timeout, true, true);
+ }
+ resumeNotification = true;
+ } else if (actionCode == ActionCode.ACTION_EVENT_TIMEOUT) {
+ timeout = ((Integer) param).intValue();
+ }
+
+ }
+
+
+ // ------------------------------------------------------ Connector Methods
+
+
+ /**
+ * Set the associated adapter.
+ *
+ * @param adapter the new adapter
+ */
+ public void setAdapter(Adapter adapter) {
+ this.adapter = adapter;
+ }
+
+
+ /**
+ * Get the associated adapter.
+ *
+ * @return the associated adapter
+ */
+ public Adapter getAdapter() {
+ return adapter;
+ }
+
+
+ // ------------------------------------------------------ Protected Methods
+
+
+ /**
+ * After reading the request headers, we have to setup the request filters.
+ */
+ protected void prepareRequest() {
+
+ http11 = true;
+ http09 = false;
+ contentDelimitation = false;
+ expectation = false;
+ if (sslSupport != null) {
+ request.scheme().setString("https");
+ }
+ MessageBytes protocolMB = request.protocol();
+ if (protocolMB.equals(Constants.HTTP_11)) {
+ http11 = true;
+ protocolMB.setString(Constants.HTTP_11);
+ } else if (protocolMB.equals(Constants.HTTP_10)) {
+ http11 = false;
+ keepAlive = false;
+ protocolMB.setString(Constants.HTTP_10);
+ } else if (protocolMB.equals("")) {
+ // HTTP/0.9
+ http09 = true;
+ http11 = false;
+ keepAlive = false;
+ } else {
+ // Unsupported protocol
+ http11 = false;
+ error = true;
+ // Send 505; Unsupported HTTP version
+ response.setStatus(505);
+ }
+
+ MessageBytes methodMB = request.method();
+ if (methodMB.equals(Constants.GET)) {
+ methodMB.setString(Constants.GET);
+ } else if (methodMB.equals(Constants.POST)) {
+ methodMB.setString(Constants.POST);
+ }
+
+ MimeHeaders headers = request.getMimeHeaders();
+
+ // Check connection header
+ MessageBytes connectionValueMB = headers.getValue("connection");
+ if (connectionValueMB != null) {
+ ByteChunk connectionValueBC = connectionValueMB.getByteChunk();
+ if (findBytes(connectionValueBC, Constants.CLOSE_BYTES) != -1) {
+ keepAlive = false;
+ } else if (findBytes(connectionValueBC,
+ Constants.KEEPALIVE_BYTES) != -1) {
+ keepAlive = true;
+ }
+ }
+
+ MessageBytes expectMB = null;
+ if (http11)
+ expectMB = headers.getValue("expect");
+ if ((expectMB != null)
+ && (expectMB.indexOfIgnoreCase("100-continue", 0) != -1)) {
+ inputBuffer.setSwallowInput(false);
+ expectation = true;
+ }
+
+ // Check user-agent header
+ if ((restrictedUserAgents != null) && ((http11) || (keepAlive))) {
+ MessageBytes userAgentValueMB = headers.getValue("user-agent");
+ // Check in the restricted list, and adjust the http11
+ // and keepAlive flags accordingly
+ if(userAgentValueMB != null) {
+ String userAgentValue = userAgentValueMB.toString();
+ for (int i = 0; i < restrictedUserAgents.length; i++) {
+ if (restrictedUserAgents[i].matcher(userAgentValue).matches()) {
+ http11 = false;
+ keepAlive = false;
+ break;
+ }
+ }
+ }
+ }
+
+ // Check for a full URI (including protocol://host:port/)
+ ByteChunk uriBC = request.requestURI().getByteChunk();
+ if (uriBC.startsWithIgnoreCase("http", 0)) {
+
+ int pos = uriBC.indexOf("://", 0, 3, 4);
+ int uriBCStart = uriBC.getStart();
+ int slashPos = -1;
+ if (pos != -1) {
+ byte[] uriB = uriBC.getBytes();
+ slashPos = uriBC.indexOf('/', pos + 3);
+ if (slashPos == -1) {
+ slashPos = uriBC.getLength();
+ // Set URI as "/"
+ request.requestURI().setBytes
+ (uriB, uriBCStart + pos + 1, 1);
+ } else {
+ request.requestURI().setBytes
+ (uriB, uriBCStart + slashPos,
+ uriBC.getLength() - slashPos);
+ }
+ MessageBytes hostMB = headers.setValue("host");
+ hostMB.setBytes(uriB, uriBCStart + pos + 3,
+ slashPos - pos - 3);
+ }
+
+ }
+
+ // Input filter setup
+ InputFilter[] inputFilters = inputBuffer.getFilters();
+
+ // Parse transfer-encoding header
+ MessageBytes transferEncodingValueMB = null;
+ if (http11)
+ transferEncodingValueMB = headers.getValue("transfer-encoding");
+ if (transferEncodingValueMB != null) {
+ String transferEncodingValue = transferEncodingValueMB.toString();
+ // Parse the comma separated list. "identity" codings are ignored
+ int startPos = 0;
+ int commaPos = transferEncodingValue.indexOf(',');
+ String encodingName = null;
+ while (commaPos != -1) {
+ encodingName = transferEncodingValue.substring
+ (startPos, commaPos).toLowerCase(Locale.ENGLISH).trim();
+ if (!addInputFilter(inputFilters, encodingName)) {
+ // Unsupported transfer encoding
+ error = true;
+ // 501 - Unimplemented
+ response.setStatus(501);
+ }
+ startPos = commaPos + 1;
+ commaPos = transferEncodingValue.indexOf(',', startPos);
+ }
+ encodingName = transferEncodingValue.substring(startPos)
+ .toLowerCase(Locale.ENGLISH).trim();
+ if (!addInputFilter(inputFilters, encodingName)) {
+ // Unsupported transfer encoding
+ error = true;
+ // 501 - Unimplemented
+ response.setStatus(501);
+ }
+ }
+
+ // Parse content-length header
+ long contentLength = request.getContentLengthLong();
+ if (contentLength >= 0 && !contentDelimitation) {
+ inputBuffer.addActiveFilter
+ (inputFilters[Constants.IDENTITY_FILTER]);
+ contentDelimitation = true;
+ }
+
+ MessageBytes valueMB = headers.getValue("host");
+
+ // Check host header
+ if (http11 && (valueMB == null)) {
+ error = true;
+ // 400 - Bad request
+ response.setStatus(400);
+ }
+
+ parseHost(valueMB);
+
+ if (!contentDelimitation) {
+ // If there's no content length
+ // (broken HTTP/1.0 or HTTP/1.1), assume
+ // the client is not broken and didn't send a body
+ inputBuffer.addActiveFilter
+ (inputFilters[Constants.VOID_FILTER]);
+ contentDelimitation = true;
+ }
+
+ }
+
+
+ /**
+ * Parse host.
+ */
+ protected void parseHost(MessageBytes valueMB) {
+
+ if (valueMB == null || valueMB.isNull()) {
+ // HTTP/1.0
+ // Default is what the socket tells us. Overriden if a host is
+ // found/parsed
+ request.setServerPort(socket.getLocalPort());
+ InetAddress localAddress = socket.getLocalAddress();
+ // Setting the socket-related fields. The adapter doesn't know
+ // about socket.
+ request.serverName().setString(localAddress.getHostName());
+ return;
+ }
+
+ ByteChunk valueBC = valueMB.getByteChunk();
+ byte[] valueB = valueBC.getBytes();
+ int valueL = valueBC.getLength();
+ int valueS = valueBC.getStart();
+ int colonPos = -1;
+ if (hostNameC.length < valueL) {
+ hostNameC = new char[valueL];
+ }
+
+ boolean ipv6 = (valueB[valueS] == '[');
+ boolean bracketClosed = false;
+ for (int i = 0; i < valueL; i++) {
+ char b = (char) valueB[i + valueS];
+ hostNameC[i] = b;
+ if (b == ']') {
+ bracketClosed = true;
+ } else if (b == ':') {
+ if (!ipv6 || bracketClosed) {
+ colonPos = i;
+ break;
+ }
+ }
+ }
+
+ if (colonPos < 0) {
+ if (sslSupport == null) {
+ // 80 - Default HTTP port
+ request.setServerPort(80);
+ } else {
+ // 443 - Default HTTPS port
+ request.setServerPort(443);
+ }
+ request.serverName().setChars(hostNameC, 0, valueL);
+ } else {
+
+ request.serverName().setChars(hostNameC, 0, colonPos);
+
+ int port = 0;
+ int mult = 1;
+ for (int i = valueL - 1; i > colonPos; i--) {
+ int charValue = HexUtils.DEC[valueB[i + valueS] & 0xff];
+ if (charValue == -1) {
+ // Invalid character
+ error = true;
+ // 400 - Bad request
+ response.setStatus(400);
+ break;
+ }
+ port = port + (charValue * mult);
+ mult = 10 * mult;
+ }
+ request.setServerPort(port);
+
+ }
+
+ }
+
+
+ /**
+ * Check for compression
+ */
+ private boolean isCompressable() {
+
+ // Nope Compression could works in HTTP 1.0 also
+ // cf: mod_deflate
+
+ // Compression only since HTTP 1.1
+ // if (! http11)
+ // return false;
+
+ // Check if browser support gzip encoding
+ MessageBytes acceptEncodingMB =
+ request.getMimeHeaders().getValue("accept-encoding");
+
+ if ((acceptEncodingMB == null)
+ || (acceptEncodingMB.indexOf("gzip") == -1))
+ return false;
+
+ // Check if content is not allready gzipped
+ MessageBytes contentEncodingMB =
+ response.getMimeHeaders().getValue("Content-Encoding");
+
+ if ((contentEncodingMB != null)
+ && (contentEncodingMB.indexOf("gzip") != -1))
+ return false;
+
+ // If force mode, allways compress (test purposes only)
+ if (compressionLevel == 2)
+ return true;
+
+ // Check for incompatible Browser
+ if (noCompressionUserAgents != null) {
+ MessageBytes userAgentValueMB =
+ request.getMimeHeaders().getValue("user-agent");
+ if(userAgentValueMB != null) {
+ String userAgentValue = userAgentValueMB.toString();
+
+ // If one Regexp rule match, disable compression
+ for (int i = 0; i < noCompressionUserAgents.length; i++)
+ if (noCompressionUserAgents[i].matcher(userAgentValue).matches())
+ return false;
+ }
+ }
+
+ // Check if suffisant len to trig the compression
+ long contentLength = response.getContentLengthLong();
+ if ((contentLength == -1)
+ || (contentLength > compressionMinSize)) {
+ // Check for compatible MIME-TYPE
+ if (compressableMimeTypes != null) {
+ return (startsWithStringArray(compressableMimeTypes,
+ response.getContentType()));
+ }
+ }
+
+ return false;
+ }
+
+
+ /**
+ * When committing the response, we have to validate the set of headers, as
+ * well as setup the response filters.
+ */
+ protected void prepareResponse() {
+
+ boolean entityBody = true;
+ contentDelimitation = false;
+
+ OutputFilter[] outputFilters = outputBuffer.getFilters();
+
+ if (http09 == true) {
+ // HTTP/0.9
+ outputBuffer.addActiveFilter
+ (outputFilters[Constants.IDENTITY_FILTER]);
+ return;
+ }
+
+ int statusCode = response.getStatus();
+ if ((statusCode == 204) || (statusCode == 205)
+ || (statusCode == 304)) {
+ // No entity body
+ outputBuffer.addActiveFilter
+ (outputFilters[Constants.VOID_FILTER]);
+ entityBody = false;
+ contentDelimitation = true;
+ }
+
+ MessageBytes methodMB = request.method();
+ if (methodMB.equals("HEAD")) {
+ // No entity body
+ outputBuffer.addActiveFilter
+ (outputFilters[Constants.VOID_FILTER]);
+ contentDelimitation = true;
+ }
+
+ // Check for compression
+ boolean useCompression = false;
+ if (entityBody && (compressionLevel > 0)) {
+ useCompression = isCompressable();
+
+ // Change content-length to -1 to force chunking
+ if (useCompression) {
+ response.setContentLength(-1);
+ }
+ }
+
+ MimeHeaders headers = response.getMimeHeaders();
+ if (!entityBody) {
+ response.setContentLength(-1);
+ } else {
+ String contentType = response.getContentType();
+ if (contentType != null) {
+ headers.setValue("Content-Type").setString(contentType);
+ }
+ String contentLanguage = response.getContentLanguage();
+ if (contentLanguage != null) {
+ headers.setValue("Content-Language")
+ .setString(contentLanguage);
+ }
+ }
+
+ long contentLength = response.getContentLengthLong();
+ if (contentLength != -1) {
+ headers.setValue("Content-Length").setLong(contentLength);
+ outputBuffer.addActiveFilter
+ (outputFilters[Constants.IDENTITY_FILTER]);
+ contentDelimitation = true;
+ } else {
+ if (entityBody && http11 && (keepAlive || CHUNK_ON_CLOSE)) {
+ outputBuffer.addActiveFilter
+ (outputFilters[Constants.CHUNKED_FILTER]);
+ contentDelimitation = true;
+ headers.addValue(Constants.TRANSFERENCODING).setString(Constants.CHUNKED);
+ } else {
+ outputBuffer.addActiveFilter
+ (outputFilters[Constants.IDENTITY_FILTER]);
+ }
+ }
+
+ if (useCompression) {
+ outputBuffer.addActiveFilter(outputFilters[Constants.GZIP_FILTER]);
+ headers.setValue("Content-Encoding").setString("gzip");
+ // Make Proxies happy via Vary (from mod_deflate)
+ headers.addValue("Vary").setString("Accept-Encoding");
+ }
+
+ // Add date header
+ headers.setValue("Date").setString(FastHttpDateFormat.getCurrentDate());
+
+ // FIXME: Add transfer encoding header
+
+ if ((entityBody) && (!contentDelimitation)) {
+ // Mark as close the connection after the request, and add the
+ // connection: close header
+ keepAlive = false;
+ }
+
+ // If we know that the request is bad this early, add the
+ // Connection: close header.
+ keepAlive = keepAlive && !statusDropsConnection(statusCode);
+ if (!keepAlive) {
+ headers.addValue(Constants.CONNECTION).setString(Constants.CLOSE);
+ } else if (!http11 && !error) {
+ headers.addValue(Constants.CONNECTION).setString(Constants.KEEPALIVE);
+ }
+
+ // Build the response header
+ outputBuffer.sendStatus();
+
+ // Add server header
+ if (server != null) {
+ headers.setValue("Server").setString(server);
+ } else {
+ outputBuffer.write(Constants.SERVER_BYTES);
+ }
+
+ int size = headers.size();
+ for (int i = 0; i < size; i++) {
+ outputBuffer.sendHeader(headers.getName(i), headers.getValue(i));
+ }
+ outputBuffer.endHeaders();
+
+ }
+
+
+ /**
+ * Initialize standard input and output filters.
+ */
+ protected void initializeFilters() {
+
+ // Create and add the identity filters.
+ inputBuffer.addFilter(new IdentityInputFilter());
+ outputBuffer.addFilter(new IdentityOutputFilter());
+
+ // Create and add the chunked filters.
+ inputBuffer.addFilter(new ChunkedInputFilter());
+ outputBuffer.addFilter(new ChunkedOutputFilter());
+
+ // Create and add the void filters.
+ inputBuffer.addFilter(new VoidInputFilter());
+ outputBuffer.addFilter(new VoidOutputFilter());
+
+ // Create and add the chunked filters.
+ //inputBuffer.addFilter(new GzipInputFilter());
+ outputBuffer.addFilter(new GzipOutputFilter());
+
+ }
+
+
+ /**
+ * Add an input filter to the current request.
+ *
+ * @return false if the encoding was not found (which would mean it is
+ * unsupported)
+ */
+ protected boolean addInputFilter(InputFilter[] inputFilters,
+ String encodingName) {
+ if (encodingName.equals("identity")) {
+ // Skip
+ } else if (encodingName.equals("chunked")) {
+ inputBuffer.addActiveFilter
+ (inputFilters[Constants.CHUNKED_FILTER]);
+ contentDelimitation = true;
+ } else {
+ for (int i = 2; i < inputFilters.length; i++) {
+ if (inputFilters[i].getEncodingName()
+ .toString().equals(encodingName)) {
+ inputBuffer.addActiveFilter(inputFilters[i]);
+ return true;
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+
+ /**
+ * Specialized utility method: find a sequence of lower case bytes inside
+ * a ByteChunk.
+ */
+ protected int findBytes(ByteChunk bc, byte[] b) {
+
+ byte first = b[0];
+ byte[] buff = bc.getBuffer();
+ int start = bc.getStart();
+ int end = bc.getEnd();
+
+ // Look for first char
+ int srcEnd = b.length;
+
+ for (int i = start; i <= (end - srcEnd); i++) {
+ if (Ascii.toLower(buff[i]) != first) continue;
+ // found first char, now look for a match
+ int myPos = i+1;
+ for (int srcPos = 1; srcPos < srcEnd; ) {
+ if (Ascii.toLower(buff[myPos++]) != b[srcPos++])
+ break;
+ if (srcPos == srcEnd) return i - start; // found it
+ }
+ }
+ return -1;
+
+ }
+
+ /**
+ * Determine if we must drop the connection because of the HTTP status
+ * code. Use the same list of codes as Apache/httpd.
+ */
+ protected boolean statusDropsConnection(int status) {
+ return status == 400 /* SC_BAD_REQUEST */ ||
+ status == 408 /* SC_REQUEST_TIMEOUT */ ||
+ status == 411 /* SC_LENGTH_REQUIRED */ ||
+ status == 413 /* SC_REQUEST_ENTITY_TOO_LARGE */ ||
+ status == 414 /* SC_REQUEST_URI_TOO_LARGE */ ||
+ status == 500 /* SC_INTERNAL_SERVER_ERROR */ ||
+ status == 503 /* SC_SERVICE_UNAVAILABLE */ ||
+ status == 501 /* SC_NOT_IMPLEMENTED */;
+ }
+
+}
Added: branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/Http11Protocol.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,778 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.apache.coyote.http11;
+
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+import javax.management.MBeanRegistration;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.net.ssl.SSLContext;
+
+import org.apache.coyote.Adapter;
+import org.apache.coyote.ProtocolHandler;
+import org.apache.coyote.RequestGroupInfo;
+import org.apache.coyote.RequestInfo;
+import org.apache.tomcat.util.modeler.Registry;
+import org.apache.tomcat.util.net.JIoEndpoint;
+import org.apache.tomcat.util.net.SSLImplementation;
+import org.apache.tomcat.util.net.ServerSocketFactory;
+import org.apache.tomcat.util.net.SocketStatus;
+import org.apache.tomcat.util.net.JIoEndpoint.Handler;
+import org.apache.tomcat.util.net.jsse.JSSEImplementation;
+import org.jboss.web.CoyoteLogger;
+
+
+/**
+ * Abstract the protocol implementation, including threading, etc.
+ * Processor is single threaded and specific to stream-based protocols,
+ * will not fit Jk protocols like JNI.
+ *
+ * @author Remy Maucherat
+ * @author Costin Manolache
+ */
+public class Http11Protocol
+ implements ProtocolHandler, MBeanRegistration {
+
+
+ // ------------------------------------------------------------ Constructor
+
+
+ public Http11Protocol() {
+ setSoLinger(Constants.DEFAULT_CONNECTION_LINGER);
+ setSoTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT);
+ //setServerSoTimeout(Constants.DEFAULT_SERVER_SOCKET_TIMEOUT);
+ setTcpNoDelay(Constants.DEFAULT_TCP_NO_DELAY);
+ }
+
+
+ // ----------------------------------------------------------------- Fields
+
+
+ protected Http11ConnectionHandler cHandler = new Http11ConnectionHandler(this);
+ protected JIoEndpoint endpoint = new JIoEndpoint();
+
+
+ // *
+ protected ObjectName tpOname = null;
+ // *
+ protected ObjectName rgOname = null;
+
+
+ protected ServerSocketFactory socketFactory = null;
+ protected JSSEImplementation sslImplementation = null;
+
+
+ // ----------------------------------------- ProtocolHandler Implementation
+ // *
+
+
+ protected HashMap<String, Object> attributes = new HashMap<String, Object>();
+
+
+ /**
+ * Pass config info
+ */
+ public void setAttribute(String name, Object value) {
+ attributes.put(name, value);
+ }
+
+ public Object getAttribute(String key) {
+ return attributes.get(key);
+ }
+
+ public Iterator getAttributeNames() {
+ return attributes.keySet().iterator();
+ }
+
+ /**
+ * Set a property.
+ */
+ public void setProperty(String name, String value) {
+ setAttribute(name, value);
+ }
+
+ /**
+ * Get a property
+ */
+ public String getProperty(String name) {
+ return (String)getAttribute(name);
+ }
+
+ /**
+ * The adapter, used to call the connector.
+ */
+ protected Adapter adapter;
+ public void setAdapter(Adapter adapter) { this.adapter = adapter; }
+ public Adapter getAdapter() { return adapter; }
+
+
+ public boolean hasIoEvents() {
+ return false;
+ }
+
+ public RequestGroupInfo getRequestGroupInfo() {
+ return cHandler.global;
+ }
+
+ public void init() throws Exception {
+ endpoint.setName(getName());
+ endpoint.setHandler(cHandler);
+
+ // Verify the validity of the configured socket factory
+ try {
+ if (isSSLEnabled()) {
+ sslImplementation =
+ (JSSEImplementation) SSLImplementation.getInstance(sslImplementationName);
+ socketFactory = sslImplementation.getServerSocketFactory();
+ endpoint.setServerSocketFactory(socketFactory);
+ } else if (socketFactoryName != null) {
+ socketFactory = (ServerSocketFactory) Class.forName(socketFactoryName).newInstance();
+ endpoint.setServerSocketFactory(socketFactory);
+ }
+ } catch (Exception ex) {
+ CoyoteLogger.HTTP_LOGGER.errorInitializingSocketFactory(ex);
+ throw ex;
+ }
+
+ if (socketFactory!=null) {
+ Iterator<String> attE = attributes.keySet().iterator();
+ while( attE.hasNext() ) {
+ String key = attE.next();
+ Object v=attributes.get(key);
+ socketFactory.setAttribute(key, v);
+ }
+ }
+
+ try {
+ endpoint.init();
+ } catch (Exception ex) {
+ CoyoteLogger.HTTP_LOGGER.errorInitializingEndpoint(ex);
+ throw ex;
+ }
+ CoyoteLogger.HTTP_LOGGER.initHttpConnector(getName());
+
+ }
+
+ public void start() throws Exception {
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER) {
+ if (this.domain != null) {
+ try {
+ tpOname = new ObjectName
+ (domain + ":" + "type=ThreadPool,name=" + getJmxName());
+ Registry.getRegistry(null, null)
+ .registerComponent(endpoint, tpOname, null );
+ } catch (Exception e) {
+ CoyoteLogger.HTTP_LOGGER.errorRegisteringPool(e);
+ }
+ rgOname=new ObjectName
+ (domain + ":type=GlobalRequestProcessor,name=" + getJmxName());
+ Registry.getRegistry(null, null).registerComponent
+ ( cHandler.global, rgOname, null );
+ }
+ }
+ try {
+ endpoint.start();
+ } catch (Exception ex) {
+ CoyoteLogger.HTTP_LOGGER.errorStartingEndpoint(ex);
+ throw ex;
+ }
+ CoyoteLogger.HTTP_LOGGER.startHttpConnector(getName());
+ }
+
+ public void pause() throws Exception {
+ try {
+ endpoint.pause();
+ } catch (Exception ex) {
+ CoyoteLogger.HTTP_LOGGER.errorPausingEndpoint(ex);
+ throw ex;
+ }
+ // Wait for a while until all the processors are no longer processing requests
+ RequestInfo[] states = cHandler.global.getRequestProcessors();
+ int retry = 0;
+ boolean done = false;
+ while (!done && retry < org.apache.coyote.Constants.MAX_PAUSE_WAIT) {
+ retry++;
+ done = true;
+ for (int i = 0; i < states.length; i++) {
+ if (states[i].getStage() == org.apache.coyote.Constants.STAGE_SERVICE) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ ;
+ }
+ done = false;
+ break;
+ }
+ }
+ }
+ CoyoteLogger.HTTP_LOGGER.pauseHttpConnector(getName());
+ }
+
+ public void resume() throws Exception {
+ try {
+ endpoint.resume();
+ } catch (Exception ex) {
+ CoyoteLogger.HTTP_LOGGER.errorResumingEndpoint(ex);
+ throw ex;
+ }
+ CoyoteLogger.HTTP_LOGGER.resumeHttpConnector(getName());
+ }
+
+ public void destroy() throws Exception {
+ CoyoteLogger.HTTP_LOGGER.stopHttpConnector(getName());
+ endpoint.destroy();
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER) {
+ if (tpOname!=null)
+ Registry.getRegistry(null, null).unregisterComponent(tpOname);
+ if (rgOname != null)
+ Registry.getRegistry(null, null).unregisterComponent(rgOname);
+ }
+ }
+
+ public String getJmxName() {
+ String encodedAddr = "";
+ if (getAddress() != null) {
+ encodedAddr = "" + getAddress();
+ encodedAddr = URLEncoder.encode(encodedAddr.replace('/', '-').replace(':', '_').replace('%', '-')) + "-";
+ }
+ return ("http-" + encodedAddr + endpoint.getPort());
+ }
+
+ public String getName() {
+ String encodedAddr = "";
+ if (getAddress() != null) {
+ encodedAddr = getAddress() + ":";
+ }
+ return ("http-" + encodedAddr + endpoint.getPort());
+ }
+
+ // ------------------------------------------------------------- Properties
+
+
+ /**
+ * Processor cache.
+ */
+ protected int processorCache = -1;
+ public int getProcessorCache() { return this.processorCache; }
+ public void setProcessorCache(int processorCache) { this.processorCache = processorCache; }
+
+ protected int socketBuffer = 9000;
+ public int getSocketBuffer() { return socketBuffer; }
+ public void setSocketBuffer(int socketBuffer) { this.socketBuffer = socketBuffer; }
+
+ /**
+ * This field indicates if the protocol is secure from the perspective of
+ * the client (= https is used).
+ */
+ protected boolean secure;
+ public boolean getSecure() { return secure; }
+ public void setSecure(boolean b) { secure = b; }
+
+ protected boolean SSLEnabled = false;
+ public boolean isSSLEnabled() { return SSLEnabled;}
+ public void setSSLEnabled(boolean SSLEnabled) {this.SSLEnabled = SSLEnabled;}
+
+ /**
+ * Name of the socket factory.
+ */
+ protected String socketFactoryName = null;
+ public String getSocketFactory() { return socketFactoryName; }
+ public void setSocketFactory(String valueS) { socketFactoryName = valueS; }
+
+ /**
+ * Name of the SSL implementation.
+ */
+ protected String sslImplementationName=null;
+ public String getSSLImplementation() { return sslImplementationName; }
+ public void setSSLImplementation( String valueS) {
+ sslImplementationName = valueS;
+ setSecure(true);
+ }
+
+
+ // HTTP
+ /**
+ * Maximum number of requests which can be performed over a keepalive
+ * connection. The default is the same as for Apache HTTP Server.
+ */
+ protected int maxKeepAliveRequests = (org.apache.tomcat.util.Constants.LOW_MEMORY) ? 1 :
+ Integer.valueOf(System.getProperty("org.apache.coyote.http11.Http11Protocol.MAX_KEEP_ALIVE_REQUESTS", "-1")).intValue();
+ public int getMaxKeepAliveRequests() { return maxKeepAliveRequests; }
+ public void setMaxKeepAliveRequests(int mkar) { maxKeepAliveRequests = mkar; }
+
+ // HTTP
+ /**
+ * The number of seconds Tomcat will wait for a subsequent request
+ * before closing the connection. The default is the same as for
+ * Apache HTTP Server (15 000 milliseconds).
+ */
+ protected int keepAliveTimeout = -1;
+ public int getKeepAliveTimeout() { return keepAliveTimeout; }
+ public void setKeepAliveTimeout(int timeout) { keepAliveTimeout = timeout; }
+
+ // HTTP
+ /**
+ * This timeout represents the socket timeout which will be used while
+ * the adapter execution is in progress, unless disableUploadTimeout
+ * is set to true. The default is the same as for Apache HTTP Server
+ * (300 000 milliseconds).
+ */
+ protected int timeout = 300000;
+ public int getTimeout() { return timeout; }
+ public void setTimeout(int timeout) { this.timeout = timeout; }
+
+
+ // *
+ /**
+ * Maximum size of the post which will be saved when processing certain
+ * requests, such as a POST.
+ */
+ protected int maxSavePostSize = 4 * 1024;
+ public int getMaxSavePostSize() { return maxSavePostSize; }
+ public void setMaxSavePostSize(int valueI) { maxSavePostSize = valueI; }
+
+
+ // HTTP
+ /**
+ * Maximum size of the HTTP message header.
+ */
+ protected int maxHttpHeaderSize = Integer.valueOf(System.getProperty("org.apache.coyote.http11.Http11Protocol.MAX_HEADER_SIZE", "8192")).intValue();
+ public int getMaxHttpHeaderSize() { return maxHttpHeaderSize; }
+ public void setMaxHttpHeaderSize(int valueI) { maxHttpHeaderSize = valueI; }
+
+
+ // HTTP
+ /**
+ * If true, the regular socket timeout will be used for the full duration
+ * of the connection.
+ */
+ protected boolean disableUploadTimeout = true;
+ public boolean getDisableUploadTimeout() { return disableUploadTimeout; }
+ public void setDisableUploadTimeout(boolean isDisabled) { disableUploadTimeout = isDisabled; }
+
+
+ // HTTP
+ /**
+ * Integrated compression support.
+ */
+ protected String compression = System.getProperty("org.apache.coyote.http11.Http11Protocol.COMPRESSION", "off");
+ public String getCompression() { return compression; }
+ public void setCompression(String valueS) { compression = valueS; }
+
+
+ // HTTP
+ protected String noCompressionUserAgents = System.getProperty("org.apache.coyote.http11.Http11Protocol.COMPRESSION_RESTRICTED_UA");
+ public String getNoCompressionUserAgents() { return noCompressionUserAgents; }
+ public void setNoCompressionUserAgents(String valueS) { noCompressionUserAgents = valueS; }
+
+
+ // HTTP
+ protected String compressableMimeTypes = System.getProperty("org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIME_TYPES", "text/html,text/xml,text/plain");
+ public String getCompressableMimeType() { return compressableMimeTypes; }
+ public void setCompressableMimeType(String valueS) { compressableMimeTypes = valueS; }
+
+
+ // HTTP
+ protected int compressionMinSize = Integer.valueOf(System.getProperty("org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIN_SIZE", "2048")).intValue();
+ public int getCompressionMinSize() { return compressionMinSize; }
+ public void setCompressionMinSize(int valueI) { compressionMinSize = valueI; }
+
+
+ // HTTP
+ /**
+ * User agents regular expressions which should be restricted to HTTP/1.0 support.
+ */
+ protected String restrictedUserAgents = null;
+ public String getRestrictedUserAgents() { return restrictedUserAgents; }
+ public void setRestrictedUserAgents(String valueS) { restrictedUserAgents = valueS; }
+
+ // HTTP
+ /**
+ * Server header.
+ */
+ protected String server = System.getProperty("org.apache.coyote.http11.Http11Protocol.SERVER");
+ public void setServer( String server ) { this.server = server; }
+ public String getServer() { return server; }
+
+ public Executor getExecutor() { return endpoint.getExecutor(); }
+ public void setExecutor(Executor executor) { endpoint.setExecutor(executor); }
+
+ public int getMaxThreads() { return endpoint.getMaxThreads(); }
+ public void setMaxThreads(int maxThreads) { endpoint.setMaxThreads(maxThreads); }
+
+ public int getThreadPriority() { return endpoint.getThreadPriority(); }
+ public void setThreadPriority(int threadPriority) { endpoint.setThreadPriority(threadPriority); }
+
+ public int getBacklog() { return endpoint.getBacklog(); }
+ public void setBacklog(int backlog) { endpoint.setBacklog(backlog); }
+
+ public int getPort() { return endpoint.getPort(); }
+ public void setPort(int port) { endpoint.setPort(port); }
+
+ public InetAddress getAddress() { return endpoint.getAddress(); }
+ public void setAddress(InetAddress ia) { endpoint.setAddress(ia); }
+
+ public boolean getTcpNoDelay() { return endpoint.getTcpNoDelay(); }
+ public void setTcpNoDelay(boolean tcpNoDelay) { endpoint.setTcpNoDelay(tcpNoDelay); }
+
+ public int getSoLinger() { return endpoint.getSoLinger(); }
+ public void setSoLinger(int soLinger) { endpoint.setSoLinger(soLinger); }
+
+ public int getSoTimeout() { return endpoint.getSoTimeout(); }
+ public void setSoTimeout(int soTimeout) { endpoint.setSoTimeout(soTimeout); }
+
+ public void setPollerSize(int pollerSize) { endpoint.setPollerSize(pollerSize); }
+ public int getPollerSize() { return endpoint.getPollerSize(); }
+
+ // HTTP
+ /**
+ * Return the Keep-Alive policy for the connection.
+ */
+ public boolean getKeepAlive() {
+ return ((maxKeepAliveRequests != 0) && (maxKeepAliveRequests != 1));
+ }
+
+ // HTTP
+ /**
+ * Set the keep-alive policy for this connection.
+ */
+ public void setKeepAlive(boolean keepAlive) {
+ if (!keepAlive) {
+ setMaxKeepAliveRequests(1);
+ }
+ }
+
+ /*
+ * Note: All the following are JSSE/java.io specific attributes.
+ */
+
+ public String getKeystore() {
+ return (String) getAttribute("keystore");
+ }
+
+ public void setKeystore( String k ) {
+ setAttribute("keystore", k);
+ }
+
+ public String getKeypass() {
+ return (String) getAttribute("keypass");
+ }
+
+ public void setKeypass( String k ) {
+ attributes.put("keypass", k);
+ //setAttribute("keypass", k);
+ }
+
+ public String getKeytype() {
+ return (String) getAttribute("keystoreType");
+ }
+
+ public void setKeytype( String k ) {
+ setAttribute("keystoreType", k);
+ }
+
+ public String getClientauth() {
+ return (String) getAttribute("clientauth");
+ }
+
+ public void setClientauth( String k ) {
+ setAttribute("clientauth", k);
+ }
+
+ public String getProtocols() {
+ return (String) getAttribute("protocols");
+ }
+
+ public void setProtocols(String k) {
+ setAttribute("protocols", k);
+ }
+
+ public String getAlgorithm() {
+ return (String) getAttribute("algorithm");
+ }
+
+ public void setAlgorithm( String k ) {
+ setAttribute("algorithm", k);
+ }
+
+ public String getCiphers() {
+ return (String) getAttribute("ciphers");
+ }
+
+ public void setCiphers(String ciphers) {
+ setAttribute("ciphers", ciphers);
+ }
+
+ public String getKeyAlias() {
+ return (String) getAttribute("keyAlias");
+ }
+
+ public void setKeyAlias(String keyAlias) {
+ setAttribute("keyAlias", keyAlias);
+ }
+
+ public SSLContext getSSLContext() {
+ return (SSLContext) getAttribute("SSLContext");
+ }
+
+ public void setSSLContext(SSLContext sslContext) {
+ setAttribute("SSLContext", sslContext);
+ }
+
+ // ----------------------------------- Http11ConnectionHandler Inner Class
+
+ protected static class Http11ConnectionHandler implements Handler {
+
+ protected Http11Protocol proto;
+ protected AtomicLong registerCount = new AtomicLong(0);
+ protected RequestGroupInfo global = new RequestGroupInfo();
+
+ protected ConcurrentHashMap<Socket, Http11Processor> connections =
+ new ConcurrentHashMap<Socket, Http11Processor>();
+ protected ConcurrentLinkedQueue<Http11Processor> recycledProcessors =
+ new ConcurrentLinkedQueue<Http11Processor>() {
+ protected AtomicInteger size = new AtomicInteger(0);
+ public boolean offer(Http11Processor processor) {
+ boolean offer = (proto.processorCache == -1) ? true : (size.get() < proto.processorCache);
+ //avoid over growing our cache or add after we have stopped
+ boolean result = false;
+ if ( offer ) {
+ result = super.offer(processor);
+ if ( result ) {
+ size.incrementAndGet();
+ }
+ }
+ if (!result) unregister(processor);
+ return result;
+ }
+
+ public Http11Processor poll() {
+ Http11Processor result = super.poll();
+ if ( result != null ) {
+ size.decrementAndGet();
+ }
+ return result;
+ }
+
+ public void clear() {
+ Http11Processor next = poll();
+ while ( next != null ) {
+ unregister(next);
+ next = poll();
+ }
+ super.clear();
+ size.set(0);
+ }
+ };
+
+ Http11ConnectionHandler(Http11Protocol proto) {
+ this.proto = proto;
+ }
+
+ public SocketState event(Socket socket, SocketStatus status) {
+ Http11Processor result = connections.get(socket);
+ SocketState state = SocketState.CLOSED;
+ if (result != null) {
+ result.startProcessing();
+ // Call the appropriate event
+ try {
+ state = result.event(status);
+ } catch (java.net.SocketException e) {
+ // SocketExceptions are normal
+ CoyoteLogger.HTTP_LOGGER.socketException(e);
+ } catch (java.io.IOException e) {
+ // IOExceptions are normal
+ CoyoteLogger.HTTP_LOGGER.socketException(e);
+ }
+ // Future developers: if you discover any other
+ // rare-but-nonfatal exceptions, catch them here, and log as
+ // above.
+ catch (Throwable e) {
+ // any other exception or error is odd. Here we log it
+ // with "ERROR" level, so it will show up even on
+ // less-than-verbose logs.
+ CoyoteLogger.HTTP_LOGGER.socketError(e);
+ } finally {
+ if (state != SocketState.LONG) {
+ connections.remove(socket);
+ recycledProcessors.offer(result);
+ } else {
+ if (proto.endpoint.isRunning()) {
+ proto.endpoint.getEventPoller().add(socket, result.getTimeout(),
+ result.getResumeNotification(), false);
+ }
+ }
+ result.endProcessing();
+ }
+ }
+ return state;
+ }
+
+ public SocketState process(Socket socket) {
+ Http11Processor processor = recycledProcessors.poll();
+ try {
+
+ if (processor == null) {
+ processor = createProcessor();
+ }
+
+ if (proto.secure && (proto.sslImplementation != null)) {
+ processor.setSSLSupport
+ (proto.sslImplementation.getSSLSupport(socket));
+ } else {
+ processor.setSSLSupport(null);
+ }
+
+ SocketState state = processor.process(socket);
+ if (state == SocketState.LONG) {
+ // Associate the connection with the processor. The next request
+ // processed by this thread will use either a new or a recycled
+ // processor.
+ connections.put(socket, processor);
+ proto.endpoint.getEventPoller().add(socket, processor.getTimeout(),
+ processor.getResumeNotification(), false);
+ } else {
+ recycledProcessors.offer(processor);
+ }
+ return state;
+
+ } catch(java.net.SocketException e) {
+ // SocketExceptions are normal
+ CoyoteLogger.HTTP_LOGGER.socketException(e);
+ } catch (java.io.IOException e) {
+ // IOExceptions are normal
+ CoyoteLogger.HTTP_LOGGER.socketException(e);
+ }
+ // Future developers: if you discover any other
+ // rare-but-nonfatal exceptions, catch them here, and log as
+ // above.
+ catch (Throwable e) {
+ // any other exception or error is odd. Here we log it
+ // with "ERROR" level, so it will show up even on
+ // less-than-verbose logs.
+ CoyoteLogger.HTTP_LOGGER.socketError(e);
+ }
+ recycledProcessors.offer(processor);
+ return SocketState.CLOSED;
+ }
+
+ protected Http11Processor createProcessor() {
+ Http11Processor processor =
+ new Http11Processor(proto.maxHttpHeaderSize, proto.endpoint);
+ processor.setAdapter(proto.adapter);
+ processor.setMaxKeepAliveRequests(proto.maxKeepAliveRequests);
+ processor.setKeepAliveTimeout(proto.keepAliveTimeout);
+ processor.setTimeout(proto.timeout);
+ processor.setDisableUploadTimeout(proto.disableUploadTimeout);
+ processor.setCompressionMinSize(proto.compressionMinSize);
+ processor.setCompression(proto.compression);
+ processor.setNoCompressionUserAgents(proto.noCompressionUserAgents);
+ processor.setCompressableMimeTypes(proto.compressableMimeTypes);
+ processor.setRestrictedUserAgents(proto.restrictedUserAgents);
+ processor.setSocketBuffer(proto.socketBuffer);
+ processor.setMaxSavePostSize(proto.maxSavePostSize);
+ processor.setServer(proto.server);
+ register(processor);
+ return processor;
+ }
+
+ protected void register(Http11Processor processor) {
+ RequestInfo rp = processor.getRequest().getRequestProcessor();
+ rp.setGlobalProcessor(global);
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER && proto.getDomain() != null) {
+ synchronized (this) {
+ try {
+ long count = registerCount.incrementAndGet();
+ ObjectName rpName = new ObjectName
+ (proto.getDomain() + ":type=RequestProcessor,worker="
+ + proto.getJmxName() + ",name=HttpRequest" + count);
+ Registry.getRegistry(null, null).registerComponent(rp, rpName, null);
+ rp.setRpName(rpName);
+ } catch (Exception e) {
+ CoyoteLogger.HTTP_LOGGER.errorRegisteringRequest(e);
+ }
+ }
+ }
+ }
+
+ protected void unregister(Http11Processor processor) {
+ RequestInfo rp = processor.getRequest().getRequestProcessor();
+ rp.setGlobalProcessor(null);
+ if (org.apache.tomcat.util.Constants.ENABLE_MODELER && proto.getDomain() != null) {
+ synchronized (this) {
+ try {
+ ObjectName rpName = rp.getRpName();
+ Registry.getRegistry(null, null).unregisterComponent(rpName);
+ rp.setRpName(null);
+ } catch (Exception e) {
+ CoyoteLogger.HTTP_LOGGER.errorUnregisteringRequest(e);
+ }
+ }
+ }
+ }
+
+ }
+
+
+ // -------------------- JMX related methods --------------------
+
+ // *
+ protected String domain;
+ protected ObjectName oname;
+ protected MBeanServer mserver;
+
+ public ObjectName getObjectName() {
+ return oname;
+ }
+
+ public String getDomain() {
+ return domain;
+ }
+
+ public ObjectName preRegister(MBeanServer server,
+ ObjectName name) throws Exception {
+ oname=name;
+ mserver=server;
+ domain=name.getDomain();
+ return name;
+ }
+
+ public void postRegister(Boolean registrationDone) {
+ }
+
+ public void preDeregister() throws Exception {
+ }
+
+ public void postDeregister() {
+ }
+}
Added: branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalInputBuffer.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalInputBuffer.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalInputBuffer.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,783 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.coyote.http11;
+
+import static org.jboss.web.CoyoteMessages.MESSAGES;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.EOFException;
+
+import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.MimeHeaders;
+
+import org.apache.coyote.InputBuffer;
+import org.apache.coyote.Request;
+
+/**
+ * Implementation of InputBuffer which provides HTTP request header parsing as
+ * well as transfer decoding.
+ *
+ * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
+ */
+public class InternalInputBuffer implements InputBuffer {
+
+
+ // -------------------------------------------------------------- Constants
+
+
+ // ----------------------------------------------------------- Constructors
+
+
+ /**
+ * Default constructor.
+ */
+ public InternalInputBuffer(Request request) {
+ this(request, Constants.DEFAULT_HTTP_HEADER_BUFFER_SIZE);
+ }
+
+
+ /**
+ * Alternate constructor.
+ */
+ public InternalInputBuffer(Request request, int headerBufferSize) {
+
+ this.request = request;
+ headers = request.getMimeHeaders();
+
+ buf = new byte[headerBufferSize];
+
+ inputStreamInputBuffer = new InputStreamInputBuffer();
+
+ filterLibrary = new InputFilter[0];
+ activeFilters = new InputFilter[0];
+ lastActiveFilter = -1;
+
+ parsingHeader = true;
+ swallowInput = true;
+
+ }
+
+
+ // ----------------------------------------------------- Instance Variables
+
+
+ /**
+ * Associated Coyote request.
+ */
+ protected Request request;
+
+
+ /**
+ * Headers of the associated request.
+ */
+ protected MimeHeaders headers;
+
+
+ /**
+ * State.
+ */
+ protected boolean parsingHeader;
+
+
+ /**
+ * Swallow input ? (in the case of an expectation)
+ */
+ protected boolean swallowInput;
+
+
+ /**
+ * Pointer to the current read buffer.
+ */
+ protected byte[] buf;
+
+
+ /**
+ * Last valid byte.
+ */
+ protected int lastValid;
+
+
+ /**
+ * Position in the buffer.
+ */
+ protected int pos;
+
+
+ /**
+ * Pos of the end of the header in the buffer, which is also the
+ * start of the body.
+ */
+ protected int end;
+
+
+ /**
+ * Underlying input stream.
+ */
+ protected InputStream inputStream;
+
+
+ /**
+ * Underlying input buffer.
+ */
+ protected InputBuffer inputStreamInputBuffer;
+
+
+ /**
+ * Filter library.
+ * Note: Filter[0] is always the "chunked" filter.
+ */
+ protected InputFilter[] filterLibrary;
+
+
+ /**
+ * Active filters (in order).
+ */
+ protected InputFilter[] activeFilters;
+
+
+ /**
+ * Index of the last active filter.
+ */
+ protected int lastActiveFilter;
+
+
+ // ------------------------------------------------------------- Properties
+
+
+ /**
+ * Set the underlying socket input stream.
+ */
+ public void setInputStream(InputStream inputStream) {
+
+ // FIXME: Check for null ?
+
+ this.inputStream = inputStream;
+
+ }
+
+
+ /**
+ * Get the underlying socket input stream.
+ */
+ public InputStream getInputStream() {
+
+ return inputStream;
+
+ }
+
+
+ /**
+ * Add an input filter to the filter library.
+ */
+ public void addFilter(InputFilter filter) {
+
+ // FIXME: Check for null ?
+
+ InputFilter[] newFilterLibrary =
+ new InputFilter[filterLibrary.length + 1];
+ for (int i = 0; i < filterLibrary.length; i++) {
+ newFilterLibrary[i] = filterLibrary[i];
+ }
+ newFilterLibrary[filterLibrary.length] = filter;
+ filterLibrary = newFilterLibrary;
+
+ activeFilters = new InputFilter[filterLibrary.length];
+
+ }
+
+
+ /**
+ * Get filters.
+ */
+ public InputFilter[] getFilters() {
+
+ return filterLibrary;
+
+ }
+
+
+ /**
+ * Clear filters.
+ */
+ public void clearFilters() {
+
+ filterLibrary = new InputFilter[0];
+ lastActiveFilter = -1;
+
+ }
+
+
+ /**
+ * Add an input filter to the filter library.
+ */
+ public void addActiveFilter(InputFilter filter) {
+
+ if (lastActiveFilter == -1) {
+ filter.setBuffer(inputStreamInputBuffer);
+ } else {
+ for (int i = 0; i <= lastActiveFilter; i++) {
+ if (activeFilters[i] == filter)
+ return;
+ }
+ filter.setBuffer(activeFilters[lastActiveFilter]);
+ }
+
+ activeFilters[++lastActiveFilter] = filter;
+
+ filter.setRequest(request);
+
+ }
+
+
+ /**
+ * Set the swallow input flag.
+ */
+ public void setSwallowInput(boolean swallowInput) {
+ this.swallowInput = swallowInput;
+ }
+
+
+ // --------------------------------------------------------- Public Methods
+
+
+ /**
+ * Recycle the input buffer. This should be called when closing the
+ * connection.
+ */
+ public void recycle() {
+
+ // Recycle Request object
+ request.recycle();
+
+ inputStream = null;
+ lastValid = 0;
+ pos = 0;
+ lastActiveFilter = -1;
+ parsingHeader = true;
+ swallowInput = true;
+
+ }
+
+
+ /**
+ * End processing of current HTTP request.
+ * Note: All bytes of the current request should have been already
+ * consumed. This method only resets all the pointers so that we are ready
+ * to parse the next HTTP request.
+ */
+ public boolean nextRequest() {
+
+ // Recycle Request object
+ request.recycle();
+
+ // Copy leftover bytes to the beginning of the buffer
+ if (lastValid - pos > 0) {
+ int npos = 0;
+ int opos = pos;
+ while (lastValid - opos > opos - npos) {
+ System.arraycopy(buf, opos, buf, npos, opos - npos);
+ npos += pos;
+ opos += pos;
+ }
+ System.arraycopy(buf, opos, buf, npos, lastValid - opos);
+ }
+
+ // Recycle filters
+ for (int i = 0; i <= lastActiveFilter; i++) {
+ activeFilters[i].recycle();
+ }
+
+ // Reset pointers
+ lastValid = lastValid - pos;
+ pos = 0;
+ lastActiveFilter = -1;
+ parsingHeader = true;
+ swallowInput = true;
+
+ return (lastValid > 0);
+
+ }
+
+
+ /**
+ * End request (consumes leftover bytes).
+ *
+ * @throws IOException an undelying I/O error occured
+ */
+ public void endRequest()
+ throws IOException {
+
+ if (swallowInput && (lastActiveFilter != -1)) {
+ int extraBytes = (int) activeFilters[lastActiveFilter].end();
+ pos = pos - extraBytes;
+ }
+
+ }
+
+
+ /**
+ * Read the request line. This function is meant to be used during the
+ * HTTP request header parsing. Do NOT attempt to read the request body
+ * using it.
+ *
+ * @throws IOException If an exception occurs during the underlying socket
+ * read operations, or if the given buffer is not big enough to accomodate
+ * the whole line.
+ */
+ public void parseRequestLine()
+ throws IOException {
+
+ int start = 0;
+
+ //
+ // Skipping blank lines
+ //
+
+ byte chr = 0;
+ do {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ chr = buf[pos++];
+
+ } while ((chr == Constants.CR) || (chr == Constants.LF));
+
+ pos--;
+
+ // Mark the current buffer position
+ start = pos;
+
+ //
+ // Reading the method name
+ // Method name is always US-ASCII
+ //
+
+ boolean space = false;
+
+ while (!space) {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ // Spec says single SP but it also says be tolerant of HT
+ if (buf[pos] == Constants.SP || buf[pos] == Constants.HT) {
+ space = true;
+ request.method().setBytes(buf, start, pos - start);
+ }
+
+ pos++;
+
+ }
+
+ // Spec says single SP but also says be tolerant of multiple and/or HT
+ while (space) {
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+ if (buf[pos] == Constants.SP || buf[pos] == Constants.HT) {
+ pos++;
+ } else {
+ space = false;
+ }
+ }
+
+ // Mark the current buffer position
+ start = pos;
+ int end = 0;
+ int questionPos = -1;
+
+ //
+ // Reading the URI
+ //
+
+ boolean eol = false;
+
+ while (!space) {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ // Spec says single SP but it also says be tolerant of HT
+ if (buf[pos] == Constants.SP || buf[pos] == Constants.HT) {
+ space = true;
+ end = pos;
+ } else if ((buf[pos] == Constants.CR)
+ || (buf[pos] == Constants.LF)) {
+ // HTTP/0.9 style request
+ eol = true;
+ space = true;
+ end = pos;
+ } else if ((buf[pos] == Constants.QUESTION)
+ && (questionPos == -1)) {
+ questionPos = pos;
+ }
+
+ pos++;
+
+ }
+
+ request.unparsedURI().setBytes(buf, start, end - start);
+ if (questionPos >= 0) {
+ request.queryString().setBytes(buf, questionPos + 1,
+ end - questionPos - 1);
+ request.requestURI().setBytes(buf, start, questionPos - start);
+ } else {
+ request.requestURI().setBytes(buf, start, end - start);
+ }
+
+ // Spec says single SP but also says be tolerant of multiple and/or HT
+ while (space) {
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+ if (buf[pos] == Constants.SP || buf[pos] == Constants.HT) {
+ pos++;
+ } else {
+ space = false;
+ }
+ }
+
+ // Mark the current buffer position
+ start = pos;
+ end = 0;
+
+ //
+ // Reading the protocol
+ // Protocol is always US-ASCII
+ //
+
+ while (!eol) {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ if (buf[pos] == Constants.CR) {
+ end = pos;
+ } else if (buf[pos] == Constants.LF) {
+ if (end == 0)
+ end = pos;
+ eol = true;
+ }
+
+ pos++;
+
+ }
+
+ if ((end - start) > 0) {
+ request.protocol().setBytes(buf, start, end - start);
+ } else {
+ request.protocol().setString("");
+ }
+
+ }
+
+
+ /**
+ * Parse the HTTP headers.
+ */
+ public void parseHeaders()
+ throws IOException {
+
+ while (parseHeader()) {
+ }
+
+ parsingHeader = false;
+ end = pos;
+
+ }
+
+
+ /**
+ * Parse an HTTP header.
+ *
+ * @return false after reading a blank line (which indicates that the
+ * HTTP header parsing is done
+ */
+ public boolean parseHeader()
+ throws IOException {
+
+ //
+ // Check for blank line
+ //
+
+ byte chr = 0;
+ while (true) {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ chr = buf[pos];
+
+ if ((chr == Constants.CR) || (chr == Constants.LF)) {
+ if (chr == Constants.LF) {
+ pos++;
+ return false;
+ }
+ } else {
+ break;
+ }
+
+ pos++;
+
+ }
+
+ // Mark the current buffer position
+ int start = pos;
+
+ //
+ // Reading the header name
+ // Header name is always US-ASCII
+ //
+
+ boolean colon = false;
+ MessageBytes headerValue = null;
+
+ while (!colon) {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ if (buf[pos] == Constants.COLON) {
+ colon = true;
+ headerValue = headers.addValue(buf, start, pos - start);
+ }
+ chr = buf[pos];
+ if ((chr >= Constants.A) && (chr <= Constants.Z)) {
+ buf[pos] = (byte) (chr - Constants.LC_OFFSET);
+ }
+
+ pos++;
+
+ }
+
+ // Mark the current buffer position
+ start = pos;
+ int realPos = pos;
+
+ //
+ // Reading the header value (which can be spanned over multiple lines)
+ //
+
+ boolean eol = false;
+ boolean validLine = true;
+
+ while (validLine) {
+
+ boolean space = true;
+
+ // Skipping spaces
+ while (space) {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ if ((buf[pos] == Constants.SP) || (buf[pos] == Constants.HT)) {
+ pos++;
+ } else {
+ space = false;
+ }
+
+ }
+
+ int lastSignificantChar = realPos;
+
+ // Reading bytes until the end of the line
+ while (!eol) {
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ if (buf[pos] == Constants.CR) {
+ } else if (buf[pos] == Constants.LF) {
+ eol = true;
+ } else if (buf[pos] == Constants.SP) {
+ buf[realPos] = buf[pos];
+ realPos++;
+ } else {
+ buf[realPos] = buf[pos];
+ realPos++;
+ lastSignificantChar = realPos;
+ }
+
+ pos++;
+
+ }
+
+ realPos = lastSignificantChar;
+
+ // Checking the first character of the new line. If the character
+ // is a LWS, then it's a multiline header
+
+ // Read new bytes if needed
+ if (pos >= lastValid) {
+ if (!fill())
+ throw new EOFException(MESSAGES.eofError());
+ }
+
+ chr = buf[pos];
+ if ((chr != Constants.SP) && (chr != Constants.HT)) {
+ validLine = false;
+ } else {
+ eol = false;
+ // Copying one extra space in the buffer (since there must
+ // be at least one space inserted between the lines)
+ buf[realPos] = chr;
+ realPos++;
+ }
+
+ }
+
+ // Set the header value
+ headerValue.setBytes(buf, start, realPos - start);
+
+ return true;
+
+ }
+
+
+ // ---------------------------------------------------- InputBuffer Methods
+
+
+ /**
+ * Read some bytes.
+ */
+ public int doRead(ByteChunk chunk, Request req)
+ throws IOException {
+
+ if (lastActiveFilter == -1)
+ return inputStreamInputBuffer.doRead(chunk, req);
+ else
+ return activeFilters[lastActiveFilter].doRead(chunk,req);
+
+ }
+
+
+ // ------------------------------------------------------ Protected Methods
+
+
+ /**
+ * Fill the internal buffer using data from the undelying input stream.
+ *
+ * @return false if at end of stream
+ */
+ protected boolean fill()
+ throws IOException {
+
+ int nRead = 0;
+
+ if (parsingHeader) {
+
+ if (lastValid == buf.length) {
+ throw MESSAGES.requestHeaderTooLarge();
+ }
+
+ nRead = inputStream.read(buf, pos, buf.length - lastValid);
+ if (nRead > 0) {
+ lastValid = pos + nRead;
+ }
+
+ } else {
+
+ if (buf.length - end < 4500) {
+ // In this case, the request header was really large, so we allocate a
+ // brand new one; the old one will get GCed when subsequent requests
+ // clear all references
+ buf = new byte[buf.length];
+ end = 0;
+ }
+ pos = end;
+ lastValid = pos;
+ nRead = inputStream.read(buf, pos, buf.length - lastValid);
+ if (nRead > 0) {
+ lastValid = pos + nRead;
+ }
+
+ }
+
+ return (nRead > 0);
+
+ }
+
+
+ // ------------------------------------- InputStreamInputBuffer Inner Class
+
+
+ /**
+ * This class is an input buffer which will read its data from an input
+ * stream.
+ */
+ protected class InputStreamInputBuffer
+ implements InputBuffer {
+
+
+ /**
+ * Read bytes into the specified chunk.
+ */
+ public int doRead(ByteChunk chunk, Request req )
+ throws IOException {
+
+ if (pos >= lastValid) {
+ if (!fill())
+ return -1;
+ }
+
+ int length = lastValid - pos;
+ chunk.setBytes(buf, pos, length);
+ pos = lastValid;
+
+ return (length);
+
+ }
+
+
+ }
+
+
+}
Added: branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalOutputBuffer.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalOutputBuffer.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/coyote/http11/InternalOutputBuffer.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,749 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.coyote.http11;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.CharChunk;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.http.HttpMessages;
+import org.apache.tomcat.util.http.MimeHeaders;
+
+import org.apache.coyote.ActionCode;
+import org.apache.coyote.OutputBuffer;
+import org.apache.coyote.Response;
+
+/**
+ * Output buffer.
+ *
+ * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
+ */
+public class InternalOutputBuffer
+ implements OutputBuffer, ByteChunk.ByteOutputChannel {
+
+ // -------------------------------------------------------------- Constants
+
+
+ // ----------------------------------------------------------- Constructors
+
+
+ /**
+ * Default constructor.
+ */
+ public InternalOutputBuffer(Response response) {
+ this(response, Constants.DEFAULT_HTTP_HEADER_BUFFER_SIZE);
+ }
+
+
+ /**
+ * Alternate constructor.
+ */
+ public InternalOutputBuffer(Response response, int headerBufferSize) {
+
+ this.response = response;
+
+ headers = response.getMimeHeaders();
+
+ buf = new byte[headerBufferSize];
+
+ outputStreamOutputBuffer = new OutputStreamOutputBuffer();
+
+ filterLibrary = new OutputFilter[0];
+ activeFilters = new OutputFilter[0];
+ lastActiveFilter = -1;
+
+ socketBuffer = new ByteChunk();
+ socketBuffer.setByteOutputChannel(this);
+
+ committed = false;
+ finished = false;
+
+ }
+
+
+ // ----------------------------------------------------- Instance Variables
+
+
+ /**
+ * Associated Coyote response.
+ */
+ protected Response response;
+
+
+ /**
+ * Headers of the associated request.
+ */
+ protected MimeHeaders headers;
+
+
+ /**
+ * Committed flag.
+ */
+ protected boolean committed;
+
+
+ /**
+ * Finished flag.
+ */
+ protected boolean finished;
+
+
+ /**
+ * The buffer used for header composition.
+ */
+ protected byte[] buf;
+
+
+ /**
+ * Position in the buffer.
+ */
+ protected int pos;
+
+
+ /**
+ * Underlying output stream.
+ */
+ protected OutputStream outputStream;
+
+
+ /**
+ * Underlying output buffer.
+ */
+ protected OutputBuffer outputStreamOutputBuffer;
+
+
+ /**
+ * Filter library.
+ * Note: Filter[0] is always the "chunked" filter.
+ */
+ protected OutputFilter[] filterLibrary;
+
+
+ /**
+ * Active filter (which is actually the top of the pipeline).
+ */
+ protected OutputFilter[] activeFilters;
+
+
+ /**
+ * Index of the last active filter.
+ */
+ protected int lastActiveFilter;
+
+
+ /**
+ * Socket buffer.
+ */
+ protected ByteChunk socketBuffer;
+
+
+ /**
+ * Socket buffer (extra buffering to reduce number of packets sent).
+ */
+ protected boolean useSocketBuffer = false;
+
+
+ // ------------------------------------------------------------- Properties
+
+
+ /**
+ * Set the underlying socket output stream.
+ */
+ public void setOutputStream(OutputStream outputStream) {
+
+ // FIXME: Check for null ?
+
+ this.outputStream = outputStream;
+
+ }
+
+
+ /**
+ * Get the underlying socket output stream.
+ */
+ public OutputStream getOutputStream() {
+
+ return outputStream;
+
+ }
+
+
+ /**
+ * Set the socket buffer size.
+ */
+ public void setSocketBuffer(int socketBufferSize) {
+
+ if (socketBufferSize > 500) {
+ useSocketBuffer = true;
+ socketBuffer.allocate(socketBufferSize, socketBufferSize);
+ } else {
+ useSocketBuffer = false;
+ }
+
+ }
+
+
+ /**
+ * Add an output filter to the filter library.
+ */
+ public void addFilter(OutputFilter filter) {
+
+ OutputFilter[] newFilterLibrary =
+ new OutputFilter[filterLibrary.length + 1];
+ for (int i = 0; i < filterLibrary.length; i++) {
+ newFilterLibrary[i] = filterLibrary[i];
+ }
+ newFilterLibrary[filterLibrary.length] = filter;
+ filterLibrary = newFilterLibrary;
+
+ activeFilters = new OutputFilter[filterLibrary.length];
+
+ }
+
+
+ /**
+ * Get filters.
+ */
+ public OutputFilter[] getFilters() {
+
+ return filterLibrary;
+
+ }
+
+
+ /**
+ * Clear filters.
+ */
+ public void clearFilters() {
+
+ filterLibrary = new OutputFilter[0];
+ lastActiveFilter = -1;
+
+ }
+
+
+ /**
+ * Add an output filter to the filter library.
+ */
+ public void addActiveFilter(OutputFilter filter) {
+
+ if (lastActiveFilter == -1) {
+ filter.setBuffer(outputStreamOutputBuffer);
+ } else {
+ for (int i = 0; i <= lastActiveFilter; i++) {
+ if (activeFilters[i] == filter)
+ return;
+ }
+ filter.setBuffer(activeFilters[lastActiveFilter]);
+ }
+
+ activeFilters[++lastActiveFilter] = filter;
+
+ filter.setResponse(response);
+
+ }
+
+
+ // --------------------------------------------------------- Public Methods
+
+
+ /**
+ * Flush the response.
+ *
+ * @throws IOException an undelying I/O error occured
+ */
+ public void flush()
+ throws IOException {
+
+ if (!committed) {
+
+ // Send the connector a request for commit. The connector should
+ // then validate the headers, send them (using sendHeader) and
+ // set the filters accordingly.
+ response.action(ActionCode.ACTION_COMMIT, null);
+
+ }
+
+ // Flush the current buffer
+ if (useSocketBuffer) {
+ socketBuffer.flushBuffer();
+ }
+
+ }
+
+
+ /**
+ * Recycle the output buffer. This should be called when closing the
+ * connection.
+ */
+ public void recycle() {
+
+ // Recycle Request object
+ response.recycle();
+ socketBuffer.recycle();
+
+ outputStream = null;
+ pos = 0;
+ lastActiveFilter = -1;
+ committed = false;
+ finished = false;
+
+ }
+
+
+ /**
+ * End processing of current HTTP request.
+ * Note: All bytes of the current request should have been already
+ * consumed. This method only resets all the pointers so that we are ready
+ * to parse the next HTTP request.
+ */
+ public void nextRequest() {
+
+ // Recycle Request object
+ response.recycle();
+ socketBuffer.recycle();
+
+ // Recycle filters
+ for (int i = 0; i <= lastActiveFilter; i++) {
+ activeFilters[i].recycle();
+ }
+
+ // Reset pointers
+ pos = 0;
+ lastActiveFilter = -1;
+ committed = false;
+ finished = false;
+
+ }
+
+
+ /**
+ * End request.
+ *
+ * @throws IOException an undelying I/O error occured
+ */
+ public void endRequest()
+ throws IOException {
+
+ if (!committed) {
+
+ // Send the connector a request for commit. The connector should
+ // then validate the headers, send them (using sendHeader) and
+ // set the filters accordingly.
+ response.action(ActionCode.ACTION_COMMIT, null);
+
+ }
+
+ if (finished)
+ return;
+
+ if (lastActiveFilter != -1)
+ activeFilters[lastActiveFilter].end();
+
+ if (useSocketBuffer) {
+ socketBuffer.flushBuffer();
+ }
+
+ finished = true;
+
+ }
+
+
+ // ------------------------------------------------ HTTP/1.1 Output Methods
+
+
+ /**
+ * Send an acknoledgement.
+ */
+ public void sendAck()
+ throws IOException {
+
+ if (!committed)
+ outputStream.write(Constants.ACK_BYTES);
+
+ }
+
+
+ /**
+ * Send the response status line.
+ */
+ public void sendStatus() {
+
+ // Write protocol name
+ write(Constants.HTTP_11_BYTES);
+ buf[pos++] = Constants.SP;
+
+ // Write status code
+ int status = response.getStatus();
+ switch (status) {
+ case 200:
+ write(Constants._200_BYTES);
+ break;
+ case 400:
+ write(Constants._400_BYTES);
+ break;
+ case 404:
+ write(Constants._404_BYTES);
+ break;
+ default:
+ write(status);
+ }
+
+ buf[pos++] = Constants.SP;
+
+ // Write message
+ String message = null;
+ if (org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER) {
+ message = response.getMessage();
+ }
+ if (message == null) {
+ write(getMessage(status));
+ } else {
+ write(message.replace('\n', ' ').replace('\r', ' '));
+ }
+
+ // End the response status line
+ if (org.apache.coyote.Constants.IS_SECURITY_ENABLED){
+ AccessController.doPrivileged(
+ new PrivilegedAction(){
+ public Object run(){
+ buf[pos++] = Constants.CR;
+ buf[pos++] = Constants.LF;
+ return null;
+ }
+ }
+ );
+ } else {
+ buf[pos++] = Constants.CR;
+ buf[pos++] = Constants.LF;
+ }
+
+ }
+
+ private String getMessage(final int message){
+ if (org.apache.coyote.Constants.IS_SECURITY_ENABLED){
+ return (String)AccessController.doPrivileged(
+ new PrivilegedAction(){
+ public Object run(){
+ return HttpMessages.getMessage(message);
+ }
+ }
+ );
+ } else {
+ return HttpMessages.getMessage(message);
+ }
+ }
+
+ /**
+ * Send a header.
+ *
+ * @param name Header name
+ * @param value Header value
+ */
+ public void sendHeader(MessageBytes name, MessageBytes value) {
+
+ if (name.getLength() > 0 && !value.isNull()) {
+ write(name);
+ buf[pos++] = Constants.COLON;
+ buf[pos++] = Constants.SP;
+ write(value);
+ buf[pos++] = Constants.CR;
+ buf[pos++] = Constants.LF;
+ }
+
+ }
+
+
+ /**
+ * Send a header.
+ *
+ * @param name Header name
+ * @param value Header value
+ */
+ public void sendHeader(ByteChunk name, ByteChunk value) {
+
+ write(name);
+ buf[pos++] = Constants.COLON;
+ buf[pos++] = Constants.SP;
+ write(value);
+ buf[pos++] = Constants.CR;
+ buf[pos++] = Constants.LF;
+
+ }
+
+
+ /**
+ * Send a header.
+ *
+ * @param name Header name
+ * @param value Header value
+ */
+ public void sendHeader(String name, String value) {
+
+ write(name);
+ buf[pos++] = Constants.COLON;
+ buf[pos++] = Constants.SP;
+ write(value);
+ buf[pos++] = Constants.CR;
+ buf[pos++] = Constants.LF;
+
+ }
+
+
+ /**
+ * End the header block.
+ */
+ public void endHeaders() {
+
+ buf[pos++] = Constants.CR;
+ buf[pos++] = Constants.LF;
+
+ }
+
+
+ // --------------------------------------------------- OutputBuffer Methods
+
+
+ /**
+ * Write the contents of a byte chunk.
+ *
+ * @param chunk byte chunk
+ * @return number of bytes written
+ * @throws IOException an undelying I/O error occured
+ */
+ public int doWrite(ByteChunk chunk, Response res)
+ throws IOException {
+
+ if (!committed) {
+
+ // Send the connector a request for commit. The connector should
+ // then validate the headers, send them (using sendHeaders) and
+ // set the filters accordingly.
+ response.action(ActionCode.ACTION_COMMIT, null);
+
+ }
+
+ if (lastActiveFilter == -1)
+ return outputStreamOutputBuffer.doWrite(chunk, res);
+ else
+ return activeFilters[lastActiveFilter].doWrite(chunk, res);
+
+ }
+
+
+ // ------------------------------------------------------ Protected Methods
+
+
+ /**
+ * Commit the response.
+ *
+ * @throws IOException an undelying I/O error occured
+ */
+ protected void commit()
+ throws IOException {
+
+ // The response is now committed
+ committed = true;
+ response.setCommitted(true);
+
+ if (pos > 0) {
+ // Sending the response header buffer
+ if (useSocketBuffer) {
+ socketBuffer.append(buf, 0, pos);
+ } else {
+ outputStream.write(buf, 0, pos);
+ }
+ }
+
+ }
+
+
+ /**
+ * This method will write the contents of the specyfied message bytes
+ * buffer to the output stream, without filtering. This method is meant to
+ * be used to write the response header.
+ *
+ * @param mb data to be written
+ */
+ protected void write(MessageBytes mb) {
+
+ if (mb.getType() == MessageBytes.T_BYTES) {
+ ByteChunk bc = mb.getByteChunk();
+ write(bc);
+ } else if (mb.getType() == MessageBytes.T_CHARS) {
+ CharChunk cc = mb.getCharChunk();
+ write(cc);
+ } else {
+ write(mb.toString());
+ }
+
+ }
+
+
+ /**
+ * This method will write the contents of the specyfied message bytes
+ * buffer to the output stream, without filtering. This method is meant to
+ * be used to write the response header.
+ *
+ * @param bc data to be written
+ */
+ protected void write(ByteChunk bc) {
+
+ // Writing the byte chunk to the output buffer
+ int length = bc.getLength();
+ System.arraycopy(bc.getBytes(), bc.getStart(), buf, pos, length);
+ pos = pos + length;
+
+ }
+
+
+ /**
+ * This method will write the contents of the specyfied char
+ * buffer to the output stream, without filtering. This method is meant to
+ * be used to write the response header.
+ *
+ * @param cc data to be written
+ */
+ protected void write(CharChunk cc) {
+
+ int start = cc.getStart();
+ int end = cc.getEnd();
+ char[] cbuf = cc.getBuffer();
+ for (int i = start; i < end; i++) {
+ char c = cbuf[i];
+ // Note: This is clearly incorrect for many strings,
+ // but is the only consistent approach within the current
+ // servlet framework. It must suffice until servlet output
+ // streams properly encode their output.
+ if (((c <= 31) && (c != 9)) || c == 127 || c > 255) {
+ c = ' ';
+ }
+ buf[pos++] = (byte) c;
+ }
+
+ }
+
+
+ /**
+ * This method will write the contents of the specyfied byte
+ * buffer to the output stream, without filtering. This method is meant to
+ * be used to write the response header.
+ *
+ * @param b data to be written
+ */
+ public void write(byte[] b) {
+
+ // Writing the byte chunk to the output buffer
+ System.arraycopy(b, 0, buf, pos, b.length);
+ pos = pos + b.length;
+
+ }
+
+
+ /**
+ * This method will write the contents of the specyfied String to the
+ * output stream, without filtering. This method is meant to be used to
+ * write the response header.
+ *
+ * @param s data to be written
+ */
+ protected void write(String s) {
+
+ if (s == null)
+ return;
+
+ // From the Tomcat 3.3 HTTP/1.0 connector
+ int len = s.length();
+ for (int i = 0; i < len; i++) {
+ char c = s.charAt (i);
+ // Note: This is clearly incorrect for many strings,
+ // but is the only consistent approach within the current
+ // servlet framework. It must suffice until servlet output
+ // streams properly encode their output.
+ if (((c <= 31) && (c != 9)) || c == 127 || c > 255) {
+ c = ' ';
+ }
+ buf[pos++] = (byte) c;
+ }
+
+ }
+
+
+ /**
+ * This method will print the specified integer to the output stream,
+ * without filtering. This method is meant to be used to write the
+ * response header.
+ *
+ * @param i data to be written
+ */
+ protected void write(int i) {
+
+ write(String.valueOf(i));
+
+ }
+
+
+ /**
+ * Callback to write data from the buffer.
+ */
+ public void realWriteBytes(byte cbuf[], int off, int len)
+ throws IOException {
+ if (len > 0) {
+ outputStream.write(cbuf, off, len);
+ }
+ }
+
+
+ // ----------------------------------- OutputStreamOutputBuffer Inner Class
+
+
+ /**
+ * This class is an output buffer which will write data to an output
+ * stream.
+ */
+ protected class OutputStreamOutputBuffer
+ implements OutputBuffer {
+
+
+ /**
+ * Write chunk.
+ */
+ public int doWrite(ByteChunk chunk, Response res)
+ throws IOException {
+
+ int length = chunk.getLength();
+ if (useSocketBuffer) {
+ socketBuffer.append(chunk.getBuffer(), chunk.getStart(),
+ length);
+ } else {
+ outputStream.write(chunk.getBuffer(), chunk.getStart(),
+ length);
+ }
+ return length;
+
+ }
+
+
+ }
+
+
+}
Added: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultServerSocketFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultServerSocketFactory.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/DefaultServerSocketFactory.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.util.net;
+
+import java.io.*;
+import java.net.*;
+
+/**
+ * Default server socket factory. Doesn't do much except give us
+ * plain ol' server sockets.
+ *
+ * @author db(a)eng.sun.com
+ * @author Harish Prabandham
+ */
+
+// Default implementation of server sockets.
+
+//
+// WARNING: Some of the APIs in this class are used by J2EE.
+// Please talk to harishp(a)eng.sun.com before making any changes.
+//
+class DefaultServerSocketFactory extends ServerSocketFactory {
+
+ DefaultServerSocketFactory () {
+ /* NOTHING */
+ }
+
+ public ServerSocket createSocket (int port)
+ throws IOException {
+ return new ServerSocket (port);
+ }
+
+ public ServerSocket createSocket (int port, int backlog)
+ throws IOException {
+ return new ServerSocket (port, backlog);
+ }
+
+ public ServerSocket createSocket (int port, int backlog,
+ InetAddress ifAddress)
+ throws IOException {
+ return new ServerSocket (port, backlog, ifAddress);
+ }
+
+ public Socket acceptSocket(ServerSocket socket)
+ throws IOException {
+ return socket.accept();
+ }
+
+ public void handshake(Socket sock)
+ throws IOException {
+ ; // NOOP
+ }
+
+
+ }
Added: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/JIoEndpoint.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,1315 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.apache.tomcat.util.net;
+
+import java.io.IOException;
+import java.net.BindException;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.concurrent.Executor;
+
+import org.jboss.web.CoyoteLogger;
+
+/**
+ * Handle incoming TCP connections.
+ *
+ * This class implement a simple server model: one listener thread accepts on a socket and
+ * creates a new worker thread for each incoming connection.
+ *
+ * More advanced Endpoints will reuse the threads, use queues, etc.
+ *
+ * @author James Duncan Davidson
+ * @author Jason Hunter
+ * @author James Todd
+ * @author Costin Manolache
+ * @author Gal Shachor
+ * @author Yoav Shapira
+ * @author Remy Maucherat
+ */
+public class JIoEndpoint {
+
+
+ // ----------------------------------------------------------------- Fields
+
+
+ /**
+ * Available workers.
+ */
+ protected WorkerStack workers = null;
+
+
+ /**
+ * Running state of the endpoint.
+ */
+ protected volatile boolean running = false;
+
+
+ /**
+ * Will be set to true whenever the endpoint is paused.
+ */
+ protected volatile boolean paused = false;
+
+
+ /**
+ * Track the initialization state of the endpoint.
+ */
+ protected boolean initialized = false;
+
+
+ /**
+ * Current worker threads busy count.
+ */
+ protected int curThreadsBusy = 0;
+
+
+ /**
+ * Current worker threads count.
+ */
+ protected int curThreads = 0;
+
+
+ /**
+ * Sequence number used to generate thread names.
+ */
+ protected int sequence = 0;
+
+
+ /**
+ * Associated server socket.
+ */
+ protected ServerSocket serverSocket = null;
+
+
+ // ------------------------------------------------------------- Properties
+
+
+ /**
+ * Acceptor thread count.
+ */
+ protected int acceptorThreadCount = 0;
+ public void setAcceptorThreadCount(int acceptorThreadCount) { this.acceptorThreadCount = acceptorThreadCount; }
+ public int getAcceptorThreadCount() { return acceptorThreadCount; }
+
+
+ /**
+ * External Executor based thread pool.
+ */
+ protected Executor executor = null;
+ public void setExecutor(Executor executor) { this.executor = executor; }
+ public Executor getExecutor() { return executor; }
+
+
+ /**
+ * Maximum amount of worker threads.
+ */
+ protected int maxThreads = (org.apache.tomcat.util.Constants.LOW_MEMORY) ? 64 : ((Constants.MAX_THREADS == -1) ? 512 * Runtime.getRuntime().availableProcessors() : Constants.MAX_THREADS);
+ public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
+ public int getMaxThreads() { return maxThreads; }
+
+
+ /**
+ * Priority of the acceptor and poller threads.
+ */
+ protected int threadPriority = Thread.NORM_PRIORITY;
+ public void setThreadPriority(int threadPriority) { this.threadPriority = threadPriority; }
+ public int getThreadPriority() { return threadPriority; }
+
+
+ /**
+ * Size of the socket poller.
+ */
+ protected int pollerSize = (org.apache.tomcat.util.Constants.LOW_MEMORY) ? 128 : (32 * 1024);
+ public void setPollerSize(int pollerSize) { this.pollerSize = pollerSize; }
+ public int getPollerSize() { return pollerSize; }
+
+
+ /**
+ * Keep-Alive timeout.
+ */
+ protected int keepAliveTimeout = -1;
+ public int getKeepAliveTimeout() { return keepAliveTimeout; }
+ public void setKeepAliveTimeout(int keepAliveTimeout) { this.keepAliveTimeout = keepAliveTimeout; }
+
+
+ /**
+ * Server socket port.
+ */
+ protected int port;
+ public int getPort() { return port; }
+ public void setPort(int port ) { this.port=port; }
+
+
+ /**
+ * Address for the server socket.
+ */
+ protected InetAddress address;
+ public InetAddress getAddress() { return address; }
+ public void setAddress(InetAddress address) { this.address = address; }
+
+
+ /**
+ * Handling of accepted sockets.
+ */
+ protected Handler handler = null;
+ public void setHandler(Handler handler ) { this.handler = handler; }
+ public Handler getHandler() { return handler; }
+
+
+ /**
+ * Allows the server developer to specify the backlog that
+ * should be used for server sockets. By default, this value
+ * is 100.
+ */
+ protected int backlog = 100;
+ public void setBacklog(int backlog) { if (backlog > 0) this.backlog = backlog; }
+ public int getBacklog() { return backlog; }
+
+
+ /**
+ * Socket TCP no delay.
+ */
+ protected boolean tcpNoDelay = false;
+ public boolean getTcpNoDelay() { return tcpNoDelay; }
+ public void setTcpNoDelay(boolean tcpNoDelay) { this.tcpNoDelay = tcpNoDelay; }
+
+
+ /**
+ * Socket linger.
+ */
+ protected int soLinger = 100;
+ public int getSoLinger() { return soLinger; }
+ public void setSoLinger(int soLinger) { this.soLinger = soLinger; }
+
+
+ /**
+ * Socket timeout.
+ */
+ protected int soTimeout = -1;
+ public int getSoTimeout() { return soTimeout; }
+ public void setSoTimeout(int soTimeout) { this.soTimeout = soTimeout; }
+
+
+ /**
+ * The default is true - the created threads will be
+ * in daemon mode. If set to false, the control thread
+ * will not be daemon - and will keep the process alive.
+ */
+ protected boolean daemon = true;
+ public void setDaemon(boolean b) { daemon = b; }
+ public boolean getDaemon() { return daemon; }
+
+
+ /**
+ * Name of the thread pool, which will be used for naming child threads.
+ */
+ protected String name = "TP";
+ public void setName(String name) { this.name = name; }
+ public String getName() { return name; }
+
+
+ /**
+ * Server socket factory.
+ */
+ protected ServerSocketFactory serverSocketFactory = null;
+ public void setServerSocketFactory(ServerSocketFactory factory) { this.serverSocketFactory = factory; }
+ public ServerSocketFactory getServerSocketFactory() { return serverSocketFactory; }
+
+
+ /**
+ * The socket poller used for event support.
+ */
+ protected Poller eventPoller = null;
+ public Poller getEventPoller() {
+ return eventPoller;
+ }
+
+
+ public boolean isRunning() {
+ return running;
+ }
+
+ public boolean isPaused() {
+ return paused;
+ }
+
+ public int getCurrentThreadCount() {
+ return curThreads;
+ }
+
+ public int getCurrentThreadsBusy() {
+ return workers!=null?curThreads - workers.size():0;
+ }
+
+
+ // ------------------------------------------------ Handler Inner Interface
+
+
+ /**
+ * Bare bones interface used for socket processing. Per thread data is to be
+ * stored in the ThreadWithAttributes extra folders, or alternately in
+ * thread local fields.
+ */
+ public interface Handler {
+ public enum SocketState {
+ OPEN, CLOSED, LONG
+ }
+ public SocketState process(Socket socket);
+ public SocketState event(Socket socket, SocketStatus status);
+ }
+
+
+ // --------------------------------------------------- Acceptor Inner Class
+
+
+ /**
+ * Server socket acceptor thread.
+ */
+ protected class Acceptor implements Runnable {
+
+
+ /**
+ * The background thread that listens for incoming TCP/IP connections and
+ * hands them off to an appropriate processor.
+ */
+ public void run() {
+
+ // Loop until we receive a shutdown command
+ while (running) {
+
+ // Loop if endpoint is paused
+ while (paused) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+
+ // Accept the next incoming connection from the server socket
+ try {
+ Socket socket = serverSocketFactory.acceptSocket(serverSocket);
+ serverSocketFactory.initSocket(socket);
+ // Hand this socket off to an appropriate processor
+ if (!processSocket(socket)) {
+ // Close socket right away
+ try { socket.close(); } catch (IOException e) { }
+ }
+ } catch (IOException x) {
+ if (running) {
+ CoyoteLogger.UTIL_LOGGER.errorAcceptingSocket(x);
+ }
+ } catch (Throwable t) {
+ CoyoteLogger.UTIL_LOGGER.errorAcceptingSocket(t);
+ }
+
+ // The processor will recycle itself when it finishes
+
+ }
+
+ }
+
+ }
+
+
+ // ------------------------------------------------- SocketInfo Inner Class
+
+
+ /**
+ * Socket list class, used to avoid using a possibly large amount of objects
+ * with very little actual use.
+ */
+ public static class SocketInfo {
+ public static final int RESUME = 4;
+ public static final int WAKEUP = 8;
+ public Socket socket;
+ public int timeout;
+ public int flags;
+ public boolean resume() {
+ return (flags & RESUME) == RESUME;
+ }
+ public boolean wakeup() {
+ return (flags & WAKEUP) == WAKEUP;
+ }
+ public static int merge(int flag1, int flag2) {
+ return ((flag1 & RESUME) | (flag2 & RESUME))
+ | ((flag1 & WAKEUP) & (flag2 & WAKEUP));
+ }
+ }
+
+
+ // --------------------------------------------- SocketTimeouts Inner Class
+
+
+ /**
+ * Socket list class, used to avoid using a possibly large amount of objects
+ * with very little actual use.
+ */
+ public class SocketTimeouts {
+ protected int size;
+
+ protected Socket[] sockets;
+ protected long[] timeouts;
+ protected int pos = 0;
+
+ public SocketTimeouts(int size) {
+ this.size = 0;
+ sockets = new Socket[size];
+ timeouts = new long[size];
+ }
+
+ public void add(Socket socket, long timeout) {
+ sockets[size] = socket;
+ timeouts[size] = timeout;
+ size++;
+ }
+
+ public boolean remove(Socket socket) {
+ for (int i = 0; i < size; i++) {
+ if (sockets[i] == socket) {
+ sockets[i] = sockets[size - 1];
+ timeouts[i] = timeouts[size - 1];
+ size--;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public Socket check(long date) {
+ while (pos < size) {
+ if (date >= timeouts[pos]) {
+ Socket result = sockets[pos];
+ sockets[pos] = sockets[size - 1];
+ timeouts[pos] = timeouts[size - 1];
+ size--;
+ return result;
+ }
+ pos++;
+ }
+ pos = 0;
+ return null;
+ }
+
+ }
+
+
+ // ------------------------------------------------- SocketList Inner Class
+
+
+ /**
+ * Socket list class, used to avoid using a possibly large amount of objects
+ * with very little actual use.
+ */
+ public class SocketList {
+ protected int size;
+ protected int pos;
+
+ protected Socket[] sockets;
+ protected int[] timeouts;
+ protected int[] flags;
+
+ protected SocketInfo info = new SocketInfo();
+
+ public SocketList(int size) {
+ this.size = 0;
+ pos = 0;
+ sockets = new Socket[size];
+ timeouts = new int[size];
+ flags = new int[size];
+ }
+
+ public int size() {
+ return this.size;
+ }
+
+ public SocketInfo get() {
+ if (pos == size) {
+ return null;
+ } else {
+ info.socket = sockets[pos];
+ info.timeout = timeouts[pos];
+ info.flags = flags[pos];
+ pos++;
+ return info;
+ }
+ }
+
+ public void clear() {
+ size = 0;
+ pos = 0;
+ }
+
+ public boolean add(Socket socket, int timeout, int flag) {
+ if (size == sockets.length) {
+ return false;
+ } else {
+ for (int i = 0; i < size; i++) {
+ if (sockets[i] == socket) {
+ flags[i] = SocketInfo.merge(flags[i], flag);
+ return true;
+ }
+ }
+ sockets[size] = socket;
+ timeouts[size] = timeout;
+ flags[size] = flag;
+ size++;
+ return true;
+ }
+ }
+
+ public void duplicate(SocketList copy) {
+ copy.size = size;
+ copy.pos = pos;
+ System.arraycopy(sockets, 0, copy.sockets, 0, size);
+ System.arraycopy(timeouts, 0, copy.timeouts, 0, size);
+ System.arraycopy(flags, 0, copy.flags, 0, size);
+ }
+
+ }
+
+
+ // ------------------------------------------- SocketProcessor Inner Class
+
+
+ /**
+ * This class is the equivalent of the Worker, but will simply use in an
+ * external Executor thread pool.
+ */
+ protected class SocketProcessor implements Runnable {
+
+ protected Socket socket = null;
+
+ public SocketProcessor(Socket socket) {
+ this.socket = socket;
+ }
+
+ public void run() {
+
+ // Process the request from this socket
+ if (!setSocketOptions(socket) || (handler.process(socket) == Handler.SocketState.CLOSED)) {
+ // Close socket
+ try { socket.close(); } catch (IOException e) { }
+ }
+
+ // Finish up this request
+ socket = null;
+
+ }
+
+ }
+
+
+ // --------------------------------------- SocketEventProcessor Inner Class
+
+
+ /**
+ * This class is the equivalent of the Worker, but will simply use in an
+ * external Executor thread pool.
+ */
+ protected class SocketEventProcessor implements Runnable {
+
+ protected Socket socket = null;
+ protected SocketStatus status = null;
+
+ public SocketEventProcessor(Socket socket, SocketStatus status) {
+ this.socket = socket;
+ this.status = status;
+ }
+
+ public void run() {
+
+ Handler.SocketState socketState = handler.event(socket, status);
+ if (socketState == Handler.SocketState.CLOSED) {
+ // Close socket
+ try { socket.close(); } catch (IOException e) { }
+ } else if (socketState == Handler.SocketState.OPEN) {
+ // Process the keepalive after the event processing
+ // This is the main behavior difference with endpoint with pollers, which
+ // will add the socket to the poller
+ if (handler.process(socket) == Handler.SocketState.CLOSED) {
+ // Close socket
+ try { socket.close(); } catch (IOException e) { }
+ }
+ }
+ socket = null;
+
+ }
+
+ }
+
+
+ // ----------------------------------------------------- Poller Inner Class
+
+
+ /**
+ * Poller class.
+ */
+ public class Poller implements Runnable {
+
+ /**
+ * List of sockets to be added to the poller.
+ */
+ protected SocketList addList = null;
+
+ /**
+ * List of sockets to be added to the poller.
+ */
+ protected SocketList localAddList = null;
+
+ /**
+ * Structure used for storing timeouts.
+ */
+ protected SocketTimeouts timeouts = null;
+
+
+ /**
+ * Last run of maintain. Maintain will run usually every 5s.
+ */
+ protected long lastMaintain = System.currentTimeMillis();
+
+
+ /**
+ * Amount of connections inside this poller.
+ */
+ protected int connectionCount = 0;
+ public int getConnectionCount() { return connectionCount; }
+
+ public Poller() {
+ }
+
+ /**
+ * Create the poller. The java.io poller only deals with timeouts.
+ */
+ protected void init() {
+
+ timeouts = new SocketTimeouts(pollerSize);
+
+ connectionCount = 0;
+ addList = new SocketList(pollerSize);
+ localAddList = new SocketList(pollerSize);
+
+ }
+
+ /**
+ * Destroy the poller.
+ */
+ protected void destroy() {
+ // Wait for pollerTime before doing anything, so that the poller threads
+ // exit, otherwise parallel destruction of sockets which are still
+ // in the poller can cause problems
+ try {
+ synchronized (this) {
+ this.wait(2);
+ }
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ // Close all sockets in the add queue
+ SocketInfo info = addList.get();
+ while (info != null) {
+ if (!processSocket(info.socket, SocketStatus.STOP)) {
+ try { info.socket.close(); } catch (IOException e) { }
+ }
+ info = addList.get();
+ }
+ addList.clear();
+ // Close all sockets still in the poller
+ long future = System.currentTimeMillis() + Integer.MAX_VALUE;
+ Socket socket = timeouts.check(future);
+ while (socket != null) {
+ if (!processSocket(socket, SocketStatus.TIMEOUT)) {
+ try { socket.close(); } catch (IOException e) { }
+ }
+ socket = timeouts.check(future);
+ }
+ connectionCount = 0;
+ }
+
+ /**
+ * Add specified socket and associated pool to the poller. The socket will
+ * be added to a temporary array, and polled first after a maximum amount
+ * of time equal to pollTime (in most cases, latency will be much lower,
+ * however).
+ *
+ * @param socket to add to the poller
+ */
+ public void add(Socket socket, int timeout, boolean resume, boolean wakeup) {
+ if (timeout < 0) {
+ timeout = keepAliveTimeout;
+ }
+ if (timeout < 0) {
+ timeout = soTimeout;
+ }
+ if (timeout <= 0) {
+ // Always put a timeout in
+ timeout = Integer.MAX_VALUE;
+ }
+ boolean ok = false;
+ synchronized (this) {
+ // Add socket to the list. Newly added sockets will wait
+ // at most for pollTime before being polled
+ if (addList.add(socket, timeout, (resume ? SocketInfo.RESUME : 0)
+ | (wakeup ? SocketInfo.WAKEUP : 0))) {
+ ok = true;
+ this.notify();
+ }
+ }
+ if (!ok) {
+ // Can't do anything: close the socket right away
+ if (!processSocket(socket, SocketStatus.ERROR)) {
+ try { socket.close(); } catch (IOException e) { }
+ }
+ }
+ }
+
+ /**
+ * Timeout checks.
+ */
+ protected void maintain() {
+
+ long date = System.currentTimeMillis();
+ // Maintain runs at most once every 5s, although it will likely get called more
+ if ((date - lastMaintain) < 5000L) {
+ return;
+ } else {
+ lastMaintain = date;
+ }
+ Socket socket = timeouts.check(date);
+ while (socket != null) {
+ if (!processSocket(socket, SocketStatus.TIMEOUT)) {
+ try { socket.close(); } catch (IOException e) { }
+ }
+ socket = timeouts.check(date);
+ }
+
+ }
+
+ /**
+ * The background thread that listens for incoming TCP/IP connections and
+ * hands them off to an appropriate processor.
+ */
+ public void run() {
+
+ int maintain = 0;
+ // Loop until we receive a shutdown command
+ while (running) {
+
+ // Loop if endpoint is paused
+ while (paused) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+ // Check timeouts for suspended connections if the poller is empty
+ while (connectionCount < 1 && addList.size() < 1) {
+ // Reset maintain time.
+ try {
+ if (soTimeout > 0 && running) {
+ maintain();
+ }
+ synchronized (this) {
+ this.wait(10000);
+ }
+ } catch (InterruptedException e) {
+ // Ignore
+ } catch (Throwable t) {
+ CoyoteLogger.UTIL_LOGGER.errorProcessingSocketTimeout(t);
+ }
+ }
+
+ try {
+
+ // Add sockets which are waiting to the poller
+ if (addList.size() > 0) {
+ synchronized (this) {
+ // Duplicate to another list, so that the syncing is minimal
+ addList.duplicate(localAddList);
+ addList.clear();
+ }
+ SocketInfo info = localAddList.get();
+ while (info != null) {
+ if (info.wakeup()) {
+ // Resume event if socket is present in the poller
+ if (timeouts.remove(info.socket)) {
+ if (info.resume()) {
+ if (!processSocket(info.socket, SocketStatus.OPEN_CALLBACK)) {
+ try { info.socket.close(); } catch (IOException e) { }
+ }
+ } else {
+ timeouts.add(info.socket, System.currentTimeMillis() + info.timeout);
+ }
+ }
+ } else {
+ if (info.resume()) {
+ timeouts.remove(info.socket);
+ if (!processSocket(info.socket, SocketStatus.OPEN_CALLBACK)) {
+ try { info.socket.close(); } catch (IOException e) { }
+ }
+ } else {
+ timeouts.add(info.socket, System.currentTimeMillis() + info.timeout);
+ }
+ }
+ info = localAddList.get();
+ }
+ }
+
+ try {
+ Thread.sleep(2);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+
+ // Process socket timeouts
+ if (soTimeout > 0 && maintain++ > 1000 && running) {
+ maintain = 0;
+ maintain();
+ }
+
+ } catch (Throwable t) {
+ if (maintain == 0) {
+ CoyoteLogger.UTIL_LOGGER.errorProcessingSocketTimeout(t);
+ } else {
+ CoyoteLogger.UTIL_LOGGER.errorPollingSocketWithException(t);
+ }
+ }
+
+ }
+
+ synchronized (this) {
+ this.notifyAll();
+ }
+
+ }
+
+ }
+
+
+ // ----------------------------------------------------- Worker Inner Class
+
+
+ protected class Worker implements Runnable {
+
+ protected Thread thread = null;
+ protected boolean available = false;
+ protected Socket socket = null;
+ protected SocketStatus status = null;
+
+
+ /**
+ * Process an incoming TCP/IP connection on the specified socket. Any
+ * exception that occurs during processing must be logged and swallowed.
+ * <b>NOTE</b>: This method is called from our Connector's thread. We
+ * must assign it to our own thread so that multiple simultaneous
+ * requests can be handled.
+ *
+ * @param socket TCP socket to process
+ */
+ protected synchronized void assign(Socket socket) {
+
+ // Wait for the Processor to get the previous Socket
+ while (available) {
+ try {
+ wait();
+ } catch (InterruptedException e) {
+ }
+ }
+
+ // Store the newly available Socket and notify our thread
+ this.socket = socket;
+ this.status = null;
+ available = true;
+ notifyAll();
+
+ }
+
+
+ protected synchronized void assign(Socket socket, SocketStatus status) {
+
+ // Wait for the Processor to get the previous Socket
+ while (available) {
+ try {
+ wait();
+ } catch (InterruptedException e) {
+ }
+ }
+
+ // Store the newly available Socket and notify our thread
+ this.socket = socket;
+ this.status = status;
+ available = true;
+ notifyAll();
+
+ }
+
+
+ /**
+ * Await a newly assigned Socket from our Connector, or <code>null</code>
+ * if we are supposed to shut down.
+ */
+ private synchronized Socket await() {
+
+ // Wait for the Connector to provide a new Socket
+ while (!available) {
+ try {
+ wait();
+ } catch (InterruptedException e) {
+ }
+ }
+
+ // Notify the Connector that we have received this Socket
+ Socket socket = this.socket;
+ available = false;
+ notifyAll();
+
+ return (socket);
+
+ }
+
+
+
+ /**
+ * The background thread that listens for incoming TCP/IP connections and
+ * hands them off to an appropriate processor.
+ */
+ public void run() {
+
+ // Process requests until we receive a shutdown signal
+ while (running) {
+
+ // Wait for the next socket to be assigned
+ Socket socket = await();
+ if (socket == null)
+ continue;
+
+ // Process the request from this socket
+ if (status != null){
+ Handler.SocketState socketState = handler.event(socket, status);
+ if (socketState == Handler.SocketState.CLOSED) {
+ // Close socket
+ try { socket.close(); } catch (IOException e) { }
+ } else if (socketState == Handler.SocketState.OPEN) {
+ // Process the keepalive after the event processing
+ // This is the main behavior difference with endpoint with pollers, which
+ // will add the socket to the poller
+ if (handler.process(socket) == Handler.SocketState.CLOSED) {
+ // Close socket
+ try { socket.close(); } catch (IOException e) { }
+ }
+ }
+ } else if ((status == null) && (!setSocketOptions(socket) || (handler.process(socket) == Handler.SocketState.CLOSED))) {
+ // Close socket
+ try { socket.close(); } catch (IOException e) { }
+ }
+
+ // Finish up this request
+ recycleWorkerThread(this);
+
+ }
+
+ }
+
+
+ /**
+ * Start the background processing thread.
+ */
+ public void start() {
+ thread = new Thread(this);
+ thread.setName(getName() + "-" + (++curThreads));
+ thread.setDaemon(true);
+ thread.start();
+ }
+
+
+ }
+
+
+ // -------------------- Public methods --------------------
+
+ public void init()
+ throws Exception {
+
+ if (initialized)
+ return;
+
+ // Initialize thread count defaults for acceptor
+ if (acceptorThreadCount == 0) {
+ acceptorThreadCount = 1;
+ }
+ if (serverSocketFactory == null) {
+ serverSocketFactory = ServerSocketFactory.getDefault();
+ }
+ if (serverSocket == null) {
+ try {
+ if (address == null) {
+ serverSocket = serverSocketFactory.createSocket(port, backlog);
+ } else {
+ serverSocket = serverSocketFactory.createSocket(port, backlog, address);
+ }
+ } catch (BindException be) {
+ if (address == null) {
+ throw new BindException(be.getMessage() + "<null>:" + port);
+ } else {
+ throw new BindException(be.getMessage() + " " +
+ address.toString() + ":" + port);
+ }
+ }
+ }
+ //if( serverTimeout >= 0 )
+ // serverSocket.setSoTimeout( serverTimeout );
+
+ initialized = true;
+
+ }
+
+ public void start()
+ throws Exception {
+ // Initialize socket if not done before
+ if (!initialized) {
+ init();
+ }
+ if (!running) {
+ running = true;
+ paused = false;
+
+ // Create worker collection
+ if (executor == null) {
+ workers = new WorkerStack(maxThreads);
+ }
+
+ // Start event poller thread
+ eventPoller = new Poller();
+ eventPoller.init();
+ Thread pollerThread = new Thread(eventPoller, getName() + "-Poller");
+ pollerThread.setPriority(threadPriority);
+ pollerThread.setDaemon(true);
+ pollerThread.start();
+
+ // Start acceptor threads
+ for (int i = 0; i < acceptorThreadCount; i++) {
+ Thread acceptorThread = new Thread(new Acceptor(), getName() + "-Acceptor-" + i);
+ acceptorThread.setPriority(threadPriority);
+ acceptorThread.setDaemon(daemon);
+ acceptorThread.start();
+ }
+ }
+ }
+
+ public void pause() {
+ if (running && !paused) {
+ paused = true;
+ unlockAccept();
+ }
+ }
+
+ public void resume() {
+ if (running) {
+ paused = false;
+ }
+ }
+
+ public void stop() {
+ if (running) {
+ running = false;
+ unlockAccept();
+ eventPoller.destroy();
+ eventPoller = null;
+ }
+ }
+
+ /**
+ * Deallocate APR memory pools, and close server socket.
+ */
+ public void destroy() throws Exception {
+ if (running) {
+ stop();
+ }
+ if (serverSocket != null) {
+ try {
+ if (serverSocket != null)
+ serverSocket.close();
+ } catch (Exception e) {
+ CoyoteLogger.UTIL_LOGGER.errorClosingSocket(e);
+ }
+ serverSocket = null;
+ }
+ initialized = false ;
+ }
+
+
+ /**
+ * Unlock the accept by using a local connection.
+ */
+ protected void unlockAccept() {
+ Socket s = null;
+ try {
+ // Need to create a connection to unlock the accept();
+ if (address == null) {
+ s = new Socket("localhost", port);
+ } else {
+ s = new Socket(address, port);
+ // setting soLinger to a small value will help shutdown the
+ // connection quicker
+ s.setSoLinger(true, 0);
+ }
+ } catch (Exception e) {
+ // Ignore
+ } finally {
+ if (s != null) {
+ try {
+ s.close();
+ } catch (Exception e) {
+ // Ignore
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Set the options for the current socket.
+ */
+ protected boolean setSocketOptions(Socket socket) {
+ // Process the connection
+ int step = 1;
+ try {
+
+ // 1: Set socket options: timeout, linger, etc
+ if (soLinger >= 0) {
+ socket.setSoLinger(true, soLinger);
+ }
+ if (tcpNoDelay) {
+ socket.setTcpNoDelay(tcpNoDelay);
+ }
+ if (soTimeout > 0) {
+ socket.setSoTimeout(soTimeout);
+ }
+
+ // 2: SSL handshake
+ step = 2;
+ serverSocketFactory.handshake(socket);
+
+ } catch (Throwable t) {
+ if (step == 2) {
+ CoyoteLogger.UTIL_LOGGER.handshakeFailed(t);
+ } else {
+ CoyoteLogger.UTIL_LOGGER.unexpectedError(t);
+ }
+ // Tell to close the socket
+ return false;
+ }
+ return true;
+ }
+
+
+ /**
+ * Create (or allocate) and return an available processor for use in
+ * processing a specific HTTP request, if possible. If the maximum
+ * allowed processors have already been created and are in use, return
+ * <code>null</code> instead.
+ */
+ protected Worker createWorkerThread() {
+
+ synchronized (workers) {
+ if (workers.size() > 0) {
+ curThreadsBusy++;
+ return workers.pop();
+ }
+ if ((maxThreads > 0) && (curThreads < maxThreads)) {
+ curThreadsBusy++;
+ if (curThreadsBusy == maxThreads) {
+ CoyoteLogger.UTIL_LOGGER.maxThreadsReached(maxThreads, address, port);
+ }
+ return (newWorkerThread());
+ } else {
+ if (maxThreads < 0) {
+ curThreadsBusy++;
+ return (newWorkerThread());
+ } else {
+ return (null);
+ }
+ }
+ }
+
+ }
+
+
+ /**
+ * Create and return a new processor suitable for processing HTTP
+ * requests and returning the corresponding responses.
+ */
+ protected Worker newWorkerThread() {
+
+ Worker workerThread = new Worker();
+ workerThread.start();
+ return (workerThread);
+
+ }
+
+
+ /**
+ * Return a new worker thread, and block while to worker is available.
+ */
+ protected Worker getWorkerThread() {
+ // Allocate a new worker thread
+ Worker workerThread = createWorkerThread();
+ if (org.apache.tomcat.util.net.Constants.WAIT_FOR_THREAD
+ || org.apache.tomcat.util.Constants.LOW_MEMORY) {
+ while (workerThread == null) {
+ try {
+ synchronized (workers) {
+ workers.wait();
+ }
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ workerThread = createWorkerThread();
+ }
+ }
+ return workerThread;
+ }
+
+
+ /**
+ * Recycle the specified Processor so that it can be used again.
+ *
+ * @param workerThread The processor to be recycled
+ */
+ protected void recycleWorkerThread(Worker workerThread) {
+ synchronized (workers) {
+ workers.push(workerThread);
+ curThreadsBusy--;
+ workers.notify();
+ }
+ }
+
+
+ /**
+ * Process given socket.
+ */
+ protected boolean processSocket(Socket socket) {
+ try {
+ if (executor == null) {
+ Worker worker = getWorkerThread();
+ if (worker != null) {
+ worker.assign(socket);
+ } else {
+ return false;
+ }
+ } else {
+ executor.execute(new SocketProcessor(socket));
+ }
+ } catch (Throwable t) {
+ // This means we got an OOM or similar creating a thread, or that
+ // the pool and its queue are full
+ CoyoteLogger.UTIL_LOGGER.errorProcessingSocket(t);
+ return false;
+ }
+ return true;
+ }
+
+
+ /**
+ * Process given socket for an event.
+ */
+ protected boolean processSocket(Socket socket, SocketStatus status) {
+ try {
+ if (executor == null) {
+ Worker worker = getWorkerThread();
+ if (worker != null) {
+ worker.assign(socket, status);
+ } else {
+ return false;
+ }
+ } else {
+ executor.execute(new SocketEventProcessor(socket, status));
+ }
+ } catch (Throwable t) {
+ // This means we got an OOM or similar creating a thread, or that
+ // the pool and its queue are full
+ CoyoteLogger.UTIL_LOGGER.errorProcessingSocket(t);
+ return false;
+ }
+ return true;
+ }
+
+
+ // ------------------------------------------------- WorkerStack Inner Class
+
+
+ public class WorkerStack {
+
+ protected Worker[] workers = null;
+ protected int end = 0;
+
+ public WorkerStack(int size) {
+ workers = new Worker[size];
+ }
+
+ /**
+ * Put the object into the queue.
+ *
+ * @param object the object to be appended to the queue (first element).
+ */
+ public void push(Worker worker) {
+ workers[end++] = worker;
+ }
+
+ /**
+ * Get the first object out of the queue. Return null if the queue
+ * is empty.
+ */
+ public Worker pop() {
+ if (end > 0) {
+ return workers[--end];
+ }
+ return null;
+ }
+
+ /**
+ * Get the first object out of the queue, Return null if the queue
+ * is empty.
+ */
+ public Worker peek() {
+ return workers[end];
+ }
+
+ /**
+ * Is the queue empty?
+ */
+ public boolean isEmpty() {
+ return (end == 0);
+ }
+
+ /**
+ * How many elements are there in this queue?
+ */
+ public int size() {
+ return (end);
+ }
+ }
+
+}
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/NioEndpoint.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -187,15 +187,15 @@
}
if (this.connections == null) {
- this.connections = new ConcurrentHashMap<>();
+ this.connections = new ConcurrentHashMap<Long, NioChannel>();
}
if (this.recycledChannelProcessors == null) {
- this.recycledChannelProcessors = new ConcurrentLinkedQueue<>();
+ this.recycledChannelProcessors = new ConcurrentLinkedQueue<ChannelProcessor>();
}
if (this.recycledHandshakeProcessors == null) {
- this.recycledHandshakeProcessors = new ConcurrentLinkedQueue<>();
+ this.recycledHandshakeProcessors = new ConcurrentLinkedQueue<HandshakeHandler>();
}
// If the executor is not set, create it with a fixed thread pool
@@ -1199,9 +1199,9 @@
*/
public void init() {
this.mutex = new Object();
- this.channelList = new ConcurrentHashMap<>(this.size);
- this.recycledChannelList = new ConcurrentLinkedQueue<>();
- this.recycledCompletionHandlers = new ConcurrentLinkedQueue<>();
+ this.channelList = new ConcurrentHashMap<Long, ChannelInfo>(this.size);
+ this.recycledChannelList = new ConcurrentLinkedQueue<ChannelInfo>();
+ this.recycledCompletionHandlers = new ConcurrentLinkedQueue<CompletionHandler<Integer, NioChannel>>();
}
/**
@@ -1646,8 +1646,8 @@
this.size = maxThreads;
this.mutex = new Object();
this.counter = new AtomicInteger(0);
- this.fileDatas = new ConcurrentLinkedQueue<>();
- this.recycledFileDatas = new ConcurrentLinkedQueue<>();
+ this.fileDatas = new ConcurrentLinkedQueue<SendfileData>();
+ this.recycledFileDatas = new ConcurrentLinkedQueue<SendfileData>();
}
/**
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/SSLImplementation.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/SSLImplementation.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/SSLImplementation.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -80,26 +80,6 @@
}
}
- /**
- * @return the implementation name
- */
abstract public String getImplementationName();
-
- /**
- *
- * @return a new instance of {@link NioJSSESocketChannelFactory}
- */
- public abstract NioJSSESocketChannelFactory getServerSocketChannelFactory();
-
- /**
- * @param channel
- * @return the {@link SSLSupport} attached to this channel
- */
- public abstract SSLSupport getSSLSupport(NioChannel channel);
-
- /**
- * @param session
- * @return the {@link SSLSupport} attached to this session
- */
abstract public SSLSupport getSSLSupport(SSLSession session);
}
\ No newline at end of file
Added: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/ServerSocketFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/ServerSocketFactory.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/ServerSocketFactory.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.util.net;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.Hashtable;
+
+/**
+ * This class creates server sockets. It may be subclassed by other
+ * factories, which create particular types of server sockets. This
+ * provides a general framework for the addition of public socket-level
+ * functionality. It it is the server side analogue of a socket factory,
+ * and similarly provides a way to capture a variety of policies related
+ * to the sockets being constructed.
+ *
+ * <P> Like socket factories, Server Socket factory instances have two
+ * categories of methods. First are methods used to create sockets.
+ * Second are methods which set properties used in the production of
+ * sockets, such as networking options. There is also an environment
+ * specific default server socket factory; frameworks will often use
+ * their own customized factory.
+ *
+ * <P><hr><em> It may be desirable to move this interface into the
+ * <b>java.net</b> package, so that is not an extension but the preferred
+ * interface. Should this be serializable, making it a JavaBean which can
+ * be saved along with its networking configuration?
+ * </em>
+ *
+ * @author db(a)eng.sun.com
+ * @author Harish Prabandham
+ */
+public abstract class ServerSocketFactory implements Cloneable {
+
+ //
+ // NOTE: JDK 1.1 bug in class GC, this can get collected
+ // even though it's always accessible via getDefault().
+ //
+
+ private static ServerSocketFactory theFactory;
+ protected Hashtable attributes=new Hashtable();
+
+ /**
+ * Constructor is used only by subclasses.
+ */
+
+ protected ServerSocketFactory () {
+ /* NOTHING */
+ }
+
+ /** General mechanism to pass attributes from the
+ * ServerConnector to the socket factory.
+ *
+ * Note that the "prefered" mechanism is to
+ * use bean setters and explicit methods, but
+ * this allows easy configuration via server.xml
+ * or simple Properties
+ */
+ public void setAttribute( String name, Object value ) {
+ if( name!=null && value !=null)
+ attributes.put( name, value );
+ }
+
+ /**
+ * Returns a copy of the environment's default socket factory.
+ */
+ public static synchronized ServerSocketFactory getDefault () {
+ //
+ // optimize typical case: no synch needed
+ //
+
+ if (theFactory == null) {
+ //
+ // Different implementations of this method could
+ // work rather differently. For example, driving
+ // this from a system property, or using a different
+ // implementation than JavaSoft's.
+ //
+
+ theFactory = new DefaultServerSocketFactory ();
+ }
+
+ try {
+ return (ServerSocketFactory) theFactory.clone ();
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeException (e.getMessage ());
+ }
+ }
+
+ /**
+ * Returns a server socket which uses all network interfaces on
+ * the host, and is bound to a the specified port. The socket is
+ * configured with the socket options (such as accept timeout)
+ * given to this factory.
+ *
+ * @param port the port to listen to
+ * @exception IOException for networking errors
+ * @exception InstantiationException for construction errors
+ */
+ public abstract ServerSocket createSocket (int port)
+ throws IOException, InstantiationException;
+
+ /**
+ * Returns a server socket which uses all network interfaces on
+ * the host, is bound to a the specified port, and uses the
+ * specified connection backlog. The socket is configured with
+ * the socket options (such as accept timeout) given to this factory.
+ *
+ * @param port the port to listen to
+ * @param backlog how many connections are queued
+ * @exception IOException for networking errors
+ * @exception InstantiationException for construction errors
+ */
+
+ public abstract ServerSocket createSocket (int port, int backlog)
+ throws IOException, InstantiationException;
+
+ /**
+ * Returns a server socket which uses only the specified network
+ * interface on the local host, is bound to a the specified port,
+ * and uses the specified connection backlog. The socket is configured
+ * with the socket options (such as accept timeout) given to this factory.
+ *
+ * @param port the port to listen to
+ * @param backlog how many connections are queued
+ * @param ifAddress the network interface address to use
+ * @exception IOException for networking errors
+ * @exception InstantiationException for construction errors
+ */
+
+ public abstract ServerSocket createSocket (int port,
+ int backlog, InetAddress ifAddress)
+ throws IOException, InstantiationException;
+
+ public void initSocket( Socket s ) {
+ }
+
+ /**
+ Wrapper function for accept(). This allows us to trap and
+ translate exceptions if necessary
+
+ @exception IOException;
+ */
+ public abstract Socket acceptSocket(ServerSocket socket)
+ throws IOException;
+
+ /**
+ Extra function to initiate the handshake. Sometimes necessary
+ for SSL
+
+ @exception IOException;
+ */
+ public abstract void handshake(Socket sock)
+ throws IOException;
+}
+
Added: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEFactory.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEFactory.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.util.net.jsse;
+
+import java.net.Socket;
+
+import javax.net.ssl.SSLSocket;
+
+import org.apache.tomcat.util.net.SSLSupport;
+import org.apache.tomcat.util.net.ServerSocketFactory;
+import javax.net.ssl.SSLSession;
+
+/**
+ * Factory interface to construct components based on the JSSE version
+ * in use.
+ *
+ * @author Bill Barker
+ * @author Filip Hanik
+ */
+
+public class JSSEFactory {
+
+ /**
+ * Returns the ServerSocketFactory to use.
+ */
+ public ServerSocketFactory getSocketFactory() {
+ return new JSSESocketFactory();
+ }
+
+ /**
+ * returns the SSLSupport attached to this socket.
+ */
+ public SSLSupport getSSLSupport(Socket socket) {
+ return new JSSESupport((SSLSocket)socket);
+ }
+
+ public SSLSupport getSSLSupport(SSLSession session) {
+ return new JSSESupport(session);
+ }
+
+};
Added: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.util.net.jsse;
+
+import java.net.Socket;
+
+import org.apache.tomcat.util.net.NioChannel;
+import org.apache.tomcat.util.net.SSLImplementation;
+import org.apache.tomcat.util.net.SSLSupport;
+import org.apache.tomcat.util.net.ServerSocketFactory;
+import javax.net.ssl.SSLSession;
+
+/* JSSEImplementation:
+
+ Concrete implementation class for JSSE
+
+ @author EKR
+*/
+
+public class JSSEImplementation extends SSLImplementation
+{
+ static final String SSLSocketClass = "javax.net.ssl.SSLSocket";
+
+ static org.jboss.logging.Logger logger =
+ org.jboss.logging.Logger.getLogger(JSSEImplementation.class);
+
+ private JSSEFactory factory = null;
+
+ public JSSEImplementation() throws ClassNotFoundException {
+ // Check to see if JSSE is floating around somewhere
+ Class.forName(SSLSocketClass);
+ factory = new JSSEFactory();
+ }
+
+
+ public String getImplementationName(){
+ return "JSSE";
+ }
+
+ public ServerSocketFactory getServerSocketFactory() {
+ ServerSocketFactory ssf = factory.getSocketFactory();
+ return ssf;
+ }
+
+ public SSLSupport getSSLSupport(Socket s) {
+ SSLSupport ssls = factory.getSSLSupport(s);
+ return ssls;
+ }
+
+ public SSLSupport getSSLSupport(SSLSession session) {
+ SSLSupport ssls = factory.getSSLSupport(session);
+ return ssls;
+ }
+
+
+}
Added: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,805 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.util.net.jsse;
+
+import static org.jboss.web.CoyoteMessages.MESSAGES;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketException;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.CRL;
+import java.security.cert.CRLException;
+import java.security.cert.CertPathParameters;
+import java.security.cert.CertStore;
+import java.security.cert.CertStoreParameters;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.CollectionCertStoreParameters;
+import java.security.cert.PKIXBuilderParameters;
+import java.security.cert.X509CertSelector;
+import java.util.Collection;
+import java.util.Locale;
+import java.util.Vector;
+
+import javax.net.ssl.CertPathTrustManagerParameters;
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.ManagerFactoryParameters;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLServerSocketFactory;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSessionContext;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509KeyManager;
+
+import org.jboss.web.CoyoteLogger;
+
+/*
+ 1. Make the JSSE's jars available, either as an installed
+ extension (copy them into jre/lib/ext) or by adding
+ them to the Tomcat classpath.
+ 2. keytool -genkey -alias tomcat -keyalg RSA
+ Use "changeit" as password ( this is the default we use )
+ */
+
+/**
+ * SSL server socket factory. It _requires_ a valid RSA key and
+ * JSSE.
+ *
+ * @author Harish Prabandham
+ * @author Costin Manolache
+ * @author Stefan Freyr Stefansson
+ * @author EKR -- renamed to JSSESocketFactory
+ * @author Jan Luehe
+ * @author Bill Barker
+ */
+public class JSSESocketFactory
+ extends org.apache.tomcat.util.net.ServerSocketFactory {
+
+ private static final boolean RFC_5746_SUPPORTED;
+ // defaults
+ static String defaultProtocol = "TLS";
+ static boolean defaultClientAuth = false;
+ static String defaultKeystoreType = "JKS";
+ private static final String defaultKeystoreFile
+ = System.getProperty("user.home") + "/.keystore";
+ private static final String defaultKeyPass = "changeit";
+ private static final int defaultSessionCacheSize = 0;
+ private static final int defaultSessionTimeout = 86400;
+
+ static org.jboss.logging.Logger log =
+ org.jboss.logging.Logger.getLogger(JSSESocketFactory.class);
+
+ static {
+ boolean result = false;
+ SSLContext context;
+ try {
+ context = SSLContext.getInstance("TLS");
+ context.init(null, null, new SecureRandom());
+ SSLServerSocketFactory ssf = context.getServerSocketFactory();
+ String ciphers[] = ssf.getSupportedCipherSuites();
+ for (String cipher : ciphers) {
+ if ("TLS_EMPTY_RENEGOTIATION_INFO_SCSV".equals(cipher)) {
+ result = true;
+ break;
+ }
+ }
+ } catch (NoSuchAlgorithmException e) {
+ // Assume no RFC 5746 support
+ } catch (KeyManagementException e) {
+ // Assume no RFC 5746 support
+ }
+ RFC_5746_SUPPORTED = result;
+ }
+
+ protected boolean initialized;
+ protected String clientAuth = "false";
+ protected SSLServerSocketFactory sslProxy = null;
+ protected String[] enabledCiphers;
+ protected boolean allowUnsafeLegacyRenegotiation = false;
+
+ /**
+ * Flag to state that we require client authentication.
+ */
+ protected boolean requireClientAuth = false;
+
+ /**
+ * Flag to state that we would like client authentication.
+ */
+ protected boolean wantClientAuth = false;
+
+
+ public JSSESocketFactory () {
+ }
+
+ public ServerSocket createSocket (int port)
+ throws IOException
+ {
+ if (!initialized) init();
+ ServerSocket socket = sslProxy.createServerSocket(port);
+ initServerSocket(socket);
+ return socket;
+ }
+
+ public ServerSocket createSocket (int port, int backlog)
+ throws IOException
+ {
+ if (!initialized) init();
+ ServerSocket socket = sslProxy.createServerSocket(port, backlog);
+ initServerSocket(socket);
+ return socket;
+ }
+
+ public ServerSocket createSocket (int port, int backlog,
+ InetAddress ifAddress)
+ throws IOException
+ {
+ if (!initialized) init();
+ ServerSocket socket = sslProxy.createServerSocket(port, backlog,
+ ifAddress);
+ initServerSocket(socket);
+ return socket;
+ }
+
+ public Socket acceptSocket(ServerSocket socket)
+ throws IOException
+ {
+ SSLSocket asock = null;
+ try {
+ asock = (SSLSocket)socket.accept();
+ } catch (SSLException e){
+ throw new SocketException("SSL handshake error" + e.toString());
+ }
+ return asock;
+ }
+
+ public void handshake(Socket sock) throws IOException {
+ // We do getSession instead of startHandshake() so we can call this multiple times
+ SSLSession session = ((SSLSocket)sock).getSession();
+ if (session.getCipherSuite().equals("SSL_NULL_WITH_NULL_NULL"))
+ throw new IOException("SSL handshake failed. Ciper suite in SSL Session is SSL_NULL_WITH_NULL_NULL");
+
+ if (!allowUnsafeLegacyRenegotiation && !RFC_5746_SUPPORTED) {
+ // Prevent further handshakes by removing all cipher suites
+ ((SSLSocket) sock).setEnabledCipherSuites(new String[0]);
+ }
+ }
+
+ /*
+ * Determines the SSL cipher suites to be enabled.
+ *
+ * @param requestedCiphers Comma-separated list of requested ciphers
+ * @param supportedCiphers Array of supported ciphers
+ *
+ * @return Array of SSL cipher suites to be enabled, or null if none of the
+ * requested ciphers are supported
+ */
+ protected String[] getEnabledCiphers(String requestedCiphers,
+ String[] supportedCiphers) {
+
+ String[] enabledCiphers = null;
+
+ if (requestedCiphers != null) {
+ Vector vec = null;
+ String cipher = requestedCiphers;
+ int index = requestedCiphers.indexOf(',');
+ if (index != -1) {
+ int fromIndex = 0;
+ while (index != -1) {
+ cipher = requestedCiphers.substring(fromIndex, index).trim();
+ if (cipher.length() > 0) {
+ /*
+ * Check to see if the requested cipher is among the
+ * supported ciphers, i.e., may be enabled
+ */
+ for (int i=0; supportedCiphers != null
+ && i<supportedCiphers.length; i++) {
+ if (supportedCiphers[i].equals(cipher)) {
+ if (vec == null) {
+ vec = new Vector();
+ }
+ vec.addElement(cipher);
+ break;
+ }
+ }
+ }
+ fromIndex = index+1;
+ index = requestedCiphers.indexOf(',', fromIndex);
+ } // while
+ cipher = requestedCiphers.substring(fromIndex);
+ }
+
+ if (cipher != null) {
+ cipher = cipher.trim();
+ if (cipher.length() > 0) {
+ /*
+ * Check to see if the requested cipher is among the
+ * supported ciphers, i.e., may be enabled
+ */
+ for (int i=0; supportedCiphers != null
+ && i<supportedCiphers.length; i++) {
+ if (supportedCiphers[i].equals(cipher)) {
+ if (vec == null) {
+ vec = new Vector();
+ }
+ vec.addElement(cipher);
+ break;
+ }
+ }
+ }
+ }
+
+ if (vec != null) {
+ enabledCiphers = new String[vec.size()];
+ vec.copyInto(enabledCiphers);
+ }
+ } else {
+ enabledCiphers = sslProxy.getDefaultCipherSuites();
+ }
+
+ return enabledCiphers;
+ }
+
+ /*
+ * Gets the SSL server's keystore password.
+ */
+ protected String getKeystorePassword() {
+ String keyPass = (String)attributes.get("keypass");
+ if (keyPass == null) {
+ keyPass = defaultKeyPass;
+ }
+ String keystorePass = (String)attributes.get("keystorePass");
+ if (keystorePass == null) {
+ keystorePass = keyPass;
+ }
+ return keystorePass;
+ }
+
+ /*
+ * Gets the SSL server's keystore.
+ */
+ protected KeyStore getKeystore(String type, String provider, String pass)
+ throws IOException {
+
+ String keystoreFile = (String)attributes.get("keystore");
+ if (keystoreFile == null)
+ keystoreFile = defaultKeystoreFile;
+
+ return getStore(type, provider, keystoreFile, pass);
+ }
+
+ /*
+ * Gets the SSL server's truststore.
+ */
+ protected KeyStore getTrustStore(String keystoreType,
+ String keystoreProvider) throws IOException {
+ KeyStore trustStore = null;
+
+ String truststoreFile = (String)attributes.get("truststoreFile");
+ if(truststoreFile == null) {
+ truststoreFile = System.getProperty("javax.net.ssl.trustStore");
+ }
+ if(log.isDebugEnabled()) {
+ log.debug("Truststore = " + truststoreFile);
+ }
+ String truststorePassword = (String)attributes.get("truststorePass");
+ if( truststorePassword == null) {
+ truststorePassword = System.getProperty("javax.net.ssl.trustStorePassword");
+ }
+ if(log.isDebugEnabled()) {
+ log.debug("TrustPass = " + truststorePassword);
+ }
+ String truststoreType = (String)attributes.get("truststoreType");
+ if( truststoreType == null) {
+ truststoreType = System.getProperty("javax.net.ssl.trustStoreType");
+ }
+ if(truststoreType == null) {
+ truststoreType = keystoreType;
+ }
+ if(log.isDebugEnabled()) {
+ log.debug("trustType = " + truststoreType);
+ }
+ String truststoreProvider =
+ (String)attributes.get("truststoreProvider");
+ if( truststoreProvider == null) {
+ truststoreProvider =
+ System.getProperty("javax.net.ssl.trustStoreProvider");
+ }
+ if (truststoreProvider == null) {
+ truststoreProvider = keystoreProvider;
+ }
+ if(log.isDebugEnabled()) {
+ log.debug("trustProvider = " + truststoreProvider);
+ }
+
+ if (truststoreFile != null){
+ trustStore = getStore(truststoreType, truststoreProvider,
+ truststoreFile, truststorePassword);
+ }
+
+ return trustStore;
+ }
+
+ /*
+ * Gets the key- or truststore with the specified type, path, and password.
+ */
+ private KeyStore getStore(String type, String provider, String path,
+ String pass) throws IOException {
+
+ KeyStore ks = null;
+ InputStream istream = null;
+ try {
+ if (provider == null) {
+ ks = KeyStore.getInstance(type);
+ } else {
+ ks = KeyStore.getInstance(type, provider);
+ }
+ if(!("PKCS11".equalsIgnoreCase(type) || "".equalsIgnoreCase(path))) {
+ File keyStoreFile = new File(path);
+ if (!keyStoreFile.isAbsolute()) {
+ keyStoreFile = new File(System.getProperty("catalina.base"),
+ path);
+ }
+ istream = new FileInputStream(keyStoreFile);
+ }
+
+ char[] storePass = null;
+ if (pass != null) {
+ storePass = pass.toCharArray();
+ }
+ ks.load(istream, storePass);
+ } catch (FileNotFoundException fnfe) {
+ CoyoteLogger.UTIL_LOGGER.errorLoadingKeystore(type, path, fnfe.getMessage());
+ throw fnfe;
+ } catch (IOException ioe) {
+ CoyoteLogger.UTIL_LOGGER.errorLoadingKeystoreWithException(type, path, ioe.getMessage(), ioe);
+ throw ioe;
+ } catch(Exception ex) {
+ CoyoteLogger.UTIL_LOGGER.errorLoadingKeystoreWithException(type, path, ex.getMessage(), ex);
+ throw new IOException(ex);
+ } finally {
+ if (istream != null) {
+ try {
+ istream.close();
+ } catch (IOException ioe) {
+ // Do nothing
+ }
+ }
+ }
+
+ return ks;
+ }
+
+ /**
+ * Reads the keystore and initializes the SSL socket factory.
+ */
+ void init() throws IOException {
+ try {
+
+ String clientAuthStr = (String) attributes.get("clientauth");
+ if("true".equalsIgnoreCase(clientAuthStr) ||
+ "yes".equalsIgnoreCase(clientAuthStr)) {
+ requireClientAuth = true;
+ } else if("want".equalsIgnoreCase(clientAuthStr)) {
+ wantClientAuth = true;
+ }
+
+ // SSL protocol variant (e.g., TLS, SSL v3, etc.)
+ String protocol = (String) attributes.get("protocol");
+ if (protocol == null) {
+ protocol = defaultProtocol;
+ }
+
+ // Certificate encoding algorithm (e.g., SunX509)
+ String algorithm = (String) attributes.get("algorithm");
+ if (algorithm == null) {
+ algorithm = KeyManagerFactory.getDefaultAlgorithm();;
+ }
+
+ String keystoreType = (String) attributes.get("keystoreType");
+ if (keystoreType == null) {
+ keystoreType = defaultKeystoreType;
+ }
+
+ String keystoreProvider =
+ (String) attributes.get("keystoreProvider");
+
+ String trustAlgorithm =
+ (String)attributes.get("truststoreAlgorithm");
+ if( trustAlgorithm == null ) {
+ trustAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
+ }
+
+ // Create and init SSLContext
+ SSLContext context = (SSLContext) attributes.get("SSLContext");
+ if (context == null) {
+ context = SSLContext.getInstance(protocol);
+ context.init(
+ getKeyManagers(keystoreType, keystoreProvider,
+ algorithm, (String) attributes.get("keyAlias")),
+ getTrustManagers(keystoreType, keystoreProvider,
+ trustAlgorithm), new SecureRandom());
+ }
+
+ // Configure SSL session cache
+ int sessionCacheSize;
+ if (attributes.get("sessionCacheSize") != null) {
+ sessionCacheSize = Integer.parseInt(
+ (String)attributes.get("sessionCacheSize"));
+ } else {
+ sessionCacheSize = defaultSessionCacheSize;
+ }
+ int sessionCacheTimeout;
+ if (attributes.get("sessionCacheTimeout") != null) {
+ sessionCacheTimeout = Integer.parseInt(
+ (String)attributes.get("sessionCacheTimeout"));
+ } else {
+ sessionCacheTimeout = defaultSessionTimeout;
+ }
+ SSLSessionContext sessionContext =
+ context.getServerSessionContext();
+ if (sessionContext != null) {
+ sessionContext.setSessionCacheSize(sessionCacheSize);
+ sessionContext.setSessionTimeout(sessionCacheTimeout);
+ }
+
+ // create proxy
+ sslProxy = context.getServerSocketFactory();
+
+ // Determine which cipher suites to enable
+ String requestedCiphers = (String)attributes.get("ciphers");
+ enabledCiphers = getEnabledCiphers(requestedCiphers,
+ sslProxy.getSupportedCipherSuites());
+
+ allowUnsafeLegacyRenegotiation =
+ "true".equals(attributes.get("allowUnsafeLegacyRenegotiation"));
+
+ // Check the SSL config is OK
+ checkConfig();
+
+ } catch(Exception e) {
+ if( e instanceof IOException )
+ throw (IOException)e;
+ throw new IOException(e.getMessage());
+ }
+ }
+
+ /**
+ * Gets the initialized key managers.
+ */
+ protected KeyManager[] getKeyManagers(String keystoreType,
+ String keystoreProvider,
+ String algorithm,
+ String keyAlias)
+ throws Exception {
+
+ KeyManager[] kms = null;
+
+ String keystorePass = getKeystorePassword();
+
+ KeyStore ks = getKeystore(keystoreType, keystoreProvider, keystorePass);
+ if (keyAlias != null && !ks.isKeyEntry(keyAlias)) {
+ throw new IOException(MESSAGES.noKeyAlias(keyAlias));
+ }
+
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance(algorithm);
+ kmf.init(ks, keystorePass.toCharArray());
+
+ kms = kmf.getKeyManagers();
+ if (keyAlias != null) {
+ if (JSSESocketFactory.defaultKeystoreType.equals(keystoreType)) {
+ keyAlias = keyAlias.toLowerCase(Locale.ENGLISH);
+ }
+ for(int i=0; i<kms.length; i++) {
+ kms[i] = new JSSEKeyManager((X509KeyManager)kms[i], keyAlias);
+ }
+ }
+
+ return kms;
+ }
+
+ /**
+ * Gets the intialized trust managers.
+ */
+ protected TrustManager[] getTrustManagers(String keystoreType,
+ String keystoreProvider, String algorithm)
+ throws Exception {
+ String crlf = (String) attributes.get("crlFile");
+
+ TrustManager[] tms = null;
+
+ KeyStore trustStore = getTrustStore(keystoreType, keystoreProvider);
+ if (trustStore != null) {
+ if (crlf == null) {
+ TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm);
+ tmf.init(trustStore);
+ tms = tmf.getTrustManagers();
+ } else {
+ TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm);
+ CertPathParameters params = getParameters(algorithm, crlf, trustStore);
+ ManagerFactoryParameters mfp = new CertPathTrustManagerParameters(params);
+ tmf.init(mfp);
+ tms = tmf.getTrustManagers();
+ }
+ }
+
+ return tms;
+ }
+
+ /**
+ * Return the initialization parameters for the TrustManager.
+ * Currently, only the default <code>PKIX</code> is supported.
+ *
+ * @param algorithm The algorithm to get parameters for.
+ * @param crlf The path to the CRL file.
+ * @param trustStore The configured TrustStore.
+ * @return The parameters including the CRLs and TrustStore.
+ */
+ protected CertPathParameters getParameters(String algorithm,
+ String crlf,
+ KeyStore trustStore)
+ throws Exception {
+ CertPathParameters params = null;
+ if("PKIX".equalsIgnoreCase(algorithm)) {
+ PKIXBuilderParameters xparams = new PKIXBuilderParameters(trustStore,
+ new X509CertSelector());
+ Collection crls = getCRLs(crlf);
+ CertStoreParameters csp = new CollectionCertStoreParameters(crls);
+ CertStore store = CertStore.getInstance("Collection", csp);
+ xparams.addCertStore(store);
+ xparams.setRevocationEnabled(true);
+ String trustLength = (String)attributes.get("trustMaxCertLength");
+ if(trustLength != null) {
+ try {
+ xparams.setMaxPathLength(Integer.parseInt(trustLength));
+ } catch(Exception ex) {
+ log.warn("Bad maxCertLength: "+trustLength);
+ }
+ }
+
+ params = xparams;
+ } else {
+ throw new CRLException("CRLs not supported for type: "+algorithm);
+ }
+ return params;
+ }
+
+
+ /**
+ * Load the collection of CRLs.
+ *
+ */
+ protected Collection<? extends CRL> getCRLs(String crlf)
+ throws IOException, CRLException, CertificateException {
+
+ File crlFile = new File(crlf);
+ if( !crlFile.isAbsolute() ) {
+ crlFile = new File(System.getProperty("catalina.base"), crlf);
+ }
+ Collection<? extends CRL> crls = null;
+ InputStream is = null;
+ try {
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ is = new FileInputStream(crlFile);
+ crls = cf.generateCRLs(is);
+ } catch(IOException iex) {
+ throw iex;
+ } catch(CRLException crle) {
+ throw crle;
+ } catch(CertificateException ce) {
+ throw ce;
+ } finally {
+ if(is != null) {
+ try{
+ is.close();
+ } catch(Exception ex) {
+ }
+ }
+ }
+ return crls;
+ }
+
+ /**
+ * Set the SSL protocol variants to be enabled.
+ * @param socket the SSLServerSocket.
+ * @param protocols the protocols to use.
+ */
+ protected void setEnabledProtocols(SSLServerSocket socket, String []protocols){
+ if (protocols != null) {
+ socket.setEnabledProtocols(protocols);
+ }
+ }
+
+ /**
+ * Determines the SSL protocol variants to be enabled.
+ *
+ * @param socket The socket to get supported list from.
+ * @param requestedProtocols Comma-separated list of requested SSL
+ * protocol variants
+ *
+ * @return Array of SSL protocol variants to be enabled, or null if none of
+ * the requested protocol variants are supported
+ */
+ protected String[] getEnabledProtocols(SSLServerSocket socket,
+ String requestedProtocols){
+ String[] supportedProtocols = socket.getSupportedProtocols();
+
+ String[] enabledProtocols = null;
+
+ if (requestedProtocols != null) {
+ Vector vec = null;
+ String protocol = requestedProtocols;
+ int index = requestedProtocols.indexOf(',');
+ if (index != -1) {
+ int fromIndex = 0;
+ while (index != -1) {
+ protocol = requestedProtocols.substring(fromIndex, index).trim();
+ if (protocol.length() > 0) {
+ /*
+ * Check to see if the requested protocol is among the
+ * supported protocols, i.e., may be enabled
+ */
+ for (int i=0; supportedProtocols != null
+ && i<supportedProtocols.length; i++) {
+ if (supportedProtocols[i].equals(protocol)) {
+ if (vec == null) {
+ vec = new Vector();
+ }
+ vec.addElement(protocol);
+ break;
+ }
+ }
+ }
+ fromIndex = index+1;
+ index = requestedProtocols.indexOf(',', fromIndex);
+ } // while
+ protocol = requestedProtocols.substring(fromIndex);
+ }
+
+ if (protocol != null) {
+ protocol = protocol.trim();
+ if (protocol.length() > 0) {
+ /*
+ * Check to see if the requested protocol is among the
+ * supported protocols, i.e., may be enabled
+ */
+ for (int i=0; supportedProtocols != null
+ && i<supportedProtocols.length; i++) {
+ if (supportedProtocols[i].equals(protocol)) {
+ if (vec == null) {
+ vec = new Vector();
+ }
+ vec.addElement(protocol);
+ break;
+ }
+ }
+ }
+ }
+
+ if (vec != null) {
+ enabledProtocols = new String[vec.size()];
+ vec.copyInto(enabledProtocols);
+ }
+ }
+
+ return enabledProtocols;
+ }
+
+ /**
+ * Configure Client authentication for this version of JSSE. The
+ * JSSE included in Java 1.4 supports the 'want' value. Prior
+ * versions of JSSE will treat 'want' as 'false'.
+ * @param socket the SSLServerSocket
+ */
+ protected void configureClientAuth(SSLServerSocket socket){
+ if (wantClientAuth){
+ socket.setWantClientAuth(wantClientAuth);
+ } else {
+ socket.setNeedClientAuth(requireClientAuth);
+ }
+ }
+
+ /**
+ * Configure Client authentication for this version of JSSE. The
+ * JSSE included in Java 1.4 supports the 'want' value. Prior
+ * versions of JSSE will treat 'want' as 'false'.
+ * @param socket the SSLSocket
+ */
+ protected void configureClientAuth(SSLSocket socket){
+ // Per JavaDocs: SSLSockets returned from
+ // SSLServerSocket.accept() inherit this setting.
+ }
+
+ /**
+ * Configures the given SSL server socket with the requested cipher suites,
+ * protocol versions, and need for client authentication
+ */
+ private void initServerSocket(ServerSocket ssocket) {
+
+ SSLServerSocket socket = (SSLServerSocket) ssocket;
+
+ if (enabledCiphers != null) {
+ socket.setEnabledCipherSuites(enabledCiphers);
+ }
+
+ String requestedProtocols = (String) attributes.get("protocols");
+ setEnabledProtocols(socket, getEnabledProtocols(socket,
+ requestedProtocols));
+
+ // we don't know if client auth is needed -
+ // after parsing the request we may re-handshake
+ configureClientAuth(socket);
+ }
+
+ /**
+ * Checks that the certificate is compatible with the enabled cipher suites.
+ * If we don't check now, the JIoEndpoint can enter a nasty logging loop.
+ * See bug 45528.
+ */
+ private void checkConfig() throws IOException {
+ // Create an unbound server socket
+ ServerSocket socket = sslProxy.createServerSocket();
+ initServerSocket(socket);
+
+ try {
+ // Set the timeout to 1ms as all we care about is if it throws an
+ // SSLException on accept.
+ socket.setSoTimeout(1);
+
+ socket.accept();
+ // Will never get here - no client can connect to an unbound port
+ } catch (SSLException ssle) {
+ // SSL configuration is invalid. Possibly cert doesn't match ciphers
+ IOException ioe = new IOException(MESSAGES.invalidSSLConfiguration(ssle.getMessage()));
+ ioe.initCause(ssle);
+ throw ioe;
+ } catch (Exception e) {
+ /*
+ * Possible ways of getting here
+ * socket.accept() throws a SecurityException
+ * socket.setSoTimeout() throws a SocketException
+ * socket.accept() throws some other exception (after a JDK change)
+ * In these cases the test won't work so carry on - essentially
+ * the behaviour before this patch
+ * socket.accept() throws a SocketTimeoutException
+ * In this case all is well so carry on
+ */
+ } finally {
+ // Should be open here but just in case
+ if (!socket.isClosed()) {
+ socket.close();
+ }
+ }
+
+ }
+
+}
Added: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESupport.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESupport.java (rev 0)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/JSSESupport.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -0,0 +1,246 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.util.net.jsse;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.SocketException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+
+import javax.net.ssl.HandshakeCompletedEvent;
+import javax.net.ssl.HandshakeCompletedListener;
+import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocket;
+import javax.security.cert.X509Certificate;
+
+import org.apache.tomcat.util.net.Constants;
+import org.apache.tomcat.util.net.SSLSupport;
+
+/** JSSESupport
+
+ Concrete implementation class for JSSE
+ Support classes.
+
+ This will only work with JDK 1.2 and up since it
+ depends on JDK 1.2's certificate support
+
+ @author EKR
+ @author Craig R. McClanahan
+ @author Filip Hanik
+ Parts cribbed from JSSECertCompat
+ Parts cribbed from CertificatesValve
+*/
+
+class JSSESupport implements SSLSupport {
+
+ private static org.jboss.logging.Logger log =
+ org.jboss.logging.Logger.getLogger(JSSESupport.class);
+
+ protected SSLSocket ssl;
+ protected SSLSession session;
+
+ Listener listener = new Listener();
+
+ JSSESupport(SSLSocket sock){
+ ssl=sock;
+ session = sock.getSession();
+ sock.addHandshakeCompletedListener(listener);
+ }
+
+ JSSESupport(SSLSession session) {
+ this.session = session;
+ }
+
+ public String getCipherSuite() throws IOException {
+ // Look up the current SSLSession
+ if (session == null)
+ return null;
+ return session.getCipherSuite();
+ }
+
+ public Object[] getPeerCertificateChain()
+ throws IOException {
+ return getPeerCertificateChain(false);
+ }
+
+ protected java.security.cert.X509Certificate [] getX509Certificates(SSLSession session)
+ throws IOException {
+ Certificate [] certs=null;
+ try {
+ certs = session.getPeerCertificates();
+ } catch( Throwable t ) {
+ log.debug("Error getting client certs",t);
+ return null;
+ }
+ if( certs==null ) return null;
+
+ java.security.cert.X509Certificate [] x509Certs =
+ new java.security.cert.X509Certificate[certs.length];
+ for(int i=0; i < certs.length; i++) {
+ if (certs[i] instanceof java.security.cert.X509Certificate ) {
+ // always currently true with the JSSE 1.1.x
+ x509Certs[i] = (java.security.cert.X509Certificate) certs[i];
+ } else {
+ try {
+ byte [] buffer = certs[i].getEncoded();
+ CertificateFactory cf =
+ CertificateFactory.getInstance("X.509");
+ ByteArrayInputStream stream =
+ new ByteArrayInputStream(buffer);
+ x509Certs[i] = (java.security.cert.X509Certificate) cf.generateCertificate(stream);
+ } catch(Exception ex) {
+ log.info("Error translating cert " + certs[i], ex);
+ return null;
+ }
+ }
+ if(log.isTraceEnabled())
+ log.trace("Cert #" + i + " = " + x509Certs[i]);
+ }
+ if(x509Certs.length < 1)
+ return null;
+ return x509Certs;
+ }
+
+ public Object[] getPeerCertificateChain(boolean force)
+ throws IOException {
+ // Look up the current SSLSession
+ if (session == null)
+ return null;
+
+ // Convert JSSE's certificate format to the ones we need
+ X509Certificate [] jsseCerts = null;
+ try {
+ jsseCerts = session.getPeerCertificateChain();
+ } catch(Exception bex) {
+ // ignore.
+ }
+ if (jsseCerts == null)
+ jsseCerts = new X509Certificate[0];
+ if(jsseCerts.length <= 0 && force) {
+ session.invalidate();
+ handShake();
+ session = ssl.getSession();
+ }
+ return getX509Certificates(session);
+ }
+
+ protected void handShake() throws IOException {
+ if( ssl.getWantClientAuth() ) {
+ log.debug("No client cert sent for want");
+ } else {
+ ssl.setNeedClientAuth(true);
+ }
+
+ if (ssl.getEnabledCipherSuites().length == 0) {
+ // Handshake is never going to be successful.
+ // Assume this is because handshakes are disabled
+ log.warn("SSL server initiated renegotiation is disabled, closing connection");
+ session.invalidate();
+ ssl.close();
+ return;
+ }
+
+ InputStream in = ssl.getInputStream();
+ int oldTimeout = ssl.getSoTimeout();
+ ssl.setSoTimeout(1000);
+ byte[] b = new byte[0];
+ listener.reset();
+ ssl.startHandshake();
+ int maxTries = 60; // 60 * 1000 = example 1 minute time out
+ for (int i = 0; i < maxTries; i++) {
+ if(log.isTraceEnabled())
+ log.trace("Reading for try #" +i);
+ try {
+ int x = in.read(b);
+ } catch(SSLException sslex) {
+ log.info("SSL Error getting client Certs",sslex);
+ throw sslex;
+ } catch (IOException e) {
+ // ignore - presumably the timeout
+ }
+ if (listener.completed) {
+ break;
+ }
+ }
+ ssl.setSoTimeout(oldTimeout);
+ if (listener.completed == false) {
+ throw new SocketException("SSL Cert handshake timeout");
+ }
+
+ }
+
+ /**
+ * Copied from <code>org.apache.catalina.valves.CertificateValve</code>
+ */
+ public Integer getKeySize()
+ throws IOException {
+ // Look up the current SSLSession
+ SSLSupport.CipherData c_aux[]=ciphers;
+ if (session == null)
+ return null;
+ Integer keySize = (Integer) session.getValue(Constants.KEY_SIZE_KEY);
+ if (keySize == null) {
+ int size = 0;
+ String cipherSuite = session.getCipherSuite();
+ for (int i = 0; i < c_aux.length; i++) {
+ if (cipherSuite.indexOf(c_aux[i].phrase) >= 0) {
+ size = c_aux[i].keySize;
+ break;
+ }
+ }
+ keySize = new Integer(size);
+ session.putValue(Constants.KEY_SIZE_KEY, keySize);
+ }
+ return keySize;
+ }
+
+ public String getSessionId()
+ throws IOException {
+ // Look up the current SSLSession
+ if (session == null)
+ return null;
+ // Expose ssl_session (getId)
+ byte [] ssl_session = session.getId();
+ if ( ssl_session == null)
+ return null;
+ StringBuilder buf=new StringBuilder("");
+ for(int x=0; x<ssl_session.length; x++) {
+ String digit=Integer.toHexString((int)ssl_session[x]);
+ if (digit.length()<2) buf.append('0');
+ if (digit.length()>2) digit=digit.substring(digit.length()-2);
+ buf.append(digit);
+ }
+ return buf.toString();
+ }
+
+
+ private static class Listener implements HandshakeCompletedListener {
+ volatile boolean completed = false;
+ public void handshakeCompleted(HandshakeCompletedEvent event) {
+ completed = true;
+ }
+ void reset() {
+ completed = false;
+ }
+ }
+
+}
+
Modified: branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java
===================================================================
--- branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/apache/tomcat/util/net/jsse/NioJSSESocketChannelFactory.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -112,7 +112,9 @@
break;
}
}
- } catch (NoSuchAlgorithmException | KeyManagementException e) {
+ } catch (NoSuchAlgorithmException e) {
+ // Assume no RFC 5746 support
+ } catch (KeyManagementException e) {
// Assume no RFC 5746 support
}
RFC_5746_SUPPORTED = result;
@@ -362,7 +364,7 @@
for (int i = 0; supportedCiphers != null && i < supportedCiphers.length; i++) {
if (supportedCiphers[i].equals(cipher)) {
if (vec == null) {
- vec = new Vector<>();
+ vec = new Vector<Object>();
}
vec.addElement(cipher);
break;
@@ -385,7 +387,7 @@
for (int i = 0; supportedCiphers != null && i < supportedCiphers.length; i++) {
if (supportedCiphers[i].equals(cipher)) {
if (vec == null) {
- vec = new Vector<>();
+ vec = new Vector<Object>();
}
vec.addElement(cipher);
break;
Modified: branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java
===================================================================
--- branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/src/main/java/org/jboss/web/CatalinaLogger.java 2012-09-26 13:54:12 UTC (rev 2087)
@@ -653,4 +653,8 @@
@Message(id = 1140, value = "Failed protocol handler [%s] JMX registration.")
void failedProtocolJmxRegistration(Object objectName, @Cause Throwable t);
+ @LogMessage(level = INFO)
+ @Message(id = 1141, value = "NIO 2 is not available, the java.io connector will be used insteaf")
+ void usingJavaIoConnector();
+
}
Modified: branches/7.2.x/webapps/docs/changelog.xml
===================================================================
--- branches/7.2.x/webapps/docs/changelog.xml 2012-09-25 12:49:25 UTC (rev 2086)
+++ branches/7.2.x/webapps/docs/changelog.xml 2012-09-26 13:54:12 UTC (rev 2087)
@@ -16,7 +16,14 @@
<body>
-<section name="JBoss Web 7.7.0.Alpha1 (remm)">
+<section name="JBoss Web 7.2.0.Alpha1 (remm)">
+ <subsection name="General">
+ <changelog>
+ <add>
+ Switch to JBoss Logging for i18n. (remm)
+ </add>
+ </changelog>
+ </subsection>
<subsection name="Catalina">
<changelog>
<fix>
@@ -65,9 +72,6 @@
<add>
NIO 2 HTTP connector. (benothman)
</add>
- <add>
- Drop java.io connectors (AJP and HTTP). AJP now requires native. (remm)
- </add>
</changelog>
</subsection>
<subsection name="Jasper">
11 years, 7 months
JBossWeb SVN: r2086 - branches.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-25 08:49:25 -0400 (Tue, 25 Sep 2012)
New Revision: 2086
Added:
branches/7.2.x/
Log:
Branch 7.2 for AS 7.2
11 years, 7 months
JBossWeb SVN: r2085 - trunk.
by jbossweb-commits@lists.jboss.org
Author: jfrederic.clere(a)jboss.com
Date: 2012-09-24 13:08:12 -0400 (Mon, 24 Sep 2012)
New Revision: 2085
Modified:
trunk/pom.xml
Log:
Add the repositories.
Modified: trunk/pom.xml
===================================================================
(Binary files differ)
11 years, 7 months
JBossWeb SVN: r2084 - in trunk/src/main: java/org/apache/catalina/util and 4 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-24 10:28:07 -0400 (Mon, 24 Sep 2012)
New Revision: 2084
Added:
trunk/src/main/resources/org/apache/catalina/startup/
trunk/src/main/resources/org/apache/catalina/startup/Authenticators.properties
Removed:
trunk/src/main/java/org/apache/catalina/startup/Authenticators.properties
trunk/src/main/java/org/apache/catalina/util/CharsetMapperDefault.properties
trunk/src/main/java/org/apache/catalina/util/ServerInfo.properties
Modified:
trunk/src/main/java/org/apache/catalina/util/ServerInfo.java
trunk/src/main/java/org/apache/catalina/valves/ErrorReportValve.java
trunk/src/main/java/org/jboss/web/CatalinaMessages.java
Log:
Tweaking after basic Servlet and JSP logging testing.
Deleted: trunk/src/main/java/org/apache/catalina/startup/Authenticators.properties
===================================================================
--- trunk/src/main/java/org/apache/catalina/startup/Authenticators.properties 2012-09-21 14:14:07 UTC (rev 2083)
+++ trunk/src/main/java/org/apache/catalina/startup/Authenticators.properties 2012-09-24 14:28:07 UTC (rev 2084)
@@ -1,5 +0,0 @@
-BASIC=org.apache.catalina.authenticator.BasicAuthenticator
-CLIENT-CERT=org.apache.catalina.authenticator.SSLAuthenticator
-DIGEST=org.apache.catalina.authenticator.DigestAuthenticator
-FORM=org.apache.catalina.authenticator.FormAuthenticator
-NONE=org.apache.catalina.authenticator.NonLoginAuthenticator
Deleted: trunk/src/main/java/org/apache/catalina/util/CharsetMapperDefault.properties
===================================================================
--- trunk/src/main/java/org/apache/catalina/util/CharsetMapperDefault.properties 2012-09-21 14:14:07 UTC (rev 2083)
+++ trunk/src/main/java/org/apache/catalina/util/CharsetMapperDefault.properties 2012-09-24 14:28:07 UTC (rev 2084)
@@ -1,2 +0,0 @@
-en=ISO-8859-1
-fr=ISO-8859-1
Modified: trunk/src/main/java/org/apache/catalina/util/ServerInfo.java
===================================================================
--- trunk/src/main/java/org/apache/catalina/util/ServerInfo.java 2012-09-21 14:14:07 UTC (rev 2083)
+++ trunk/src/main/java/org/apache/catalina/util/ServerInfo.java 2012-09-24 14:28:07 UTC (rev 2084)
@@ -19,8 +19,7 @@
package org.apache.catalina.util;
-import java.io.InputStream;
-import java.util.Properties;
+import org.jboss.web.Version;
/**
@@ -40,42 +39,8 @@
/**
* The server information String with which we identify ourselves.
*/
- private static String serverInfo = null;
+ private static String serverInfo = "JBoss Web/" + Version.getVersionString();
- /**
- * The server built String.
- */
- private static String serverBuilt = null;
-
- /**
- * The server's version number String.
- */
- private static String serverNumber = null;
-
- static {
-
- try {
- InputStream is = ServerInfo.class.getResourceAsStream
- ("/org/apache/catalina/util/ServerInfo.properties");
- Properties props = new Properties();
- props.load(is);
- is.close();
- serverInfo = props.getProperty("server.info");
- serverBuilt = props.getProperty("server.built");
- serverNumber = props.getProperty("server.number");
- } catch (Throwable t) {
- ;
- }
- if (serverInfo == null)
- serverInfo = "Apache Tomcat";
- if (serverBuilt == null)
- serverBuilt = "unknown";
- if (serverNumber == null)
- serverNumber = "5.5.0.0";
-
- }
-
-
// --------------------------------------------------------- Public Methods
@@ -88,38 +53,4 @@
}
- /**
- * Return the server built time for this version of Tomcat.
- */
- public static String getServerBuilt() {
-
- return (serverBuilt);
-
- }
-
- /**
- * Return the server's version number.
- */
- public static String getServerNumber() {
-
- return (serverNumber);
-
- }
-
- public static void main(String args[]) {
- System.out.println("Server version: " + getServerInfo());
- System.out.println("Server built: " + getServerBuilt());
- System.out.println("Server number: " + getServerNumber());
- System.out.println("OS Name: " +
- System.getProperty("os.name"));
- System.out.println("OS Version: " +
- System.getProperty("os.version"));
- System.out.println("Architecture: " +
- System.getProperty("os.arch"));
- System.out.println("JVM Version: " +
- System.getProperty("java.runtime.version"));
- System.out.println("JVM Vendor: " +
- System.getProperty("java.vm.vendor"));
- }
-
}
Deleted: trunk/src/main/java/org/apache/catalina/util/ServerInfo.properties
===================================================================
--- trunk/src/main/java/org/apache/catalina/util/ServerInfo.properties 2012-09-21 14:14:07 UTC (rev 2083)
+++ trunk/src/main/java/org/apache/catalina/util/ServerInfo.properties 2012-09-24 14:28:07 UTC (rev 2084)
@@ -1,3 +0,0 @@
-server.info=JBoss Web/@VERSION@
-server.number=@VERSION_NUMBER@
-server.built=@VERSION_BUILT@
\ No newline at end of file
Modified: trunk/src/main/java/org/apache/catalina/valves/ErrorReportValve.java
===================================================================
--- trunk/src/main/java/org/apache/catalina/valves/ErrorReportValve.java 2012-09-21 14:14:07 UTC (rev 2083)
+++ trunk/src/main/java/org/apache/catalina/valves/ErrorReportValve.java 2012-09-24 14:28:07 UTC (rev 2084)
@@ -224,7 +224,9 @@
sb.append("<h1>");
sb.append(MESSAGES.statusHeader(statusCode, message)).append("</h1>");
sb.append("<HR size=\"1\" noshade=\"noshade\">");
- sb.append("<p><b>type</b> ");
+ sb.append("<p><b>");
+ sb.append(MESSAGES.statusType());
+ sb.append("</b> ");
if (throwable != null) {
sb.append(MESSAGES.exceptionReport());
} else {
Modified: trunk/src/main/java/org/jboss/web/CatalinaMessages.java
===================================================================
--- trunk/src/main/java/org/jboss/web/CatalinaMessages.java 2012-09-21 14:14:07 UTC (rev 2083)
+++ trunk/src/main/java/org/jboss/web/CatalinaMessages.java 2012-09-24 14:28:07 UTC (rev 2084)
@@ -823,4 +823,7 @@
@Message(id = 308, value = "Request filter invalid pattern %s")
IllegalArgumentException requestFilterInvalidPattern(String pattern, @Cause Throwable t);
+ @Message(id = 309, value = "type")
+ String statusType();
+
}
Copied: trunk/src/main/resources/org/apache/catalina/startup/Authenticators.properties (from rev 2049, trunk/src/main/java/org/apache/catalina/startup/Authenticators.properties)
===================================================================
--- trunk/src/main/resources/org/apache/catalina/startup/Authenticators.properties (rev 0)
+++ trunk/src/main/resources/org/apache/catalina/startup/Authenticators.properties 2012-09-24 14:28:07 UTC (rev 2084)
@@ -0,0 +1,5 @@
+BASIC=org.apache.catalina.authenticator.BasicAuthenticator
+CLIENT-CERT=org.apache.catalina.authenticator.SSLAuthenticator
+DIGEST=org.apache.catalina.authenticator.DigestAuthenticator
+FORM=org.apache.catalina.authenticator.FormAuthenticator
+NONE=org.apache.catalina.authenticator.NonLoginAuthenticator
11 years, 7 months
JBossWeb SVN: r2083 - in trunk/src/main/java/org: apache/jasper/compiler and 5 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2012-09-21 10:14:07 -0400 (Fri, 21 Sep 2012)
New Revision: 2083
Removed:
trunk/src/main/java/org/apache/jasper/compiler/Localizer.java
trunk/src/main/java/org/apache/jasper/resources/LocalStrings.properties
trunk/src/main/java/org/apache/jasper/resources/LocalStrings_es.properties
trunk/src/main/java/org/apache/jasper/resources/LocalStrings_fr.properties
trunk/src/main/java/org/apache/jasper/resources/LocalStrings_ja.properties
Modified:
trunk/src/main/java/org/apache/jasper/EmbeddedServletOptions.java
trunk/src/main/java/org/apache/jasper/JspCompilationContext.java
trunk/src/main/java/org/apache/jasper/compiler/AttributeParser.java
trunk/src/main/java/org/apache/jasper/compiler/BeanRepository.java
trunk/src/main/java/org/apache/jasper/compiler/Compiler.java
trunk/src/main/java/org/apache/jasper/compiler/DefaultErrorHandler.java
trunk/src/main/java/org/apache/jasper/compiler/ErrorDispatcher.java
trunk/src/main/java/org/apache/jasper/compiler/Generator.java
trunk/src/main/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java
trunk/src/main/java/org/apache/jasper/compiler/JavacErrorDetail.java
trunk/src/main/java/org/apache/jasper/compiler/JspConfig.java
trunk/src/main/java/org/apache/jasper/compiler/JspDocumentParser.java
trunk/src/main/java/org/apache/jasper/compiler/JspReader.java
trunk/src/main/java/org/apache/jasper/compiler/JspRuntimeContext.java
trunk/src/main/java/org/apache/jasper/compiler/JspUtil.java
trunk/src/main/java/org/apache/jasper/compiler/PageInfo.java
trunk/src/main/java/org/apache/jasper/compiler/Parser.java
trunk/src/main/java/org/apache/jasper/compiler/ParserController.java
trunk/src/main/java/org/apache/jasper/compiler/ScriptingVariabler.java
trunk/src/main/java/org/apache/jasper/compiler/TagFileProcessor.java
trunk/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
trunk/src/main/java/org/apache/jasper/compiler/TagPluginManager.java
trunk/src/main/java/org/apache/jasper/compiler/Validator.java
trunk/src/main/java/org/apache/jasper/runtime/HttpJspBase.java
trunk/src/main/java/org/apache/jasper/runtime/JspContextWrapper.java
trunk/src/main/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
trunk/src/main/java/org/apache/jasper/runtime/JspWriterImpl.java
trunk/src/main/java/org/apache/jasper/runtime/PageContextImpl.java
trunk/src/main/java/org/apache/jasper/servlet/JspServlet.java
trunk/src/main/java/org/apache/jasper/servlet/JspServletWrapper.java
trunk/src/main/java/org/apache/jasper/xmlparser/ASCIIReader.java
trunk/src/main/java/org/apache/jasper/xmlparser/UTF8Reader.java
trunk/src/main/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java
trunk/src/main/java/org/jboss/web/JasperLogger.java
trunk/src/main/java/org/jboss/web/JasperMessages.java
Log:
New i18n for Jasper
Modified: trunk/src/main/java/org/apache/jasper/EmbeddedServletOptions.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/EmbeddedServletOptions.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/EmbeddedServletOptions.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -26,9 +26,8 @@
import javax.servlet.ServletContext;
import org.apache.jasper.compiler.JspConfig;
-import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.compiler.TagPluginManager;
-import org.jboss.logging.Logger;
+import org.jboss.web.JasperLogger;
/**
* A class to hold all init parameters specific to the JSP engine.
@@ -39,9 +38,6 @@
*/
public final class EmbeddedServletOptions implements Options {
- // Logger
- private Logger log = Logger.getLogger(EmbeddedServletOptions.class);
-
private Properties settings = new Properties();
/**
@@ -413,7 +409,7 @@
} else if (keepgen.equalsIgnoreCase("false")) {
this.keepGenerated = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.keepgen"));
+ JasperLogger.ROOT_LOGGER.invalidKeepGeneratedValue(keepgen);
}
}
@@ -425,7 +421,7 @@
} else if (trimsp.equalsIgnoreCase("false")) {
trimSpaces = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.trimspaces"));
+ JasperLogger.ROOT_LOGGER.invalidTrimSpacesValue(trimsp);
}
}
@@ -437,7 +433,7 @@
if (poolingEnabledParam.equalsIgnoreCase("false")) {
this.isPoolingEnabled = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.enablePooling"));
+ JasperLogger.ROOT_LOGGER.invalidEnablePoolingValue(poolingEnabledParam);
}
}
@@ -448,7 +444,7 @@
} else if (mapFile.equalsIgnoreCase("false")) {
this.mappedFile = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.mappedFile"));
+ JasperLogger.ROOT_LOGGER.invalidMappedFileValue(mapFile);
}
}
@@ -459,7 +455,7 @@
} else if (senderr.equalsIgnoreCase("false")) {
this.sendErrorToClient = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.sendErrToClient"));
+ JasperLogger.ROOT_LOGGER.invalidSendErrToClientValue(senderr);
}
}
@@ -470,7 +466,7 @@
} else if (debugInfo.equalsIgnoreCase("false")) {
this.classDebugInfo = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.classDebugInfo"));
+ JasperLogger.ROOT_LOGGER.invalidClassDebugInfoValue(debugInfo);
}
}
@@ -479,7 +475,7 @@
try {
this.checkInterval = Integer.parseInt(checkInterval);
} catch(NumberFormatException ex) {
- log.warn(Localizer.getMessage("jsp.warning.checkInterval"));
+ JasperLogger.ROOT_LOGGER.invalidCheckIntervalValue(checkInterval);
}
}
@@ -488,7 +484,7 @@
try {
this.modificationTestInterval = Integer.parseInt(modificationTestInterval);
} catch(NumberFormatException ex) {
- log.warn(Localizer.getMessage("jsp.warning.modificationTestInterval"));
+ JasperLogger.ROOT_LOGGER.invalidModificationTestIntervalValue(modificationTestInterval);
}
}
@@ -499,7 +495,7 @@
} else if (recompileOnFail.equalsIgnoreCase("false")) {
this.recompileOnFail = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.recompileOnFail"));
+ JasperLogger.ROOT_LOGGER.invalidRecompileOnFailValue(recompileOnFail);
}
}
String development = config.getInitParameter("development");
@@ -509,7 +505,7 @@
} else if (development.equalsIgnoreCase("false")) {
this.development = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.development"));
+ JasperLogger.ROOT_LOGGER.invalidDevelopmentValue(development);
}
}
@@ -520,7 +516,7 @@
} else if (suppressSmap.equalsIgnoreCase("false")) {
isSmapSuppressed = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.suppressSmap"));
+ JasperLogger.ROOT_LOGGER.invalidSuppressSmapValue(suppressSmap);
}
}
@@ -531,7 +527,7 @@
} else if (dumpSmap.equalsIgnoreCase("false")) {
isSmapDumped = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.dumpSmap"));
+ JasperLogger.ROOT_LOGGER.invalidDumpSmapValue(dumpSmap);
}
}
@@ -542,7 +538,7 @@
} else if (genCharArray.equalsIgnoreCase("false")) {
genStringAsCharArray = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.genchararray"));
+ JasperLogger.ROOT_LOGGER.invalidGenStrAsCharArrayValue(genCharArray);
}
}
@@ -554,7 +550,7 @@
} else if (errBeanClass.equalsIgnoreCase("false")) {
errorOnUseBeanInvalidClassAttribute = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.errBean"));
+ JasperLogger.ROOT_LOGGER.invalidErrorOnUseBeanInvalidClassAttributeValue(errBeanClass);
}
}
@@ -584,14 +580,13 @@
}
}
if (this.scratchDir == null) {
- log.fatal(Localizer.getMessage("jsp.error.no.scratch.dir"));
+ JasperLogger.ROOT_LOGGER.missingWorkDirectory();
return;
}
if (!(scratchDir.exists() && scratchDir.canRead() &&
scratchDir.canWrite() && scratchDir.isDirectory()))
- log.fatal(Localizer.getMessage("jsp.error.bad.scratch.dir",
- scratchDir.getAbsolutePath()));
+ JasperLogger.ROOT_LOGGER.missingWorkDirectory(scratchDir.getAbsolutePath());
this.compiler = config.getInitParameter("compiler");
@@ -622,7 +617,7 @@
} else if (fork.equalsIgnoreCase("false")) {
this.fork = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.fork"));
+ JasperLogger.ROOT_LOGGER.invalidForkValue(fork);
}
}
@@ -633,7 +628,7 @@
} else if (xpoweredBy.equalsIgnoreCase("false")) {
this.xpoweredBy = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.xpoweredBy"));
+ JasperLogger.ROOT_LOGGER.invalidXpoweredByValue(xpoweredBy);
}
}
@@ -644,7 +639,7 @@
} else if (displaySourceFragment.equalsIgnoreCase("false")) {
this.displaySourceFragment = false;
} else {
- log.warn(Localizer.getMessage("jsp.warning.displaySourceFragment"));
+ JasperLogger.ROOT_LOGGER.invalidDisplaySourceFragmentValue(displaySourceFragment);
}
}
Modified: trunk/src/main/java/org/apache/jasper/JspCompilationContext.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/JspCompilationContext.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/JspCompilationContext.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.File;
import java.io.FileNotFoundException;
import java.net.MalformedURLException;
@@ -33,10 +35,10 @@
import org.apache.jasper.compiler.Compiler;
import org.apache.jasper.compiler.JspRuntimeContext;
import org.apache.jasper.compiler.JspUtil;
-import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.compiler.ServletWriter;
import org.apache.jasper.servlet.JasperLoader;
import org.apache.jasper.servlet.JspServletWrapper;
+import org.jboss.web.JasperLogger;
/**
* A place holder for various things that are used through out the JSP
@@ -54,9 +56,6 @@
*/
public class JspCompilationContext {
- protected org.jboss.logging.Logger log =
- org.jboss.logging.Logger.getLogger(JspCompilationContext.class);
-
protected Map<String, URL> tagFileJarUrls;
protected boolean isPackagedTagFile;
@@ -240,7 +239,7 @@
}
}
if (jspCompiler == null) {
- throw new IllegalStateException(Localizer.getMessage("jsp.error.compiler"));
+ throw MESSAGES.noJavaCompiler();
}
jspCompiler.init(this, jsw);
return jspCompiler;
@@ -251,13 +250,13 @@
try {
compiler = (Compiler) Class.forName(className).newInstance();
} catch (InstantiationException e) {
- log.warn(Localizer.getMessage("jsp.error.compiler"), e);
+ JasperLogger.ROOT_LOGGER.failedLoadingJavaCompiler(className, e);
} catch (IllegalAccessException e) {
- log.warn(Localizer.getMessage("jsp.error.compiler"), e);
+ JasperLogger.ROOT_LOGGER.failedLoadingJavaCompiler(className, e);
} catch (NoClassDefFoundError e) {
- log.info(Localizer.getMessage("jsp.error.compiler"), e);
+ JasperLogger.ROOT_LOGGER.failedLoadingJavaCompiler(className, e);
} catch (ClassNotFoundException e) {
- log.info(Localizer.getMessage("jsp.error.compiler"), e);
+ JasperLogger.ROOT_LOGGER.failedLoadingJavaCompiler(className, e);
}
return compiler;
}
@@ -616,8 +615,7 @@
}
throw ex;
} catch (Exception ex) {
- JasperException je = new JasperException(
- Localizer.getMessage("jsp.error.unable.compile"),
+ JasperException je = new JasperException(MESSAGES.failedClassCompilation(),
ex);
// Cache compilation exception
jsw.setCompilationException(je);
@@ -637,10 +635,10 @@
String name = getFQCN();
servletClass = jspLoader.loadClass(name);
} catch (ClassNotFoundException cex) {
- throw new JasperException(Localizer.getMessage("jsp.error.unable.load"),
+ throw new JasperException(MESSAGES.failedClassLoading(),
cex);
} catch (Exception ex) {
- throw new JasperException(Localizer.getMessage("jsp.error.unable.compile"),
+ throw new JasperException(MESSAGES.failedClassCompilation(),
ex);
}
removed = 0;
@@ -694,10 +692,10 @@
baseUrl = base.toURI().toURL();
outputDir = base.getAbsolutePath() + File.separator + path + File.separator;
if (!makeOutputDir()) {
- throw new IllegalStateException(Localizer.getMessage("jsp.error.outputfolder"));
+ throw new IllegalStateException(MESSAGES.noOutputFolder());
}
} catch (MalformedURLException e) {
- throw new IllegalStateException(Localizer.getMessage("jsp.error.outputfolder"), e);
+ throw new IllegalStateException(MESSAGES.badOutputFolderUrl(e));
}
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/AttributeParser.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/AttributeParser.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/AttributeParser.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
/**
* Converts a JSP attribute value into the unquoted equivalent. The attribute
* may contain EL expressions, in which case care needs to be taken to avoid any
@@ -303,9 +305,7 @@
i+=3;
return '>';
} else if (ch == quote && strict) {
- String msg = Localizer.getMessage("jsp.error.attribute.noescape",
- input, ""+ quote);
- throw new IllegalArgumentException(msg);
+ throw MESSAGES.missingEscaping(input, "" + quote);
} else {
++i;
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/BeanRepository.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/BeanRepository.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/BeanRepository.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.util.HashMap;
import org.apache.jasper.JasperException;
@@ -47,7 +49,7 @@
if (!(scope == null || scope.equals("page") || scope.equals("request")
|| scope.equals("session") || scope.equals("application"))) {
- errDispatcher.jspError(n, "jsp.error.usebean.badScope");
+ errDispatcher.jspError(n.getStart(), MESSAGES.badScopeForUseBean());
}
beanTypes.put(s, type);
Modified: trunk/src/main/java/org/apache/jasper/compiler/Compiler.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/Compiler.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/Compiler.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -159,7 +161,7 @@
errDispatcher, true);
}
} catch (NumberFormatException ex) {
- errDispatcher.jspError(ex);
+ errDispatcher.jspError(MESSAGES.malformedLibraryVersionNumber(), ex);
}
}
@@ -304,8 +306,7 @@
osw = new OutputStreamWriter(
new FileOutputStream(javaFileName), javaEncoding);
} catch (UnsupportedEncodingException ex) {
- errDispatcher.jspError("jsp.error.needAlternateJavaEncoding",
- javaEncoding);
+ errDispatcher.jspError(MESSAGES.needAlternateEncoding(javaEncoding));
}
writer = new ServletWriter(new PrintWriter(osw));
Modified: trunk/src/main/java/org/apache/jasper/compiler/DefaultErrorHandler.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/DefaultErrorHandler.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/DefaultErrorHandler.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import org.apache.jasper.JasperException;
/**
@@ -63,34 +65,24 @@
return;
}
- Object[] args = null;
StringBuilder buf = new StringBuilder();
-
for (int i=0; i < details.length; i++) {
if (details[i].getJspBeginLineNumber() >= 0) {
- args = new Object[] {
- new Integer(details[i].getJspBeginLineNumber()),
- details[i].getJspFileName() };
buf.append("\n\n");
- buf.append(Localizer.getMessage("jsp.error.single.line.number",
- args));
+ buf.append(MESSAGES.errorInJspFile(details[i].getJspBeginLineNumber(), details[i].getJspFileName()));
buf.append("\n");
buf.append(details[i].getErrorMessage());
buf.append("\n");
buf.append(details[i].getJspExtract());
} else {
- args = new Object[] {
- new Integer(details[i].getJavaLineNumber()) };
buf.append("\n\n");
- buf.append(Localizer.getMessage("jsp.error.java.line.number",
- args));
+ buf.append(MESSAGES.errorInJavaFile(details[i].getJavaLineNumber()));
buf.append("\n");
buf.append(details[i].getErrorMessage());
}
}
buf.append("\n\nStacktrace:");
- throw new JasperException(
- Localizer.getMessage("jsp.error.unable.compile") + ": " + buf);
+ throw new JasperException(MESSAGES.failedClassCompilation(buf.toString()));
}
/**
@@ -101,9 +93,7 @@
*/
public void javacError(String errorReport, Exception exception)
throws JasperException {
-
- throw new JasperException(
- Localizer.getMessage("jsp.error.unable.compile"), exception);
+ throw new JasperException(MESSAGES.failedClassCompilation(), exception);
}
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/ErrorDispatcher.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/ErrorDispatcher.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/ErrorDispatcher.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -16,11 +16,7 @@
*/
package org.apache.jasper.compiler;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
import java.net.MalformedURLException;
-import java.util.ArrayList;
import org.apache.jasper.JasperException;
import org.apache.jasper.JspCompilationContext;
@@ -62,263 +58,6 @@
}
/*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param errCode Error code
- */
- public void jspError(String errCode) throws JasperException {
- dispatch(null, errCode, null, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param where Error location
- * @param errCode Error code
- */
- public void jspError(Mark where, String errCode) throws JasperException {
- dispatch(where, errCode, null, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param n Node that caused the error
- * @param errCode Error code
- */
- public void jspError(Node n, String errCode) throws JasperException {
- dispatch(n.getStart(), errCode, null, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param errCode Error code
- * @param arg Argument for parametric replacement
- */
- public void jspError(String errCode, String arg) throws JasperException {
- dispatch(null, errCode, new Object[] {arg}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param where Error location
- * @param errCode Error code
- * @param arg Argument for parametric replacement
- */
- public void jspError(Mark where, String errCode, String arg)
- throws JasperException {
- dispatch(where, errCode, new Object[] {arg}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param n Node that caused the error
- * @param errCode Error code
- * @param arg Argument for parametric replacement
- */
- public void jspError(Node n, String errCode, String arg)
- throws JasperException {
- dispatch(n.getStart(), errCode, new Object[] {arg}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param errCode Error code
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- */
- public void jspError(String errCode, String arg1, String arg2)
- throws JasperException {
- dispatch(null, errCode, new Object[] {arg1, arg2}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param errCode Error code
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- * @param arg3 Third argument for parametric replacement
- */
- public void jspError(String errCode, String arg1, String arg2, String arg3)
- throws JasperException {
- dispatch(null, errCode, new Object[] {arg1, arg2, arg3}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param where Error location
- * @param errCode Error code
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- */
- public void jspError(Mark where, String errCode, String arg1, String arg2)
- throws JasperException {
- dispatch(where, errCode, new Object[] {arg1, arg2}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param where Error location
- * @param errCode Error code
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- * @param arg3 Third argument for parametric replacement
- */
-
- public void jspError(Mark where, String errCode, String arg1, String arg2,
- String arg3)
- throws JasperException {
- dispatch(where, errCode, new Object[] {arg1, arg2, arg3}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param n Node that caused the error
- * @param errCode Error code
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- */
-
- public void jspError(Node n, String errCode, String arg1, String arg2)
- throws JasperException {
- dispatch(n.getStart(), errCode, new Object[] {arg1, arg2}, null);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param n Node that caused the error
- * @param errCode Error code
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- * @param arg3 Third argument for parametric replacement
- */
-
- public void jspError(Node n, String errCode, String arg1, String arg2,
- String arg3)
- throws JasperException {
- dispatch(n.getStart(), errCode, new Object[] {arg1, arg2, arg3}, null);
- }
-
- /*
- * Dispatches the given parsing exception to the configured error handler.
- *
- * @param e Parsing exception
- */
- public void jspError(Exception e) throws JasperException {
- dispatch(null, null, null, e);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param errCode Error code
- * @param arg Argument for parametric replacement
- * @param e Parsing exception
- */
- public void jspError(String errCode, String arg, Exception e)
- throws JasperException {
- dispatch(null, errCode, new Object[] {arg}, e);
- }
-
- /*
- * Dispatches the given JSP parse error to the configured error handler.
- *
- * The given error code is localized. If it is not found in the
- * resource bundle for localized error messages, it is used as the error
- * message.
- *
- * @param n Node that caused the error
- * @param errCode Error code
- * @param arg Argument for parametric replacement
- * @param e Parsing exception
- */
- public void jspError(Node n, String errCode, String arg, Exception e)
- throws JasperException {
- dispatch(n.getStart(), errCode, new Object[] {arg}, e);
- }
-
- /**
- * Parses the given error message into an array of javac compilation error
- * messages (one per javac compilation error line number).
- *
- * @param errMsg Error message
- * @param fname Name of Java source file whose compilation failed
- * @param page Node representation of JSP page from which the Java source
- * file was generated
- *
- * @return Array of javac compilation errors, or null if the given error
- * message does not contain any compilation error line numbers
- */
- public static JavacErrorDetail[] parseJavacErrors(String errMsg,
- String fname,
- Node.Nodes page)
- throws JasperException, IOException {
-
- return parseJavacMessage(errMsg, fname, page);
- }
-
- /*
* Dispatches the given javac compilation errors to the configured error
* handler.
*
@@ -345,10 +84,19 @@
}
- //*********************************************************************
- // Private utility methods
+ public void jspError(String errorMessage) throws JasperException {
+ jspError(null, errorMessage, null);
+ }
- /*
+ public void jspError(String errorMessage, Exception e) throws JasperException {
+ jspError(null, errorMessage, e);
+ }
+
+ public void jspError(Mark where, String errorMessage) throws JasperException {
+ jspError(where, errorMessage, null);
+ }
+
+ /**
* Dispatches the given JSP parse error to the configured error handler.
*
* The given error code is localized. If it is not found in the
@@ -356,28 +104,18 @@
* message.
*
* @param where Error location
- * @param errCode Error code
+ * @param errorMessage The error message
* @param args Arguments for parametric replacement
* @param e Parsing exception
*/
- private void dispatch(Mark where, String errCode, Object[] args,
- Exception e) throws JasperException {
- String file = null;
- String errMsg = null;
- int line = -1;
- int column = -1;
- boolean hasLocation = false;
+ public void jspError(Mark where, String errorMessage, Exception e) throws JasperException {
+ String file = null;
+ int line = -1;
+ int column = -1;
+ boolean hasLocation = false;
- // Localize
- if (errCode != null) {
- errMsg = Localizer.getMessage(errCode, args);
- } else if (e != null) {
- // give a hint about what's wrong
- errMsg = e.getMessage();
- }
-
- // Get error location
- if (where != null) {
+ // Get error location
+ if (where != null) {
if (jspcMode) {
// Get the full URL of the resource that caused the error
try {
@@ -391,109 +129,25 @@
// disclose any local filesystem details
file = where.getFile();
}
- line = where.getLineNumber();
- column = where.getColumnNumber();
- hasLocation = true;
- }
+ line = where.getLineNumber();
+ column = where.getColumnNumber();
+ hasLocation = true;
+ }
- // Get nested exception
- Exception nestedEx = e;
- if ((e instanceof SAXException)
- && (((SAXException) e).getException() != null)) {
- nestedEx = ((SAXException) e).getException();
- }
+ // Get nested exception
+ Exception nestedEx = e;
+ if ((e instanceof SAXException)
+ && (((SAXException) e).getException() != null)) {
+ nestedEx = ((SAXException) e).getException();
+ }
- if (hasLocation) {
- errHandler.jspError(file, line, column, errMsg, nestedEx);
- } else {
- errHandler.jspError(errMsg, nestedEx);
- }
- }
-
- /*
- * Parses the given Java compilation error message, which may contain one
- * or more compilation errors, into an array of JavacErrorDetail instances.
- *
- * Each JavacErrorDetail instance contains the information about a single
- * compilation error.
- *
- * @param errMsg Compilation error message that was generated by the
- * javac compiler
- * @param fname Name of Java source file whose compilation failed
- * @param page Node representation of JSP page from which the Java source
- * file was generated
- *
- * @return Array of JavacErrorDetail instances corresponding to the
- * compilation errors
- */
- private static JavacErrorDetail[] parseJavacMessage(
- String errMsg, String fname, Node.Nodes page)
- throws IOException, JasperException {
-
- ArrayList<JavacErrorDetail> errors = new ArrayList<JavacErrorDetail>();
- StringBuilder errMsgBuf = null;
- int lineNum = -1;
- JavacErrorDetail javacError = null;
-
- BufferedReader reader = new BufferedReader(new StringReader(errMsg));
-
- /*
- * Parse compilation errors. Each compilation error consists of a file
- * path and error line number, followed by a number of lines describing
- * the error.
- */
- String line = null;
- while ((line = reader.readLine()) != null) {
-
- /*
- * Error line number is delimited by set of colons.
- * Ignore colon following drive letter on Windows (fromIndex = 2).
- * XXX Handle deprecation warnings that don't have line info
- */
- int beginColon = line.indexOf(':', 2);
- int endColon = line.indexOf(':', beginColon + 1);
- if ((beginColon >= 0) && (endColon >= 0)) {
- if (javacError != null) {
- // add previous error to error vector
- errors.add(javacError);
- }
-
- String lineNumStr = line.substring(beginColon + 1, endColon);
- try {
- lineNum = Integer.parseInt(lineNumStr);
- } catch (NumberFormatException e) {
- lineNum = -1;
- }
-
- errMsgBuf = new StringBuilder();
-
- javacError = createJavacError(fname, page, errMsgBuf, lineNum);
- }
-
- // Ignore messages preceding first error
- if (errMsgBuf != null) {
- errMsgBuf.append(line);
- errMsgBuf.append("\n");
- }
+ if (hasLocation) {
+ errHandler.jspError(file, line, column, errorMessage, nestedEx);
+ } else {
+ errHandler.jspError(errorMessage, nestedEx);
}
-
- // Add last error to error vector
- if (javacError != null) {
- errors.add(javacError);
- }
-
- reader.close();
-
- JavacErrorDetail[] errDetails = null;
- if (errors.size() > 0) {
- errDetails = new JavacErrorDetail[errors.size()];
- errors.toArray(errDetails);
- }
-
- return errDetails;
}
-
/**
* @param fname
* @param page
@@ -504,7 +158,7 @@
*/
public static JavacErrorDetail createJavacError(String fname,
Node.Nodes page, StringBuilder errMsgBuf, int lineNum)
- throws JasperException {
+ throws JasperException {
return createJavacError(fname, page, errMsgBuf, lineNum, null);
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/Generator.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/Generator.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/Generator.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
@@ -1226,7 +1228,7 @@
// depending on a compiler flag.
if (ctxt.getOptions()
.getErrorOnUseBeanInvalidClassAttribute()) {
- err.jspError(n, "jsp.error.invalid.bean", klass);
+ err.jspError(n.getStart(), MESSAGES.invalidUseBeanAttributeClass(klass));
}
if (canonicalName == null) {
// Doing our best here to get a canonical name
@@ -2829,8 +2831,8 @@
} else {
m = handlerInfo.getSetterMethod(localName);
if (m == null) {
- err.jspError(n, "jsp.error.unable.to_find_method", attr
- .getName());
+ err.jspError(n.getStart(), MESSAGES.cannotFindSetterMethod(attr
+ .getName()));
}
c = m.getParameterTypes();
// XXX assert(c.length > 0)
@@ -3924,8 +3926,7 @@
.getPropertyEditorClass());
}
} catch (IntrospectionException ie) {
- err.jspError(n, "jsp.error.introspect.taghandler",
- tagHandlerClass.getName(), ie);
+ err.jspError(n.getStart(), MESSAGES.errorIntrospectingTagHandler(tagHandlerClass.getName()), ie);
}
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.InputStream;
import java.util.Collection;
import java.util.Hashtable;
@@ -82,7 +84,7 @@
jspversion = JSP_VERSION;
if (!tagdir.startsWith(WEB_INF_TAGS)) {
- err.jspError("jsp.error.invalid.tagdir", tagdir);
+ err.jspError(MESSAGES.invalidTagFileDirectory(tagdir));
}
// Determine the value of the <short-name> subelement of the
@@ -151,21 +153,21 @@
reader.getElementText();
} else {
// All other elements are invalid
- err.jspError("jsp.error.invalid.implicit", path);
+ err.jspError(MESSAGES.invalidImplicitTld(path));
}
}
try {
double version = Double.parseDouble(this.jspversion);
if (version < 2.0) {
- err.jspError("jsp.error.invalid.implicit.version", path);
+ err.jspError(MESSAGES.invalidImplicitTldVersion(path));
}
} catch (NumberFormatException e) {
- err.jspError("jsp.error.invalid.implicit.version", path);
+ err.jspError(MESSAGES.invalidImplicitTldVersion(path));
}
}
} catch (XMLStreamException e) {
- err.jspError("jsp.error.invalid.implicit", path, e);
+ err.jspError(MESSAGES.invalidImplicitTld(path), e);
} finally {
if (is != null) {
try {
Modified: trunk/src/main/java/org/apache/jasper/compiler/JavacErrorDetail.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/JavacErrorDetail.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/JavacErrorDetail.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
@@ -99,7 +101,7 @@
if (jspLines.length < jspBeginLineNum) {
// Avoid ArrayIndexOutOfBoundsException
// Probably bug 48494 but could be some other cause
- jspExtract = Localizer.getMessage("jsp.error.bug48494");
+ jspExtract = MESSAGES.errorDisplayingJspExtract();
return;
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/JspConfig.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/JspConfig.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/JspConfig.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -55,6 +55,7 @@
import org.apache.catalina.Globals;
import org.apache.jasper.JasperException;
import org.jboss.logging.Logger;
+import org.jboss.web.JasperLogger;
/**
* Handles the jsp-config element in WEB_INF/web.xml. This is used
@@ -149,9 +150,7 @@
boolean isStar = "*".equals(extension);
if ((path == null && (extension == null || isStar))
|| (path != null && !isStar)) {
- log.warn(Localizer.getMessage(
- "jsp.warning.bad.urlpattern.propertygroup",
- urlPattern));
+ JasperLogger.COMPILER_LOGGER.invalidJspPropertyGroupsUrlPattern(urlPattern);
continue;
}
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/JspDocumentParser.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/JspDocumentParser.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/JspDocumentParser.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -16,6 +16,8 @@
*/
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.CharArrayWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -204,14 +206,14 @@
pageNodes = new Node.Nodes(dummyRoot);
} catch (IOException ioe) {
- jspDocParser.err.jspError("jsp.error.data.file.read", path, ioe);
+ jspDocParser.err.jspError(MESSAGES.errorReadingFile(path), ioe);
} catch (SAXParseException e) {
jspDocParser.err.jspError
(new Mark(jspDocParser.ctxt, path, e.getLineNumber(),
e.getColumnNumber()),
- e.getMessage());
+ MESSAGES.errorParsingFile(path), e);
} catch (Exception e) {
- jspDocParser.err.jspError(e);
+ jspDocParser.err.jspError(MESSAGES.errorParsingFile(path), e);
}
return pageNodes;
@@ -279,7 +281,7 @@
if (JSP_URI.equals(uri) && TEXT_ACTION.equals(current.getLocalName())
&& "jsp".equals(currentPrefix)) {
throw new SAXParseException(
- Localizer.getMessage("jsp.error.text.has_subelement"),
+ MESSAGES.invalidJspTextSubelements(),
locator);
}
@@ -537,10 +539,7 @@
lastCh = 0;
for (;; i++) {
if (i >= charBuffer.length()) {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.unterminated",
- (char) elType + "{"),
+ throw new SAXParseException(MESSAGES.unterminatedTag((char) elType + "{"),
locator);
}
@@ -668,9 +667,7 @@
for (int i = 0; i < children.size(); i++) {
Node child = children.getNode(i);
if (!(child instanceof Node.NamedAttribute)) {
- throw new SAXParseException(Localizer.getMessage(
- "jasper.error.emptybodycontent.nonempty",
- current.qName), locator);
+ throw new SAXParseException(MESSAGES.invalidEmptyTagSubelements(current.qName), locator);
}
}
}
@@ -787,8 +784,7 @@
try {
taglibInfo = getTaglibInfo(prefix, uri);
} catch (JasperException je) {
- throw new SAXParseException(
- Localizer.getMessage("jsp.error.could.not.add.taglibraries", je.getMessage()),
+ throw new SAXParseException(MESSAGES.errorAddingTagLibraries(je.getMessage()),
locator,
je);
}
@@ -835,8 +831,7 @@
if (localName.equals(ROOT_ACTION)) {
if (!(current instanceof Node.Root)) {
- throw new SAXParseException(
- Localizer.getMessage("jsp.error.nested_jsproot"),
+ throw new SAXParseException(MESSAGES.nestedJspRoot(),
locator);
}
node =
@@ -852,10 +847,7 @@
}
} else if (localName.equals(PAGE_DIRECTIVE_ACTION)) {
if (isTagFile) {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.action.istagfile",
- localName),
+ throw new SAXParseException(MESSAGES.invalidDirectiveInTagFile(localName),
locator);
}
node =
@@ -885,10 +877,7 @@
if (scriptlessBodyNode != null) {
// We're nested inside a node whose body is
// declared to be scriptless
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.no.scriptlets",
- localName),
+ throw new SAXParseException(MESSAGES.invalidScriptingElement(),
locator);
}
node =
@@ -902,10 +891,7 @@
if (scriptlessBodyNode != null) {
// We're nested inside a node whose body is
// declared to be scriptless
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.no.scriptlets",
- localName),
+ throw new SAXParseException(MESSAGES.invalidScriptingElement(),
locator);
}
node =
@@ -919,10 +905,7 @@
if (scriptlessBodyNode != null) {
// We're nested inside a node whose body is
// declared to be scriptless
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.no.scriptlets",
- localName),
+ throw new SAXParseException(MESSAGES.invalidScriptingElement(),
locator);
}
node =
@@ -1039,10 +1022,7 @@
current);
} else if (localName.equals(TAG_DIRECTIVE_ACTION)) {
if (!isTagFile) {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.action.isnottagfile",
- localName),
+ throw new SAXParseException(MESSAGES.invalidDirectiveInTagFile(localName),
locator);
}
node =
@@ -1060,10 +1040,7 @@
}
} else if (localName.equals(ATTRIBUTE_DIRECTIVE_ACTION)) {
if (!isTagFile) {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.action.isnottagfile",
- localName),
+ throw new SAXParseException(MESSAGES.invalidDirectiveInTagFile(localName),
locator);
}
node =
@@ -1076,10 +1053,7 @@
current);
} else if (localName.equals(VARIABLE_DIRECTIVE_ACTION)) {
if (!isTagFile) {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.action.isnottagfile",
- localName),
+ throw new SAXParseException(MESSAGES.invalidDirectiveInTagFile(localName),
locator);
}
node =
@@ -1092,10 +1066,7 @@
current);
} else if (localName.equals(INVOKE_ACTION)) {
if (!isTagFile) {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.action.isnottagfile",
- localName),
+ throw new SAXParseException(MESSAGES.invalidActionInTagFile(localName),
locator);
}
node =
@@ -1108,10 +1079,7 @@
current);
} else if (localName.equals(DOBODY_ACTION)) {
if (!isTagFile) {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.action.isnottagfile",
- localName),
+ throw new SAXParseException(MESSAGES.invalidActionInTagFile(localName),
locator);
}
node =
@@ -1140,10 +1108,7 @@
start,
current);
} else {
- throw new SAXParseException(
- Localizer.getMessage(
- "jsp.error.xml.badStandardAction",
- localName),
+ throw new SAXParseException(MESSAGES.invalidStandardAction(localName),
locator);
}
@@ -1174,8 +1139,7 @@
TagInfo tagInfo = tagLibInfo.getTag(localName);
TagFileInfo tagFileInfo = tagLibInfo.getTagFile(localName);
if (tagInfo == null && tagFileInfo == null) {
- throw new SAXException(
- Localizer.getMessage("jsp.error.xml.bad_tag", localName, uri));
+ throw new SAXException(MESSAGES.unknownTag(localName, uri));
}
Class tagHandlerClass = null;
if (tagInfo != null) {
@@ -1184,10 +1148,7 @@
tagHandlerClass =
ctxt.getClassLoader().loadClass(handlerClassName);
} catch (Exception e) {
- throw new SAXException(
- Localizer.getMessage("jsp.error.loadclass.taghandler",
- handlerClassName,
- qName),
+ throw new SAXException(MESSAGES.errorLoadingTagHandler(handlerClassName, qName),
e);
}
}
@@ -1318,11 +1279,7 @@
elemType = DECLARATION_ACTION;
if (scriptingElem instanceof Node.Expression)
elemType = EXPRESSION_ACTION;
- String msg =
- Localizer.getMessage(
- "jsp.error.parse.xml.scripting.invalid.body",
- elemType);
- throw new SAXException(msg);
+ throw new SAXException(MESSAGES.invalidScriptingBody(elemType));
}
}
}
@@ -1345,12 +1302,11 @@
try {
parserController.parse(fname, parent, null);
} catch (FileNotFoundException fnfe) {
- throw new SAXParseException(
- Localizer.getMessage("jsp.error.file.not.found", fname),
+ throw new SAXParseException(MESSAGES.fileNotFound(fname),
locator,
fnfe);
} catch (Exception e) {
- throw new SAXException(e);
+ throw new SAXException(MESSAGES.errorParsingFile(fname), e);
}
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/JspReader.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/JspReader.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/JspReader.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.CharArrayWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -29,8 +31,7 @@
import org.apache.jasper.JasperException;
import org.apache.jasper.JspCompilationContext;
-import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
+import org.jboss.web.JasperLogger;
/**
* JspReader is an input buffer for the JSP parser. It should allow
@@ -51,11 +52,6 @@
class JspReader {
/**
- * Logger.
- */
- private Logger log = Logger.getLogger(JspReader.class);
-
- /**
* The current spot in the file.
*/
private Mark current;
@@ -444,10 +440,10 @@
}
// Check end of quote, skip closing quote:
if (ch == -1) {
- err.jspError(mark(), "jsp.error.quotes.unterminated");
+ err.jspError(mark(), MESSAGES.unterminatedQuotes());
}
} else {
- err.jspError(mark(), "jsp.error.attr.quoted");
+ err.jspError(mark(), MESSAGES.unquotedAttributeValue());
}
} else {
if (!isDelimiter()) {
@@ -578,13 +574,11 @@
try {
reader.close();
} catch (Exception any) {
- if(log.isDebugEnabled()) {
- log.debug("Exception closing reader: ", any);
- }
+ JasperLogger.COMPILER_LOGGER.errorClosingReader(any);
}
}
- err.jspError("jsp.error.file.already.registered", file);
+ err.jspError(MESSAGES.invalidRecursiveInclude(file));
}
currFileId = fileid;
@@ -603,18 +597,15 @@
longName, encoding);
}
} catch (Throwable ex) {
- log.error("Exception parsing file ", ex);
// Pop state being constructed:
popFile();
- err.jspError("jsp.error.file.cannot.read", file);
+ err.jspError(MESSAGES.errorReadingFile(file));
} finally {
if (reader != null) {
try {
reader.close();
} catch (Exception any) {
- if(log.isDebugEnabled()) {
- log.debug("Exception closing reader: ", any);
- }
+ JasperLogger.COMPILER_LOGGER.errorClosingReader(any);
}
}
}
@@ -639,7 +630,7 @@
String fName = getFile(currFileId);
currFileId = unregisterSourceFile(fName);
if (currFileId < -1) {
- err.jspError("jsp.error.file.not.registered", fName);
+ err.jspError(MESSAGES.invalidInclude(fName));
}
Mark previous = current.popStream();
Modified: trunk/src/main/java/org/apache/jasper/compiler/JspRuntimeContext.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/JspRuntimeContext.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/JspRuntimeContext.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -39,8 +39,7 @@
import org.apache.jasper.runtime.JspFactoryImpl;
import org.apache.jasper.security.SecurityClassLoad;
import org.apache.jasper.servlet.JspServletWrapper;
-import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
+import org.jboss.web.JasperLogger;
/**
* Class for tracking JSP compile time file dependencies when the
@@ -57,9 +56,6 @@
*/
public final class JspRuntimeContext {
- // Logger
- private Logger log = Logger.getLogger(JspRuntimeContext.class);
-
/*
* Counts how many times the webapp's JSPs have been reloaded.
*/
@@ -115,15 +111,8 @@
parentClassLoader = this.getClass().getClassLoader();
}
- if (log.isDebugEnabled()) {
- if (parentClassLoader != null) {
- log.debug(Localizer.getMessage("jsp.message.parent_class_loader_is",
- parentClassLoader.toString()));
- } else {
- log.debug(Localizer.getMessage("jsp.message.parent_class_loader_is",
- "<none>"));
- }
- }
+ JasperLogger.COMPILER_LOGGER.logParentClassLoader((parentClassLoader != null)
+ ? parentClassLoader.toString() : "[none]");
initClassPath();
@@ -347,9 +336,7 @@
classpath = cpath.toString() + cp;
- if(log.isDebugEnabled()) {
- log.debug("Compilation classpath initialized: " + getClassPath());
- }
+ JasperLogger.COMPILER_LOGGER.logCompilationClasspath(getClassPath());
}
/**
Modified: trunk/src/main/java/org/apache/jasper/compiler/JspUtil.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/JspUtil.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/JspUtil.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.InputStream;
@@ -205,7 +207,7 @@
throws JasperException {
if (scope != null && !scope.equals("page") && !scope.equals("request")
&& !scope.equals("session") && !scope.equals("application")) {
- err.jspError(n, "jsp.error.invalid.scope", scope);
+ err.jspError(n.getStart(), MESSAGES.invalidScope(scope));
}
}
@@ -244,8 +246,7 @@
temp.addElement( attrName );
// Check if this value appear in the attribute of the node
if (n.getAttributeValue(attrName) != null) {
- err.jspError(n, "jsp.error.duplicate.name.jspattribute",
- attrName);
+ err.jspError(n.getStart(), MESSAGES.duplicateAttribute(attrName));
}
}
else {
@@ -280,8 +281,7 @@
// If mandatory attribute is missing then the exception is thrown
if (!valid)
- err.jspError(start, "jsp.error.mandatory.attribute", typeOfTag,
- missingAttribute);
+ err.jspError(start, MESSAGES.missingMandatoryAttribute(typeOfTag, missingAttribute));
// Check to see if there are any more attributes for the specified tag.
int attrLeftLength = temp.size();
@@ -301,8 +301,7 @@
}
}
if (!valid)
- err.jspError(start, "jsp.error.invalid.attribute", typeOfTag,
- attribute);
+ err.jspError(start, MESSAGES.invalidAttribute(typeOfTag, attribute));
}
// XXX *could* move EL-syntax validation here... (sb)
}
@@ -815,7 +814,7 @@
String jarEntryName = fname.substring(1, fname.length());
ZipEntry jarEntry = jarFile.getEntry(jarEntryName);
if (jarEntry == null) {
- err.jspError("jsp.error.file.not.found", fname);
+ err.jspError(MESSAGES.fileNotFound(fname));
}
in = jarFile.getInputStream(jarEntry);
} else {
@@ -823,7 +822,7 @@
}
if (in == null) {
- err.jspError("jsp.error.file.not.found", fname);
+ err.jspError(MESSAGES.fileNotFound(fname));
}
return in;
@@ -871,7 +870,7 @@
index = path.lastIndexOf(".tag");
if (index == -1) {
- err.jspError("jsp.error.tagfile.badSuffix", path);
+ err.jspError(MESSAGES.invalidTagFileName(path));
}
//It's tempting to remove the ".tag" suffix here, but we can't.
@@ -894,7 +893,7 @@
className = getClassNameBase(urn);
begin = index + META_INF_TAGS.length();
} else {
- err.jspError("jsp.error.tagfile.illegalPath", path);
+ err.jspError(MESSAGES.invalidTagFileDirectory(path));
}
}
@@ -1066,7 +1065,7 @@
try {
reader = new InputStreamReader(in, encoding);
} catch (UnsupportedEncodingException ex) {
- err.jspError("jsp.error.unsupported.encoding", encoding);
+ err.jspError(MESSAGES.unsupportedEncoding(encoding));
}
return reader;
Deleted: trunk/src/main/java/org/apache/jasper/compiler/Localizer.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/Localizer.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/Localizer.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jasper.compiler;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-/**
- * Class responsible for converting error codes to corresponding localized
- * error messages.
- *
- * @author Jan Luehe
- */
-public class Localizer {
-
- private static ResourceBundle bundle = null;
-
- static {
- try {
- bundle = ResourceBundle.getBundle(
- "org.apache.jasper.resources.LocalStrings");
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
-
- /*
- * Returns the localized error message corresponding to the given error
- * code.
- *
- * If the given error code is not defined in the resource bundle for
- * localized error messages, it is used as the error message.
- *
- * @param errCode Error code to localize
- *
- * @return Localized error message
- */
- public static String getMessage(String errCode) {
- if (bundle == null) {
- return errCode;
- }
- String errMsg = errCode;
- try {
- errMsg = bundle.getString(errCode);
- } catch (MissingResourceException e) {
- }
- return errMsg;
- }
-
- /*
- * Returns the localized error message corresponding to the given error
- * code.
- *
- * If the given error code is not defined in the resource bundle for
- * localized error messages, it is used as the error message.
- *
- * @param errCode Error code to localize
- * @param arg Argument for parametric replacement
- *
- * @return Localized error message
- */
- public static String getMessage(String errCode, String arg) {
- return getMessage(errCode, new Object[] {arg});
- }
-
- /*
- * Returns the localized error message corresponding to the given error
- * code.
- *
- * If the given error code is not defined in the resource bundle for
- * localized error messages, it is used as the error message.
- *
- * @param errCode Error code to localize
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- *
- * @return Localized error message
- */
- public static String getMessage(String errCode, String arg1, String arg2) {
- return getMessage(errCode, new Object[] {arg1, arg2});
- }
-
- /*
- * Returns the localized error message corresponding to the given error
- * code.
- *
- * If the given error code is not defined in the resource bundle for
- * localized error messages, it is used as the error message.
- *
- * @param errCode Error code to localize
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- * @param arg3 Third argument for parametric replacement
- *
- * @return Localized error message
- */
- public static String getMessage(String errCode, String arg1, String arg2,
- String arg3) {
- return getMessage(errCode, new Object[] {arg1, arg2, arg3});
- }
-
- /*
- * Returns the localized error message corresponding to the given error
- * code.
- *
- * If the given error code is not defined in the resource bundle for
- * localized error messages, it is used as the error message.
- *
- * @param errCode Error code to localize
- * @param arg1 First argument for parametric replacement
- * @param arg2 Second argument for parametric replacement
- * @param arg3 Third argument for parametric replacement
- * @param arg4 Fourth argument for parametric replacement
- *
- * @return Localized error message
- */
- public static String getMessage(String errCode, String arg1, String arg2,
- String arg3, String arg4) {
- return getMessage(errCode, new Object[] {arg1, arg2, arg3, arg4});
- }
-
- /*
- * Returns the localized error message corresponding to the given error
- * code.
- *
- * If the given error code is not defined in the resource bundle for
- * localized error messages, it is used as the error message.
- *
- * @param errCode Error code to localize
- * @param args Arguments for parametric replacement
- *
- * @return Localized error message
- */
- public static String getMessage(String errCode, Object[] args) {
- if (bundle == null) {
- return errCode;
- }
- String errMsg = errCode;
- try {
- errMsg = bundle.getString(errCode);
- if (args != null) {
- MessageFormat formatter = new MessageFormat(errMsg);
- errMsg = formatter.format(args);
- }
- } catch (MissingResourceException e) {
- }
-
- return errMsg;
- }
-}
Modified: trunk/src/main/java/org/apache/jasper/compiler/PageInfo.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/PageInfo.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/PageInfo.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -16,6 +16,8 @@
*/
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -377,9 +379,9 @@
if (!"java".equalsIgnoreCase(value)) {
if (pagedir)
- err.jspError(n, "jsp.error.page.language.nonjava");
+ err.jspError(n.getStart(), MESSAGES.unsupportedPageDirectiveLanguage());
else
- err.jspError(n, "jsp.error.tag.language.nonjava");
+ err.jspError(n.getStart(), MESSAGES.unsupportedTagDirectiveLanguage());
}
language = value;
@@ -459,12 +461,12 @@
buffer = 0;
else {
if (value == null || !value.endsWith("kb"))
- err.jspError(n, "jsp.error.page.invalid.buffer");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveBufferSize());
try {
Integer k = new Integer(value.substring(0, value.length()-2));
buffer = k.intValue() * 1024;
} catch (NumberFormatException e) {
- err.jspError(n, "jsp.error.page.invalid.buffer");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveBufferSize());
}
}
@@ -478,12 +480,12 @@
buffer = 0;
else {
if (value == null || !value.endsWith("kb"))
- err.jspError("jsp.error.page.invalid.buffer");
+ err.jspError(MESSAGES.invalidPageDirectiveBufferSize());
try {
Integer k = new Integer(value.substring(0, value.length()-2));
buffer = k.intValue() * 1024;
} catch (NumberFormatException e) {
- err.jspError("jsp.error.page.invalid.buffer");
+ err.jspError(MESSAGES.invalidPageDirectiveBufferSize());
}
}
@@ -510,7 +512,7 @@
else if ("false".equalsIgnoreCase(value))
isSession = false;
else
- err.jspError(n, "jsp.error.page.invalid.session");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveSession());
session = value;
}
@@ -535,7 +537,7 @@
else if ("false".equalsIgnoreCase(value))
isAutoFlush = false;
else
- err.jspError(n, "jsp.error.autoFlush.invalid");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveAutoFlush());
autoFlush = value;
}
@@ -560,7 +562,7 @@
else if ("false".equalsIgnoreCase(value))
isThreadSafe = false;
else
- err.jspError(n, "jsp.error.page.invalid.isthreadsafe");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveIsThreadSafe());
isThreadSafeValue = value;
}
@@ -609,7 +611,7 @@
else if ("false".equalsIgnoreCase(value))
isErrorPage = false;
else
- err.jspError(n, "jsp.error.page.invalid.iserrorpage");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveIsErrorPage());
isErrorPageValue = value;
}
@@ -636,9 +638,9 @@
isELIgnored = false;
else {
if (pagedir)
- err.jspError(n, "jsp.error.page.invalid.iselignored");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveIsElIgnored());
else
- err.jspError(n, "jsp.error.tag.invalid.iselignored");
+ err.jspError(n.getStart(), MESSAGES.invalidTagDirectiveIsElIgnored());
}
isELIgnoredValue = value;
@@ -657,9 +659,9 @@
deferredSyntaxAllowedAsLiteral = false;
else {
if (pagedir)
- err.jspError(n, "jsp.error.page.invalid.deferredsyntaxallowedasliteral");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveDeferredSyntaxAllowedAsLiteral());
else
- err.jspError(n, "jsp.error.tag.invalid.deferredsyntaxallowedasliteral");
+ err.jspError(n.getStart(), MESSAGES.invalidTagDirectiveDeferredSyntaxAllowedAsLiteral());
}
deferredSyntaxAllowedAsLiteralValue = value;
@@ -678,9 +680,9 @@
trimDirectiveWhitespaces = false;
else {
if (pagedir)
- err.jspError(n, "jsp.error.page.invalid.trimdirectivewhitespaces");
+ err.jspError(n.getStart(), MESSAGES.invalidPageDirectiveTrimDirectiveWhitespaces());
else
- err.jspError(n, "jsp.error.tag.invalid.trimdirectivewhitespaces");
+ err.jspError(n.getStart(), MESSAGES.invalidTagDirectiveTrimDirectiveWhitespaces());
}
trimDirectiveWhitespacesValue = value;
Modified: trunk/src/main/java/org/apache/jasper/compiler/Parser.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/Parser.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/Parser.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -16,6 +16,8 @@
*/
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.CharArrayWriter;
import java.io.FileNotFoundException;
import java.net.URL;
@@ -182,20 +184,19 @@
String prefix = qName.substring(0, index);
uri = pageInfo.getURI(prefix);
if (uri == null) {
- err.jspError(reader.mark(),
- "jsp.error.attribute.invalidPrefix", prefix);
+ err.jspError(reader.mark(), MESSAGES.invalidAttributePrefix(prefix));
}
localName = qName.substring(index + 1);
}
reader.skipSpaces();
if (!reader.matches("="))
- err.jspError(reader.mark(), "jsp.error.attribute.noequal");
+ err.jspError(reader.mark(), MESSAGES.missingEqual());
reader.skipSpaces();
char quote = (char) reader.nextChar();
if (quote != '\'' && quote != '"')
- err.jspError(reader.mark(), "jsp.error.attribute.noquote");
+ err.jspError(reader.mark(), MESSAGES.missingQuote());
String watchString = "";
if (reader.matches("<%="))
@@ -237,7 +238,7 @@
Mark start = reader.mark();
Mark stop = reader.skipUntilIgnoreEsc(watch);
if (stop == null) {
- err.jspError(start, "jsp.error.attribute.unterminated", watch);
+ err.jspError(start, MESSAGES.unterminatedAttribute(watch));
}
String ret = null;
@@ -295,9 +296,9 @@
try {
parserController.parse(file, parent, jarFileUrl);
} catch (FileNotFoundException ex) {
- err.jspError(start, "jsp.error.file.not.found", file);
+ err.jspError(start, MESSAGES.fileNotFound(file));
} catch (Exception ex) {
- err.jspError(parent, "jsp.error.include.exception", file, ex);
+ err.jspError(parent.getStart(), MESSAGES.errorIncluding(file), ex);
}
}
@@ -365,15 +366,13 @@
if (prefix != null) {
Mark prevMark = pageInfo.getNonCustomTagPrefix(prefix);
if (prevMark != null) {
- err.jspError(reader.mark(), "jsp.error.prefix.use_before_dcl",
- prefix, prevMark.getFile(), ""
- + prevMark.getLineNumber());
+ err.jspError(reader.mark(), MESSAGES.prefixAlreadyInUse
+ (prefix, prevMark.getFile(), prevMark.getLineNumber()));
}
if (uri != null) {
String uriPrev = pageInfo.getURI(prefix);
if (uriPrev != null && !uriPrev.equals(uri)) {
- err.jspError(reader.mark(), "jsp.error.prefix.refined",
- prefix, uri, uriPrev);
+ err.jspError(reader.mark(), MESSAGES.prefixRedefinition(prefix, uri, uriPrev));
}
if (pageInfo.getTaglib(uri) == null) {
TagLibraryInfoImpl impl = null;
@@ -431,8 +430,7 @@
if (reader.matches("page")) {
directive = "<%@ page";
if (isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.istagfile",
- directive);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInTagFile(directive));
}
parsePageDirective(parent);
} else if (reader.matches("include")) {
@@ -449,31 +447,28 @@
} else if (reader.matches("tag")) {
directive = "<%@ tag";
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.isnottagfile",
- directive);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage(directive));
}
parseTagDirective(parent);
} else if (reader.matches("attribute")) {
directive = "<%@ attribute";
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.isnottagfile",
- directive);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage(directive));
}
parseAttributeDirective(parent);
} else if (reader.matches("variable")) {
directive = "<%@ variable";
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.isnottagfile",
- directive);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage(directive));
}
parseVariableDirective(parent);
} else {
- err.jspError(reader.mark(), "jsp.error.invalid.directive");
+ err.jspError(reader.mark(), MESSAGES.invalidDirective());
}
reader.skipSpaces();
if (!reader.matches("%>")) {
- err.jspError(start, "jsp.error.unterminated", directive);
+ err.jspError(start, MESSAGES.unterminatedTag(directive));
}
}
@@ -497,8 +492,7 @@
if (reader.matches("page")) {
eTag = "jsp:directive.page";
if (isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.istagfile",
- "<" + eTag);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInTagFile("<" + eTag));
}
parsePageDirective(parent);
} else if (reader.matches("include")) {
@@ -507,36 +501,33 @@
} else if (reader.matches("tag")) {
eTag = "jsp:directive.tag";
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.isnottagfile",
- "<" + eTag);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage("<" + eTag));
}
parseTagDirective(parent);
} else if (reader.matches("attribute")) {
eTag = "jsp:directive.attribute";
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.isnottagfile",
- "<" + eTag);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage("<" + eTag));
}
parseAttributeDirective(parent);
} else if (reader.matches("variable")) {
eTag = "jsp:directive.variable";
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.directive.isnottagfile",
- "<" + eTag);
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage("<" + eTag));
}
parseVariableDirective(parent);
} else {
- err.jspError(reader.mark(), "jsp.error.invalid.directive");
+ err.jspError(reader.mark(), MESSAGES.invalidDirective());
}
reader.skipSpaces();
if (reader.matches(">")) {
reader.skipSpaces();
if (!reader.matchesETag(eTag)) {
- err.jspError(start, "jsp.error.unterminated", "<" + eTag);
+ err.jspError(start, MESSAGES.unterminatedTag("<" + eTag));
}
} else if (!reader.matches("/>")) {
- err.jspError(start, "jsp.error.unterminated", "<" + eTag);
+ err.jspError(start, MESSAGES.unterminatedTag("<" + eTag));
}
}
@@ -587,7 +578,7 @@
start = reader.mark();
Mark stop = reader.skipUntil("--%>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "<%--");
+ err.jspError(start, MESSAGES.unterminatedTag("<%--"));
}
new Node.Comment(reader.getText(start, stop), start, parent);
@@ -600,7 +591,7 @@
start = reader.mark();
Mark stop = reader.skipUntil("%>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "<%!");
+ err.jspError(start, MESSAGES.unterminatedTag("<%!"));
}
new Node.Declaration(parseScriptText(reader.getText(start, stop)),
@@ -617,8 +608,7 @@
reader.skipSpaces();
if (!reader.matches("/>")) {
if (!reader.matches(">")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:declaration>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:declaration>"));
}
Mark stop;
String text;
@@ -626,8 +616,7 @@
start = reader.mark();
stop = reader.skipUntil("<");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:declaration>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:declaration>"));
}
text = parseScriptText(reader.getText(start, stop));
new Node.Declaration(text, start, parent);
@@ -635,7 +624,7 @@
start = reader.mark();
stop = reader.skipUntil("]]>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "CDATA");
+ err.jspError(start, MESSAGES.unterminatedTag("CDATA"));
}
text = parseScriptText(reader.getText(start, stop));
new Node.Declaration(text, start, parent);
@@ -645,8 +634,7 @@
}
if (!reader.matchesETagWithoutLessThan("jsp:declaration")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:declaration>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:declaration>"));
}
}
}
@@ -658,7 +646,7 @@
start = reader.mark();
Mark stop = reader.skipUntil("%>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "<%=");
+ err.jspError(start, MESSAGES.unterminatedTag("<%="));
}
new Node.Expression(parseScriptText(reader.getText(start, stop)),
@@ -673,8 +661,7 @@
reader.skipSpaces();
if (!reader.matches("/>")) {
if (!reader.matches(">")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:expression>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:expression>"));
}
Mark stop;
String text;
@@ -682,8 +669,7 @@
start = reader.mark();
stop = reader.skipUntil("<");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:expression>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:expression>"));
}
text = parseScriptText(reader.getText(start, stop));
new Node.Expression(text, start, parent);
@@ -691,7 +677,7 @@
start = reader.mark();
stop = reader.skipUntil("]]>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "CDATA");
+ err.jspError(start, MESSAGES.unterminatedTag("CDATA"));
}
text = parseScriptText(reader.getText(start, stop));
new Node.Expression(text, start, parent);
@@ -700,8 +686,7 @@
}
}
if (!reader.matchesETagWithoutLessThan("jsp:expression")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:expression>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:expression>"));
}
}
}
@@ -725,7 +710,7 @@
currentChar = reader.nextChar();
}
if (currentChar == -1)
- err.jspError(start, "jsp.error.unterminated", type + "{");
+ err.jspError(start, MESSAGES.unterminatedTag(type + "{"));
if (currentChar == '"' && !singleQuoted)
doubleQuoted = !doubleQuoted;
if (currentChar == '\'' && !doubleQuoted)
@@ -742,7 +727,7 @@
start = reader.mark();
Mark stop = reader.skipUntil("%>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "<%");
+ err.jspError(start, MESSAGES.unterminatedTag("<%"));
}
new Node.Scriptlet(parseScriptText(reader.getText(start, stop)), start,
@@ -757,8 +742,7 @@
reader.skipSpaces();
if (!reader.matches("/>")) {
if (!reader.matches(">")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:scriptlet>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:scriptlet>"));
}
Mark stop;
String text;
@@ -766,8 +750,7 @@
start = reader.mark();
stop = reader.skipUntil("<");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:scriptlet>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:scriptlet>"));
}
text = parseScriptText(reader.getText(start, stop));
new Node.Scriptlet(text, start, parent);
@@ -775,7 +758,7 @@
start = reader.mark();
stop = reader.skipUntil("]]>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "CDATA");
+ err.jspError(start, MESSAGES.unterminatedTag("CDATA"));
}
text = parseScriptText(reader.getText(start, stop));
new Node.Scriptlet(text, start, parent);
@@ -785,8 +768,7 @@
}
if (!reader.matchesETagWithoutLessThan("jsp:scriptlet")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:scriptlet>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:scriptlet>"));
}
}
}
@@ -796,7 +778,7 @@
*/
private void parseParam(Node parent) throws JasperException {
if (!reader.matches("<jsp:param")) {
- err.jspError(reader.mark(), "jsp.error.paramexpected");
+ err.jspError(reader.mark(), MESSAGES.missingParamAction());
}
Attributes attrs = parseAttributes();
reader.skipSpaces();
@@ -909,14 +891,13 @@
if (!reader.matchesETag(tag)) {
// Body not allowed
err.jspError(reader.mark(),
- "jsp.error.jspbody.emptybody.only", "<" + tag);
+ MESSAGES.invalidEmptyBodyTag("<" + tag));
}
} else {
- err.jspError(reader.mark(), "jsp.error.jspbody.emptybody.only",
- "<" + tag);
+ err.jspError(reader.mark(), MESSAGES.invalidEmptyBodyTag("<" + tag));
}
} else {
- err.jspError(reader.mark(), "jsp.error.unterminated", "<" + tag);
+ err.jspError(reader.mark(), MESSAGES.unterminatedTag("<" + tag));
}
}
@@ -963,7 +944,7 @@
}
if (!reader.matches(">")) {
- err.jspError(reader.mark(), "jsp.error.unterminated", "<" + tag);
+ err.jspError(reader.mark(), MESSAGES.unterminatedTag("<" + tag));
}
if (reader.matchesETag(tag)) {
@@ -1003,16 +984,14 @@
parseJspBody(parent, bodyType);
reader.skipSpaces();
if (!reader.matchesETag(tag)) {
- err.jspError(reader.mark(), "jsp.error.unterminated", "<"
- + tag);
+ err.jspError(reader.mark(), MESSAGES.unterminatedTag("<" + tag));
}
result = true;
} else if (result && !reader.matchesETag(tag)) {
// If we have <jsp:attribute> but something other than
// <jsp:body> or the end tag, translation error.
- err.jspError(reader.mark(), "jsp.error.jspbody.required", "<"
- + tag);
+ err.jspError(reader.mark(), MESSAGES.invalidTagBody("<" + tag));
}
return result;
@@ -1092,14 +1071,12 @@
parseForward(parent);
} else if (reader.matches(INVOKE_ACTION)) {
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.action.isnottagfile",
- "<jsp:invoke");
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage("<jsp:invoke"));
}
parseInvoke(parent);
} else if (reader.matches(DOBODY_ACTION)) {
if (!isTagFile) {
- err.jspError(reader.mark(), "jsp.error.action.isnottagfile",
- "<jsp:doBody");
+ err.jspError(reader.mark(), MESSAGES.invalidDirectiveInPage("<jsp:doBody"));
}
parseDoBody(parent);
} else if (reader.matches(GET_PROPERTY_ACTION)) {
@@ -1113,19 +1090,19 @@
} else if (reader.matches(ELEMENT_ACTION)) {
parseElement(parent);
} else if (reader.matches(ATTRIBUTE_ACTION)) {
- err.jspError(start, "jsp.error.namedAttribute.invalidUse");
+ err.jspError(start, MESSAGES.invalidJspAttribute());
} else if (reader.matches(BODY_ACTION)) {
- err.jspError(start, "jsp.error.jspbody.invalidUse");
+ err.jspError(start, MESSAGES.invalidJspBody());
} else if (reader.matches(FALLBACK_ACTION)) {
- err.jspError(start, "jsp.error.fallback.invalidUse");
+ err.jspError(start, MESSAGES.invalidJspFallback());
} else if (reader.matches(PARAMS_ACTION)) {
- err.jspError(start, "jsp.error.params.invalidUse");
+ err.jspError(start, MESSAGES.invalidJspParams());
} else if (reader.matches(PARAM_ACTION)) {
- err.jspError(start, "jsp.error.param.invalidUse");
+ err.jspError(start, MESSAGES.invalidJspParam());
} else if (reader.matches(OUTPUT_ACTION)) {
- err.jspError(start, "jsp.error.jspoutput.invalidUse");
+ err.jspError(start, MESSAGES.invalidJspOutput());
} else {
- err.jspError(start, "jsp.error.badStandardAction");
+ err.jspError(start, MESSAGES.invalidStandardAction());
}
}
@@ -1173,7 +1150,7 @@
String uri = pageInfo.getURI(prefix);
if (uri == null) {
if (pageInfo.isErrorOnUndeclaredNamespace()) {
- err.jspError(start, "jsp.error.bad_tag", shortTagName, prefix);
+ err.jspError(start, MESSAGES.unknownTagPrefix(shortTagName, prefix));
}
reader.reset(start);
// Remember the prefix for later error checking
@@ -1185,7 +1162,7 @@
TagInfo tagInfo = tagLibInfo.getTag(shortTagName);
TagFileInfo tagFileInfo = tagLibInfo.getTagFile(shortTagName);
if (tagInfo == null && tagFileInfo == null) {
- err.jspError(start, "jsp.error.bad_tag", shortTagName, prefix);
+ err.jspError(start, MESSAGES.unknownTagPrefix(shortTagName, prefix));
}
Class tagHandlerClass = null;
if (tagInfo != null) {
@@ -1196,8 +1173,7 @@
tagHandlerClass = ctxt.getClassLoader().loadClass(
handlerClassName);
} catch (Exception e) {
- err.jspError(start, "jsp.error.loadclass.taghandler",
- handlerClassName, tagName);
+ err.jspError(start, MESSAGES.errorLoadingTagHandler(handlerClassName, tagName));
}
}
@@ -1311,8 +1287,7 @@
reader.skipSpaces();
if (!reader.matches("/>")) {
if (!reader.matches(">")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:text>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:text>"));
}
CharArrayWriter ttext = new CharArrayWriter();
while (reader.hasMoreInput()) {
@@ -1325,7 +1300,7 @@
start = reader.mark();
Mark stop = reader.skipUntil("]]>");
if (stop == null) {
- err.jspError(start, "jsp.error.unterminated", "CDATA");
+ err.jspError(start, MESSAGES.unterminatedTag("CDATA"));
}
String text = reader.getText(start, stop);
ttext.write(text, 0, text.length());
@@ -1366,10 +1341,9 @@
new Node.TemplateText(ttext.toString(), start, parent);
if (!reader.hasMoreInput()) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:text>");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:text>"));
} else if (!reader.matchesETagWithoutLessThan("jsp:text")) {
- err.jspError(start, "jsp.error.jsptext.badcontent");
+ err.jspError(start, MESSAGES.badContent());
}
}
}
@@ -1446,17 +1420,17 @@
} else if (reader.matches("<jsp:directive.")) {
parseXMLDirective(parent);
} else if (reader.matches("<%!")) {
- err.jspError(reader.mark(), "jsp.error.no.scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidScriptingElement());
} else if (reader.matches("<jsp:declaration")) {
- err.jspError(reader.mark(), "jsp.error.no.scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidScriptingElement());
} else if (reader.matches("<%=")) {
- err.jspError(reader.mark(), "jsp.error.no.scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidScriptingElement());
} else if (reader.matches("<jsp:expression")) {
- err.jspError(reader.mark(), "jsp.error.no.scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidScriptingElement());
} else if (reader.matches("<%")) {
- err.jspError(reader.mark(), "jsp.error.no.scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidScriptingElement());
} else if (reader.matches("<jsp:scriptlet")) {
- err.jspError(reader.mark(), "jsp.error.no.scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidScriptingElement());
} else if (reader.matches("<jsp:text")) {
parseXMLTemplateText(parent);
} else if (!pageInfo.isELIgnored() && reader.matches("${")) {
@@ -1492,40 +1466,29 @@
} else if (reader.matches("<jsp:directive.")) {
parseXMLDirective(parent);
} else if (reader.matches("<%!")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Declarations");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<%!"));
} else if (reader.matches("<jsp:declaration")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Declarations");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<jsp:declaration"));
} else if (reader.matches("<%=")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Expressions");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<%="));
} else if (reader.matches("<jsp:expression")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Expressions");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<jsp:expression"));
} else if (reader.matches("<%")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<%"));
} else if (reader.matches("<jsp:scriptlet")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Scriptlets");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<jsp:scriptlet"));
} else if (reader.matches("<jsp:text")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "<jsp:text");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<jsp:text"));
} else if (!pageInfo.isELIgnored() && reader.matches("${")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Expression language");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("${"));
} else if (!pageInfo.isELIgnored()
&& !pageInfo.isDeferredSyntaxAllowedAsLiteral()
&& reader.matches("#{")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Expression language");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("#{"));
} else if (reader.matches("<jsp:")) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Standard actions");
+ err.jspError(reader.mark(), MESSAGES.invalidTemplateTextBody("<jsp:"));
} else if (parseCustomTag(parent)) {
- err.jspError(reader.mark(), "jsp.error.not.in.template",
- "Custom actions");
+ err.jspError(reader.mark(), MESSAGES.invalidTagInTemplateTextBody());
} else {
checkUnbalancedEndTag();
parseTemplateText(parent);
@@ -1543,7 +1506,7 @@
// Check for unbalanced standard actions
if (reader.matches("jsp:")) {
- err.jspError(start, "jsp.error.unbalanced.endtag", "jsp:");
+ err.jspError(start, MESSAGES.unbalancedEndTag("jsp:"));
}
// Check for unbalanced custom actions
@@ -1554,7 +1517,7 @@
return;
}
- err.jspError(start, "jsp.error.unbalanced.endtag", tagName);
+ err.jspError(start, MESSAGES.unbalancedEndTag(tagName));
}
/**
@@ -1565,7 +1528,7 @@
Mark bodyStart = reader.mark();
Mark bodyEnd = reader.skipUntilETag(tag);
if (bodyEnd == null) {
- err.jspError(start, "jsp.error.unterminated", "<" + tag);
+ err.jspError(start, MESSAGES.unterminatedTag("<" + tag));
}
new Node.TemplateText(reader.getText(bodyStart, bodyEnd), bodyStart,
parent);
@@ -1582,7 +1545,7 @@
reader.skipSpaces();
if (!reader.matches("/>")) {
if (!reader.matches(">")) {
- err.jspError(start, "jsp.error.unterminated", "<jsp:body");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:body"));
}
parseBody(bodyNode, "jsp:body", bodyType);
}
@@ -1599,16 +1562,14 @@
parseTagDependentBody(parent, tag);
} else if (bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_EMPTY)) {
if (!reader.matchesETag(tag)) {
- err.jspError(start, "jasper.error.emptybodycontent.nonempty",
- tag);
+ err.jspError(start, MESSAGES.invalidEmptyTagSubelements(tag));
}
} else if (bodyType == JAVAX_BODY_CONTENT_PLUGIN) {
// (note the == since we won't recognize JAVAX_*
// from outside this module).
parsePluginTags(parent);
if (!reader.matchesETag(tag)) {
- err.jspError(reader.mark(), "jsp.error.unterminated", "<"
- + tag);
+ err.jspError(reader.mark(), MESSAGES.unterminatedTag("<" + tag));
}
} else if (bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_JSP)
|| bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)
@@ -1622,10 +1583,9 @@
// Check for nested jsp:body or jsp:attribute
if (tag.equals("jsp:body") || tag.equals("jsp:attribute")) {
if (reader.matches("<jsp:attribute")) {
- err.jspError(reader.mark(),
- "jsp.error.nested.jspattribute");
+ err.jspError(reader.mark(), MESSAGES.invalidJspAttributeNesting());
} else if (reader.matches("<jsp:body")) {
- err.jspError(reader.mark(), "jsp.error.nested.jspbody");
+ err.jspError(reader.mark(), MESSAGES.invalidJspBodyNesting());
}
}
@@ -1643,9 +1603,9 @@
parseElementsTemplateText(parent);
}
}
- err.jspError(start, "jsp.error.unterminated", "<" + tag);
+ err.jspError(start, MESSAGES.unterminatedTag("<" + tag));
} else {
- err.jspError(start, "jasper.error.bad.bodycontent.type");
+ err.jspError(start, MESSAGES.invalidBodyContentType());
}
}
@@ -1662,8 +1622,7 @@
reader.skipSpaces();
if (!reader.matches("/>")) {
if (!reader.matches(">")) {
- err.jspError(start, "jsp.error.unterminated",
- "<jsp:attribute");
+ err.jspError(start, MESSAGES.unterminatedTag("<jsp:attribute"));
}
if (namedAttributeNode.isTrim()) {
reader.skipSpaces();
Modified: trunk/src/main/java/org/apache/jasper/compiler/ParserController.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/ParserController.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/ParserController.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -226,8 +228,7 @@
if (jspConfigPageEnc != null && !jspConfigPageEnc.equals(sourceEnc)
&& (!jspConfigPageEnc.startsWith("UTF-16")
|| !sourceEnc.startsWith("UTF-16"))) {
- err.jspError("jsp.error.prolog_config_encoding_mismatch",
- sourceEnc, jspConfigPageEnc);
+ err.jspError(MESSAGES.encodingConflict(sourceEnc, jspConfigPageEnc));
}
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/ScriptingVariabler.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/ScriptingVariabler.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/ScriptingVariabler.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,8 +17,16 @@
package org.apache.jasper.compiler;
-import java.util.*;
-import javax.servlet.jsp.tagext.*;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.jsp.tagext.TagVariableInfo;
+import javax.servlet.jsp.tagext.VariableInfo;
+
import org.apache.jasper.JasperException;
/**
@@ -122,8 +130,8 @@
varName = n.getTagData().getAttributeString(
tagVarInfos[i].getNameFromAttribute());
if (varName == null) {
- err.jspError(n, "jsp.error.scripting.variable.missing_name",
- tagVarInfos[i].getNameFromAttribute());
+ err.jspError(n.getStart(), MESSAGES.cannotFindVariableNameFromAttribute
+ (tagVarInfos[i].getNameFromAttribute()));
}
}
Modified: trunk/src/main/java/org/apache/jasper/compiler/TagFileProcessor.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/TagFileProcessor.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/TagFileProcessor.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -147,7 +149,7 @@
public void visit(Node.TagDirective n) throws JasperException {
- JspUtil.checkAttributes("Tag directive", n, tagDirectiveAttrs, err);
+ JspUtil.checkAttributes(TagConstants.TAG_DIRECTIVE_ACTION, n, tagDirectiveAttrs, err);
bodycontent = checkConflict(n, bodycontent, "body-content");
if (bodycontent != null
@@ -157,8 +159,7 @@
.equalsIgnoreCase(TagInfo.BODY_CONTENT_TAG_DEPENDENT)
&& !bodycontent
.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)) {
- err.jspError(n, "jsp.error.tagdirective.badbodycontent",
- bodycontent);
+ err.jspError(n.getStart(), MESSAGES.invalidBodyContentInTagDirective(bodycontent));
}
dynamicAttrsMapName = checkConflict(n, dynamicAttrsMapName,
"dynamic-attributes");
@@ -179,8 +180,8 @@
String attrValue = n.getAttributeValue(attr);
if (attrValue != null) {
if (oldAttrValue != null && !oldAttrValue.equals(attrValue)) {
- err.jspError(n, "jsp.error.tag.conflict.attr", attr,
- oldAttrValue, attrValue);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingTagDirectiveAttributeValues(attr,
+ oldAttrValue, attrValue));
}
result = attrValue;
}
@@ -189,7 +190,7 @@
public void visit(Node.AttributeDirective n) throws JasperException {
- JspUtil.checkAttributes("Attribute directive", n,
+ JspUtil.checkAttributes(TagConstants.ATTRIBUTE_DIRECTIVE_ACTION, n,
attributeDirectiveAttrs, err);
// JSP 2.1 Table JSP.8-3
@@ -204,7 +205,7 @@
String deferredValueType = n.getAttributeValue("deferredValueType");
if (deferredValueType != null) {
if (deferredValueSpecified && !deferredValue) {
- err.jspError(n, "jsp.error.deferredvaluetypewithoutdeferredvalue");
+ err.jspError(n.getStart(), MESSAGES.cannotUseValueTypeWithoutDeferredValue());
} else {
deferredValue = true;
}
@@ -227,7 +228,7 @@
.getAttributeValue("deferredMethodSignature");
if (deferredMethodSignature != null) {
if (deferredMethodSpecified && !deferredMethod) {
- err.jspError(n, "jsp.error.deferredmethodsignaturewithoutdeferredmethod");
+ err.jspError(n.getStart(), MESSAGES.cannotUseMethodSignatureWithoutDeferredMethod());
} else {
deferredMethod = true;
}
@@ -236,7 +237,7 @@
}
if (deferredMethod && deferredValue) {
- err.jspError(n, "jsp.error.deferredmethodandvalue");
+ err.jspError(n.getStart(), MESSAGES.cannotUseBothDeferredValueAndMethod());
}
String attrName = n.getAttributeValue("name");
@@ -254,13 +255,13 @@
// type is fixed to "JspFragment" and a translation error
// must occur if specified.
if (type != null) {
- err.jspError(n, "jsp.error.fragmentwithtype");
+ err.jspError(n.getStart(), MESSAGES.cannotUseFragmentWithType());
}
// rtexprvalue is fixed to "true" and a translation error
// must occur if specified.
rtexprvalue = true;
if (rtexprvalueString != null) {
- err.jspError(n, "jsp.error.frgmentwithrtexprvalue");
+ err.jspError(n.getStart(), MESSAGES.cannotUseFragmentWithRtexprValue());
}
} else {
if (type == null)
@@ -276,7 +277,7 @@
if (("2.0".equals(tagLibInfo.getRequiredVersion()) || ("1.2".equals(tagLibInfo.getRequiredVersion())))
&& (deferredMethodSpecified || deferredMethod
|| deferredValueSpecified || deferredValue)) {
- err.jspError("jsp.error.invalid.version", path);
+ err.jspError(MESSAGES.invalidTagFileJspVersion(path));
}
TagAttributeInfo tagAttributeInfo = new TagAttributeInfo(attrName,
@@ -288,24 +289,24 @@
public void visit(Node.VariableDirective n) throws JasperException {
- JspUtil.checkAttributes("Variable directive", n,
+ JspUtil.checkAttributes(TagConstants.VARIABLE_DIRECTIVE_ACTION, n,
variableDirectiveAttrs, err);
String nameGiven = n.getAttributeValue("name-given");
String nameFromAttribute = n
.getAttributeValue("name-from-attribute");
if (nameGiven == null && nameFromAttribute == null) {
- err.jspError("jsp.error.variable.either.name");
+ err.jspError(MESSAGES.mustSpecifyVariableDirectiveEitherName());
}
if (nameGiven != null && nameFromAttribute != null) {
- err.jspError("jsp.error.variable.both.name");
+ err.jspError(MESSAGES.mustNotSpecifyVariableDirectiveBothName());
}
String alias = n.getAttributeValue("alias");
if (nameFromAttribute != null && alias == null
|| nameFromAttribute == null && alias != null) {
- err.jspError("jsp.error.variable.alias");
+ err.jspError(MESSAGES.mustNotSpecifyVariableDirectiveBothOrNoneName());
}
String className = n.getAttributeValue("variable-class");
@@ -450,8 +451,8 @@
if (nameEntry != null) {
if (type != TAG_DYNAMIC || nameEntry.getType() != TAG_DYNAMIC) {
int line = nameEntry.getNode().getStart().getLineNumber();
- err.jspError(n, "jsp.error.tagfile.nameNotUnique", type,
- nameEntry.getType(), Integer.toString(line));
+ err.jspError(n.getStart(), MESSAGES.invalidDuplicateNames(type,
+ nameEntry.getType(), line));
}
} else {
table.put(name, new NameEntry(type, n, attr));
@@ -471,18 +472,16 @@
.get(nameFrom);
Node nameFromNode = nameFromEntry.getNode();
if (nameEntry == null) {
- err.jspError(nameFromNode,
- "jsp.error.tagfile.nameFrom.noAttribute", nameFrom);
+ err.jspError(nameFromNode.getStart(),
+ MESSAGES.cannotFindAttribute(nameFrom));
} else {
Node node = nameEntry.getNode();
TagAttributeInfo tagAttr = nameEntry.getTagAttributeInfo();
if (!"java.lang.String".equals(tagAttr.getTypeName())
|| !tagAttr.isRequired()
|| tagAttr.canBeRequestTime()) {
- err.jspError(nameFromNode,
- "jsp.error.tagfile.nameFrom.badAttribute",
- nameFrom, Integer.toString(node.getStart()
- .getLineNumber()));
+ err.jspError(nameFromNode.getStart(), MESSAGES.invalidAttributeFound(node.getStart()
+ .getLineNumber(), nameFrom));
}
}
}
@@ -546,9 +545,9 @@
try {
page = pc.parseTagFileDirectives(path, tagFileJarUrl);
} catch (FileNotFoundException e) {
- err.jspError("jsp.error.file.not.found", path);
+ err.jspError(MESSAGES.fileNotFound(path));
} catch (IOException e) {
- err.jspError("jsp.error.file.not.found", path);
+ err.jspError(MESSAGES.fileNotFound(path));
}
TagFileDirectiveVisitor tagFileVisitor = new TagFileDirectiveVisitor(pc
Modified: trunk/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -46,6 +46,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.MalformedURLException;
@@ -71,7 +73,6 @@
import org.apache.catalina.util.RequestUtil;
import org.apache.jasper.JasperException;
import org.apache.jasper.JspCompilationContext;
-import org.jboss.logging.Logger;
/**
* Implementation of the TagLibraryInfo class from the JSP spec.
@@ -91,9 +92,6 @@
public static final int ROOT_REL_URI = 1;
public static final int NOROOT_REL_URI = 2;
- // Logger
- private Logger log = Logger.getLogger(TagLibraryInfoImpl.class);
-
private JspCompilationContext ctxt;
private PageInfo pi;
@@ -157,7 +155,7 @@
URL jarFileUrl = null;
if (location == null) {
- err.jspError("jsp.error.file.not.found", uriIn);
+ err.jspError(MESSAGES.fileNotFound(uriIn));
}
if (location[0] != null && location[0].endsWith(".jar")) {
try {
@@ -166,7 +164,7 @@
jarFileUrl = new URL("jar:" + jarUrl + "!/");
}
} catch (MalformedURLException ex) {
- err.jspError("jsp.error.file.not.found", uriIn);
+ err.jspError(MESSAGES.fileNotFound(uriIn));
}
}
@@ -174,7 +172,7 @@
((HashMap<String, org.apache.catalina.deploy.jsp.TagLibraryInfo>)
ctxt.getServletContext().getAttribute(Globals.JSP_TAG_LIBRARIES)).get(uri);
if (tagLibraryInfo == null) {
- err.jspError("jsp.error.file.not.found", uriIn);
+ err.jspError(MESSAGES.fileNotFound(uriIn));
}
ArrayList<TagInfo> tagInfos = new ArrayList<TagInfo>();
@@ -203,19 +201,17 @@
for (int i = 0; i < functionInfosArray.length; i++) {
FunctionInfo functionInfo = createFunctionInfo(functionInfosArray[i]);
if (functionInfos.containsKey(functionInfo.getName())) {
- err.jspError("jsp.error.tld.fn.duplicate.name", functionInfo.getName(),
- uri);
+ err.jspError(MESSAGES.duplicateTagLibraryFunctionName(functionInfo.getName(),
+ uri));
}
functionInfos.put(functionInfo.getName(), functionInfo);
}
if (tlibversion == null) {
- err.jspError("jsp.error.tld.mandatory.element.missing",
- "tlib-version");
+ err.jspError(MESSAGES.missingRequiredTagLibraryElement("tlib-version", uri));
}
if (jspversion == null) {
- err.jspError("jsp.error.tld.mandatory.element.missing",
- "jsp-version");
+ err.jspError(MESSAGES.missingRequiredTagLibraryElement("jsp-version", uri));
}
this.tags = tagInfos.toArray(new TagInfo[0]);
@@ -236,8 +232,7 @@
int uriType = uriType(uri);
if (uriType == ABS_URI) {
- err.jspError("jsp.error.taglibDirective.absUriCannotBeResolved",
- uri);
+ err.jspError(MESSAGES.unresolvableAbsoluteUri(uri));
} else if (uriType == NOROOT_REL_URI) {
uri = ctxt.resolveRelativeUri(uri);
if (uri != null) {
@@ -252,11 +247,10 @@
try {
url = ctxt.getResource(location[0]);
} catch (Exception ex) {
- err.jspError("jsp.error.tld.unable_to_get_jar", location[0], ex
- .toString());
+ err.jspError(MESSAGES.errorAccessingJar(location[0]), ex);
}
if (url == null) {
- err.jspError("jsp.error.tld.missing_jar", location[0]);
+ err.jspError(MESSAGES.missingJar(location[0]));
}
location[0] = url.toString();
location[1] = "META-INF/taglib.tld";
@@ -297,8 +291,7 @@
Class teiClass = ctxt.getClassLoader().loadClass(teiClassName);
tei = (TagExtraInfo) teiClass.newInstance();
} catch (Exception e) {
- err.jspError("jsp.error.teiclass.instantiation", teiClassName,
- e);
+ err.jspError(MESSAGES.errorLoadingTagExtraInfo(teiClassName), e);
}
}
@@ -416,7 +409,7 @@
// it has been removed
ctxt.setTagFileJarUrl(path, jarFileUrl);
} else if (!path.startsWith("/WEB-INF/tags")) {
- err.jspError("jsp.error.tagfile.illegalPath", path);
+ err.jspError(MESSAGES.invalidTagFileDirectory(path));
}
TagInfo tagInfo = TagFileProcessor.parseTagFileDirectives(
parserController, name, path, jarFileUrl, this);
@@ -458,8 +451,7 @@
.loadClass(validatorClass);
tlv = (TagLibraryValidator) tlvClass.newInstance();
} catch (Exception e) {
- err.jspError("jsp.error.tlvclass.instantiation",
- validatorClass, e);
+ err.jspError(MESSAGES.errorLoadingTagLibraryValidator(validatorClass), e);
}
}
if (tlv != null) {
Modified: trunk/src/main/java/org/apache/jasper/compiler/TagPluginManager.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/TagPluginManager.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/TagPluginManager.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.InputStream;
import java.util.HashMap;
@@ -89,8 +91,8 @@
}
if (!TAG_PLUGINS_ROOT_ELEM.equals(reader.getLocalName())) {
- err.jspError("jsp.error.plugin.wrongRootElement", TAG_PLUGINS_XML,
- TAG_PLUGINS_ROOT_ELEM);
+ err.jspError(MESSAGES.wrongRootElement(TAG_PLUGINS_XML,
+ TAG_PLUGINS_ROOT_ELEM));
}
tagPlugins = new HashMap<String, TagPlugin>();
@@ -106,11 +108,11 @@
} else if ("plugin-class".equals(childClementName)) {
pluginClassName = reader.getElementText().trim();
} else {
- err.jspError("jsp.error.invalid.tagplugin", TAG_PLUGINS_XML);
+ err.jspError(MESSAGES.invalidTagPlugin(TAG_PLUGINS_XML));
}
}
if (tagClassName == null || pluginClassName == null) {
- err.jspError("jsp.error.invalid.tagplugin", TAG_PLUGINS_XML);
+ err.jspError(MESSAGES.invalidTagPlugin(TAG_PLUGINS_XML));
}
TagPlugin tagPlugin = null;
try {
@@ -126,11 +128,11 @@
} else {
// All other elements are invalid
- err.jspError("jsp.error.invalid.tagplugin", TAG_PLUGINS_XML);
+ err.jspError(MESSAGES.invalidTagPlugin(TAG_PLUGINS_XML));
}
}
} catch (XMLStreamException e) {
- err.jspError("jsp.error.invalid.tagplugin", TAG_PLUGINS_XML, e);
+ err.jspError(MESSAGES.invalidTagPlugin(TAG_PLUGINS_XML), e);
} catch (FactoryConfigurationError e) {
throw new JasperException(e);
} finally {
Modified: trunk/src/main/java/org/apache/jasper/compiler/Validator.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/compiler/Validator.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/compiler/Validator.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.compiler;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
@@ -103,7 +105,7 @@
public void visit(Node.PageDirective n) throws JasperException {
- JspUtil.checkAttributes("Page directive", n, pageDirectiveAttrs,
+ JspUtil.checkAttributes(TagConstants.PAGE_DIRECTIVE_ACTION, n, pageDirectiveAttrs,
err);
// JSP.2.10.1
@@ -116,82 +118,82 @@
if (pageInfo.getLanguage(false) == null) {
pageInfo.setLanguage(value, n, err, true);
} else if (!pageInfo.getLanguage(false).equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.language",
- pageInfo.getLanguage(false), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getLanguage(false), value));
}
} else if ("extends".equals(attr)) {
if (pageInfo.getExtends(false) == null) {
pageInfo.setExtends(value, n);
} else if (!pageInfo.getExtends(false).equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.extends",
- pageInfo.getExtends(false), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getExtends(false), value));
}
} else if ("contentType".equals(attr)) {
if (pageInfo.getContentType() == null) {
pageInfo.setContentType(value);
} else if (!pageInfo.getContentType().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.contenttype",
- pageInfo.getContentType(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getContentType(), value));
}
} else if ("session".equals(attr)) {
if (pageInfo.getSession() == null) {
pageInfo.setSession(value, n, err);
} else if (!pageInfo.getSession().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.session",
- pageInfo.getSession(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getSession(), value));
}
} else if ("buffer".equals(attr)) {
if (pageInfo.getBufferValue() == null) {
pageInfo.setBufferValue(value, n, err);
} else if (!pageInfo.getBufferValue().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.buffer",
- pageInfo.getBufferValue(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getBufferValue(), value));
}
} else if ("autoFlush".equals(attr)) {
if (pageInfo.getAutoFlush() == null) {
pageInfo.setAutoFlush(value, n, err);
} else if (!pageInfo.getAutoFlush().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.autoflush",
- pageInfo.getAutoFlush(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getAutoFlush(), value));
}
} else if ("isThreadSafe".equals(attr)) {
if (pageInfo.getIsThreadSafe() == null) {
pageInfo.setIsThreadSafe(value, n, err);
} else if (!pageInfo.getIsThreadSafe().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.isthreadsafe",
- pageInfo.getIsThreadSafe(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getIsThreadSafe(), value));
}
} else if ("isELIgnored".equals(attr)) {
if (pageInfo.getIsELIgnored() == null) {
pageInfo.setIsELIgnored(value, n, err, true);
} else if (!pageInfo.getIsELIgnored().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.iselignored",
- pageInfo.getIsELIgnored(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getIsELIgnored(), value));
}
} else if ("isErrorPage".equals(attr)) {
if (pageInfo.getIsErrorPage() == null) {
pageInfo.setIsErrorPage(value, n, err);
} else if (!pageInfo.getIsErrorPage().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.iserrorpage",
- pageInfo.getIsErrorPage(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getIsErrorPage(), value));
}
} else if ("errorPage".equals(attr)) {
if (pageInfo.getErrorPage() == null) {
pageInfo.setErrorPage(value);
} else if (!pageInfo.getErrorPage().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.errorpage",
- pageInfo.getErrorPage(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getErrorPage(), value));
}
} else if ("info".equals(attr)) {
if (pageInfo.getInfo() == null) {
pageInfo.setInfo(value);
} else if (!pageInfo.getInfo().equals(value)) {
- err.jspError(n, "jsp.error.page.conflict.info",
- pageInfo.getInfo(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getInfo(), value));
}
} else if ("pageEncoding".equals(attr)) {
if (pageEncodingSeen)
- err.jspError(n, "jsp.error.page.multi.pageencoding");
+ err.jspError(n.getStart(), MESSAGES.invalidDuplicatePageDirectiveAttribute(attr));
// 'pageEncoding' can occur at most once per file
pageEncodingSeen = true;
String actual = comparePageEncodings(value, n);
@@ -202,13 +204,8 @@
err, true);
} else if (!pageInfo.getDeferredSyntaxAllowedAsLiteral()
.equals(value)) {
- err
- .jspError(
- n,
- "jsp.error.page.conflict.deferredsyntaxallowedasliteral",
- pageInfo
- .getDeferredSyntaxAllowedAsLiteral(),
- value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getDeferredSyntaxAllowedAsLiteral(), value));
}
} else if ("trimDirectiveWhitespaces".equals(attr)) {
if (pageInfo.getTrimDirectiveWhitespaces() == null) {
@@ -216,19 +213,15 @@
true);
} else if (!pageInfo.getTrimDirectiveWhitespaces().equals(
value)) {
- err
- .jspError(
- n,
- "jsp.error.page.conflict.trimdirectivewhitespaces",
- pageInfo.getTrimDirectiveWhitespaces(),
- value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAttribute
+ (attr, pageInfo.getTrimDirectiveWhitespaces(), value));
}
}
}
// Check for bad combinations
if (pageInfo.getBuffer() == 0 && !pageInfo.isAutoFlush())
- err.jspError(n, "jsp.error.page.badCombo");
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingPageDirectiveAutoFlushBuffer());
// Attributes for imports for this node have been processed by
// the parsers, just add them to pageInfo.
@@ -251,19 +244,19 @@
if (pageInfo.getLanguage(false) == null) {
pageInfo.setLanguage(value, n, err, false);
} else if (!pageInfo.getLanguage(false).equals(value)) {
- err.jspError(n, "jsp.error.tag.conflict.language",
- pageInfo.getLanguage(false), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingTagDirectiveAttributeValues
+ (attr, pageInfo.getLanguage(false), value));
}
} else if ("isELIgnored".equals(attr)) {
if (pageInfo.getIsELIgnored() == null) {
pageInfo.setIsELIgnored(value, n, err, false);
} else if (!pageInfo.getIsELIgnored().equals(value)) {
- err.jspError(n, "jsp.error.tag.conflict.iselignored",
- pageInfo.getIsELIgnored(), value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingTagDirectiveAttributeValues
+ (attr, pageInfo.getIsELIgnored(), value));
}
} else if ("pageEncoding".equals(attr)) {
if (pageEncodingSeen)
- err.jspError(n, "jsp.error.tag.multi.pageencoding");
+ err.jspError(n.getStart(), MESSAGES.invalidDuplicateTagDirectiveAttribute(attr));
pageEncodingSeen = true;
compareTagEncodings(value, n);
n.getRoot().setPageEncoding(value);
@@ -273,13 +266,8 @@
err, false);
} else if (!pageInfo.getDeferredSyntaxAllowedAsLiteral()
.equals(value)) {
- err
- .jspError(
- n,
- "jsp.error.tag.conflict.deferredsyntaxallowedasliteral",
- pageInfo
- .getDeferredSyntaxAllowedAsLiteral(),
- value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingTagDirectiveAttributeValues
+ (attr, pageInfo.getDeferredSyntaxAllowedAsLiteral(), value));
}
} else if ("trimDirectiveWhitespaces".equals(attr)) {
if (pageInfo.getTrimDirectiveWhitespaces() == null) {
@@ -287,12 +275,8 @@
false);
} else if (!pageInfo.getTrimDirectiveWhitespaces().equals(
value)) {
- err
- .jspError(
- n,
- "jsp.error.tag.conflict.trimdirectivewhitespaces",
- pageInfo.getTrimDirectiveWhitespaces(),
- value);
+ err.jspError(n.getStart(), MESSAGES.invalidConflictingTagDirectiveAttributeValues
+ (attr, pageInfo.getTrimDirectiveWhitespaces(), value));
}
}
}
@@ -341,9 +325,8 @@
if (!pageDirEnc.equals(configEnc)
&& (!pageDirEnc.startsWith("UTF-16") || !configEnc
.startsWith("UTF-16"))) {
- err.jspError(pageDir,
- "jsp.error.config_pagedir_encoding_mismatch",
- configEnc, pageDirEnc);
+ err.jspError(pageDir.getStart(),
+ MESSAGES.pageEncodingConflictJspPropertyGroup(configEnc, pageDirEnc));
} else {
return configEnc;
}
@@ -361,9 +344,8 @@
if (!pageDirEnc.equals(pageEnc)
&& (!pageDirEnc.startsWith("UTF-16") || !pageEnc
.startsWith("UTF-16"))) {
- err.jspError(pageDir,
- "jsp.error.prolog_pagedir_encoding_mismatch",
- pageEnc, pageDirEnc);
+ err.jspError(pageDir.getStart(),
+ MESSAGES.pageEncodingConflictProlog(pageEnc, pageDirEnc));
} else {
return pageEnc;
}
@@ -398,9 +380,8 @@
if (!pageDirEnc.equals(pageEnc)
&& (!pageDirEnc.startsWith("UTF-16") || !pageEnc
.startsWith("UTF-16"))) {
- err.jspError(pageDir,
- "jsp.error.prolog_pagedir_encoding_mismatch",
- pageEnc, pageDirEnc);
+ err.jspError(pageDir.getStart(),
+ MESSAGES.pageEncodingConflictProlog(pageEnc, pageDirEnc));
}
}
}
@@ -514,38 +495,36 @@
}
public void visit(Node.JspRoot n) throws JasperException {
- JspUtil.checkAttributes("Jsp:root", n, jspRootAttrs, err);
+ JspUtil.checkAttributes(TagConstants.ROOT_ACTION, n, jspRootAttrs, err);
String version = n.getTextAttribute("version");
if (!version.equals("1.2") && !version.equals("2.0") && !version.equals("2.1") && !version.equals("2.2")) {
- err.jspError(n, "jsp.error.jsproot.version.invalid", version);
+ err.jspError(n.getStart(), MESSAGES.invalidJspVersionNumber(version));
}
visitBody(n);
}
public void visit(Node.IncludeDirective n) throws JasperException {
- JspUtil.checkAttributes("Include directive", n,
+ JspUtil.checkAttributes(TagConstants.INCLUDE_DIRECTIVE_ACTION, n,
includeDirectiveAttrs, err);
visitBody(n);
}
public void visit(Node.TaglibDirective n) throws JasperException {
- JspUtil.checkAttributes("Taglib directive", n,
+ JspUtil.checkAttributes(TagConstants.TAGLIB_DIRECTIVE_ACTION, n,
taglibDirectiveAttrs, err);
// Either 'uri' or 'tagdir' attribute must be specified
String uri = n.getAttributeValue("uri");
String tagdir = n.getAttributeValue("tagdir");
if (uri == null && tagdir == null) {
- err.jspError(n, "jsp.error.taglibDirective.missing.location");
+ err.jspError(n.getStart(), MESSAGES.invalidTaglibDirectiveMissingLocation());
}
if (uri != null && tagdir != null) {
- err
- .jspError(n,
- "jsp.error.taglibDirective.both_uri_and_tagdir");
+ err.jspError(n.getStart(), MESSAGES.invalidTaglibDirectiveConflictingLocation());
}
}
public void visit(Node.ParamAction n) throws JasperException {
- JspUtil.checkAttributes("Param action", n, paramActionAttrs, err);
+ JspUtil.checkAttributes(TagConstants.PARAM_ACTION, n, paramActionAttrs, err);
// make sure the value of the 'name' attribute is not a
// request-time expression
throwErrorIfExpression(n, "name", "jsp:param");
@@ -559,13 +538,13 @@
// Make sure we've got at least one nested jsp:param
Node.Nodes subElems = n.getBody();
if (subElems == null) {
- err.jspError(n, "jsp.error.params.emptyBody");
+ err.jspError(n.getStart(), MESSAGES.invalidEmptyJspParams());
}
visitBody(n);
}
public void visit(Node.IncludeAction n) throws JasperException {
- JspUtil.checkAttributes("Include action", n, includeActionAttrs,
+ JspUtil.checkAttributes(TagConstants.INCLUDE_ACTION, n, includeActionAttrs,
err);
n.setPage(getJspAttribute(null, "page", null, null, n
.getAttributeValue("page"), java.lang.String.class, n,
@@ -574,7 +553,7 @@
};
public void visit(Node.ForwardAction n) throws JasperException {
- JspUtil.checkAttributes("Forward", n, forwardActionAttrs, err);
+ JspUtil.checkAttributes(TagConstants.FORWARD_ACTION, n, forwardActionAttrs, err);
n.setPage(getJspAttribute(null, "page", null, null, n
.getAttributeValue("page"), java.lang.String.class, n,
false));
@@ -582,11 +561,11 @@
}
public void visit(Node.GetProperty n) throws JasperException {
- JspUtil.checkAttributes("GetProperty", n, getPropertyAttrs, err);
+ JspUtil.checkAttributes(TagConstants.GET_PROPERTY_ACTION, n, getPropertyAttrs, err);
}
public void visit(Node.SetProperty n) throws JasperException {
- JspUtil.checkAttributes("SetProperty", n, setPropertyAttrs, err);
+ JspUtil.checkAttributes(TagConstants.SET_PROPERTY_ACTION, n, setPropertyAttrs, err);
String property = n.getTextAttribute("property");
String param = n.getTextAttribute("param");
String value = n.getAttributeValue("value");
@@ -598,17 +577,16 @@
if ("*".equals(property)) {
if (param != null || valueSpecified)
- err.jspError(n, "jsp.error.setProperty.invalid");
-
+ err.jspError(n.getStart(), MESSAGES.invalidSetProperty());
} else if (param != null && valueSpecified) {
- err.jspError(n, "jsp.error.setProperty.invalid");
+ err.jspError(n.getStart(), MESSAGES.invalidSetPropertyEitherParam());
}
visitBody(n);
}
public void visit(Node.UseBean n) throws JasperException {
- JspUtil.checkAttributes("UseBean", n, useBeanAttrs, err);
+ JspUtil.checkAttributes(TagConstants.USE_BEAN_ACTION, n, useBeanAttrs, err);
String name = n.getTextAttribute("id");
String scope = n.getTextAttribute("scope");
@@ -618,20 +596,20 @@
BeanRepository beanInfo = pageInfo.getBeanRepository();
if (className == null && type == null)
- err.jspError(n, "jsp.error.usebean.missingType");
+ err.jspError(n.getStart(), MESSAGES.missingUseBeanType());
if (beanInfo.checkVariable(name))
- err.jspError(n, "jsp.error.usebean.duplicate");
+ err.jspError(n.getStart(), MESSAGES.duplicateUseBeanName(name));
if ("session".equals(scope) && !pageInfo.isSession())
- err.jspError(n, "jsp.error.usebean.noSession");
+ err.jspError(n.getStart(), MESSAGES.cannotAccessSessionScopeWithUseBean());
Node.JspAttribute jattr = getJspAttribute(null, "beanName", null,
null, n.getAttributeValue("beanName"),
java.lang.String.class, n, false);
n.setBeanName(jattr);
if (className != null && jattr != null)
- err.jspError(n, "jsp.error.usebean.notBoth");
+ err.jspError(n.getStart(), MESSAGES.cannotUseBothAttributeAndTypeInUseBean());
if (className == null)
className = type;
@@ -642,7 +620,7 @@
}
public void visit(Node.PlugIn n) throws JasperException {
- JspUtil.checkAttributes("Plugin", n, plugInAttrs, err);
+ JspUtil.checkAttributes(TagConstants.PLUGIN_ACTION, n, plugInAttrs, err);
throwErrorIfExpression(n, "type", "jsp:plugin");
throwErrorIfExpression(n, "code", "jsp:plugin");
@@ -658,11 +636,11 @@
String type = n.getTextAttribute("type");
if (type == null)
- err.jspError(n, "jsp.error.plugin.notype");
+ err.jspError(n.getStart(), MESSAGES.missingPluginType());
if (!type.equals("bean") && !type.equals("applet"))
- err.jspError(n, "jsp.error.plugin.badtype");
+ err.jspError(n.getStart(), MESSAGES.badPluginType(type));
if (n.getTextAttribute("code") == null)
- err.jspError(n, "jsp.error.plugin.nocode");
+ err.jspError(n.getStart(), MESSAGES.missingPluginCode());
Node.JspAttribute width = getJspAttribute(null, "width", null,
null, n.getAttributeValue("width"), java.lang.String.class,
@@ -678,7 +656,7 @@
}
public void visit(Node.NamedAttribute n) throws JasperException {
- JspUtil.checkAttributes("Attribute", n, attributeAttrs, err);
+ JspUtil.checkAttributes(TagConstants.ATTRIBUTE_ACTION, n, attributeAttrs, err);
visitBody(n);
if (n.getOmit() != null) {
Attributes attrs = n.getAttributes();
@@ -699,19 +677,19 @@
public void visit(Node.Declaration n) throws JasperException {
if (pageInfo.isScriptingInvalid()) {
- err.jspError(n.getStart(), "jsp.error.no.scriptlets");
+ err.jspError(n.getStart(), MESSAGES.invalidScriptingElement());
}
}
public void visit(Node.Expression n) throws JasperException {
if (pageInfo.isScriptingInvalid()) {
- err.jspError(n.getStart(), "jsp.error.no.scriptlets");
+ err.jspError(n.getStart(), MESSAGES.invalidScriptingElement());
}
}
public void visit(Node.Scriptlet n) throws JasperException {
if (pageInfo.isScriptingInvalid()) {
- err.jspError(n.getStart(), "jsp.error.no.scriptlets");
+ err.jspError(n.getStart(), MESSAGES.invalidScriptingElement());
}
}
@@ -723,7 +701,7 @@
// JSP.2.2 - '#{' not allowed in template text
if (n.getType() == '#') {
if (!pageInfo.isDeferredSyntaxAllowedAsLiteral()) {
- err.jspError(n, "jsp.error.el.template.deferred");
+ err.jspError(n.getStart(), MESSAGES.invalidDeferredExpressionInTemplateText());
} else {
return;
}
@@ -745,7 +723,7 @@
public void visit(Node.UninterpretedTag n) throws JasperException {
if (n.getNamedAttributeNodes().size() != 0) {
- err.jspError(n, "jsp.error.namedAttribute.invalidUse");
+ err.jspError(n.getStart(), MESSAGES.invalidJspAttribute());
}
Attributes attrs = n.getAttributes();
@@ -757,7 +735,8 @@
String value = attrs.getValue(i);
if (!pageInfo.isDeferredSyntaxAllowedAsLiteral()) {
if (containsDeferredSyntax(value)) {
- err.jspError(n, "jsp.error.el.template.deferred");
+ err.jspError(n.getStart(),
+ MESSAGES.invalidDeferredExpressionInTemplateText());
}
}
jspAttrs[i] = getJspAttribute(null, attrs.getQName(i),
@@ -799,7 +778,7 @@
TagInfo tagInfo = n.getTagInfo();
if (tagInfo == null) {
- err.jspError(n, "jsp.error.missing.tagInfo", n.getQName());
+ err.jspError(n.getStart(), MESSAGES.missingTagInfo(n.getQName()));
}
/*
@@ -808,8 +787,8 @@
if (n.implementsSimpleTag()
&& tagInfo.getBodyContent().equalsIgnoreCase(
TagInfo.BODY_CONTENT_JSP)) {
- err.jspError(n, "jsp.error.simpletag.badbodycontent", tagInfo
- .getTagClassName());
+ err.jspError(n.getStart(), MESSAGES.invalidSimpleTagBodyContent(tagInfo
+ .getTagClassName()));
}
/*
@@ -819,8 +798,7 @@
*/
if (tagInfo.hasDynamicAttributes()
&& !n.implementsDynamicAttributes()) {
- err.jspError(n, "jsp.error.dynamic.attributes.not.implemented",
- n.getQName());
+ err.jspError(n.getStart(), MESSAGES.unimplementedDynamicAttributes(n.getQName()));
}
/*
@@ -846,12 +824,11 @@
.getName());
if (tldAttrs[i].isRequired() && attr == null && na == null) {
- err.jspError(n, "jsp.error.missing_attribute", tldAttrs[i]
- .getName(), n.getLocalName());
+ err.jspError(n.getStart(), MESSAGES.missingMandatoryAttribute(n.getLocalName(), tldAttrs[i]
+ .getName()));
}
if (attr != null && na != null) {
- err.jspError(n, "jsp.error.duplicate.name.jspattribute",
- tldAttrs[i].getName());
+ err.jspError(n.getStart(), MESSAGES.duplicateAttribute(tldAttrs[i].getName()));
}
}
@@ -875,8 +852,7 @@
if (tei != null && tei.getVariableInfo(tagData) != null
&& tei.getVariableInfo(tagData).length > 0
&& tagInfo.getTagVariableInfos().length > 0) {
- err.jspError("jsp.error.non_null_tei_and_var_subelems", n
- .getQName());
+ err.jspError(n.getStart(), MESSAGES.invalidTeiWithVariableSubelements(n.getQName()));
}
n.setTagData(tagData);
@@ -889,7 +865,7 @@
Attributes attrs = n.getAttributes();
if (attrs == null) {
- err.jspError(n, "jsp.error.jspelement.missing.name");
+ err.jspError(n.getStart(), MESSAGES.missingMandatoryAttributes());
}
int xmlAttrLen = attrs.getLength();
@@ -919,7 +895,7 @@
}
}
if (n.getNameAttribute() == null) {
- err.jspError(n, "jsp.error.jspelement.missing.name");
+ err.jspError(n.getStart(), MESSAGES.missingMandatoryNameAttribute());
}
// Process named attributes
@@ -936,10 +912,10 @@
}
public void visit(Node.JspOutput n) throws JasperException {
- JspUtil.checkAttributes("jsp:output", n, jspOutputAttrs, err);
+ JspUtil.checkAttributes(TagConstants.OUTPUT_ACTION, n, jspOutputAttrs, err);
if (n.getBody() != null) {
- err.jspError(n, "jsp.error.jspoutput.nonemptybody");
+ err.jspError(n.getStart(), MESSAGES.invalidJspOutputBody());
}
String omitXmlDecl = n.getAttributeValue("omit-xml-declaration");
@@ -954,35 +930,35 @@
if (omitXmlDecl != null && omitXmlDeclOld != null
&& !omitXmlDecl.equals(omitXmlDeclOld)) {
- err.jspError(n, "jsp.error.jspoutput.conflict",
- "omit-xml-declaration", omitXmlDeclOld, omitXmlDecl);
+ err.jspError(n.getStart(), MESSAGES.invalidJspOutputConflict
+ ("omit-xml-declaration", omitXmlDeclOld, omitXmlDecl));
}
if (doctypeName != null && doctypeNameOld != null
&& !doctypeName.equals(doctypeNameOld)) {
- err.jspError(n, "jsp.error.jspoutput.conflict",
- "doctype-root-element", doctypeNameOld, doctypeName);
+ err.jspError(n.getStart(), MESSAGES.invalidJspOutputConflict
+ ("doctype-root-element", doctypeNameOld, doctypeName));
}
if (doctypePublic != null && doctypePublicOld != null
&& !doctypePublic.equals(doctypePublicOld)) {
- err.jspError(n, "jsp.error.jspoutput.conflict",
- "doctype-public", doctypePublicOld, doctypePublic);
+ err.jspError(n.getStart(), MESSAGES.invalidJspOutputConflict
+ ("doctype-public", doctypePublicOld, doctypePublic));
}
if (doctypeSystem != null && doctypeSystemOld != null
&& !doctypeSystem.equals(doctypeSystemOld)) {
- err.jspError(n, "jsp.error.jspoutput.conflict",
- "doctype-system", doctypeSystemOld, doctypeSystem);
+ err.jspError(n.getStart(), MESSAGES.invalidJspOutputConflict
+ ("doctype-system", doctypeSystemOld, doctypeSystem));
}
if (doctypeName == null && doctypeSystem != null
|| doctypeName != null && doctypeSystem == null) {
- err.jspError(n, "jsp.error.jspoutput.doctypenamesystem");
+ err.jspError(n.getStart(), MESSAGES.errorJspOutputDoctype());
}
if (doctypePublic != null && doctypeSystem == null) {
- err.jspError(n, "jsp.error.jspoutput.doctypepulicsystem");
+ err.jspError(n.getStart(), MESSAGES.errorJspOutputMissingDoctype());
}
if (omitXmlDecl != null) {
@@ -1001,7 +977,7 @@
public void visit(Node.InvokeAction n) throws JasperException {
- JspUtil.checkAttributes("Invoke", n, invokeAttrs, err);
+ JspUtil.checkAttributes(TagConstants.INVOKE_ACTION, n, invokeAttrs, err);
String scope = n.getTextAttribute("scope");
JspUtil.checkScope(scope, n, err);
@@ -1009,16 +985,16 @@
String var = n.getTextAttribute("var");
String varReader = n.getTextAttribute("varReader");
if (scope != null && var == null && varReader == null) {
- err.jspError(n, "jsp.error.missing_var_or_varReader");
+ err.jspError(n.getStart(), MESSAGES.missingVarAttribute());
}
if (var != null && varReader != null) {
- err.jspError(n, "jsp.error.var_and_varReader");
+ err.jspError(n.getStart(), MESSAGES.errorBothVarAttributes());
}
}
public void visit(Node.DoBodyAction n) throws JasperException {
- JspUtil.checkAttributes("DoBody", n, doBodyAttrs, err);
+ JspUtil.checkAttributes(TagConstants.DOBODY_ACTION, n, doBodyAttrs, err);
String scope = n.getTextAttribute("scope");
JspUtil.checkScope(scope, n, err);
@@ -1026,10 +1002,10 @@
String var = n.getTextAttribute("var");
String varReader = n.getTextAttribute("varReader");
if (scope != null && var == null && varReader == null) {
- err.jspError(n, "jsp.error.missing_var_or_varReader");
+ err.jspError(n.getStart(), MESSAGES.missingVarAttribute());
}
if (var != null && varReader != null) {
- err.jspError(n, "jsp.error.var_and_varReader");
+ err.jspError(n.getStart(), MESSAGES.errorBothVarAttributes());
}
}
@@ -1060,7 +1036,7 @@
TagInfo tagInfo = n.getTagInfo();
if (tagInfo == null) {
- err.jspError(n, "jsp.error.missing.tagInfo", n.getQName());
+ err.jspError(n.getStart(), MESSAGES.missingTagInfo(n.getQName()));
}
TagAttributeInfo[] tldAttrs = tagInfo.getAttributes();
Attributes attrs = n.getAttributes();
@@ -1088,14 +1064,12 @@
if (node instanceof ELNode.Root) {
if (((ELNode.Root) node).getType() == '$') {
if (elExpression && deferred) {
- err.jspError(n,
- "jsp.error.attribute.deferredmix");
+ err.jspError(n.getStart(), MESSAGES.errorUsingBothElTypes());
}
elExpression = true;
} else if (((ELNode.Root) node).getType() == '#') {
if (elExpression && !deferred) {
- err.jspError(n,
- "jsp.error.attribute.deferredmix");
+ err.jspError(n.getStart(), MESSAGES.errorUsingBothElTypes());
}
elExpression = true;
deferred = true;
@@ -1137,9 +1111,8 @@
// Can't specify a literal for a
// deferred method with an expected type
// of void - JSP.2.3.4
- err.jspError(n,
- "jsp.error.literal_with_void",
- tldAttr.getName());
+ err.jspError(n.getStart(),
+ MESSAGES.errorUsingLiteralValueWithDeferredVoidReturnTyep(tldAttr.getName()));
}
if (tldAttr.isDeferredValue()) {
// The String litteral must be castable to what is declared as type
@@ -1152,8 +1125,7 @@
expectedClass = JspUtil.toClass(expectedType, loader);
} catch (ClassNotFoundException e) {
err.jspError
- (n, "jsp.error.unknown_attribute_type",
- tldAttr.getName(), expectedType);
+ (n.getStart(), MESSAGES.unknownAttributeType(tldAttr.getName(), expectedType));
}
// Check casting - not possible for all types
if (String.class.equals(expectedClass) ||
@@ -1173,8 +1145,8 @@
expressionFactory.coerceToType(attrs.getValue(i), expectedClass);
} catch (Exception e) {
err.jspError
- (n, "jsp.error.coerce_to_type",
- tldAttr.getName(), expectedType, attrs.getValue(i));
+ (n.getStart(), MESSAGES.errorCoercingAttributeValue(
+ tldAttr.getName(), expectedType, attrs.getValue(i)));
}
}
}
@@ -1187,13 +1159,13 @@
if (deferred && !tldAttr.isDeferredMethod() && !tldAttr.isDeferredValue()) {
// No deferred expressions allowed for this attribute
- err.jspError(n, "jsp.error.attribute.custom.non_rt_with_expr",
- tldAttr.getName());
+ err.jspError(n.getStart(),
+ MESSAGES.noExpressionAllowedForAttribute(tldAttr.getName()));
}
if (!deferred && !tldAttr.canBeRequestTime()) {
// Only deferred expressions are allowed for this attribute
- err.jspError(n, "jsp.error.attribute.custom.non_rt_with_expr",
- tldAttr.getName());
+ err.jspError(n.getStart(),
+ MESSAGES.noExpressionAllowedForAttribute(tldAttr.getName()));
}
Class expectedType = String.class;
@@ -1217,9 +1189,8 @@
try {
jspAttrs[i].validateEL(this.pageInfo.getExpressionFactory(), ctx);
} catch (ELException e) {
- this.err.jspError(n,
- "jsp.error.invalid.expression",
- attrs.getValue(i), e);
+ err.jspError(n.getStart(),
+ MESSAGES.invalidExpression(attrs.getValue(i)), e);
}
} else {
// Runtime expression
@@ -1231,8 +1202,8 @@
}
} catch (ClassNotFoundException e) {
err.jspError
- (n, "jsp.error.unknown_attribute_type",
- tldAttrs[j].getName(), tldAttrs[j].getTypeName());
+ (n.getStart(), MESSAGES.unknownAttributeType
+ (tldAttrs[j].getName(), tldAttrs[j].getTypeName()));
}
}
@@ -1240,8 +1211,8 @@
// Attribute does not accept any expressions.
// Make sure its value does not contain any.
if (expression) {
- err.jspError(n, "jsp.error.attribute.custom.non_rt_with_expr",
- tldAttr.getName());
+ err.jspError(n.getStart(),
+ MESSAGES.noExpressionAllowedForAttribute(tldAttr.getName()));
}
jspAttrs[i] = new Node.JspAttribute(tldAttr,
attrs.getQName(i), attrs.getURI(i), attrs
@@ -1266,8 +1237,8 @@
.getValue(i), java.lang.Object.class,
n, true);
} else {
- err.jspError(n, "jsp.error.bad_attribute", attrs
- .getQName(i), n.getLocalName());
+ err.jspError(n.getStart(),
+ MESSAGES.invalidAttributeForTag(attrs.getQName(i), n.getLocalName()));
}
}
}
@@ -1284,7 +1255,7 @@
TagInfo tagInfo = n.getTagInfo();
if (tagInfo == null) {
- err.jspError(n, "jsp.error.missing.tagInfo", n.getQName());
+ err.jspError(n.getStart(), MESSAGES.missingTagInfo(n.getQName()));
}
TagAttributeInfo[] tldAttrs = tagInfo.getAttributes();
Node.Nodes naNodes = n.getNamedAttributeNodes();
@@ -1328,8 +1299,8 @@
jspAttrs[start + i] = new Node.JspAttribute(na, null,
true);
} else {
- err.jspError(n, "jsp.error.bad_attribute",
- na.getName(), n.getLocalName());
+ err.jspError(n.getStart(),
+ MESSAGES.invalidAttributeForTag(na.getName(), n.getLocalName()));
}
}
}
@@ -1392,8 +1363,7 @@
.getExpressionFactory(), ctx);
} catch (ELException e) {
this.err.jspError(n.getStart(),
- "jsp.error.invalid.expression", value, e
- .toString());
+ MESSAGES.invalidExpression(value), e);
}
} else {
@@ -1465,9 +1435,8 @@
if (n.getAttributes() != null
&& n.getAttributes().getValue(attrName) != null
&& isExpression(n, n.getAttributes().getValue(attrName), true)) {
- err.jspError(n,
- "jsp.error.attribute.standard.non_rt_with_expr",
- attrName, actionName);
+ err.jspError(n.getStart(),
+ MESSAGES.noExpressionAllowedForAttributeInAction(attrName, actionName));
}
}
@@ -1537,14 +1506,9 @@
if (uri == null) {
if (prefix == null) {
- err.jspError(n, "jsp.error.noFunctionPrefix",
- function);
+ err.jspError(n.getStart(), MESSAGES.missingFunctionPrefix(function));
} else {
- err
- .jspError(
- n,
- "jsp.error.attribute.invalidPrefix",
- prefix);
+ err.jspError(n.getStart(), MESSAGES.unknownFunctionPrefix(prefix));
}
}
TagLibraryInfo taglib = pageInfo.getTaglib(uri);
@@ -1553,7 +1517,7 @@
funcInfo = taglib.getFunction(function);
}
if (funcInfo == null) {
- err.jspError(n, "jsp.error.noFunction", function);
+ err.jspError(n.getStart(), MESSAGES.unknownFunction(function));
}
// Skip TLD function uniqueness check. Done by Schema ?
func.setUri(uri);
@@ -1595,14 +1559,11 @@
int start = signature.indexOf(' ');
if (start < 0) {
- err.jspError("jsp.error.tld.fn.invalid.signature", func
- .getPrefix(), func.getName());
+ err.jspError(MESSAGES.invalidFunctionSignature(func.getPrefix(), func.getName()));
}
int end = signature.indexOf('(');
if (end < 0) {
- err.jspError(
- "jsp.error.tld.fn.invalid.signature.parenexpected",
- func.getPrefix(), func.getName());
+ err.jspError(MESSAGES.invalidFunctionSignatureMissingParent(func.getPrefix(), func.getName()));
}
return signature.substring(start + 1, end).trim();
}
@@ -1627,8 +1588,7 @@
if (p < 0) {
p = signature.indexOf(')', start);
if (p < 0) {
- err.jspError("jsp.error.tld.fn.invalid.signature", func
- .getPrefix(), func.getName());
+ err.jspError(MESSAGES.invalidFunctionSignature(func.getPrefix(), func.getName()));
}
lastArg = true;
}
@@ -1675,10 +1635,8 @@
c = loader.loadClass(n.getFunctionInfo()
.getFunctionClass());
} catch (ClassNotFoundException e) {
- err.jspError("jsp.error.function.classnotfound", n
- .getFunctionInfo().getFunctionClass(), n
- .getPrefix()
- + ':' + n.getName(), e.getMessage());
+ err.jspError(MESSAGES.missingFunctionClass
+ (n.getFunctionInfo().getFunctionClass(), n.getName()), e);
}
String paramTypes[] = n.getParameters();
int size = paramTypes.length;
@@ -1690,12 +1648,9 @@
}
method = c.getDeclaredMethod(n.getMethodName(), params);
} catch (ClassNotFoundException e) {
- err.jspError("jsp.error.signature.classnotfound",
- paramTypes[i], n.getPrefix() + ':'
- + n.getName(), e.getMessage());
+ err.jspError(MESSAGES.missingSignatureClass(paramTypes[i], n.getName()), e);
} catch (NoSuchMethodException e) {
- err.jspError("jsp.error.noFunctionMethod", n
- .getMethodName(), n.getName(), c.getName());
+ err.jspError(MESSAGES.missingMethodInClass(n.getMethodName(), n.getName(), c.getName()));
}
fmapper.mapFunction(n.getPrefix() + ':' + n.getName(),
method);
@@ -1725,15 +1680,14 @@
public void visit(Node.CustomTag n) throws JasperException {
TagInfo tagInfo = n.getTagInfo();
if (tagInfo == null) {
- err.jspError(n, "jsp.error.missing.tagInfo", n.getQName());
+ err.jspError(n.getStart(), MESSAGES.missingTagInfo(n.getQName()));
}
ValidationMessage[] errors = tagInfo.validate(n.getTagData());
if (errors != null && errors.length != 0) {
StringBuilder errMsg = new StringBuilder();
errMsg.append("<h3>");
- errMsg.append(Localizer.getMessage(
- "jsp.error.tei.invalid.attributes", n.getQName()));
+ errMsg.append(MESSAGES.errorValidatingTag(n.getQName()));
errMsg.append("</h3>");
for (int i = 0; i < errors.length; i++) {
errMsg.append("<p>");
@@ -1745,7 +1699,7 @@
errMsg.append("</p>");
}
- err.jspError(n, errMsg.toString());
+ err.jspError(n.getStart(), errMsg.toString());
}
visitBody(n);
@@ -1837,8 +1791,7 @@
errMsg = new StringBuilder();
}
errMsg.append("<h3>");
- errMsg.append(Localizer.getMessage(
- "jsp.error.tlv.invalid.page", tli.getShortName(),
+ errMsg.append(MESSAGES.errorValidatingTaglibrary(tli.getShortName(),
compiler.getPageInfo().getJspFile()));
errMsg.append("</h3>");
for (int i = 0; i < errors.length; i++) {
Deleted: trunk/src/main/java/org/apache/jasper/resources/LocalStrings.properties
===================================================================
--- trunk/src/main/java/org/apache/jasper/resources/LocalStrings.properties 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/resources/LocalStrings.properties 2012-09-21 14:14:07 UTC (rev 2083)
@@ -1,448 +0,0 @@
-# $Id: LocalStrings.properties 1569 2010-10-28 16:28:22Z remy.maucherat(a)jboss.com $
-#
-# Default localized string information
-# Localized this the Default Locale as is en_US
-
-jsp.error.compiler=No Java compiler available
-jsp.error.bad.servlet.engine=Incorrect servlet engine version!
-jsp.error.no.scratch.dir=The JSP engine is not configured with a scratch dir.\
-\n Please add \"jsp.initparams=scratchdir=<dir-name>\" \
-\n in the servlets.properties file for this context.
-jsp.error.bad.scratch.dir=The scratchDir you specified: {0} is unusable.
-jsp.message.scratch.dir.is=Scratch dir for the JSP engine is: {0}
-jsp.message.parent_class_loader_is=Parent class loader is: {0}
-jsp.message.dont.modify.servlets=IMPORTANT: Do not modify the generated servlets
-jsp.error.not.impl.comments=Internal error: Comments not implemented
-jsp.error.not.impl.directives=Internal error: Directives not implemented
-jsp.error.not.impl.declarations=Internal error: Declarations not implemented
-jsp.error.not.impl.expressions=Internal error: Expressions not implemented
-jsp.error.not.impl.scriptlets=Internal error: Scriptlets not implemented
-jsp.error.not.impl.usebean=Internal error: useBean not implemented
-jsp.error.not.impl.getp=Internal error: getProperty not implemented
-jsp.error.not.impl.setp=Internal error: setProperty not implemented
-jsp.error.not.impl.plugin=Internal error: plugin not implemented
-jsp.error.not.impl.forward=Internal error: forward not implemented
-jsp.error.not.impl.include=Internal error: include not implemented
-jsp.error.unavailable=JSP has been marked unavailable
-jsp.error.usebean.missing.attribute=useBean: id attribute missing or misspelled
-jsp.error.usebean.missing.type=useBean ({0}): Either class or type attribute must be \
-specified:
-jsp.error.usebean.duplicate=useBean: Duplicate bean name: {0}
-jsp.error.usebean.prohibited.as.session=Can't use as session bean {0} since it is prohibited \
-by jsp directive defined earlier:
-jsp.error.usebean.not.both=useBean: Can't specify both class and beanName attribute:
-jsp.error.usebean.bad.type.cast=useBean ({0}): Type ({1}) is not assignable from class ({2})
-jsp.error.invalid.scope=Illegal value of \'scope\' attribute: {0} (must be one of \"page\", \"request\", \"session\", or \"application\")
-jsp.error.classname=Can't determine classname from .class file
-jsp.error.outputfolder=No output folder
-jsp.warning.bad.type=Warning: bad type in .class file
-jsp.error.data.file.write=Error while writing data file
-jsp.error.page.invalid.buffer=Page directive: invalid buffer size
-jsp.error.page.conflict.contenttype=Page directive: illegal to have multiple occurrences of 'contentType' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.contenttype=Page directive: invalid value for contentType
-jsp.error.page.conflict.session=Page directive: illegal to have multiple occurrences of 'session' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.session=Page directive: invalid value for session
-jsp.error.page.conflict.buffer=Page directive: illegal to have multiple occurrences of 'buffer' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.buffer=Page directive: invalid value for buffer
-jsp.error.page.conflict.autoflush=Page directive: illegal to have multiple occurrences of 'autoFlush' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.autoflush=Page directive: invalid value for autoFlush
-jsp.error.page.conflict.isthreadsafe=Page directive: illegal to have multiple occurrences of 'isThreadSafe' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.isthreadsafe=Page directive: invalid value for isThreadSafe
-jsp.error.page.conflict.info=Page directive: illegal to have multiple occurrences of 'info' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.info=Page directive: invalid value for info
-jsp.error.page.conflict.iserrorpage=Page directive: illegal to have multiple occurrences of 'isErrorPage' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.iserrorpage=Page directive: invalid value for isErrorPage
-jsp.error.page.conflict.errorpage=Page directive: illegal to have multiple occurrences of 'errorPage' with different values (old: {0}, new: {1})
-jsp.error.page.conflict.language=Page directive: illegal to have multiple occurrences of 'language' with different values (old: {0}, new: {1})
-jsp.error.tag.conflict.language=Tag directive: illegal to have multiple occurrences of 'language' with different values (old: {0}, new: {1})
-jsp.error.page.language.nonjava=Page directive: invalid language attribute
-jsp.error.tag.language.nonjava=Tag directive: invalid language attribute
-jsp.error.page.defafteruse.language=Page directive: can't define language after a scriptlet
-jsp.error.page.nomapping.language=Page directive: No mapping for language:
-jsp.error.page.conflict.extends=Page directive: illegal to have multiple occurrences of 'extends' with different values (old: {0}, new: {1})
-jsp.error.page.conflict.iselignored=Page directive: illegal to have multiple occurrences of 'isELIgnored' with different values (old: {0}, new: {1})
-jsp.error.tag.conflict.iselignored=Tag directive: illegal to have multiple occurrences of 'isELIgnored' with different values (old: {0}, new: {1})
-jsp.error.page.invalid.iselignored=Page directive: invalid value for isELIgnored
-jsp.error.tag.invalid.iselignored=Tag directive: invalid value for isELIgnored
-jsp.error.page.multi.pageencoding=Page directive must not have multiple occurrences of pageencoding
-jsp.error.tag.conflict.attr=Tag directive: illegal to have multiple occurrences of the attribute \"{0}\" with different values (old: {1}, new: {2})
-jsp.error.tag.multi.pageencoding=Tag directive must not have multiple occurrences of pageencoding
-jsp.error.page.bad_b_and_a_combo=Page directive: Illegal combination of buffer=\"none\" && autoFlush=\"false\"
-jsp.error.not.impl.taglib=Internal error: Tag extensions not implemented
-jsp.error.include.missing.file=Missing file argument to include
-jsp.error.include.bad.file=Bad file argument to include
-jsp.error.include.exception=Unable to include {0}
-jsp.error.stream.closed=Stream closed
-jsp.error.invalid.forward=Invalid forward tag
-jsp.error.unknownException=Unhandled error! You might want to consider having an error page \
-to report such errors more gracefully
-jsp.error.invalid.directive=Invalid directive
-jsp.error.invalid.implicit=Invalid implicit TLD for tag file at {0}
-jsp.error.invalid.implicit.version=Invalid JSP version defined in implicit TLD for tag file at {0}
-jsp.error.invalid.version=Invalid JSP version defined for tag file at {0}
-jsp.error.directive.istagfile={0} directive cannot be used in a tag file
-jsp.error.directive.isnottagfile={0} directive can only be used in a tag file
-jsp.error.tagfile.tld.name=The \"name\" attribute of the tag directive has a value {0} while the \"name\" tag of the \"tag-file\" element in the TLD is {1}
-jsp.error.action.istagfile={0} action cannot be used in a tag file
-jsp.error.action.isnottagfile={0} action can be used in tag files only
-jsp.error.unterminated=Unterminated {0} tag
-jsp.error.usebean.notinsamefile=useBean tag must begin and end in the same physical file
-jsp.error.loadclass.taghandler=Unable to load tag handler class \"{0}\" for tag \"{1}\"
-jsp.error.unable.compile=Unable to compile class for JSP
-jsp.error.unable.load=Unable to load class for JSP
-jsp.error.unable.rename=Unable to rename class file {0} to {1}
-jsp.error.mandatory.attribute={0}: Mandatory attribute {1} missing
-jsp.error.flush=Exception occurred when flushing data
-jsp.engine.info=Jasper JSP 2.1 Engine
-jsp.error.invalid.expression="{0}" contains invalid expression(s): {1}
-jsp.error.invalid.attribute={0} has invalid attribute: {1}
-jsp.error.usebean.class.notfound=Class: {0} not found
-jsp.error.file.cannot.read=Cannot read file: {0}
-jsp.error.file.already.registered=Recursive include of file {0}
-jsp.error.file.not.registered=file {0} not seen in include
-jsp.error.quotes.unterminated=Unterminated quotes
-jsp.error.attr.quoted=Attribute value should be quoted
-jsp.error.attr.novalue=Attribute {0} has no value
-jsp.error.tag.attr.unterminated=Unterminated tag attribute list
-jsp.error.param.noname=No name in PARAM tag
-jsp.error.param.novalue=No value in PARAM tag
-jsp.error.beans.nullbean=Attempted a bean operation on a null object.
-jsp.error.beans.nobeaninfo=No BeanInfo for the bean of type ''{0}'' could be found, the class likely does not exist.
-jsp.error.beans.introspection=An exception occurred while introspecting the read method of property ''{0}'' in a bean of type ''{1}'':\n{2}
-jsp.error.beans.nomethod=Cannot find a method to read property ''{0}'' in a bean of type ''{1}''
-jsp.error.beans.nomethod.setproperty=Can''t find a method to write property ''{0}'' of type ''{1}'' in a bean of type ''{2}''
-jsp.error.beans.noproperty=Cannot find any information on property ''{0}'' in a bean of type ''{1}''
-jsp.error.beans.property.conversion=Unable to convert string \"{0}\" to class \"{1}\" for attribute \"{2}\": {3}
-jsp.error.beans.propertyeditor.notregistered=Property Editor not registered with the PropertyEditorManager
-jsp.error.beans.setproperty.noindexset=Cannot set indexed property
-jsp.error.include.tag=Invalid jsp:include tag
-jsp.error.include.noflush=jsp:include needs to have \"flush=true\"
-jsp.error.include.badflush=jsp:include page=\"...\" flush=\"true\" is the only valid combination in JSP 1.0
-jsp.error.attempt_to_clear_flushed_buffer=Error: Attempt to clear a buffer that's already been flushed
-jsp.error.overflow=Error: JSP Buffer overflow
-jsp.error.paramexpected=Expecting \"jsp:param\" standard action with \"name\" and \"value\" attributes
-jsp.error.param.invalidUse=The jsp:param action must not be used outside the jsp:include, jsp:forward, or jsp:params elements
-jsp.error.params.invalidUse=jsp:params must be a direct child of jsp:plugin
-jsp.error.fallback.invalidUse=jsp:fallback must be a direct child of jsp:plugin
-jsp.error.namedAttribute.invalidUse=jsp:attribute must be the subelement of a standard or custom action
-jsp.error.jspbody.invalidUse=jsp:body must be the subelement of a standard or custom action
-jsp.error.closeindividualparam=param tag needs to be closed with \"/>\"
-jsp.error.closeparams=param tag needs to be closed with /params
-jsp.error.params.emptyBody=jsp:params must contain at least one nested jsp:param
-jsp.error.params.illegalChild=jsp:params must not have any nested elements other than jsp:param
-jsp.error.plugin.notype=type not declared in jsp:plugin
-jsp.error.plugin.badtype=Illegal value for 'type' attribute in jsp:plugin: must be 'bean' or 'applet'
-jsp.error.plugin.nocode=code not declared in jsp:plugin
-jsp.error.ise_on_clear=Illegal to clear() when buffer size == 0
-jsp.error.setproperty.beanNotFound=setProperty: Bean {0} not found
-jsp.error.getproperty.beanNotFound=getProperty: Bean {0} not found
-jsp.error.setproperty.ClassNotFound=setProperty: Class {0} not found
-jsp.error.javac=Javac exception
-jsp.error.javac.env=Environment:
-jsp.error.compilation=Error compiling file: {0} {1}
-# typo ?
-#jsp.error.setproperty.invalidSayntax=setProperty: can't have non-null value when property=*
-jsp.error.setproperty.invalidSyntax=setProperty: can't have non-null value when property=*
-jsp.error.setproperty.beanInfoNotFound=setproperty: beanInfo for bean {0} not found
-jsp.error.setproperty.paramOrValue=setProperty: either param or value can be present
-jsp.error.setproperty.arrayVal=setProperty: can't set array property {0} through a string constant value
-jsp.warning.keepgen=Warning: Invalid value for the initParam keepgenerated. Will use the default value of \"false\"
-jsp.warning.xpoweredBy=Warning: Invalid value for the initParam xpoweredBy. Will use the default value of \"false\"
-jsp.warning.enablePooling=Warning: Invalid value for the initParam enablePooling. Will use the default value of \"true\"
-jsp.warning.invalidTagPoolSize=Warning: Invalid value for the init parameter named tagPoolSize. Will use default size of {0}
-jsp.warning.mappedFile=Warning: Invalid value for the initParam mappedFile. Will use the default value of \"false\"
-jsp.warning.sendErrToClient=Warning: Invalid value for the initParam sendErrToClient. Will use the default value of \"false\"
-jsp.warning.classDebugInfo=Warning: Invalid value for the initParam classdebuginfo. Will use the default value of \"false\"
-jsp.warning.checkInterval=Warning: Invalid value for the initParam checkInterval. Will use the default value of \"300\" seconds
-jsp.warning.modificationTestInterval=Warning: Invalid value for the initParam modificationTestInterval. Will use the default value of \"4\" seconds
-jsp.warning.recompileOnFail=Warning: Invalid value for the initParam recompileOnFail. Will use the default value of \"false\" seconds
-jsp.warning.development=Warning: Invalid value for the initParam development. Will use the default value of \"true\"
-jsp.warning.fork=Warning: Invalid value for the initParam fork. Will use the default value of \"true\"
-jsp.warning.reloading=Warning: Invalid value for the initParam reloading. Will use the default value of \"true\"
-jsp.warning.dumpSmap=Warning: Invalid value for the initParam dumpSmap. Will use the default value of \"false\"
-jsp.warning.genchararray=Warning: Invalid value for the initParam genStrAsCharArray. Will use the default value of \"false\"
-jsp.warning.suppressSmap=Warning: Invalid value for the initParam suppressSmap. Will use the default value of \"false\"
-jsp.warning.displaySourceFragment=Warning: Invalid value for the initParam displaySourceFragment. Will use the default value of \"true\"
-jsp.error.badtaglib=Unable to open taglibrary {0} : {1}
-jsp.error.badGetReader=Cannot create a reader when the stream is not buffered
-jsp.warning.unknown.element.in.taglib=Unknown element ({0}) in taglib
-jsp.warning.unknown.element.in.tag=Unknown element ({0}) in tag
-jsp.warning.unknown.element.in.tagfile=Unknown element ({0}) in tag-file
-jsp.warning.unknown.element.in.attribute=Unknown element ({0}) in attribute
-jsp.warning.unknown.element.in.variable=Unknown element ({0}) in variable
-jsp.warning.unknown.element.in.validator=Unknown element ({0}) in validator
-jsp.warning.unknown.element.in.initParam=Unknown element ({0}) in validator's init-param
-jsp.warning.unknown.element.in.function=Unknown element ({0}) in function
-jsp.error.more.than.one.taglib=More than one taglib in the TLD: {0}
-jsp.error.teiclass.instantiation=Failed to load or instantiate TagExtraInfo class: {0}
-jsp.error.non_null_tei_and_var_subelems=Tag {0} has one or more variable subelements and a TagExtraInfo class that returns one or more VariableInfo
-jsp.error.parse.error.in.TLD=Parse Error in the tag library descriptor: {0}
-jsp.error.unable.to.open.TLD=Unable to open the tag library descriptor: {0}
-jsp.buffer.size.zero=Buffer size <= 0
-jsp.error.file.not.found=File \"{0}\" not found
-jsp.message.copyinguri=Copying {0} into {1}
-jsp.message.htmlcomment=\nStripping Comment: \t{0}
-jsp.message.handling_directive=\nHandling Directive: {0}\t{1}
-jsp.message.handling_plugin=\nPlugin: {0}
-jsp.message.package_name_is=Package name is: {0}
-jsp.message.class_name_is=Class name is: {0}
-jsp.message.java_file_name_is=Java file name is: {0}
-jsp.message.class_file_name_is=Class file name is: {0}
-jsp.message.accepted=Accepted {0} at {1}
-jsp.message.adding_jar=Adding jar {0} to my classpath
-jsp.message.compiling_with=Compiling with: {0}
-jsp.message.template_text=template text
-jsp.error.missing_attribute=According to the TLD or the tag file, attribute {0} is mandatory for tag {1}
-jsp.error.bad_attribute=Attribute {0} invalid for tag {1} according to TLD
-jsp.error.tld.unable_to_read=Unable to read TLD \"{1}\" from JAR file \"{0}\": {2}
-jsp.error.tld.unable_to_get_jar=Unable to get JAR resource \"{0}\" containing TLD: {1}
-jsp.error.tld.missing_jar=Missing JAR resource \"{0}\" containing TLD
-jsp.error.webxml_not_found=Could not locate web.xml
-jsp.cmd_line.usage=Usage: jsptoservlet [-dd <path/to/outputDirectory>] [-keepgenerated] \
-<.jsp files>
-jsp.message.cp_is=Classpath {0} is: {1}
-jsp.error.unable.to_load_taghandler_class=Unable to load tag handler class {0} because of {1}
-jsp.error.unable.to_find_method=Unable to find setter method for attribute: {0}
-jsp.error.unable.to_convert_string=Unable to convert a String to {0} for attribute {1}
-jsp.error.unable.to_introspect=Unable to introspect on tag handler class: {0} because of {1}
-jsp.error.bad_tag=No tag \"{0}\" defined in tag library imported with prefix \"{1}\"
-jsp.error.xml.bad_tag=No tag \"{0}\" defined in tag library associated with uri \"{1}\"
-jsp.error.bad_string_Character=Cannot extract a Character from a zero length array
-jsp.error.bad_string_char=Cannot extract a char from a zero length array
-jsp.warning.compiler.class.cantcreate=Can't create an instance of specified compiler plugin class {0} due to {1}. Will default to Sun Java Compiler.
-jsp.warning.compiler.class.notfound=Specified compiler plugin class {0} not found. Will default to Sun Java Compiler.
-jsp.warning.compiler.path.notfound=Specified compiler path {0} not found. Will default to system PATH.
-jsp.error.jspc.uriroot_not_dir=The -uriroot option must specify a pre-existing directory
-jsp.error.jspc.missingTarget=Missing target: Must specify -webapp or -uriroot, or one or more JSP pages
-jsp.error.jspc.no_uriroot=The uriroot is not specified and cannot be located with the specified JSP file(s)
-jspc.implicit.uriRoot=uriRoot implicitly set to "{0}"
-jspc.usage=Usage: jspc <options> [--] <jsp files>\n\
-where jsp files is\n\
-\ -webapp <dir> A directory containing a web-app, whose JSP pages\n\
-\ will be processed recursively\n\
-or any number of\n\
-\ <file> A file to be parsed as a JSP page\n\
-where options include:\n\
-\ -help Print this help message\n\
-\ -v Verbose mode\n\
-\ -d <dir> Output Directory (default -Djava.io.tmpdir)\n\
-\ -l Outputs the name of the JSP page upon failure\n\
-\ -s Outputs the name of the JSP page upon success\n\
-\ -p <name> Name of target package (default org.apache.jsp)\n\
-\ -c <name> Name of target class name (only applies to first JSP page)\n\
-\ -mapped Generates separate write() calls for each HTML line in the JSP\n\
-\ -die[#] Generates an error return code (#) on fatal errors (default 1)\n\
-\ -uribase <dir> The uri directory compilations should be relative to\n\
-\ (default "/")\n\
-\ -uriroot <dir> Same as -webapp\n\
-\ -compile Compiles generated servlets\n\
-\ -webinc <file> Creates a partial servlet mappings in the file\n\
-\ -webxml <file> Creates a complete web.xml in the file\n\
-\ -ieplugin <clsid> Java Plugin classid for Internet Explorer\n\
-\ -classpath <path> Overrides java.class.path system property\n\
-\ -xpoweredBy Add X-Powered-By response header\n\
-\ -trimSpaces Trim spaces in template text between actions, directives\n\
-\ -javaEncoding <enc> Set the encoding charset for Java classes (default UTF-8)\n\
-\ -source <version> Set the -source argument to the compiler (default 1.4)\n\
-\ -target <version> Set the -target argument to the compiler (default 1.4)\n\
-
-jspc.webxml.header=<?xml version="1.0" encoding="ISO-8859-1"?>\n\
-\n\
-<!DOCTYPE web-app\n\
-\ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"\n\
-\ "http://java.sun.com/dtd/web-app_2_3.dtd">\n\
-<!--\n\
-Automatically created by Apache Jakarta Tomcat JspC.\n\
--->\n\
-<web-app>\n\
-\n
-jspc.webxml.footer=\n\
-</web-app>\n\
-\n
-jspc.webinc.header=\n\
-<!--\n\
-Automatically created by Apache Jakarta Tomcat JspC.\n\
-Place this fragment in the web.xml before all icon, display-name,\n\
-description, distributable, and context-param elements.\n\
--->\n
-jspc.webinc.footer=\n\
-<!--\n\
-All session-config, mime-mapping, welcome-file-list, error-page, taglib,\n\
-resource-ref, security-constraint, login-config, security-role,\n\
-env-entry, and ejb-ref elements should follow this fragment.\n\
--->\n
-jspc.webinc.insertEnd=<!-- JSPC servlet mappings end -->
-jspc.webinc.insertStart=<!-- JSPC servlet mappings start -->
-jspc.error.jasperException=error-the file ''{0}'' generated the following parse exception: {1}
-jspc.error.generalException=ERROR-the file ''{0}'' generated the following general exception:
-jspc.error.fileDoesNotExist=The file argument ''{0}'' does not exist
-jspc.error.emptyWebApp=-webapp requires a trailing file argument
-jsp.error.library.invalid=JSP page is invalid according to library {0}: {1}
-jsp.error.tlvclass.instantiation=Failed to load or instantiate TagLibraryValidator class: {0}
-jsp.error.tlv.invalid.page=Validation error messages from TagLibraryValidator for {0} in {1}
-jsp.error.tei.invalid.attributes=Validation error messages from TagExtraInfo for {0}
-jsp.parser.sax.propertynotsupported=SAX property not supported: {0}
-jsp.parser.sax.propertynotrecognized=SAX property not recognized: {0}
-jsp.parser.sax.featurenotsupported=SAX feature not supported: {0}
-jsp.parser.sax.featurenotrecognized=SAX feature not recognized: {0}
-jsp.error.no.more.content=End of content reached while more parsing required: tag nesting error?
-jsp.error.parse.xml=XML parsing error on file {0}
-jsp.error.parse.xml.line=XML parsing error on file {0}: (line {1}, col {2})
-jsp.error.parse.xml.scripting.invalid.body=Body of {0} element must not contain any XML elements
-jsp.error.internal.tldinit=Unable to initialize TldLocationsCache: {0}
-jsp.error.internal.filenotfound=Internal Error: File {0} not found
-jsp.error.internal.evaluator_not_found=Internal error: unable to load expression evaluator
-jsp.error.parse.xml.invalidPublicId=Invalid PUBLIC ID: {0}
-jsp.error.include.flush.invalid.value=Invalid value for the flush attribute: {0}
-jsp.error.unsupported.encoding=Unsupported encoding: {0}
-tld.error.variableNotAllowed=It is an error for a tag that has one or more variable subelements to have a TagExtraInfo class that returns a non-null object.
-jsp.error.tldInWebDotXmlNotFound=Could not locate TLD {1} for URI {0} specified in web.xml
-jsp.error.taglibDirective.absUriCannotBeResolved=The absolute uri: {0} cannot be resolved in either web.xml or the jar files deployed with this application
-jsp.error.taglibDirective.missing.location=Neither \'uri\' nor \'tagdir\' attribute specified
-jsp.error.taglibDirective.both_uri_and_tagdir=Both \'uri\' and \'tagdir\' attributes specified
-jsp.error.invalid.tagdir=Tag file directory {0} does not start with \"/WEB-INF/tags\"
-jsp.error.unterminated.user.tag=Unterminated user-defined tag: ending tag {0} not found or incorrectly nested
-#jspx.error.templateDataNotInJspCdata=Validation Error: Element <{0}> cannot have template data. Template data must be encapsulated within a <jsp:cdata> element. [JSP1.2 PFD section 5.1.9]\nTemplate data in error: {1}
-jspx.error.templateDataNotInJspCdata=Validation Error: Element <{0}> cannot have template data. Template data must be encapsulated within a <jsp:text> element. [JSP1.2 PFD section 5.1.9]\nTemplate data in error: {1}
-#Error while processing taglib jar file {0}: {1}
-jsp.error.taglib.reserved.prefix=The taglib prefix {0} is reserved
-jsp.error.invalid.javaEncoding=Invalid java encodings. Tried {0} and then {1}. Both failed.
-jsp.error.needAlternateJavaEncoding=Default java encoding {0} is invalid on your java platform. An alternate can be specified via the 'javaEncoding' parameter of JspServlet.
-#Error when compiling, used for jsp line number error messages
-jsp.error.single.line.number=An error occurred at line: {0} in the jsp file: {1}
-jsp.error.multiple.line.number=\n\nAn error occurred between lines: {0} and {1} in the jsp file: {2}\n\n
-jsp.error.java.line.number=An error occurred at line: {0} in the generated java file
-jsp.error.corresponding.servlet=Generated servlet error:\n
-jsp.error.empty.body.not.allowed=Empty body not allowed for {0}
-jsp.error.jspbody.required=Must use jsp:body to specify tag body for {0} if jsp:attribute is used.
-jsp.error.jspbody.emptybody.only=The {0} tag can only have jsp:attribute in its body.
-jsp.error.no.scriptlets=Scripting elements ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) are disallowed here.
-jsp.error.internal.unexpected_node_type=Internal Error: Unexpected node type encountered
-jsp.error.tld.fn.invalid.signature=Invalid syntax for function signature in TLD. Tag Library: {0}, Function: {1}
-jsp.error.tld.fn.duplicate.name=Duplicate function name {0} in tag library {1}
-jsp.error.tld.fn.invalid.signature.commaexpected=Invalid syntax for function signature in TLD. Comma ',' expected. Tag Library: {0}, Function: {1}.
-jsp.error.tld.fn.invalid.signature.parenexpected=Invalid syntax for function signature in TLD. Parenthesis '(' expected. Tag Library: {0}, Function: {1}.
-jsp.error.tld.mandatory.element.missing=Mandatory TLD element missing or empty: {0}
-jsp.error.dynamic.attributes.not.implemented=The {0} tag declares that it accepts dynamic attributes but does not implement the required interface
-jsp.error.nomatching.fragment=Cannot find an attribute directive (with name={0} and fragment=true) prior to the fragment directive.
-jsp.error.attribute.noequal=equal symbol expected
-jsp.error.attribute.noquote=quote symbol expected
-jsp.error.attribute.unterminated=attribute for {0} is not properly terminated
-jsp.error.attribute.noescape=Attribute value {0} is quoted with {1} which must be escaped when used within the value
-jsp.error.missing.tagInfo=TagInfo object for {0} is missing from TLD
-jsp.error.deferredmethodsignaturewithoutdeferredmethod=Cannot specify a method signature if 'deferredMethod' is not 'true'
-jsp.error.deferredvaluetypewithoutdeferredvalue=Cannot specify a value type if 'deferredValue' is not 'true'
-jsp.error.deferredmethodandvalue='deferredValue' and 'deferredMethod' cannot be both 'true'
-jsp.error.fragmentwithtype=Cannot specify both 'fragment' and 'type' attributes. If 'fragment' is present, 'type' is fixed as 'javax.servlet.jsp.tagext.JspFragment'
-jsp.error.fragmentwithrtexprvalue=Cannot specify both 'fragment' and 'rtexprvalue' attributes. If 'fragment' is present, 'rtexprvalue' is fixed as 'true'
-jsp.error.fragmentWithDeclareOrScope=Both 'fragment' and 'declare' or 'scope' attributes specified in variable directive
-jsp.error.var_and_varReader=Only one of \'var\' or \'varReader\' may be specified
-jsp.error.missing_var_or_varReader=Missing \'var\' or \'varReader\' attribute
-jsp.warning.bad.urlpattern.propertygroup=Bad value {0} in the url-pattern subelement in web.xml
-jsp.error.literal_with_void=A literal value was specified for attribute {0} that is defined as a deferred method with a return type of void. JSP.2.3.4 does not permit literal values in this case
-jsp.error.unknown_attribute_type=Unknown attribute type ({1}) for attribute {0}.
-jsp.error.coerce_to_type=Cannot coerce value ({2}) to type ({1}) for attribute {0}.
-jsp.error.jspelement.missing.name=Mandatory XML-style \'name\' attribute missing
-jsp.error.xmlns.redefinition.notimplemented=Internal error: Attempt to redefine xmlns:{0}. Redefinition of namespaces is not implemented.
-jsp.error.could.not.add.taglibraries=Could not add one or more tag libraries: {0}
-jsp.error.duplicate.name.jspattribute=The attribute {0} specified in the standard or custom action also appears as the value of the name attribute in the enclosed jsp:attribute
-jsp.error.not.in.template={0} not allowed in a template text body.
-jsp.error.badStandardAction=Invalid standard action
-jsp.error.xml.badStandardAction=Invalid standard action: {0}
-jsp.error.tagdirective.badbodycontent=Invalid body-content ({0}) in tag directive
-jsp.error.simpletag.badbodycontent=The TLD for the class {0} specifies an invalid body-content (JSP) for a SimpleTag.
-jsp.error.config_pagedir_encoding_mismatch=Page-encoding specified in jsp-property-group ({0}) is different from that specified in page directive ({1})
-jsp.error.prolog_pagedir_encoding_mismatch=Page-encoding specified in XML prolog ({0}) is different from that specified in page directive ({1})
-jsp.error.prolog_config_encoding_mismatch=Page-encoding specified in XML prolog ({0}) is different from that specified in jsp-property-group ({1})
-jsp.error.attribute.custom.non_rt_with_expr=According to TLD or attribute directive in tag file, attribute {0} does not accept any expressions
-jsp.error.attribute.standard.non_rt_with_expr=The {0} attribute of the {1} standard action does not accept any expressions
-jsp.error.attribute.deferredmix=Cannot use both ${} and #{} EL expressions in the same attribute value
-jsp.error.scripting.variable.missing_name=Unable to determine scripting variable name from attribute {0}
-jasper.error.emptybodycontent.nonempty=According to TLD, tag {0} must be empty, but is not
-jsp.error.tagfile.nameNotUnique=The value of {0} and the value of {1} in line {2} are the same.
-jsp.error.tagfile.nameFrom.noAttribute=Cannot find an attribute directive with a name attribute with a value \"{0}\", the value of this name-from-attribute attribute.
-jsp.error.tagfile.nameFrom.badAttribute=The attribute directive (declared in line {1} and whose name attribute is \"{0}\", the value of this name-from-attribute attribute) must be of type java.lang.String, is \"required\" and not a \"rtexprvalue\".
-jsp.error.page.noSession=Cannot access session scope in page that does not participate in any session
-jsp.error.usebean.noSession=Illegal for useBean to use session scope when JSP page declares (via page directive) that it does not participate in sessions
-jsp.error.xml.encodingByteOrderUnsupported = Given byte order for encoding \"{0}\" is not supported.
-jsp.error.xml.encodingDeclInvalid = Invalid encoding name \"{0}\".
-jsp.error.xml.encodingDeclRequired = The encoding declaration is required in the text declaration.
-jsp.error.xml.morePseudoAttributes = more pseudo attributes is expected.
-jsp.error.xml.noMorePseudoAttributes = no more pseudo attributes is allowed.
-jsp.error.xml.versionInfoRequired = The version is required in the XML declaration.
-jsp.error.xml.xmlDeclUnterminated = The XML declaration must end with \"?>\".
-jsp.error.xml.reservedPITarget = The processing instruction target matching \"[xX][mM][lL]\" is not allowed.
-jsp.error.xml.spaceRequiredInPI = White space is required between the processing instruction target and data.
-jsp.error.xml.invalidCharInContent = An invalid XML character (Unicode: 0x{0}) was found in the element content of the document.
-jsp.error.xml.spaceRequiredBeforeStandalone = White space is required before the encoding pseudo attribute in the XML declaration.
-jsp.error.xml.sdDeclInvalid = The standalone document declaration value must be \"yes\" or \"no\", not \"{0}\".
-jsp.error.xml.invalidCharInPI = An invalid XML character (Unicode: 0x{0}) was found in the processing instruction.
-jsp.error.xml.versionNotSupported = XML version \"{0}\" is not supported, only XML 1.0 is supported.
-jsp.error.xml.pseudoAttrNameExpected = a pseudo attribute name is expected.
-jsp.error.xml.expectedByte = Expected byte {0} of {1}-byte UTF-8 sequence.
-jsp.error.xml.invalidByte = Invalid byte {0} of {1}-byte UTF-8 sequence.
-jsp.error.xml.operationNotSupported = Operation \"{0}\" not supported by {1} reader.
-jsp.error.xml.invalidHighSurrogate = High surrogate bits in UTF-8 sequence must not exceed 0x10 but found 0x{0}.
-jsp.error.xml.invalidASCII = Byte \"{0}\" not 7-bit ASCII.
-jsp.error.xml.spaceRequiredBeforeEncodingInXMLDecl = White space is required before the encoding pseudo attribute in the XML declaration.
-jsp.error.xml.spaceRequiredBeforeEncodingInTextDecl = White space is required before the encoding pseudo attribute in the text declaration.
-jsp.error.xml.spaceRequiredBeforeVersionInTextDecl = White space is required before the version pseudo attribute in the text declaration.
-jsp.error.xml.spaceRequiredBeforeVersionInXMLDecl = White space is required before the version pseudo attribute in the XML declaration.
-jsp.error.xml.eqRequiredInXMLDecl = The '' = '' character must follow \"{0}\" in the XML declaration.
-jsp.error.xml.eqRequiredInTextDecl = The '' = '' character must follow \"{0}\" in the text declaration.
-jsp.error.xml.quoteRequiredInTextDecl = The value following \"{0}\" in the text declaration must be a quoted string.
-jsp.error.xml.quoteRequiredInXMLDecl = The value following \"{0}\" in the XML declaration must be a quoted string.
-jsp.error.xml.invalidCharInTextDecl = An invalid XML character (Unicode: 0x{0}) was found in the text declaration.
-jsp.error.xml.invalidCharInXMLDecl = An invalid XML character (Unicode: 0x{0}) was found in the XML declaration.
-jsp.error.xml.closeQuoteMissingInTextDecl = closing quote in the value following \"{0}\" in the text declaration is missing.
-jsp.error.xml.closeQuoteMissingInXMLDecl = closing quote in the value following \"{0}\" in the XML declaration is missing.
-jsp.error.xml.invalidHighSurrogate = High surrogate bits in UTF-8 sequence must not exceed 0x10 but found 0x{0}.
-jsp.error.multiple.jsp = Cannot have multiple specifications of
-jsp.error.jspoutput.conflict=<jsp:output>: illegal to have multiple occurrences of \"{0}\" with different values (old: {1}, new: {2})
-jsp.error.jspoutput.doctypenamesystem=<jsp:output>: 'doctype-root-element' and 'doctype-system' attributes must appear together
-jsp.error.jspoutput.doctypepulicsystem=<jsp:output>: 'doctype-system' attribute must appear if 'doctype-public' attribute appears
-jsp.error.jspoutput.nonemptybody=<jsp:output> must not have a body
-jsp.error.jspoutput.invalidUse=<jsp:output> must not be used in standard syntax
-jsp.error.attributes.not.allowed = {0} must not have any attributes
-jsp.error.tagfile.badSuffix=Missing \".tag\" suffix in tag file path {0}
-jsp.error.tagfile.illegalPath=Illegal tag file path: {0}, must start with \"/WEB-INF/tags\" or \"/META-INF/tags\"
-jsp.error.plugin.wrongRootElement=Name of root element in {0} different from {1}
-jsp.error.attribute.invalidPrefix=The attribute prefix {0} does not correspond to any imported tag library
-jsp.error.nested.jspattribute=A jsp:attribute standard action cannot be nested within another jsp:attribute standard action
-jsp.error.nested.jspbody=A jsp:body standard action cannot be nested within another jsp:body or jsp:attribute standard action
-jsp.error.variable.either.name=Either name-given or name-from-attribute attribute must be specified in a variable directive
-jsp.error.variable.both.name=Cannot specify both name-given or name-from-attribute attributes in a variable directive
-jsp.error.variable.alias=Both or none of the name-from-attribute and alias attributes must be specified in a variable directive
-jsp.error.attribute.null_name=Null attribute name
-jsp.error.jsptext.badcontent=\'<\', when appears in the body of <jsp:text>, must be encapsulated within a CDATA
-jsp.error.jsproot.version.invalid=Invalid version number: \"{0}\", must be \"1.2\", \"2.0\", or \"2.1\"
-jsp.error.noFunctionPrefix=The function {0} must be used with a prefix when a default namespace is not specified
-jsp.error.noFunction=The function {0} cannot be located with the specified prefix
-jsp.error.noFunctionMethod=Method \"{0}\" for function \"{1}\" not found in class \"{2}\"
-jsp.error.function.classnotfound=The class {0} specified in TLD for the function {1} cannot be found: {2}
-jsp.error.signature.classnotfound=The class {0} specified in the method signature in TLD for the function {1} cannot be found. {2}
-jsp.error.text.has_subelement=<jsp:text> must not have any subelements
-jsp.error.data.file.read=Error reading file \"{0}\"
-jsp.error.prefix.refined=Attempt to redefine the prefix {0} to {1}, when it was already defined as {2} in the current scope.
-jsp.error.nested_jsproot=Nested <jsp:root>
-jsp.error.unbalanced.endtag=The end tag \"</{0}\" is unbalanced
-jsp.error.invalid.bean=The value for the useBean class attribute {0} is invalid.
-jsp.error.prefix.use_before_dcl=The prefix {0} specified in this tag directive has been previously used by an action in file {1} line {2}.
-
-jsp.exception=An exception occurred processing JSP page {0} at line {1}
-
-# JSP 2.1
-jsp.error.el.template.deferred=#{..} is not allowed in template text
-jsp.error.el.parse={0} : {1}
-jsp.error.page.invalid.deferredsyntaxallowedasliteral=Page directive: invalid value for deferredSyntaxAllowedAsLiteral
-jsp.error.tag.invalid.deferredsyntaxallowedasliteral=Tag directive: invalid value for deferredSyntaxAllowedAsLiteral
-jsp.error.page.conflict.deferredsyntaxallowedasliteral=Page directive: illegal to have multiple occurrences of 'deferredSyntaxAllowedAsLiteral' with different values (old: {0}, new: {1})
-jsp.error.tag.conflict.deferredsyntaxallowedasliteral=Tag directive: illegal to have multiple occurrences of 'deferredSyntaxAllowedAsLiteral' with different values (old: {0}, new: {1})
-
-jsp.error.page.invalid.trimdirectivewhitespaces=Page directive: invalid value for trimDirectiveWhitespaces
-jsp.error.tag.invalid.trimdirectivewhitespaces=Tag directive: invalid value for trimDirectiveWhitespaces
-jsp.error.page.conflict.trimdirectivewhitespaces=Page directive: illegal to have multiple occurrences of 'trimDirectiveWhitespaces' with different values (old: {0}, new: {1})
-jsp.error.tag.conflict.trimdirectivewhitespaces=Tag directive: illegal to have multiple occurrences of 'trimDirectiveWhitespaces' with different values (old: {0}, new: {1})
-
-# JavacErrorDetail
-jsp.error.bug48494=Unable to display JSP extract. Probably due to a JRE bug (see Tomcat bug 48498 for details).
Deleted: trunk/src/main/java/org/apache/jasper/resources/LocalStrings_es.properties
===================================================================
--- trunk/src/main/java/org/apache/jasper/resources/LocalStrings_es.properties 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/resources/LocalStrings_es.properties 2012-09-21 14:14:07 UTC (rev 2083)
@@ -1,456 +0,0 @@
-jsp.error.compiler = No hay compilador Java disponible
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# $Id: LocalStrings_es.properties 789 2008-09-22 16:52:37Z remy.maucherat(a)jboss.com $
-#
-# Default localized string information
-# Localized para Locale es_ES
-jsp.error.bad.servlet.engine = \u00A1Versi\u00F3n incorrecta del motor servlet\!
-jsp.error.no.scratch.dir = El motor JSP no tiene configurado un directorio de trabajo.\n\
- \ A\u00F1ada "jsp.initparams\=scratchdir\=<dir-name>" \n\
- \ en el fichero servlets.properties para este contexto.
-jsp.error.bad.scratch.dir = El directorio de trabajo especificado\: {0} no es utilizable.
-jsp.message.scratch.dir.is = El directorio de trabajo para el motor JSP es\: {0}
-jsp.message.parent_class_loader_is = El cargador de clases es\: {0}
-jsp.message.dont.modify.servlets = IMPORTANTE\: No modifique los servlets generados
-jsp.error.not.impl.comments = Error Interno\: Comments no implementado
-jsp.error.not.impl.directives = Error Interno\: Directives no implementado
-jsp.error.not.impl.declarations = Error Interno\: Declarations no implementado
-jsp.error.not.impl.expressions = Error Interno\: Expressions no implementado
-jsp.error.not.impl.scriptlets = Error Interno\: Scriptlets no implementado
-jsp.error.not.impl.usebean = Error Interno\: useBean no implementado
-jsp.error.not.impl.getp = Error Interno\: getProperty no implementado
-jsp.error.not.impl.setp = Error Interno\: setProperty no implementado
-jsp.error.not.impl.plugin = Error Interno\: plugin no implementado
-jsp.error.not.impl.forward = Error Interno\: forward no implementado
-jsp.error.not.impl.include = Error Interno\: include no implementado
-jsp.error.unavailable = JSP ha sido marcado como no disponible
-jsp.error.usebean.missing.attribute = useBean\: falta atributo id o est\u00E1 mal digitado
-jsp.error.usebean.missing.type = useBean ({0})\: Se debe de especificar atributo class o type\:
-jsp.error.usebean.duplicate = useBean\: Nombre de bean duplicado\: {0}
-jsp.error.usebean.prohibited.as.session = No puedo usar como bean de sesi\u00F3n {0} ya que est\u00E1 prohibido por directiva jsp definida previamente\:
-jsp.error.usebean.not.both = useBean\: No puede especificar ambos atributos class y beanName\:
-jsp.error.usebean.bad.type.cast = useBean ({0})\: Tipo ({1}) no es asignable desde clase ({2})
-jsp.error.invalid.scope = Valor ilegal de atributo 'scope'\: {0} (debe de ser uno de "page", "request", "session", o "application")
-jsp.error.classname = No pude determinar el nombre de clase desde el fichero .class
-jsp.error.outputfolder = no hay carpeta de salida
-jsp.warning.bad.type = Aviso\: tipo incorrecto en archivo .class
-jsp.error.data.file.write = Error mientras escrib\u00EDa el archivo de datos
-jsp.error.page.invalid.buffer = Directiva Page\: valor incorrecto para buffer
-jsp.error.page.conflict.contenttype = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'contentType' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.contenttype = Directiva Page\: valor incorrecto para contentType
-jsp.error.page.conflict.session = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'session' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.session = Directiva Page\: valor incorrecto para session
-jsp.error.page.conflict.buffer = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'buffer'con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.buffer = Directiva Page\: valor incorrecto para b\u00FAfer
-jsp.error.page.conflict.autoflush = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'autoFlush' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.autoflush = \=Directiva Page\: valor incorrecto para autoFlush
-jsp.error.page.conflict.isthreadsafe = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'isThreadSafe' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.isthreadsafe = \=Directiva Page\: valor incorrecto para isThreadSafe
-jsp.error.page.conflict.info = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'info' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.info = \=Directiva Page\: valor incorrecto para info
-jsp.error.page.conflict.iserrorpage = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'isErrorPage' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.iserrorpage = \=Directiva Page\: valor incorrecto para isErrorPage
-jsp.error.page.conflict.errorpage = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'errorPage' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.conflict.language = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'language' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.tag.conflict.language = Directiva Tag\: es ilegal tener m\u00FAltiples ocurrencias de 'language' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.language.nonjava = Directiva Page\: atributo language incorrecto
-jsp.error.tag.language.nonjava = Directiva Tag\: atributo language incorrecto
-jsp.error.page.defafteruse.language = Directiva Page\: No puedo definir lenguage tras un scriptlet
-jsp.error.page.nomapping.language = Directiva Page\: No hay mapeado para language\:
-jsp.error.page.conflict.extends = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'extends' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.conflict.iselignored = Directiva Page\: es ilegal tener m\u00FAltiples ocurrencias de 'isELIgnored' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.tag.conflict.iselignored = Directiva Tag\: es ilegal tener m\u00FAltiples ocurrencias de 'isELIgnored' con valores distintos (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.iselignored = Directiva Page\: valor inv\u00E1lido para isELIgnored
-jsp.error.tag.invalid.iselignored = Directiva Tag\: valor incorrecto para isELIgnored
-jsp.error.page.multi.pageencoding = La directiva Page no debe de tener m\u00FAltiples ocurrencias de pageencoding
-jsp.error.tag.conflict.attr = Directiva Tag\: es ilegal tener m\u00FAltiples ocurrencias del atributo "{0}" con valores distintos (viejo\: {1}, nuevo\: {2})
-jsp.error.tag.multi.pageencoding = La directiva Tag no debe de tener m\u00FAltiples ocurrencias de pageencoding
-jsp.error.page.bad_b_and_a_combo = Directiva Page\: Combinaci\u00F3n ilegal de buffer\="none" y autoFlush\="false"
-jsp.error.not.impl.taglib = Error Interno\: Tag extensions no implementado
-jsp.error.include.missing.file = No tiene argumento de nombre de fichero
-jsp.error.include.bad.file = Argumento de nombre de fichero no v\u00E1lido
-jsp.error.include.exception = No se puede incluir {0}
-jsp.error.stream.closed = Stream cerrado
-jsp.error.invalid.forward = Tag forward no v\u00E1lido
-jsp.error.unknownException = \u00A1Error no caturado\!. Deber\u00EDas de considerar el poner una p\u00E1gina de error para avisar de los errores m\u00E1s elegantemente
-jsp.error.invalid.directive = Directiva no v\u00E1lida
-jsp.error.invalid.implicit = TLD impl\u00EDcito inv\u00E1lido para fichero de marca en {0}
-jsp.error.invalid.implicit.version = Versi\u00F3n inv\u00E1lida de JSP definida en TLD impl\u00EDcito para fichero de marca en {0}
-jsp.error.invalid.version = Versi\u00F3n inv\u00E1lida de JSP definida para fichero de marca en {0}
-jsp.error.directive.istagfile = La Directiva {0} no puede usarse en archivo de tag
-jsp.error.directive.isnottagfile = La Directiva {0} s\u00F3lo se puede usar en un archivo de tag
-jsp.error.tagfile.tld.name = El atributo "name" de la directiva tag tiene un valor {0} mientras que el tag "name" del elemento "tag-file" en el TLD es {1}
-jsp.error.action.istagfile = La acci\u00F3n {0} no se puede usar en un archivo tag
-jsp.error.action.isnottagfile = La acci\u00F3n {0} s\u00F3lo se puede usar en archivos tag
-jsp.error.unterminated = Tag {0} no terminado
-jsp.error.usebean.notinsamefile = El Tag useBean debe de empezar y terminar en el mismo archivo f\u00EDsico
-jsp.error.loadclass.taghandler = No se puede cargar la clase {0}
-jsp.error.unable.compile = No se puede compilar la clase para JSP
-jsp.error.unable.load = No se puede cargar la clase para JSP
-jsp.error.unable.rename = No se puede renombrar el archivo de clase {0} a {1}
-jsp.error.mandatory.attribute = {0}\: Falta atributo obligatorio {1}
-jsp.error.flush = Excepci\u00F3n sucedida al vaciar los datos
-jsp.engine.info = Motor Jasper JSP 2.1
-jsp.error.invalid.expression = "{0}" contiene expresiones incorrectas\: {1}
-jsp.error.invalid.attribute = {0}\: Atributo incorrecto, {1}
-jsp.error.usebean.class.notfound = Clase\: {0} no hallada
-jsp.error.file.cannot.read = No se puede leer el archivo\: {0}
-jsp.error.file.already.registered = El archivo {0} ya se ha visto, \u00BFpodr\u00EDa ser un include recursivo?
-jsp.error.file.not.registered = Archivo {0} not visto en include
-jsp.error.quotes.unterminated = Comillas no terminadas
-jsp.error.attr.quoted = El valor del atributo deber\u00EDa ir entre comillas
-jsp.error.attr.novalue = Atributo {0} no tiene valor
-jsp.error.tag.attr.unterminated = Lista de atributos del tag no terminada
-jsp.error.param.noname = No hay nombre en el tag PARAM
-jsp.error.param.novalue = No hay valor en el tag PARAM
-jsp.error.beans.nullbean = Se ha intentado una operaci\u00F3n de bean en un objeto nulo
-jsp.error.beans.nobeaninfo = No se puede encontrar BeanInfo para el bean ''{0}'' seguramente la clase no existe
-jsp.error.beans.introspection = Una excepci\u00F3n ha tenido lugar mientras se le\u00EDa el m\u00E9todo de lectura de la propiedad ''{0}'' en un bean del tipo ''{1}''\:\n\
- {2}
-jsp.error.beans.nomethod = No puedo encontrar un m\u00E9todo para leer la propiedad ''{0}'' en un bean del tipo ''{1}''
-jsp.error.beans.nomethod.setproperty = No puedo encontrar un m\u00E9todo para escribir la propiedad ''{0}'' en un bean del tipo ''{2}''
-jsp.error.beans.noproperty = No puedo encontrar informaci\u00F3n de la propiedad ''{0}'' en un bean del tipo ''{1}''
-jsp.error.beans.property.conversion = No puedo convertir cadena "{0}" a clase "{1}" para atributo "{2}"\: {3}
-jsp.error.beans.propertyeditor.notregistered = Editor de Propiedades no registrado con el PropertyEditorManager
-jsp.error.beans.setproperty.noindexset = No puedo poner la propiedad indexada
-jsp.error.include.tag = Tag jsp\:include no v\u00E1lido
-jsp.error.include.noflush = jsp\:include necesita tener "flush\=true"
-jsp.error.include.badflush = jsp\:include page\="..." flush\="true" es la \u00FAnica combinaci\u00F3n v\u00E1lida en JSP 1.0
-jsp.error.attempt_to_clear_flushed_buffer = Error\: Se ha intentado limpiar un buffer que ya hab\u00EDa sido escrito
-jsp.error.overflow = Error\:Buffer de JSP desbordado
-jsp.error.paramexpected = El tag "param" era esperado con los atributos "name" y "value" despu\u00E9s del tag "params".
-jsp.error.param.invalidUse = La acci\u00F3n jsp\:param no debe de ser usada fuera de los elementos jsp\:include, jsp\:forward o jsp\:params
-jsp.error.params.invalidUse = jsp\:params debe de ser un hijo directo de jsp\:plugin
-jsp.error.fallback.invalidUse = jsp\:fallback debe de ser un hijo directo de jsp\:plugin
-jsp.error.namedAttribute.invalidUse = jsp\:attribute debe de ser el subelemento de una acci\u00F3n est\u00E1ndar o de cliente
-jsp.error.jspbody.invalidUse = jsp\:body debe de ser el subelemento de una acci\u00F3n est\u00E1ndar o de cliente
-jsp.error.closeindividualparam = El tag param necesita ser cerrado con "/>"
-jsp.error.closeparams = El tag param necesita ser cerrado con /params
-jsp.error.params.emptyBody = jsp\:params debe de contener al menos un jsp\:param anidado
-jsp.error.params.illegalChild = jsp\:params no debe de contener elementos anidados que no sean jsp\:param
-jsp.error.plugin.notype = Tipo no declarado en jsp\:plugin
-jsp.error.plugin.badtype = Valor ilegal para atributo 'type' en jsp\:plugin\: debe de ser 'bean' o 'applet'
-jsp.error.plugin.nocode = C\u00F3digo no declarado en jsp\:plugin
-jsp.error.ise_on_clear = Es ilegal usar clear() cuando el tama\u00F1o del buffer es cero
-jsp.error.setproperty.beanNotFound = setProperty\: Bean {0} no encontrado
-jsp.error.getproperty.beanNotFound = getProperty\: Bean {0} no encontrado
-jsp.error.setproperty.ClassNotFound = setProperty\: clase {0} no encontrada
-jsp.error.javac = Excepci\u00F3n de Javac
-jsp.error.javac.env = Entorno
-jsp.error.compilation = Error compilando fichero\: {0} {1}
-jsp.error.setproperty.invalidSyntax = setproperty\: no puedo tener valor no nulo si la propiedad\=*
-jsp.error.setproperty.beanInfoNotFound = setproperty\: beanInfo para bean {0} no encontrado
-jsp.error.setproperty.paramOrValue = setProperty\: O param o value pueden estar presentes
-jsp.error.setproperty.arrayVal = setProperty\: No puede escribir en la propiedad de array {0} a trav\u00E9s de una valor de cadena literal
-jsp.warning.keepgen = Aviso\: valor incorrecto para el initParam keepgen. Se usar\u00E1 el valor por defecto de "false"
-jsp.warning.xpoweredBy = Aviso\: valor incorrecto para el initParam xpoweredBy. Se usar\u00E1 el valor por defecto de "false"
-jsp.warning.enablePooling = Aviso\: valor incorrecto para el initParam enablePooling. Se usar\u00E1 el valor por defecto de "true"
-jsp.warning.invalidTagPoolSize = Aviso\: valor incorrecto para el par\u00E1metro init llamado tagPoolSize. Se usar\u00E1 la medida por defecto de {0}
-jsp.warning.mappedFile = Aviso\: valor incorrecto para el initParam mappedFile. Se usar\u00E1 el valor por defecto de "false"
-jsp.warning.classDebugInfo = Aviso\: valor incorrecto para el initParam classdebuginfo. Se usar\u00E1 el valor por defecto de "false"
-jsp.warning.checkInterval = Aviso\: valor incorrecto para el initParam checkInterval. Se usar\u00E1 el valor por defecto de "300" segundos
-jsp.warning.modificationTestInterval = Aviso\: valor incorrecto para el initParam modificationTestInterval. Se usar\u00E1 el valor por defecto de "4" segundos
-jsp.warning.development = Aviso\: valor incorrecto para el initParam development. Se usar\u00E1 el valor por defecto de "true"
-jsp.warning.fork = Aviso\: valor incorrecto para el initParam fork. Se usar\u00E1 el valor por defecto de "true"
-jsp.warning.reloading = Aviso\: valor incorrecto para el initParam reloading. Se usar\u00E1 el valor por defecto de "true"
-jsp.warning.dumpSmap = Aviso\: valor incorrecto para el initParam dumpSmap. Se usar\u00E1 el valor por defecto de "false"
-jsp.warning.genchararray = Aviso\: valor incorrecto para el initParam genStrAsCharArray. Se usar\u00E1 el valor por defecto de "false"
-jsp.warning.suppressSmap = Aviso\: valor incorrecto para el initParam suppressSmap. Se usar\u00E1 el valor por defecto de "false"
-jsp.warning.displaySourceFragment = Aviso\: valor incorrecto para el initParam displaySourceFragment. Se usar\u00E1 el valor por defecto de "verdadero"
-jsp.error.badtaglib = No se puede abrir la biblioteca de tags {0}\: {1}
-jsp.error.badGetReader = No se puede crear un reader cuando el stream no tiene buffer
-jsp.warning.unknown.element.in.taglib = Elemento desconocido ({0}) en taglib
-jsp.warning.unknown.element.in.tag = Elemento desconocido ({0}) en tag
-jsp.warning.unknown.element.in.tagfile = Elemento desconocido ({0}) en tag-file
-jsp.warning.unknown.element.in.attribute = Elemento desconocido ({0}) en attribute
-jsp.warning.unknown.element.in.variable = Elemento desconocido ({0}) en variable
-jsp.warning.unknown.element.in.validator = Elemento desconocido ({0}) en validator
-jsp.warning.unknown.element.in.initParam = Elemento desconocido ({0}) en init-param de validator
-jsp.warning.unknown.element.in.function = Elemento desconocido ({0}) en function
-jsp.error.more.than.one.taglib = M\u00E1s de una biblioteca de tags en el TLD\: {0}
-jsp.error.teiclass.instantiation = No se puede cargar la clase TagExtraInfo llamada\: {0}
-jsp.error.non_null_tei_and_var_subelems = Tag {0} tiene uno o m\u00E1s subelementos variable y una clase TagExtraInfo que devuelve una o m\u00E1s VariableInfo
-jsp.error.parse.error.in.TLD = Error de an\u00E1lisis en el descriptor de biblioteca de tags\: {0}
-jsp.error.unable.to.open.TLD = No se puede abrir el descriptor de biblioteca de tags\: {0}
-jsp.buffer.size.zero = Tama\u00F1o de buffer <\= 0
-jsp.error.file.not.found = Archivo JSP "{0}" no encontrado
-jsp.message.copyinguri = Copiando {0} en {1}
-jsp.message.htmlcomment = \n\
- Quitando comentario\: \t{0}
-jsp.message.handling_directive = \n\
- Resolviendo directiva\: {0}\t{1}
-jsp.message.handling_plugin = \n\
- Plugin\: {0}
-jsp.message.package_name_is = El Nombre del Package es\: {0}
-jsp.message.class_name_is = El Nombre de la clase es\: {0}
-jsp.message.java_file_name_is = El Nombre del Archivo Java es\: {0}
-jsp.message.class_file_name_is = El Nombre del Archivo de clase es\: {0}
-jsp.message.accepted = Acept\u00F3 {0} en {1}
-jsp.message.adding_jar = A\u00F1adiendo jar {0} a mi classpath
-jsp.message.compiling_with = Compilado con\: {0}
-jsp.message.template_text = texto plantilla
-jsp.error.missing_attribute = De acuerdo con el TLD el atributo {0} es obligatorio para el tag {1}
-jsp.error.bad_attribute = El atributo {0} no es v\u00E1lido seg\u00FAn el TLD especificado
-jsp.error.tld.unable_to_read = Imposible de leer TLD "{1}" desde archivo JAR "{0}"\: {2}
-jsp.error.tld.unable_to_get_jar = Imposible obtener recurso JAR "{0}" conteniendo TLD\: {1}
-jsp.error.tld.missing_jar = Falta recurso JAR "{0}" conteniendo TLD
-jsp.error.webxml_not_found = No puedo localizar web.xml
-jsp.cmd_line.usage = Uso\: jsptoservlet [-dd <ruta/a/DirectorioSalida>] [-keepgenerated] <Archivos .jsp>
-jsp.message.cp_is = Classpath {0} es\: {1}
-jsp.error.unable.to_load_taghandler_class = No se puede cargar clase manejadora {0} del tag a causa de {1}
-jsp.error.unable.to_find_method = No se puede encontrar el m\u00E9todo de escritura para el atributo\: {0}
-jsp.error.unable.to_convert_string = No pude convertir un String a {0} para atributo {1}
-jsp.error.unable.to_introspect = No se puede hacer introspecci\u00F3n en manejador de tag clase\: {0} a causa de {1}
-jsp.error.bad_tag = No existe el tag {0} en la biblioteca importada con prefijo {1}
-jsp.error.xml.bad_tag = No se ha definido el tag "{0}" en la biblioteca tag asociada con uri "{1}"
-jsp.error.bad_string_Character = No puede extraer un Character desde un array de tama\u00F1o cero
-jsp.error.bad_string_char = No puede extraer un char desde un array de tama\u00F1o cero
-jsp.warning.compiler.class.cantcreate = No puedo crear una instancia de la clase especificada {0} de plugin del compilador debido a {1}. Se usar\u00E1 el compilador Java de Sun.
-jsp.warning.compiler.class.notfound = No puedo encontrar una instancia de la clase {0} de plugin de compilador. Se usar\u00E1 el compilador del Java de Sun.
-jsp.warning.compiler.path.notfound = Trayectoria del compilador especificado {0} no encontrada. Se usar\u00E1 el PATH del sistema.
-jsp.error.jspc.uriroot_not_dir = La opci\u00F3n -uriroot debe de especificar un directorio ya existente
-jsp.error.jspc.missingTarget = Falta target\: Debe de especificar -webapp o -uriroot o una o m\u00E1s p\u00E1ginas JSP
-jsp.error.jspc.no_uriroot = No se ha especificado uriroot y no puede ser localizado en los archivos JSP especificados
-jspc.implicit.uriRoot = uriRoot implicitamente puesto a "{0}"
-jspc.usage = Uso\: jspc <opciones> [--] <Archivos JSP>\n\
- donde <Archivos JSP> son\:\n\
- \ -webapp <dir> Un directorio conteniendo una web-app. Todas las\n\
- \ p\u00E1ginas jsp ser\u00E1n compiladas recursivamente\n\
- o cualquier n\u00FAmero de\n\
- \ <Archivo> Un Archivo para ser interpretado como una p\u00E1gina jsp\n\
- y donde <opciones> incluyen\:\n\
- \ -help Muestra este mensaje de ayuda\n\
- \ -v Modo detallado\n\
- \ -d <dir> Directorio de salida\n\
- \ -l Muestra el nombre de la p\u00E1gina JSP al ocurrir un fallo\n\
- \ -s Muestra el nombre de la p\u00E1gina JSP al tener \u00E9xito\n\
- \ -p <name> Nombre del package objetivo\n\
- \ (por defecto org.apache.jsp)\n\
- \ -c <name> Nombre de la clase objetivo\n\
- \ (s\u00F3lo se aplica a la primera p\u00E1gina JSP)\n\
- \ -mapped Genera llamadas separadas a write() para cada l\u00EDnea de\n\
- \ HTML en el JSP\n\
- \ -die[\#] Genera un c\u00F3digo de retorno de error (\#) en errores\n\
- \ fatales. (por defecto 1).\n\
- \ -uribase <dir> El directorio uri de donde deben de partir las\n\
- \ compilaciones. (por defecto "/")\n\
- \ -uriroot <dir> Igual que -webapp\n\
- \ -compile Compila los servlets generados\n\
- \ -webinc <file> Crea unos mapeos parciales de servlet en el archivo\n\
- \ -webxml <file> Crea un web.xml completo en el archivo.\n\
- \ -ieplugin <clsid> Java Plugin classid para Internet Explorer\n\
- \ -classpath <path> Pasa por alto la propiedad de sistema java.class.path\n\
- \ -xpoweredBy A\u00F1ade cabecera de respuesta X-Powered-By\n\
- \ -trimSpaces Trim spaces in template text between actions, directives\n\
- \ -javaEncoding <enc> Set the encoding charset for Java classes (default UTF-8)\n\
- \ -source <version> Set the -source argument to the compiler (default 1.4)\n\
- \ -target <version> Set the -target argument to the compiler (default 1.4)\n
-jspc.webxml.header = <?xml version\="1.0" encoding\="ISO-8859-1"?>\n\
- \n\
- <\!DOCTYPE web-app\n\
- \ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"\n\
- \ "http\://java.sun.com/dtd/web-app_2_3.dtd">\n\
- <\!--\n\
- Creado automaticamente mediante Apache Jakarta Tomcat JspC.\n\
- -->\n\
- <web-app>\n\
- \n
-jspc.webxml.footer = \n\
- </web-app>\n\
- \n
-jspc.webinc.header = \n\
- <\!--\n\
- Creado automaticamente mediante Apache Jakarta Tomcat JspC.\n\
- Coloque este fragmento en el fichero web.xml antes de \n\
- todos los elementos\: icon, display-name, description, \n\
- distributable y context-param .\n\
- -->\n
-jspc.webinc.footer = \n\
- <\!--\n\
- Los Elementos\: session-config, mime-mapping, welcome-file-list, error-page, taglib,\n\
- resource-ref, security-constraint, login-config, security-role,\n\
- env-entry y ejb-ref deber\u00E1n de ir despu\u00E9s de este fragmento .\n\
- -->\n
-jspc.webinc.insertEnd = <\!-- Fin de mapeos de servlet JSPC -->
-jspc.webinc.insertStart = <\!-- Inicio de mapeos de servlet JSPC -->
-jspc.error.jasperException = error-el archivo ''{0}'' ha generado la excepci\u00F3n de sint\u00E1xis siguiente\: {1}
-jspc.error.generalException = ERROR-el archivo ''{0}'' ha generado la excepci\u00F3n general siguiente\:
-jspc.error.fileDoesNotExist = El archivo ''{0}'' utilizado como argumento no existe.
-jspc.error.emptyWebApp = -webapp necesita un argumento de archivo
-jsp.error.library.invalid = La p\u00E1gina JSP es incorrecta de acuerdo a la biblioteca {0}\: {1}
-jsp.error.tlvclass.instantiation = No pude cargar o instanciar clase TagLibraryValidator\: {0}
-jsp.error.tlv.invalid.page = Mensajes de error de validaci\u00F3n desde TagLibraryValidator para {0} in {1}
-jsp.error.tei.invalid.attributes = Mensajes de error de validaci\u00F3n desde TagExtraInfo para {0}
-jsp.parser.sax.propertynotsupported = Propiedad SAX no soportada\: {0}
-jsp.parser.sax.propertynotrecognized = Propiedad SAX no reconocida\: {0}
-jsp.parser.sax.featurenotsupported = Caracter\u00EDstica SAX no soportada\: {0}
-jsp.parser.sax.featurenotrecognized = Caracter\u00EDstica SAX no reconocida\: {0}
-jsp.error.no.more.content = Alcanzado fin de contenido mietras se requer\u00EDa m\u00E1s an\u00E1lisis\: \u00BFerror de anidamiento de tag?
-jsp.error.parse.xml = Error de an\u00E1lisis XML en archivo {0}
-jsp.error.parse.xml.line = Error de an\u00E1lisis XML en archivo {0}\: (l\u00EDnea {1}, col {2})
-jsp.error.parse.xml.scripting.invalid.body = El cuerpo de elemento {0} no debe de contener elementos XML
-jsp.error.internal.tldinit = No pude inicializar TldLocationsCache\: {0}
-jsp.error.internal.filenotfound = Error Interno\: Archivo {0} no hallado
-jsp.error.internal.evaluator_not_found = Error interno\: no pude cargar evaluador de expresiones
-jsp.error.parse.xml.invalidPublicId = PUBLIC ID incorrecta\: {0}
-jsp.error.include.flush.invalid.value = Valor incorrecto para atributo flush\: {0}
-jsp.error.unsupported.encoding = Codificaci\u00F3n no soportada\: {0}
-tld.error.variableNotAllowed = Es un error para un tag, que tiene uno o m\u00E1s subelementos variables, el tener una clase TagExtraInfo que devuelve un objeto no nulo.
-jsp.error.tldInWebDotXmlNotFound = No pude localizar TLD {1} para URI {0} especificado en web.xml
-jsp.error.taglibDirective.absUriCannotBeResolved = La uri absoluta\: {0} no puede resolverse o en web.xml o el los archivos jar desplegados con esta aplicaci\u00F3n
-jsp.error.taglibDirective.missing.location = No se ha especificado ni el atributo 'uri' ni el 'tagdir'
-jsp.error.taglibDirective.both_uri_and_tagdir = Se han especificado ambos atributos 'uri' y 'tagdir'
-jsp.error.invalid.tagdir = El directorio de archivo Tag {0} no comienza con "/WEB-INF/tags"
-jsp.error.unterminated.user.tag = Tag definido por usuario no terminado\: tag final {0} no hallado o anidado incorrectamente
-#jspx.error.templateDataNotInJspCdata=Validation Error: Element <{0}> cannot have template data. Template data must be encapsulated within a <jsp:cdata> element. [JSP1.2 PFD section 5.1.9]\nTemplate data in error: {1}
-jspx.error.templateDataNotInJspCdata = Error de Validaci\u00F3n\: El Elemento <{0}> no puede tener datos plantilla. Los datos plantilla deben de estar encapsulados dentro de un elemento <jsp\:text>. [JSP1.2 PFD secci\u00F3n 5.1.9]\n\
- Datos de Plantilla en error\: {1}
-#Error while processing taglib jar file {0}: {1}
-jsp.error.taglib.reserved.prefix = El prefijo taglib {0} est\u00E1 reservado
-jsp.error.invalid.javaEncoding = Codificaciones java incorrectas. Intent\u00E9 {0} y luego {1}. Ambas fallaron.
-jsp.error.needAlternateJavaEncoding = La codificaci\u00F3n java por defecto {0} es incorrecta en tu plataforma java. Se puede especificar una alternativa v\u00EDa par\u00E1metro 'javaEncoding' de JspServlet.
-#Error when compiling, used for jsp line number error messages
-jsp.error.single.line.number = Ha tenido lugar un error en la l\u00EDnea\: {0} en el archivo jsp\: {1}
-jsp.error.multiple.line.number = \n\
- \n\
- Ha tenido lugar un error entre las l\u00EDneas\: {0} y {1} en el archivo jsp\: {2}\n\
- \n
-jsp.error.java.line.number = Ha tenido lugar un error en la l\u00EDnea\: {0} en el fichero java generado
-jsp.error.corresponding.servlet = Error de servlet generado\:\n
-jsp.error.empty.body.not.allowed = Cuerpo vac\u00EDo no permitido para {0}
-jsp.error.jspbody.required = Se debe de usar jsp\:body para especificar cuerpo tag para {0} si se usa jsp\:attribute.
-jsp.error.jspbody.emptybody.only = El tag {0} s\u00F3lo puede tener jsp\:attribute en su cuerpo.
-jsp.error.no.scriptlets = Los elementos de Scripting (<%\!, <jsp\:declaration, <%\=, <jsp\:expression, <%, <jsp\:scriptlet ) no est\u00E1n permitidos aqu\u00ED.
-jsp.error.internal.unexpected_node_type = Error Interno\: Encontrado tipo de nodo inesperado
-jsp.error.tld.fn.invalid.signature = Sint\u00E1xis incorrecta para firma de funci\u00F3n en TLD. Biblioteca de Tag\: {0}, Funci\u00F3n\: {1}
-jsp.error.tld.fn.duplicate.name = Nombre duplicado de funci\u00F3n {0} en biblioteca de tag {1}
-jsp.error.tld.fn.invalid.signature.commaexpected = Sint\u00E1xis incorrecta para firma de funci\u00F3n en TLD. Se esperaba Coma ','. Biblioteca de Tag\: {0}, Funci\u00F3n\: {1}.
-jsp.error.tld.fn.invalid.signature.parenexpected = Sint\u00E1xis incorrecta para firma de funci\u00F3n en TLD. Se esperaba Par\u00E9ntesis '('. Biblioteca de Tag\: {0}, Funci\u00F3n\: {1}.
-jsp.error.tld.mandatory.element.missing = Falta o est\u00E1 vac\u00EDo elemento TLD obligatorio\: {0}
-jsp.error.dynamic.attributes.not.implemented = El tag {0} declara que acepta atributos din\u00E1micos pero no implementa la interfaz requerida
-jsp.error.nomatching.fragment = No puedo hallar una directiva de atributo (con name\={0} y fragment\=true) antes de la directiva de fragment.
-jsp.error.attribute.noequal = se esperaba s\u00EDmbolo igual
-jsp.error.attribute.noquote = se esperaba s\u00EDmbolo comillas
-jsp.error.attribute.unterminated = el atributo para {0} no est\u00E1 terminado correctamente
-jsp.error.attribute.noescape = El valor de atributo {0} est\u00E1 entrecomillado con {1} que debe de usar escape al usarse dentro del valor
-jsp.error.missing.tagInfo = El objeto TagInfo para {0} falta del TLD
-jsp.error.deferredmethodsignaturewithoutdeferredmethod = No puedo especificar firma de m\u00E9todo si 'deferredMethod' no es 'verdadero'
-jsp.error.deferredvaluetypewithoutdeferredvalue = No puedo especificar un tipo de valor si 'deferredValue' no es 'verdadero'
-jsp.error.deferredmethodandvalue = 'deferredValue' y 'deferredMethod' no pueden ser ambos 'verdadero'
-jsp.error.fragmentwithtype = No puede especificar ambos atributos 'fragment' y 'type'. Si est\u00E1 presente 'fragment', 'type' se pone como 'javax.servlet.jsp.tagext.JspFragment'
-jsp.error.fragmentwithrtexprvalue = No puede especificar ambos atributos 'fragment' y 'rtexprvalue'. Si est\u00E1 presente 'fragment', 'rtexprvalue' se pone como 'true'
-jsp.error.fragmentWithDeclareOrScope = Ambos atributos 'fragment' y 'declare' o 'scope' se han especificado en la directiva variable
-jsp.error.var_and_varReader = S\u00F3lo se puede especificar uno de 'var' o 'varReader'
-jsp.error.missing_var_or_varReader = Falta atributo 'var' o 'varReader'
-jsp.warning.bad.urlpattern.propertygroup = Valor malo {0} en el subelemento url-pattern en web.xml
-jsp.error.unknown_attribute_type = Tipo de atributo desconocido ({1}) para atributo {0}.
-jsp.error.coerce_to_type = No puedo coaccionar el valor ({2}) a tipo ({1}) para atributo {0}.
-jsp.error.jspelement.missing.name = Falta atributo obligatorio XML-style 'name'
-jsp.error.xmlns.redefinition.notimplemented = Error interno\: Intento de redefinir xmlns\:{0}. La redefinici\u00F3n de espacios de nombre no est\u00E1 implementada.
-jsp.error.could.not.add.taglibraries = No pude a\u00F1adir una o m\u00E1s bibliotecas.
-jsp.error.duplicate.name.jspattribute = El atributo {0} especificado en la acci\u00F3n standard o custom tambi\u00E9n aparece como el valor del atributo name en jsp\:attribute
-jsp.error.not.in.template = {0} no permitido en una plantilla cuerpo de texto.
-jsp.error.badStandardAction = Acci\u00F3n est\u00E1ndar incorrecta
-jsp.error.xml.badStandardAction = Acci\u00F3n est\u00E1ndar incorrecta\: {0}
-jsp.error.tagdirective.badbodycontent = body-content incorrecto ({0}) en directiva tag
-jsp.error.simpletag.badbodycontent = El TLD para la clase {0} especifica un body-content es incorrecto (JSP) para un SimpleTag.
-jsp.error.config_pagedir_encoding_mismatch = El Page-encoding especificado en jsp-property-group ({0}) es diferente del especificado en la diectiva page ({1})
-jsp.error.prolog_pagedir_encoding_mismatch = El Page-encoding especificado en XML prolog ({0}) difiere del especificado en la directiva page ({1})
-jsp.error.prolog_config_encoding_mismatch = El Page-encoding especificado en XML prolog ({0}) difiere del especificado en jsp-property-group ({1})
-jsp.error.attribute.custom.non_rt_with_expr = Seg\u00FAn el TLD o la directiva attribute del archivo tag, el atributo {0} no acepta expresiones
-jsp.error.attribute.standard.non_rt_with_expr = El atributo {0} de la acci\u00F3n est\u00E1ndar {1} no acepta expresiones
-jsp.error.scripting.variable.missing_name = Imposible determinar nombre de variable de scripting desde atributo {0}
-jasper.error.emptybodycontent.nonempty = Seg\u00FAn el TLD, el tag {0} debe de estar vac\u00EDo, pero no lo est\u00E1
-jsp.error.tagfile.nameNotUnique = El valor de {0} y el valor de {1} en la l\u00EDnea {2} son el mismo.
-jsp.error.tagfile.nameFrom.noAttribute = No puedo hallar una directiva attribute con un atributo name con un valor "{0}", el valor de este atributo name-from-attribute.
-jsp.error.tagfile.nameFrom.badAttribute = La directiva attribute (declarada en la l\u00EDnea {1} y cuyo atributo name es "{0}", el valor de este atributo name-from-attribute attribute) debe de ser del tipo java.lang.String, es "required" y no un "rtexprvalue".
-jsp.error.page.noSession = No puedo acceder al \u00E1mbito de sesi\u00F3n en una p\u00E1gina que no participa en una sesi\u00F3n
-jsp.error.usebean.noSession = Es ilegal para useBean el usar \u00E1mbito de sesi\u00F3n cuando la p\u00E1gina JSP declara (v\u00EDa directiva de p\u00E1gina) que no participa en sesiones
-jsp.error.xml.encodingByteOrderUnsupported = El orden de byte dado para encoding "{0}" no est\u00E1 soportado
-jsp.error.xml.encodingDeclInvalid = Nombre de codificaci\u00F3n "{0}" incorrecto.
-jsp.error.xml.encodingDeclRequired = Se necesita la declaraci\u00F3n encoding en la declaraci\u00F3n de texto
-jsp.error.xml.morePseudoAttributes = se esperan m\u00E1s pseudo-atributos
-jsp.error.xml.noMorePseudoAttributes = no se permiten m\u00E1s pseudo-atributos.
-jsp.error.xml.versionInfoRequired = Se requiere la versi\u00F3n en la declaraci\u00F3n XML.
-jsp.error.xml.xmlDeclUnterminated = La declaraci\u00F3n XML debe de terminar con "?>".
-jsp.error.xml.reservedPITarget = La instrucci\u00F3n de procesamiento que coincide con "[xX][mM][lL]" no est\u00E1 permitida.
-jsp.error.xml.spaceRequiredInPI = Se necesita un espacio en blanco entre la instrucci\u00F3n de procesamiento y los datos.
-jsp.error.xml.invalidCharInContent = Un car\u00E1cter XML incorrecto (Unicode\: 0x{0}) se hall\u00F3 en el contenido del elemento del documento.
-jsp.error.xml.spaceRequiredBeforeStandalone = Se necesita un espacio en blanco antes del pseudo-atributo encoding en la declaraci\u00F3n XML.
-jsp.error.xml.sdDeclInvalid = El valor de declaraci\u00F3n de documento standalone debe de ser "yes" o "no", no "{0}".
-jsp.error.xml.invalidCharInPI = Se hall\u00F3 un car\u00E1cter XML incorrecto (Unicode\: 0x{0}) en la instrucci\u00F3n de procesamiento
-jsp.error.xml.versionNotSupported = No se soporta la versi\u00F3n XML "{0}", s\u00F3lo se soporta XML 1.0
-jsp.error.xml.pseudoAttrNameExpected = se esperaba un pseudo-atributo name.
-jsp.error.xml.expectedByte = Se esperaba byte {0} de {1}-byte de secuencia UTF-8.
-jsp.error.xml.invalidByte = Incorrecto byte {0} de {1}-byte de secuencia UTF-8.
-jsp.error.xml.operationNotSupported = La operaci\u00F3n "{0}" no est\u00E1 soportada por lector {1}.
-jsp.error.xml.invalidHighSurrogate = Surrogaci\u00F3n Alta de bits en secuencia UTF-8 no debe de exceder 0x10, pero se hall\u00F3 0x{0}.
-jsp.error.xml.invalidASCII = El Byte "{0}" no es ASCII de 7-bit.
-jsp.error.xml.spaceRequiredBeforeEncodingInXMLDecl = Se necesita espacio en blanco antes del pseudo-atributo encoding en la declaraci\u00F3n XML.
-jsp.error.xml.spaceRequiredBeforeEncodingInTextDecl = Se necesita espacio en blanco antes del pseudo-atributo encoding en la declaraci\u00F3n text.
-jsp.error.xml.spaceRequiredBeforeVersionInTextDecl = Se necesita espacio en blanco antes del pseudo-atributo version en la declaraci\u00F3n text.
-jsp.error.xml.spaceRequiredBeforeVersionInXMLDecl = Se necesita espacio en blanco antes del pseudo-atributo version en la declaraci\u00F3n XML.
-jsp.error.xml.eqRequiredInXMLDecl = El car\u00E1cter '' \= '' debe de serguir a "{0}" en la declaraci\u00F3n XML.
-jsp.error.xml.eqRequiredInTextDecl = El car\u00E1cter '' \= '' debe de serguir a "{0}" en la declaraci\u00F3n text.
-jsp.error.xml.quoteRequiredInTextDecl = El valor que sigue a "{0}" en la declaraci\u00F3n text debe de ser una cadena entre comillas.
-jsp.error.xml.quoteRequiredInXMLDecl = El valor que sigue a "{0}" en la declaraci\u00F3n XML debe de ser un cadena entre comillas.
-jsp.error.xml.invalidCharInTextDecl = Un car\u00E1cter XML incorrecto (Unicode\: 0x{0}) se hall\u00F3 en la declaraci\u00F3n text
-jsp.error.xml.invalidCharInXMLDecl = Un car\u00E1cter XML incorrecto (Unicode\: 0x{0}) se hall\u00F3 en la declaraci\u00F3n XML
-jsp.error.xml.closeQuoteMissingInTextDecl = Faltan las comillas de cierre en el valor que sigue a "{0}" en la declaraci\u00F3n text.
-jsp.error.xml.closeQuoteMissingInXMLDecl = Faltan las comillas de cierre en el valor que sigue a "{0}" en la declaraci\u00F3n XML.
-jsp.error.xml.invalidHighSurrogate = Los bits de surrogaci\u00F3n alta en secuencai UTF-8 no deben de exceder 0x10 pero se hall\u00F3 0x{0}.
-jsp.error.multiple.jsp = No puedo tener m\u00FAltiples especificaciones de
-jsp.error.jspoutput.conflict = <jsp\:output>\: ilegal tener ocurrencias m\u00FAltiples de "{0}" con diferentes valores (viejo\: {1}, nuevo\: {2})
-jsp.error.jspoutput.doctypenamesystem = <jsp\:output>\: atributos 'doctype-root-element' y 'doctype-system' deben de aparecer juntos
-jsp.error.jspoutput.doctypepulicsystem = <jsp\:output>\: atributo 'doctype-system' debe de aparecer si aparece atributo 'doctype-public'
-jsp.error.jspoutput.nonemptybody = <jsp\:output> no debe de tener un cuerpo
-jsp.error.jspoutput.invalidUse = <jsp\:output> no se debe de usar en sint\u00E1xis est\u00E1ndar
-jsp.error.attributes.not.allowed = {0} no debe de tener atributos
-jsp.error.tagfile.badSuffix = Falta sufijo ".tag" en trayectoria de archivo de tag {0}
-jsp.error.tagfile.illegalPath = Trayectoria de archivo de tag\: {0}, debe de comenzar con "/WEB-INF/tags" o "/META-INF/tags"
-jsp.error.plugin.wrongRootElement = El nombre del elemento ra\u00EDz en {0} difiere de {1}
-jsp.error.attribute.invalidPrefix = El prefijo de atributo {0} no se correponde con ninguna biblioteca importada
-jsp.error.nested.jspattribute = Una acci\u00F3n est\u00E1ndar jsp\:attribute no puede estar anidada dentro de otra acci\u00F3n est\u00E1ndar jsp\:attribute
-jsp.error.nested.jspbody = Una acci\u00F3n est\u00E1ndar jsp\:body no puede estar anidada dentro de otra acci\u00F3n est\u00E1ndar jsp\:body o jsp\:attribute
-jsp.error.variable.either.name = O el atributo name-given o name-from-attribute deben de ser especificados en una directiva variable
-jsp.error.variable.both.name = No se puede especificar ambos atributos name-given o name-from-attribute en una directiva variable
-jsp.error.variable.alias = Ambos atributos o ninguno de name-from-attribute y alias pueden ser especificados en una directiva variable
-jsp.error.attribute.null_name = Nombre de atributo nulo
-jsp.error.jsptext.badcontent = '<', cuando aparece en el cuerpo de <jsp\:text>, debe de estar encapsulado dentro de un CDATA
-jsp.error.jsproot.version.invalid = N\u00FAmero incorrecto de versi\u00F3n\: "{0}", debe de ser "1.2" o "2.0" o "2.1"
-jsp.error.noFunctionPrefix = La funci\u00F3n {0} debe de usarse con un prefijo cuando no se especifica un espacio de nombres por defecto
-jsp.error.noFunction = La funci\u00F3n {0} no puede ser localizada mediante el prefijo especificado
-jsp.error.noFunctionMethod = El m\u00E9todo "{0}" para la funci\u00F3n "{1}" no se pudo hallar en la clase "{2}"
-jsp.error.function.classnotfound = La clase {0} especificada en el TLD para la funci\u00F3n {1} no se puede hallar\: {2}
-jsp.error.signature.classnotfound = La clase {0} especificada en la firma del m\u00E9todo en el TLD para la funci\u00F3n {1} no se puede hallar. {2}
-jsp.error.text.has_subelement = <jsp\:text> no debe de tener subelementos
-jsp.error.data.file.read = Error leyendo archivo "{0}"
-jsp.error.prefix.refined = Intento de redefinir el prefijo {0} por {1}, cuando ya estaba definido como {2} en el \u00E1mbito en curso.
-jsp.error.nested_jsproot = <jsp\:root> anidado
-jsp.error.unbalanced.endtag = El tgag final "</{0}" est\u00E1 desequilibrado
-jsp.error.invalid.bean = El valor el atributo de clsae useBean {0} es inv\u00E1lido.
-jsp.error.prefix.use_before_dcl = El prefijo {0} especificado en esta directiva de marca ha sido usado previamente mediante un fichero de acci\u00F3n {1} l\u00EDnea {2}.
-jsp.exception = Ha sucedido una excepci\u00F3n al procesar la p\u00E1gina JSP {0} en l\u00EDnea {1}
-jsp.error.el.template.deferred = \#{..} no est\u00E1 permitido en texto de plantilla
-jsp.error.el.parse = {0} \: {1}
-jsp.error.page.invalid.deferredsyntaxallowedasliteral = Directiva de p\u00E1gina\: valor inv\u00E1lido para deferredSyntaxAllowedAsLiteral
-jsp.error.tag.invalid.deferredsyntaxallowedasliteral = Directiva de marca\: valor inv\u00E1lido para deferredSyntaxAllowedAsLiteral
-jsp.error.page.conflict.deferredsyntaxallowedasliteral = Directiva de p\u00E1gina\: es ilegal tener m\u00FAltiples ocurrencias de 'deferredSyntaxAllowedAsLiteral' con diferentes valores (viejo\: {0}, nuevo\: {1})
-jsp.error.tag.conflict.deferredsyntaxallowedasliteral = Directiva de marca\: es ilegal tener m\u00FAltiples ocurrencias de 'deferredSyntaxAllowedAsLiteral' con diferentes valores (viejo\: {0}, nuevo\: {1})
-jsp.error.page.invalid.trimdirectivewhitespaces = Directiva de p\u00E1gina\: valor inv\u00E1lido para trimDirectiveWhitespaces
-jsp.error.tag.invalid.trimdirectivewhitespaces = Directiva de marca\: valor inv\u00E1lido para trimDirectiveWhitespaces
-jsp.error.page.conflict.trimdirectivewhitespaces = Directiva de p\u00E1gina\: es ilegal tener m\u00FAltiples ocurrencias de 'trimDirectivewhitespaces' con diferentes valores (viejo\: {0}, nuevo\: {1})
-jsp.error.tag.conflict.trimdirectivewhitespaces = Directiva de marca\: es ilegal tener m\u00FAltiples ocurrencias de 'trimDirectivewhitespaces' con diferentes valores (viejo\: {0}, nuevo\: {1})
Deleted: trunk/src/main/java/org/apache/jasper/resources/LocalStrings_fr.properties
===================================================================
--- trunk/src/main/java/org/apache/jasper/resources/LocalStrings_fr.properties 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/resources/LocalStrings_fr.properties 2012-09-21 14:14:07 UTC (rev 2083)
@@ -1,305 +0,0 @@
-# $Id: LocalStrings_fr.properties 520 2008-03-17 21:29:47Z jfrederic.clere(a)jboss.com $
-#
-# Default localized string information
-# Localized this the Default Locale as is fr_FR
-
-jsp.error.bad.servlet.engine=Version de moteur de servlet incorrecte!
-jsp.error.no.scratch.dir=Le moteur de JSP engine n''est pas configur� avec un r�pertoire de travail.\
-\n Merci d''ajouter \"jsp.initparams=scratchdir=<dir-name>\" \
-\n dans le fichier "servlets.properties" de ce contexte.
-jsp.error.bad.scratch.dir=Le param�tre "scratchDir" que vous avez sp�cifi�: {0} est inutilisable.
-jsp.message.scratch.dir.is=Le r�pertoire de travail (scratch dir) pour le moteur de JSP est: {0}
-jsp.message.parent_class_loader_is=Le chargeur de classe parent (class loader) est: {0}
-jsp.message.dont.modify.servlets=IMPORTANT: Ne pas modifier les servlets g�n�r�es
-jsp.error.not.impl.comments=Erreur interne: Commentaires non impl�ment�s
-jsp.error.not.impl.directives=Erreur interne: Directives non impl�ment�es
-jsp.error.not.impl.declarations=Erreur interne: Declarations non impl�ment�es
-jsp.error.not.impl.expressions=Erreur interne: Expressions non impl�ment�es
-jsp.error.not.impl.scriptlets=Erreur interne: Scriptlets non impl�ment�s
-jsp.error.not.impl.usebean=Erreur interne: useBean non impl�ment�
-jsp.error.not.impl.getp=Erreur interne: getProperty non impl�ment�
-jsp.error.not.impl.setp=Erreur interne: setProperty non impl�ment�
-jsp.error.not.impl.plugin=Erreur interne: plugin non impl�ment�
-jsp.error.not.impl.forward=Erreur interne: forward non impl�ment�
-jsp.error.not.impl.include=Erreur interne: include non impl�ment�
-jsp.error.unavailable=La JSP a �t� marqu�e comme non disponible
-jsp.error.usebean.missing.attribute=useBean: l''identificateur d''attribut (id attribute) est manquant ou mal orthographi�
-jsp.error.usebean.missing.type=useBean ({0}): La classe ou le type d''attribut doit �tre\
-sp�cifi�:
-jsp.error.usebean.duplicate=useBean: Nom de bean dupliqu�: {0}
-jsp.error.usebean.prohibited.as.session=Impossible d''utiliser comme bean de session {0} car c''est interdit\
-par la directive jsp d�finie pr�c�demment:
-jsp.error.usebean.not.both=useBean: Impossible de sp�cifier � la fois la classe et l''attribut beanName:
-jsp.error.usebean.bad.type.cast=useBean ({0}): Le type ({1}) n''est pas assignable depuis la classe ({2})
-jsp.error.classname=Impossible de d�terminer le nom de classe d''apr�s le fichier .class
-jsp.warning.bad.type=Attention: mauvais type dans le fichier .class
-jsp.error.data.file.write=Erreur lors de l''�criture du fichier de donn�es
-#Directive de Page: valeur incorrecte pour pageEncoding
-jsp.error.page.invalid.contenttype=Directive de Page: valeur incorrecte pour contentType
-jsp.error.page.invalid.session=Directive de Page: valeur incorrecte pour session
-jsp.error.page.invalid.buffer=Directive de Page: valeur incorrecte pour "buffer"
-jsp.error.page.invalid.autoflush=Directive de Page: valeur incorrecte pour autoFlush
-jsp.error.page.invalid.isthreadsafe=Directive de Page: valeur incorrecte pour isThreadSafe
-jsp.error.page.invalid.info=Directive de Page: valeur incorrecte pour info
-jsp.error.page.invalid.iserrorpage=Directive de Page: valeur incorrecte pour isErrorPage
-jsp.error.page.defafteruse.language=Directive de Page: on ne peut d�finir language apr�s un scriptlet
-jsp.error.page.nomapping.language=Directive de Page: Pas de correspondance pour language:
-jsp.error.page.bad_b_and_a_combo=Directive de Page: combinaison ill�gale de buffer=\"none\" && autoFlush=\"false\"
-jsp.error.not.impl.taglib=Internal error: Tag extensions non impl�ment�s
-jsp.error.include.missing.file=l''argument fichier (file) pour l''inclusion (include) est absent
-jsp.error.include.bad.file=Mauvais argument fichier (file) pour l''inclusion (include)
-jsp.error.include.exception=Impossible d''inclure (include) {0}
-jsp.error.stream.closed=Flux ferm�
-jsp.error.invalid.forward=Tag forward incorrect
-jsp.error.unknownException=Erreur non trait�e! Vous devriez penser � utiliser une page d''erreur \
-pour rapporter ce type d''erreur plus �l�gamment
-jsp.error.invalid.directive=Directive incorrecte
-jsp.error.directive.istagfile=La directive {0} ne peut �tre utilis�e dans un fichier tag
-jsp.error.directive.isnottagfile=La directive {0} ne peut �tre utilis�e que dans un fichier tag
-jsp.error.tagfile.tld.name=L''attribut \"name\" de la directive tag contient la valeur {0} alors que le tag \"name\" de l''�l�ment \"tag-file\" dans le TLD est {1}
-jsp.error.action.istagfile=L''action {0} ne peut �tre utilis�e dans un fichier tag
-jsp.error.action.isnottagfile=L''action {0} ne peut �tre utilis�e que dans un fichier tag
-jsp.error.unterminated=Tag {0} non termin�
-jsp.error.usebean.notinsamefile=le tag useBean doit commenc� et finir dans le m�me fichier physique
-jsp.error.loadclass.taghandler=Impossible de charger la classe {0}
-jsp.error.unable.compile=Impossible de compiler la classe pour la JSP
-jsp.error.unable.load=Impossible de charger la classe pour la JSP
-jsp.error.unable.rename=Impossible de renommer le fichier classe de {0} vers {1}
-jsp.error.mandatory.attribute={0}: L''attribut obligatoire {1} est manquant
-jsp.engine.info=Moteur Jasper JSP 2.0
-jsp.error.invalid.expression="{0}" contient d''incorrecte(s) expression(s): {1}
-jsp.error.invalid.attribute={0}: Attribut incorrect: {1}
-jsp.error.usebean.class.notfound=Classe: {0} non trouv�e
-jsp.error.file.cannot.read=Impossible de lire le fichier: {0}
-jsp.error.file.already.registered=Inclusion r�cursive du fichier {0}
-jsp.error.file.not.registered=Le fichier {0} n''appara�t pas dans l''inclusion (include)
-jsp.error.quotes.unterminated=guillemets non termin�s
-jsp.error.attr.quoted=La valeur de l''attribute doit �tre entre guillemets
-jsp.error.attr.novalue=L''attribute {0} n''a pas de valeur
-jsp.error.tag.attr.unterminated=Liste de tag d''attribut non termin�e
-jsp.error.param.noname=Pas de nom dans le tag PARAM
-jsp.error.param.novalue=Pas de valeur dans le tag PARAM
-jsp.error.beans.nullbean=Tentative d''op�ration bean sur un objet nul.
-jsp.error.beans.nobeaninfo=Pas d''information bean (BeanInfo) pour le bean de type ''{0}'' n''a pu �tre trouv�e, la classe n''existe probablement pas.
-jsp.error.beans.introspection=Une exception s''est produite lors de l''introspection de la m�thode read de la propri�t� ''{0}'' dans le bean de type ''{1}'':\n{2}
-jsp.error.beans.nomethod=Impossible de trouver une m�thode pour lire la propri�t� ''{0}'' dans le bean de type ''{1}''
-jsp.error.beans.nomethod.setproperty=Impossible de trouver une m�thode pour mettre � jour la propri�t� ''{0}'' de type ''{1}''dans le bean de type ''{2}''
-jsp.error.beans.noproperty==Impossible de trouver de l''information sur la propri�t� ''{0}'' dans le bean de type ''{1}''
-jsp.error.beans.setproperty.noindexset=Impossible de renseigner la propri�t� ind�x�e
-jsp.error.include.tag=Tag jsp:include incorrect
-jsp.error.include.noflush=jsp:include doit avoir \"flush=true\"
-jsp.error.include.badflush=jsp:include page=\"...\" flush=\"true\" est la seule combinaison valide dans JSP 1.0
-jsp.error.attempt_to_clear_flushed_buffer=Erreur: Tentative d''effacement d''un tampon qui a d�j� �t� vidang� (flush)
-jsp.error.overflow=Erreur: D�passement de capacit� du tampon JSP
-jsp.error.paramexpected=Le tag \"param\" est attendu avec les attributs \"name\" et \"value\" apr�s le tag \"params\".
-jsp.error.closeindividualparam=Le tag param doit �tre ferm� avec \"/>\"
-jsp.error.closeparams=Le tag param tag doit �tre ferm� avec /params
-jsp.error.plugin.notype=type non d�clar� dans jsp:plugin
-jsp.error.plugin.nocode=code non d�clar� dans jsp:plugin
-jsp.error.ise_on_clear=Il est interdit d''utiliser clear() quand la taille de tampon== 0
-jsp.error.setproperty.beanNotFound=setProperty: le Bean {0} est introuvable
-jsp.error.getproperty.beanNotFound=getProperty: le Bean {0} est introuvable
-jsp.error.setproperty.ClassNotFound=setProperty: la Classe {0} est introuvable
-jsp.error.setproperty.invalidSyntax=setProperty: On ne peut avoir de valeur non nulle quand property=*
-jsp.error.setproperty.beanInfoNotFound=setproperty: beanInfo pour le bean {0} est introuvable
-jsp.error.setproperty.paramOrValue=setProperty: param ou value doit �tre pr�sent
-jsp.error.setproperty.arrayVal=setProperty: on ne peut renseigner les array property {0} au travers d''une valeur cha�ne constante (string constant value)
-jsp.warning.keepgen=Attention: Valeur incorrecte pour le initParam keepgenerated. Utilisation de la valeur par d�faut \"false\"
-jsp.warning.enablePooling=Attention: Valeur incorrecte pour le initParam enablePooling. Utilisation de la valeur par d�faut \"true\"
-jsp.warning.mappedFile=Attention: Valeur incorrecte pour le initParam mappedFile. Utilisation de la valeur par d�faut \"false\"
-jsp.warning.sendErrToClient=Attention: Valeur incorrecte pour le initParam sendErrToClient. Utilisation de la valeur par d�faut \"false\"
-jsp.warning.classDebugInfo=Attention: Valeur incorrecte pour le initParam classdebuginfo. Utilisation de la valeur par d�faut \"false\"
-jsp.warning.checkInterval=Attention: Valeur incorrecte pour le initParam checkInterval. Utilisation de la valeur par d�faut \"300\" secondes
-jsp.warning.development=Attention: Valeur incorrecte pour le initParam development. Utilisation de la valeur par d�faut \"true\"
-jsp.warning.reloading=Attention: Valeur incorrecte pour le initParam reloading. Utilisation de la valeur par d�faut \"true\"
-jsp.warning.reloading=
-jsp.error.badtaglib=Impossible d''ouvrir le taglibrary {0} : {1}
-jsp.error.badGetReader=Impossible de cr�er un lecteur (reader) quand le flux n''utilse pas des tampons (not buffered)
-jsp.warning.unknown.element.in.TLD=Attention: El�ment inconnu {0} dans le TLD
-jsp.warning.unknown.element.in.tag=Attention: El�ment inconnu {0} dans le tag
-jsp.warning.unknown.element.in.tagfile=Attention: El?ment inconnu {0} dans le tag-file
-jsp.warning.unknown.element.in.attribute=Attention: El�ment inconnu {0} dans l''attribute
-jsp.error.more.than.one.taglib=plus d''un taglib dans le TLD: {0}
-jsp.error.teiclass.instantiation=Impossible de charger ou d''instancier la classe TagExtraInfo: {0}
-jsp.error.non_null_tei_and_var_subelems=Le tag {0} poss�de une ou plusieurs variables subelements et une classe TagExtraInfo qui retourne une ou plusieurs VariableInfo
-jsp.error.parse.error.in.TLD=Erreur d''�valuation (parse) dans le descripteur de librairie de tag (TLD): {0}
-jsp.error.unable.to.open.TLD=Impossible d''ouvrir le descripteur de librairie de tag (TLD): {0}
-jsp.buffer.size.zero=Taille du tampon <= 0
-jsp.error.file.not.found=Le fichier \"{0}\" n''a pas �t� trouv�
-jsp.message.copyinguri=Copie de {0} dans {1}
-jsp.message.htmlcomment=\nEffacement des commentaires: \t{0}
-jsp.message.handling_directive=\nDirective de gestion (handling): {0}\t{1}
-jsp.message.handling_plugin=\nPlugin: {0}
-jsp.message.package_name_is=Le nom de package est: {0}
-jsp.message.class_name_is=Le nom de classe est: {0}
-jsp.message.java_file_name_is=Le nom de fichier Java est: {0}
-jsp.message.class_file_name_is=Le nom de fichier Class est: {0}
-jsp.message.accepted=Accept� {0} � {1}
-jsp.message.adding_jar=Ajout du jar {0} � mon classpath
-jsp.message.compiling_with=Compilation avec: {0}
-jsp.message.template_text=texte template
-jsp.error.missing_attribute=D''apr�s le TLD l''attribut {0} est obligatoire pour le tag {1}
-jsp.error.bad_attribute=L''attribut {0} est incorrect pour le tag {1} d''apr�s la TLD indiqu�e
-jsp.error.webxml_not_found=Impossible de localiser le fichier web.xml
-jsp.cmd_line.usage=Usage: jsptoservlet [-dd <path/to/outputDirectory>] [-keepgenerated] \
-<.jsp files>
-jsp.message.cp_is=Le Classpath {0} est: {1}
-jsp.error.unable.to_load_taghandler_class=Impossible de charger la classe gestionnaire de tag {0} car {1}
-jsp.error.unable.to_find_method=Impossible de trouver une m�thode de mise � jour pour l''attribut: {0}
-jsp.error.unable.to_convert_string=Impossible de convertir une cha�ne vers {0} pour l''attribut {1}
-jsp.error.unable.to_introspect=Impossible d''introspecter la classe gestionnaire de tag : {0} car {1}
-jsp.error.bad_tag=Aucun tag {0} dans la librairie de tag import�e avec le pr�fixe {1}
-jsp.error.bad_string_Character=Impossible d''extraire un caract�re depuis un tableau vide
-jsp.error.bad_string_char=Impossible d''extraire un caract�re depuis un tableau vide
-jsp.warning.compiler.class.cantcreate=Impossible de cr�er une instance de classe plugin pour le compilateur indiqu� {0} due to {1}. Utilisation par d�faut du Compilateur Java Sun.
-jsp.warning.compiler.class.notfound=La classe plugin de compilateur {0} est introuvable. Utilisation par d�faut du Compilateur Java Sun.
-jsp.warning.compiler.path.notfound=le chemin de compilateur indiqu� {0} est introuvable. Utilisation par d�faut du chemin syst�me (system PATH).
-jsp.error.jspc.uriroot_not_dir=L''option -uriroot doit indiqu� un r�pertoire d�j� existant
-jspc.implicit.uriRoot=uriRoot r�gl� implicitement � "{0}"
-jspc.usage=Usage: jspc <options> [--] <fichiers jsp>\n\
-o� les fichiers jsp sont n''importe quel nombre de:\n\
-\ <file> Un fichier � �valuer (parser) comme page jsp\n\
-\ -webapp <dir> Un r�pertoire contenant une application web, toutes les pages jsp\n\
-\ seront r�cursivement �valu�es\n\
-o� les options comprennet:\n\
-\ -q Mode silencieux (identique � -v0)\n\
-\ -v[#] Mode bavard (Le nombre optionnel indique le niveau, 2 par d�faut)\n\
-\ -d <dir> Dossier de sortie\n\
-\ -dd <dir> Dossier de sortie literal. (Les dossiers de paquets ne seront pas construits)\n\
-\ -l Sortie du nom la page JSP en cas d''�chec\n\
-\ -s Sortie du nom la page JSP en cas de succ�s\n\
-\ -p <name> Nom du paquet cible\n\
-\ -c <name> Nom d'un nom de classe cible\n\
-\ (s''applique seulement � la premi�re page JSP)\n\
-\ -mapped G�n�re des appels � write() s�par�s pour chaque ligne HTML dans la JSP\n\
-\ -die[#] G�n�re un code d''erreur de retour (#) en cas d''erreurs fatales.\n\
-\ Si le nombre est absent ou non num�rique, le d�faut est 1.\n\
-\ -uribase <dir> Le r�pertoire uri de compilations relatif\n\
-\ (Par d�faut "/")\n\
-\ -uriroot <dir> The r�pertoire racine contre lequel les fichiers seront r�solus\n\
-\ , (Par d�faut le r�pertoire depuis lequel jspc est appel�)\n\
-\ -webinc <file> Cr�ation d''association partielle de servlet pour l''option -webapp.\n\
-\ -webxml <file> Cr�ation d''un fichier web.xml complet pour l''option -webapp.\n\
-\ -ieplugin <clsid> Le classid du Plugin Java Plugin pour Internet Explorer\n\
-\ -sax2 <driverclassname> Le nom de classe du Driver SAX 2.0 � utiliser\n\
-\ -trimSpaces Trim spaces in template text between actions, directives\n\
-\ -javaEncoding <enc> Set the encoding charset for Java classes (default UTF-8)\n\
-\ -source <version> Set the -source argument to the compiler (default 1.4)\n\
-\ -target <version> Set the -target argument to the compiler (default 1.4)\n\
-
-jspc.webxml.header=<?xml version="1.0" encoding="ISO-8859-1"?>\n\
-\n\
-<!DOCTYPE web-app\n\
-\ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"\n\
-\ "http://java.sun.com/dtd/web-app_2_3.dtd">\n\
-<!--\n\
-Cr�er automatiquement par le JspC Apache Jakarta Tomcat.\n\
--->\n\
-<web-app>\n\
-\n
-jspc.webxml.footer=\n\
-</web-app>\n\
-\n
-jspc.webinc.header=\n\
-<!--\n\
-Cr�er automatiquement par le JspC Apache Jakarta Tomcat.\n\
-Placez ce fragment dans le fichier web.xml avant all icon, display-name,\n\
-description, distributable, and context-param elements.\n\
--->\n
-jspc.webinc.footer=\n\
-<!--\n\
-All session-config, mime-mapping, welcome-file-list, error-page, taglib,\n\
-resource-ref, security-constraint, login-config, security-role,\n\
-env-entry, and ejb-ref elements should follow this fragment.\n\
--->\n
-jspc.error.jasperException=erreur-le fichier ''{0}'' a g�n�r� l''exception d''�valuation suivante: {1}
-jspc.error.generalException=ERREUR-le fichier ''{0}'' a g�n�r� l''exception g�n�rale suivante:
-jspc.error.fileDoesNotExist=L''argument fichier ''{0}'' n''existe pas
-jspc.error.emptyWebApp=-webapp n�cessite � sa suite un argument fichier
-jsp.error.library.invalid=La page JSP page est incorrecte d''apr�s la librairie {0}: {1}
-jsp.error.tlvclass.instantiation=Impossible de charger ou d''instancier la classe TagLibraryValidator: {0}
-jsp.error.tlv.invalid.page=Message d''erreurs de validation provenant du TagLibraryValidator pour {0} en {1}
-jsp.error.tei.invalid.attributes=Message d''erreurs de validation provenant du TagExtraInfo pour {0}
-jsp.parser.sax.propertynotsupported=Propri�t� SAX non support�e: {0}
-jsp.parser.sax.propertynotrecognized=Propri�t� SAX non reconnue: {0}
-jsp.parser.sax.featurenotsupported=Fonctionnalit� SAX non support�e: {0}
-jsp.parser.sax.featurenotrecognized=Fonctionnalit� SAX non reconnue: {0}
-jsp.error.no.more.content=Fin de contenu alors que l''�valution n''�tait pas termin�e: erreur de tags imbriqu�s?
-jsp.error.parse.xml=Erreur d''�valuation XML sur le fichier {0}
-jsp.error.parse.xml.line=Erreur d''�valuation XML sur le fichier {0}: (ligne {1}, col {2})
-jsp.error.parse.xml.scripting.invalid.body=Le corps de l''�l�ment {0} ne doit contenir aucun �l�ments XML
-jsp.error.internal.tldinit=Exception lors de l'initialisation de TldLocationsCache: {0}
-jsp.error.internal.filenotfound=Erreur interne: Fichier {0} introuvable
-jsp.error.internal.evaluator_not_found=Erreur interne: Impossible de charger l''�valuateur d''expression
-jsp.error.parse.xml.invalidPublicId=PUBLIC ID invalide: {0}
-jsp.error.include.flush.invalid.value=Valeur incorrecte pour l''attribut flush: {0}
-jsp.error.unsupported.encoding=Encodage non support�: {0}
-jsp.warning.unknown.element.in.variable=Attention: Element inconnu {0} dans la variable
-tld.error.variableNotAllowed=Ceci est une erreur pour le tag qui poss�de une ou plusieurs variables subelements pour avoir une classe TagExtraInfo qui retourne un objet non-nul.
-jsp.error.tldInWebDotXmlNotFound=Ne peut trouver le TLD {1} pour l''URI {0} indiqu�e dans le fichier web.xml
-jsp.error.taglibDirective.absUriCannotBeResolved=L''uri absolue: {0} ne peut �tre r�solu dans le fichier web.xml ou dans les fichiers jar d�ploy�s avec cette application
-jsp.error.taglibDirective.missing.location=Ni l''uri' ni l''attribut 'tagdir' n''ont �t� indiqu�s dans la directive taglib
-jsp.error.invalid.tagdir=Le r�pertoire du fichier Tag {0} ne commence pas par \"/WEB-INF/tags\"
-jsp.error.unterminated.user.tag=Tag user-defined non termin�: Le tag de fermeture {0} est introuvable found ou incorrectement imbriqu�
-#jspx.error.templateDataNotInJspCdata=Erreur de validation: l''�l�ment <{0}> ne peut avoir de donn�es template. Les donn�es Template doivent �tre encapsul�es � l''int�rieur d''un �l�ment <jsp:cdata>. [JSP1.2 PFD section 5.1.9]\nDonn�e Template en erreur: {1}
-jspx.error.templateDataNotInJspCdata=Erreur de validation: l''�l�ment <{0}> ne peut avoir de donn�es template. Les donn�es Template doivent �tre encapsul�es � l''int�rieur d''un �l�ment <jsp:text>. [JSP1.2 PFD section 5.1.9]\nDonn�e Template en erreur: {1}
-#Erreur lors du traitement du fichier jar de la taglib {0}: {1}
-jsp.error.taglib.reserved.prefix=Le pr�fixe taglib {0} est r�serv�
-jsp.error.invalid.javaEncoding=Encodage java incorrect. Essai de {0} puis de {1}. Les deux ont �chou�.
-jsp.error.needAlternateJavaEncoding=L''encodage java par d�faut {0} est incorrect sur votre environnement java. Une alternative peut �tre indiqu�e via le param�tre 'javaEncoding' de la JspServlet.
-#Erreur lors de la compilation, utilis� pour la ligne jsp des messages d''erreur
-jsp.error.single.line.number=Une erreur s''est produite � la ligne: {0} dans le fichier jsp: {1}
-jsp.error.multiple.line.number=\n\nUne erreur s''est produite entre les lignes: {0} et {1} dans le fichier jsp: {2}\n\n
-jsp.error.corresponding.servlet=Erreur de servlet g�n�r�e:\n
-jsp.error.empty.body.not.allowed=Un corps vide n'est pas autoris� pour {0}
-jsp.error.jspbody.required=Doit utiliser jsp:body pour indiqu� le corps de tag body de {0} si jsp:attribute est utilis�.
-jsp.error.jspbody.emptybody.only=Le tag {0} ne peut avoir que jsp:attribute dans son corps.
-jsp.error.no.scriptlets=Les �l�ments de Scripting ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) ne sont pas autoris�s ici.
-jsp.error.internal.unexpected_node_type=Erreur Interne: Type de node inattendu rencontr�
-jsp.error.tld.fn.invalid.signature=Synthaxe invalide pour la signature de fonction dans la TLD. Librairie de Tag : {0}, Fonction: {1}
-jsp.error.tld.fn.invalid.signature.classnotfound=Synthaxe invalide pour la signature de fonction dans la TLD. Classe introuvable: ${0}. Librairie de Tag: {1}, Fonction: {2}.
-jsp.error.tld.fn.invalid.signature.commaexpected=Synthaxe invalide pour la signature de fonction dans la TLD. Virgule ',' attendue. Librairie de Tag: {0}, Fonction: {1}.
-jsp.error.tld.fn.invalid.signature.parenexpected=Synthaxe invalide pour la signature de fonction dans la TLD. Parenth�se '(' attendue. Librairie de Tag: {0}, Fonction: {1}.
-jsp.error.dynamic.attributes.not.implemented=Le tag {0} indique qu''il accepte des attributs dynamics mais n''impl�mente pas l''interface requise
-jsp.error.nomatching.fragment=Ne peut trouver une directive attribut (avec pour nom={0} et fragment=true) avant la directive fragment.
-jsp.error.attribute.noequal=Symbole �gal (equal) attendu
-jsp.error.attribute.noquote=Symbole guillemet (quote) attendu
-jsp.error.attribute.unterminated=L''attribut pour {0} n''est pas correctement termin�
-jsp.error.missing.tagInfo=L''objet TagInfo de {0} est absent de la TLD
-jsp.error.fragmentwithtype=On ne peut indiquer � la fois les attributs 'fragment' et 'type'. Si 'fragment' est pr�sent, 'type' est fix� comme 'javax.servlet.jsp.tagext.JspFragment'
-jsp.error.fragmentwithrtexprvalue=On ne peut indiquer � la fois les attributs 'fragment' et 'rtexprvalue'. Si 'fragment' est pr�sent, 'rtexprvalue' est fix� � 'true'
-jsp.error.fragmentWithDeclareOrScope=Les attributs 'fragment' et 'declare' ou 'scope' sont indiqu�s dans la directive variable
-jsp.error.var_and_varReader=A la fois 'var' et 'varReader' sont indiqu�s
-jsp.warning.bad.urlpattern.propertygroup=Mauvaise valeur {0} dans le sous-�l�ment (subelement) url-pattern du fichier web.xml
-jsp.error.unknown_attribute_type=Type d''attribut inconnu ({1}) pour l''attribut {0}.
-jsp.error.jspelement.missing.name=L''attribut obligatoire 'name' est absent de jsp:element
-jsp.error.xmlns.redefinition.notimplemented=Erreur Interne: Tentative de red�finition de xmlns:{0}. La red�finition des domaines de noms (namespaces) n''est pas impl�ment�e.
-jsp.error.could.not.add.taglibraries=Impossible d''ajouter une ou plusieurs librairies de tag.
-jsp.error.duplicate.name.jspattribute=L''attribut {0} indiqu� dans l''action standard ou sp�cifique (custom) apparait aussi comme valeur de l''attribut de nom dans le jsp:attribute inclus
-jsp.error.not.in.template={0} n''est pas autoris� dans le corps de texte de template.
-jsp.error.badStandardAction=L''action n''est pas reconnue comme une action standard.
-jsp.error.tagdirective.badbodycontent=Contenu de corps (body-content) ({0}) invalide dans la directive tag
-jsp.error.config_pagedir_encoding_mismatch=L''encode de page (Page-encoding) indiqu� dans le jsp-property-group ({0}) est diff�rent de celui indiqu� dans la directive de page ({1})
-jsp.error.prolog_pagedir_encoding_mismatch=
-jsp.error.prolog_config_encoding_mismatch=
-jsp.error.attribute.custom.non_rt_with_expr=D''apr�s la TLD, l''attribut {0} n''accepte aucune expression
-jsp.error.scripting.variable.missing_name=Incapable de d�terminer le nom de variable scripting d''apr�s l''attribut {0}
-jasper.error.emptybodycontent.nonempty=D''apr�s la TLD, le tag {0} doit �tre vide, mais ne l''est pas
-jsp.error.tagfile.nameNotUnique=
-jsp.error.tagfile.nameFrom.noAttribute=
-jsp.error.tagfile.nameFrom.badAttribute=
-jsp.error.useBean.noSession=Il est ill�gal pour useBean d''utiliser une port�e de session (session scope) quand la page JSP indique (via la directive de page) qu''elle ne participe pas aux sessions
-jsp.error.attributes.not.allowed = {0} ne doit avoir aucun attribut
-jsp.error.nested.jspattribute=
-jsp.error.nested.jspbody=
-jsp.error.variable.either.name=
-jsp.error.variable.both.name=
-jsp.error.variable.alias=
-jsp.error.jsptext.badcontent=
-jsp.error.prefix.refined=
-jsp.error.jspoutput.conflict=
-jsp.error.jspoutput.doctypenamesystem=
-jsp.error.jspoutput.doctypepulicsystem=
-jsp.error.jspoutput.nonemptybody=
-jsp.error.jspoutput.invalidUse=
-jsp.error.invalid.bean=
Deleted: trunk/src/main/java/org/apache/jasper/resources/LocalStrings_ja.properties
===================================================================
--- trunk/src/main/java/org/apache/jasper/resources/LocalStrings_ja.properties 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/resources/LocalStrings_ja.properties 2012-09-21 14:14:07 UTC (rev 2083)
@@ -1,407 +0,0 @@
-# $Id: LocalStrings_ja.properties 520 2008-03-17 21:29:47Z jfrederic.clere(a)jboss.com $
-#
-# Default localized string information
-# Localized this the Default Locale as is ja_JP
-
-jsp.error.bad.servlet.engine=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093
-jsp.error.no.scratch.dir=JSP\u30a8\u30f3\u30b8\u30f3\u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u306escratchDir\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\
-\n \u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306eservlets.properties\u30d5\u30a1\u30a4\u30eb\u306b\u3001\
-\n \"jsp.initparams=scratchdir=<dir-name>\" \u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-jsp.error.bad.scratch.dir=\u3042\u306a\u305f\u304c\u6307\u5b9a\u3057\u305fscratchDir: {0} \u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
-jsp.message.scratch.dir.is=JSP\u30a8\u30f3\u30b8\u30f3\u306eScratchdir: {0}
-jsp.message.parent_class_loader_is=\u89aa\u30af\u30e9\u30b9\u30ed\u30fc\u30c0: {0}
-jsp.message.dont.modify.servlets=\u91cd\u8981: \u751f\u6210\u3055\u308c\u305f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u3092\u5909\u66f4\u3057\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.not.impl.comments=\u5185\u90e8\u30a8\u30e9\u30fc: Comments\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.directives=\u5185\u90e8\u30a8\u30e9\u30fc: Directives\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.declarations=\u5185\u90e8\u30a8\u30e9\u30fc: Declarations\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.expressions=\u5185\u90e8\u30a8\u30e9\u30fc: Expressions\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.scriptlets=\u5185\u90e8\u30a8\u30e9\u30fc: Scriptlets\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.usebean=\u5185\u90e8\u30a8\u30e9\u30fc: useBean\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.getp=\u5185\u90e8\u30a8\u30e9\u30fc: getProperty\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.setp=\u5185\u90e8\u30a8\u30e9\u30fc: setProperty\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.plugin=\u5185\u90e8\u30a8\u30e9\u30fc: plugin\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.forward=\u5185\u90e8\u30a8\u30e9\u30fc: forward\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.not.impl.include=\u5185\u90e8\u30a8\u30e9\u30fc: include\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.unavailable=JSP\u306f\u5229\u7528\u4e0d\u53ef\u3068\u30de\u30fc\u30af\u3055\u308c\u3066\u3044\u307e\u3059
-jsp.error.usebean.missing.attribute=useBean: id\u5c5e\u6027\u304c\u5b58\u5728\u3057\u306a\u3044\u304b\u3001\u30b9\u30da\u30eb\u30df\u30b9\u3067\u3059
-jsp.error.usebean.missing.type=useBean ({0}): class\u5c5e\u6027\u304btype\u5c5e\u6027\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044:
-jsp.error.usebean.duplicate=useBean: beanName\u5c5e\u6027\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059: {0}
-jsp.error.usebean.prohibited.as.session=\u4ee5\u524d\u306b\u5b9a\u7fa9\u3057\u305fJSP\u6307\u793a\u5b50\u306b\u3088\u3063\u3066\u7981\u6b62\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u306b\u3001session bean {0} \u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093:
-jsp.error.usebean.not.both=useBean: class\u5c5e\u6027\u3068beanName\u5c5e\u6027\u306e\u4e21\u65b9\u3092\u540c\u6642\u306b\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093:
-jsp.error.usebean.bad.type.cast=useBean ({0}): type ({1}) \u306fclass ({2}) \u304b\u3089\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u305b\u3093
-jsp.error.invalid.scope='scope'\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059: {0} (\"page\"\u3001\"request\"\u3001\"session\"\u53c8\u306f\"application\"\u306e\u3069\u308c\u304b\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093)
-jsp.error.classname=.class\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30af\u30e9\u30b9\u540d\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u305b\u3093
-jsp.warning.bad.type=\u8b66\u544a: .class\u30d5\u30a1\u30a4\u30eb\u4e2d\u306e\u578b\u304c\u9055\u3044\u307e\u3059
-jsp.error.data.file.write=\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304d\u8fbc\u307f\u4e2d\u306e\u30a8\u30e9\u30fc\u3067\u3059
-jsp.error.page.invalid.buffer=page\u6307\u793a\u5b50: \u7121\u52b9\u306a\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\u3067\u3059
-jsp.error.page.conflict.contenttype=page\u6307\u793a\u5b50: 'contentType'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.contenttype=page\u6307\u793a\u5b50: contentType\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.page.conflict.session=page\u6307\u793a\u5b50: 'session'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.session=page\u6307\u793a\u5b50: session\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.page.conflict.buffer=page\u6307\u793a\u5b50: 'buffer'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.buffer=page\u6307\u793a\u5b50: buffer\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.page.conflict.autoflush=page\u6307\u793a\u5b50: 'autoFlush'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.autoflush=page\u6307\u793a\u5b50: autoFlush\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.page.conflict.isthreadsafe=page\u6307\u793a\u5b50: 'isThreadSafe'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.isthreadsafe=page\u6307\u793a\u5b50: isThreadSafe\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.page.conflict.info=page\u6307\u793a\u5b50: 'info'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.info=page\u6307\u793a\u5b50: info\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.page.conflict.iserrorpage=page\u6307\u793a\u5b50: 'isErrorPage'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.iserrorpage=page\u6307\u793a\u5b50: isErrorPage\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.page.conflict.errorpage=page\u6307\u793a\u5b50: 'errorPage'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.conflict.language=page\u6307\u793a\u5b50: 'language'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.tag.conflict.language=tag\u6307\u793a\u5b50: 'language'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.language.nonjava=page\u6307\u793a\u5b50: \u7121\u52b9\u306alanguage\u5c5e\u6027\u3067\u3059
-jsp.error.tag.language.nonjava=tag\u6307\u793a\u5b50: \u7121\u52b9\u306alanguage\u5c5e\u6027\u3067\u3059
-jsp.error.page.defafteruse.language=page\u6307\u793a\u5b50: scriptlet\u306e\u5f8c\u3067language\u5c5e\u6027\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093
-jsp.error.page.nomapping.language=page\u6307\u793a\u5b50 language\u5c5e\u6027\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u304c\u5b58\u5728\u3057\u307e\u305b\u3093:
-jsp.error.page.conflict.extends=page\u6307\u793a\u5b50: 'extends'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.conflict.iselignored=page\u6307\u793a\u5b50: 'isELIgnored'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.tag.conflict.iselignored=tag\u6307\u793a\u5b50: 'isELIgnored'\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {0}, \u65b0: {1})
-jsp.error.page.invalid.iselignored=page\u6307\u793a\u5b50: isELIgnored\u306b\u7121\u52b9\u306a\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059
-jsp.error.tag.invalid.iselignored=tag\u6307\u793a\u5b50: isELIgnored\u306b\u7121\u52b9\u306a\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059
-jsp.error.page.multi.pageencoding=page\u6307\u793a\u5b50\u306f\u8907\u6570\u306epageencoding\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
-jsp.error.tag.conflict.attr=Tag\u6307\u793a\u5b50: \u5c5e\u6027\"{0}\"\u3092\u7570\u306a\u308b\u5024\u3067\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u4e0d\u6b63\u3067\u3059 (\u65e7: {1}, \u65b0: {2})
-jsp.error.tag.multi.pageencoding=tag\u6307\u793a\u5b50\u306f\u8907\u6570\u306epageencoding\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
-jsp.error.page.bad_b_and_a_combo=page\u6307\u793a\u5b50: buffer=\"none\"\u3068autoFlush=\"false\"\u3092\u540c\u6642\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
-jsp.error.not.impl.taglib=\u5185\u90e8\u30a8\u30e9\u30fc: \u30bf\u30b0\u62e1\u5f35\u5b50\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.include.missing.file=\u53d6\u308a\u8fbc\u3080\u30d5\u30a1\u30a4\u30eb\u5f15\u6570\u304c\u3042\u308a\u307e\u305b\u3093
-jsp.error.include.bad.file=include\u5c5e\u6027\u306e\u30d5\u30a1\u30a4\u30eb\u5f15\u6570\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059
-jsp.error.include.exception={0} \u3092\u53d6\u308a\u8fbc\u3081\u307e\u305b\u3093
-jsp.error.stream.closed=\u30b9\u30c8\u30ea\u30fc\u30e0\u304c\u30af\u30ed\u30fc\u30ba\u3055\u308c\u3066\u3044\u307e\u3059
-jsp.error.invalid.forward=\u7121\u52b9\u306aforward\u30bf\u30b0\u3067\u3059
-jsp.error.unknownException=\u51e6\u7406\u4e0d\u53ef\u80fd\u306a\u30a8\u30e9\u30fc\u3067\u3059! \u3053\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u3092\u3088\u308a\u8a73\u7d30\u306b\u5831\u544a\u3059\u308b\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3092\u6301\u3063\u305f\u65b9\u304c\u3088\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093
-jsp.error.invalid.directive=\u7121\u52b9\u306a\u6307\u793a\u5b50\u3067\u3059
-jsp.error.directive.istagfile={0} \u6307\u793a\u5b50\u306f\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u4e2d\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
-jsp.error.directive.isnottagfile={0} \u6307\u793a\u5b50\u306f\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u4e2d\u3067\u3057\u304b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
-jsp.error.tagfile.tld.name=TLD\u4e2d\u306e\u30bf\u30b0\u6307\u793a\u5b50\u306e\"tag-file\"\u8981\u7d20\u306e\"name\"\u30bf\u30b0\u306f {1} \u3067\u3059\u304c\uff0c\"name\"\u5c5e\u6027\u306f\u5024 {0} \u3092\u6301\u3063\u3066\u3044\u307e\u3059
-jsp.error.action.istagfile={0} \u30a2\u30af\u30b7\u30e7\u30f3\u306f\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u4e2d\u3067\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
-jsp.error.action.isnottagfile={0} \u30a2\u30af\u30b7\u30e7\u30f3\u306f\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u4e2d\u3067\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
-jsp.error.unterminated={0} \u30bf\u30b0\u304c\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093
-jsp.error.usebean.notinsamefile=useBean\u30bf\u30b0\u306f\u3001\u540c\u4e00\u30d5\u30a1\u30a4\u30eb\u4e2d\u3067\u958b\u59cb\u3057\u3001\u7d42\u4e86\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.loadclass.taghandler=\u30bf\u30b0 \"{1}\" \u306b\u30bf\u30b0\u30cf\u30f3\u30c9\u30e9\u30af\u30e9\u30b9 \"{0}\" \u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093
-jsp.error.unable.compile=JSP\u306e\u30af\u30e9\u30b9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3067\u304d\u307e\u305b\u3093
-jsp.error.unable.load=JSP\u306e\u30af\u30e9\u30b9\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093
-jsp.error.unable.rename=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u3092 {1} \u306b\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093
-jsp.error.mandatory.attribute={0}: \u5fc5\u9808\u5c5e\u6027 {1} \u304c\u3042\u308a\u307e\u305b\u3093
-jsp.engine.info=Jasper JSP 2.0\u30a8\u30f3\u30b8\u30f3
-jsp.error.invalid.expression="{0}" \u306f\u7121\u52b9\u306a\u5f0f\u3092\u542b\u3093\u3067\u3044\u307e\u3059: {1}
-jsp.error.invalid.attribute={0}\u306f\u7121\u52b9\u306a\u5c5e\u6027\u3092\u6301\u3063\u3066\u3044\u307e\u3059: {1}
-jsp.error.usebean.class.notfound=\u30af\u30e9\u30b9: {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.file.cannot.read=\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u3081\u307e\u305b\u3093: {0}
-jsp.error.file.already.registered=\u30d5\u30a1\u30a4\u30eb {0} \u306e\u518d\u5e30\u7684\u306a\u53d6\u308a\u8fbc\u307f\u3067\u3059
-jsp.error.file.not.registered=include\u5c5e\u6027\u4e2d\u306e\u30d5\u30a1\u30a4\u30eb {0} \u304c\u5b58\u5728\u3057\u307e\u305b\u3093
-jsp.error.quotes.unterminated=\u5f15\u7528\u7b26\u304c\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093
-jsp.error.attr.quoted=\u5c5e\u6027\u5024\u306f\u5f15\u7528\u7b26\u3067\u56f2\u308f\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.attr.novalue=\u5c5e\u6027 {0} \u306b\u306f\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.tag.attr.unterminated=\u30bf\u30b0\u306e\u5c5e\u6027\u30ea\u30b9\u30c8\u304c\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093
-jsp.error.param.noname=PARAM\u30bf\u30b0\u306bname\u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093
-jsp.error.param.novalue=PARAM\u30bf\u30b0\u306bvalue\u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093
-jsp.error.beans.nullbean=null\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306bBean\u64cd\u4f5c\u3092\u304a\u3053\u306a\u304a\u3046\u3068\u3057\u307e\u3057\u305f
-jsp.error.beans.nobeaninfo=\u30bf\u30a4\u30d7 ''{0}'' \u306eBean\u306bBeanInfo\u304c\u306a\u3044\u306e\u3092\u691c\u51fa\u3057\u307e\u3057\u305f, \u30af\u30e9\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093
-jsp.error.beans.introspection=\u30bf\u30a4\u30d7 ''{1}'' \u306eBean\u4e2d\u306e\u5c5e\u6027 ''{0}'' \u306eread\u30e1\u30bd\u30c3\u30c9\u3092\u5185\u7701\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f:\n{2}
-jsp.error.beans.nomethod=\u30bf\u30a4\u30d7 ''{1}'' \u306eBean\u4e2d\u306e\u5c5e\u6027 ''{0}'' \u3092\u8aad\u307f\u8fbc\u3080\u30e1\u30bd\u30c3\u30c9\u3092\u767a\u898b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
-jsp.error.beans.nomethod.setproperty=\u30bf\u30a4\u30d7''{2}''\u306eBean\u306e\u30bf\u30a4\u30d7 ''{1}'' \u306e\u5c5e\u6027 ''{0}'' \u3092\u66f8\u304d\u8fbc\u3080\u30e1\u30bd\u30c3\u30c9\u3092\u767a\u898b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
-jsp.error.beans.noproperty=\u30bf\u30a4\u30d7 ''{1}'' \u306ebean\u4e2d\u306e\u5c5e\u6027 ''{0}'' \u306e\u60c5\u5831\u3092\u767a\u898b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
-jsp.error.beans.setproperty.noindexset=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4ed8\u304d\u306e\u5c5e\u6027\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093
-jsp.error.include.tag=\u7121\u52b9\u306ajsp:include\u30bf\u30b0\u3067\u3059
-jsp.error.include.noflush=jsp:include\u30bf\u30b0\u306b \"flush=true\" \u3092\u5b9a\u7fa9\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.include.badflush=jsp:include page=\"...\" flush=\"true\" \u306f\u3001JSP 1.0\u3067\u306e\u307f\u6709\u52b9\u306a\u7d44\u307f\u5408\u308f\u305b\u3067\u3059
-jsp.error.attempt_to_clear_flushed_buffer=\u30a8\u30e9\u30fc: \u65e2\u306b\u30d5\u30e9\u30c3\u30b7\u30e5\u3055\u308c\u3066\u3044\u308b\u30d0\u30c3\u30d5\u30a1\u3092\u30af\u30ea\u30a2\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f
-jsp.error.overflow=\u30a8\u30e9\u30fc: JSP\u30d0\u30c3\u30d5\u30a1\u304c\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f
-jsp.error.paramexpected=\"name\"\u5c5e\u6027 \u3068 \"value\" \u5c5e\u6027\u3092\u6301\u3064 \"jsp:param\" \u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.param.invalidUse=jsp:include\u3001jsp:forward\u3001\u53c8\u306fjsp:params\u8981\u7d20\u306e\u5916\u3067jsp:param\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.params.invalidUse=jsp:params\u306fjsp:plugin\u306e\u76f4\u63a5\u306e\u5b50\u4f9b\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.fallback.invalidUse=jsp:fallback\u306fjsp:plugin\u306e\u76f4\u63a5\u306e\u5b50\u4f9b\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.namedAttribute.invalidUse=jsp:attribute\u306f\u6a19\u6e96\u53c8\u306f\u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u526f\u8981\u7d20\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.jspbody.invalidUse=jsp:body\u306f\u6a19\u6e96\u53c8\u306f\u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u526f\u8981\u7d20\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.closeindividualparam=param\u30bf\u30b0\u306f \"/>\" \u3067\u9589\u3058\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.closeparams=param\u30bf\u30b0\u306f/params\u3067\u9589\u3058\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.params.emptyBody=jsp:params\u306f\u5c11\u306a\u304f\u3068\u3082\u4e00\u3064\u306e\u30cd\u30b9\u30c8\u3057\u305fjsp:param\u3092\u542b\u307e\u306d\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.params.illegalChild=jsp:params\u306fjsp:param\u4ee5\u5916\u306e\u30cd\u30b9\u30c8\u3057\u305f\u8981\u7d20\u3092\u542b\u3093\u3067\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.plugin.notype=jsp:plugin\u3067type\u5c5e\u6027\u304c\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.plugin.badtype=jsp:plugin\u306e 'type'\u5c5e\u6027\u306e\u5024\u304c\u7121\u52b9\u3067\u3059: 'bean'\u53c8\u306f'applet'\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.plugin.nocode=jsp:plugin\u3067code\u5c5e\u6027\u304c\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.ise_on_clear=\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\u304c0\u306e\u6642\u306bclear()\u3092\u5b9f\u884c\u3057\u3066\u3082\u7121\u52b9\u3067\u3059
-jsp.error.setproperty.beanNotFound=setProperty: Bean {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.getproperty.beanNotFound=getProperty: Bean {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.setproperty.ClassNotFound=setProperty: \u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-# typo ?
-#jsp.error.setproperty.invalidSayntax=setProperty: property=*\u306e\u5834\u5408\u306fnull\u3067\u306a\u3044\u5024\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093
-jsp.error.setproperty.invalidSyntax=setProperty: property=*\u306e\u5834\u5408\u306fnull\u3067\u306a\u3044\u5024\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093
-jsp.error.setproperty.beanInfoNotFound=setproperty: Bean {0} \u306ebeanInfo\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.setproperty.paramOrValue=setProperty: param\u5c5e\u6027\u304bvalue\u5c5e\u6027\u306e\u3069\u3061\u3089\u304b\u4e00\u3064\u3060\u3051\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059
-jsp.error.setproperty.arrayVal=setProperty: \u5c5e\u6027\u914d\u5217 {0} \u3092\u6587\u5b57\u5217\u5b9a\u6570\u5024\u3067\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093
-jsp.warning.keepgen=\u8b66\u544a: initParam keepgenerated\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \"false\" \u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.xpoweredBy=\u8b66\u544a: Invalid value for the initParam xpoweredBy\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \"false\" \u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.enablePooling=\u8b66\u544a: initParam enablePooling\u304c\u7121\u52b9\u306a\u5024\u3067\u3059\u3002\"true\"\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.invalidTagPoolSize=\u8b66\u544a: tagPoolSize\u306e\u521d\u671f\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u7121\u52b9\u306a\u5024\u3067\u3059\u3002{0}\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30b5\u30a4\u30ba\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.mappedFile=\u8b66\u544a: initParam mappedFile\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \"false\" \u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.sendErrToClient=\u8b66\u544a: initParam sendErrToClient\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \"false\" \u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.classDebugInfo=\u8b66\u544a: initParam classDebugInfo\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \"false\"\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.checkInterval=\u8b66\u544a: initParam checkInterval\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\"300\"\u79d2\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.development=\u8b66\u544a: initParam development\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\"true\"\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.fork=\u8b66\u544a: initParam fork\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\"true\"\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.reloading=\u8b66\u544a: initParam reloading\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\"true\"\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.dumpSmap=\u8b66\u544a: initParam dumpSmap\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\"false\"\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.genchararray=\u8b66\u544a: initParam genStrAsCharArray\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\"false\"\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.warning.suppressSmap=\u8b66\u544a: initParam suppressSmap\u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \"false\" \u3092\u4f7f\u7528\u3057\u307e\u3059
-jsp.error.badtaglib=\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea {0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093: {1}
-jsp.error.badGetReader=\u30b9\u30c8\u30ea\u30fc\u30e0\u304c\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306b\u306f\u3001Reader\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093
-jsp.warning.unknown.element.in.taglib=taglib\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.warning.unknown.element.in.tag=tag\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.warning.unknown.element.in.tagfile=tag-file\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.warning.unknown.element.in.attribute=attribute\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.warning.unknown.element.in.variable=variable\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.warning.unknown.element.in.validator=validator\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.warning.unknown.element.in.initParam=validator\u306einit-param\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.warning.unknown.element.in.function=function\u4e2d\u306b\u672a\u77e5\u306e\u8981\u7d20 ({0}) \u304c\u3042\u308a\u307e\u3059
-jsp.error.more.than.one.taglib=TLD\u306e\u4e2d\u306b\u8907\u6570\u306etaglib\u304c\u5b58\u5728\u3057\u307e\u3059: {0}
-jsp.error.teiclass.instantiation=TagExtraInfo class\u306e\u30ed\u30fc\u30c9\u53c8\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
-jsp.error.non_null_tei_and_var_subelems=\u30bf\u30b0 {0} \u306f\u4e00\u3064\u4ee5\u4e0a\u306evariable\u526f\u8981\u7d20\u3068\u4e00\u3064\u4ee5\u4e0a\u306eVariableInfo\u3092\u8fd4\u3059TagExtraInfo\u30af\u30e9\u30b9\u3092\u6301\u3063\u3066\u3044\u307e\u3059
-jsp.error.parse.error.in.TLD=\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u8a18\u8ff0\u5b50 {0} \u4e2d\u306e\u89e3\u6790\u30a8\u30e9\u30fc\u3067\u3059
-jsp.error.unable.to.open.TLD=\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u8a18\u8ff0\u5b50 {0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093
-jsp.buffer.size.zero=\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\u304c0\u4ee5\u4e0b\u3067\u3059
-jsp.error.file.not.found=JSP \u30d5\u30a1\u30a4\u30eb \"{0}\" \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.message.copyinguri={0} \u3092 {1} \u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059
-jsp.message.htmlcomment=\n\u524a\u9664\u3059\u308b\u30b3\u30e1\u30f3\u30c8: \t{0}
-jsp.message.handling_directive=\n\u51e6\u7406\u3059\u308b\u6307\u793a\u5b50: {0}\t{1}
-jsp.message.handling_plugin=\nPlugin: {0}
-jsp.message.package_name_is=\u30d1\u30c3\u30b1\u30fc\u30b8\u540d: {0}
-jsp.message.class_name_is=\u30af\u30e9\u30b9\u540d: {0}
-jsp.message.java_file_name_is=Java\u30d5\u30a1\u30a4\u30eb\u540d: {0}
-jsp.message.class_file_name_is=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u540d: {0}
-jsp.message.accepted={1} \u3067 {0} \u3092\u53d7\u3051\u5165\u308c\u307e\u3059
-jsp.message.adding_jar=jar {0} \u3092\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u8ffd\u52a0\u3057\u307e\u3059
-jsp.message.compiling_with={0} \u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u4e2d\u3067\u3059
-jsp.message.template_text=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c6\u30ad\u30b9\u30c8
-jsp.error.missing_attribute=TLD\u53c8\u306f\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u308b\u3068\u3001\u5c5e\u6027 {0} \u306f\u30bf\u30b0 {1} \u306b\u306f\u5fc5\u9808\u3067\u3059
-jsp.error.bad_attribute=TLD\u306b\u3088\u308b\u3068\u3001\u30bf\u30b0 {1} \u306e\u5c5e\u6027 {0} \u306f\u7121\u52b9\u3067\u3059
-jsp.error.tld.unable_to_read=JAR\u30d5\u30a1\u30a4\u30eb \"{0}\" \u304b\u3089TLD \"{1}\" \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093: {2}
-jsp.error.tld.unable_to_get_jar=TLD\u3092\u542b\u3080JAR\u30ea\u30bd\u30fc\u30b9 \"{0}\" \u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093 : {1}
-jsp.error.tld.missing_jar=TLD\u3092\u542b\u3080JAR\u30ea\u30bd\u30fc\u30b9 \"{0}\" \u304c\u3042\u308a\u307e\u305b\u3093
-jsp.error.webxml_not_found=web.xml\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.cmd_line.usage=\u4f7f\u7528\u6cd5: [-dd <\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9>] [-keepgenerated] \
-<.jsp\u30d5\u30a1\u30a4\u30eb\u7fa4>
-jsp.message.cp_is=\u30af\u30e9\u30b9\u30d1\u30b9 {0} \u306f {1} \u3067\u3059
-jsp.error.unable.to_load_taghandler_class=\u30bf\u30b0\u30cf\u30f3\u30c9\u30e9\u30af\u30e9\u30b9 {0} \u3092 {1} \u306e\u305f\u3081\u306b\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093
-jsp.error.unable.to_find_method=\u5c5e\u6027 {0} \u306esetter\u30e1\u30bd\u30c3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.unable.to_convert_string=\u5c5e\u6027 {1}\u306e\u6587\u5b57\u5217\u3092 {0}\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093
-jsp.error.unable.to_introspect=\u30bf\u30b0\u30cf\u30f3\u30c9\u30e9\u30af\u30e9\u30b9 {0} \u3092 {1} \u306e\u305f\u3081\u306b\u5185\u7701\u3067\u304d\u307e\u305b\u3093
-jsp.error.bad_tag=\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9 {1}\u3067\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u306f\u3001\u30bf\u30b0 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093
-jsp.error.xml.bad_tag=URI \"{1}\" \u306b\u95a2\u9023\u3065\u3051\u3089\u308c\u305f\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4e2d\u306b\u306f\u30bf\u30b0 \"{0}\" \u306f\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.bad_string_Character=\u9577\u30550\u306e\u914d\u5217\u304b\u3089\u306f\u6587\u5b57\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093
-jsp.error.bad_string_char=\u9577\u30550\u306e\u914d\u5217\u304b\u3089\u306f\u6587\u5b57\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093
-jsp.warning.compiler.class.cantcreate=\u6307\u5b9a\u3055\u308c\u305f\u30b3\u30f3\u30d1\u30a4\u30e9\u30d7\u30e9\u30b0\u30a4\u30f3\u30af\u30e9\u30b9 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092 {1} \u306e\u305f\u3081\u306b\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3092Sun\u306eJava\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u3057\u307e\u3059\u3002
-jsp.warning.compiler.class.notfound=\u6307\u5b9a\u3055\u308c\u305f\u30b3\u30f3\u30d1\u30a4\u30e9\u30d7\u30e9\u30b0\u30a4\u30f3\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002not found. \u30c7\u30d5\u30a9\u30eb\u30c8\u3092Sun\u306eJava\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u3057\u307e\u3059\u3002
-jsp.warning.compiler.path.notfound=\u6307\u5b9a\u3055\u308c\u305f\u30b3\u30f3\u30d1\u30a4\u30e9\u30d1\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u30b7\u30b9\u30c6\u30e0\u306ePATH\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u3057\u307e\u3059\u3002
-jsp.error.jspc.uriroot_not_dir=-uriroot \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u65e2\u306b\u5b58\u5728\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.jspc.missingTarget=\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093: -webapp\u53c8\u306f-uriroot\uff0c\u53c8\u306f\u4e00\u3064\u4ee5\u4e0a\u306eJSP\u30da\u30fc\u30b8\u3092\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.jspc.no_uriroot=uriroot\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u6307\u5b9a\u3055\u308c\u305fJSP\u30d5\u30a1\u30a4\u30eb(\u7fa4)\u3092\u914d\u7f6e\u3067\u304d\u307e\u305b\u3093
-jspc.implicit.uriRoot=uriRoot\u306f\u30c7\u30d5\u30a9\u30eb\u30c8"{0}"\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059
-jspc.usage=\u4f7f\u7528\u6cd5: jspc <options> [--] <jsp files>\n\
-JSP\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240\u306f\u6b21\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u6307\u5b9a\u3059\u308b\u304b\u3001\n\
-\ -webapp <dir> web-app\u3092\u542b\u3080\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002\u3059\u3079\u3066\u306eJSP\u30d5\u30a1\u30a4\u30eb\u306f\n\
-\ \u518d\u5e30\u7684\u306b\u89e3\u6790\u3055\u308c\u308b\n\
-\u53c8\u306f\u6b21\u306e\u4efb\u610f\u306e\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u6307\u5b9a\u3057\u307e\u3059\u3002\n\
-\ <file> JSP\u3068\u3057\u3066\u89e3\u6790\u3055\u308c\u308b\u30d5\u30a1\u30a4\u30eb\n\
-\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\n\
-\ -help \u3053\u306e\u30d8\u30eb\u30d7\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8868\u793a\n\
-\ -v Verbose\u30e2\u30fc\u30c9\n\
-\ -d <dir> \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n\
-\ -l \u5931\u6557\u3057\u305fJSP\u30da\u30fc\u30b8\u306e\u540d\u524d\u306e\u51fa\u529b\n\
-\ -s \u6210\u529f\u3057\u305fJSP\u30da\u30fc\u30b8\u306e\u540d\u524d\u306e\u51fa\u529b\n\
-\ -p <name> \u30bf\u30fc\u30b2\u30c3\u30c8\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u540d\u524d (\u30c7\u30d5\u30a9\u30eb\u30c8\u306forg.apache.jsp)\n\
-\ -c <name> \u30bf\u30fc\u30b2\u30c3\u30c8\u30af\u30e9\u30b9\u306e\u540d\u524d (\u6700\u521d\u306eJSP\u30da\u30fc\u30b8\u3060\u3051\u306b\u9069\u7528\u3055\u308c\u308b)\n\
-\ -mapped JSP\u306e\u5404HTML\u884c\u3054\u3068\u306bwrite()\u30b3\u30fc\u30eb\u3092\u751f\u6210\n\
-\ -die[#] \u81f4\u547d\u7684\u30a8\u30e9\u30fc\u306b\u30a8\u30e9\u30fc\u30ea\u30bf\u30fc\u30f3\u30b3\u30fc\u30c9(#)\u3092\u751f\u6210 (\u30c7\u30d5\u30a9\u30eb\u30c8\u306f1)\n\
-\ -uribase <dir> \u30b3\u30f3\u30d1\u30a4\u30eb\u304c\u76f8\u5bfe\u7684\u306b\u304a\u3053\u306a\u308f\u308c\u308buri\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n\
-\ (\u30c7\u30d5\u30a9\u30eb\u30c8\u306f"/")\n\
-\ -uriroot <dir> -webapp\u3068\u540c\u3058\n\
-\ -compile \u751f\u6210\u3057\u305f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\n\
-\ -webinc <file> \u30d5\u30a1\u30a4\u30eb\u306b\u90e8\u5206\u7684\u306a\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u4f5c\u6210\n\
-\ -webxml <file> \u30d5\u30a1\u30a4\u30eb\u306b\u5b8c\u5168\u306aweb.xml\u3092\u4f5c\u6210\n\
-\ -ieplugin <clsid> Internet Explorer\u306eJava Plugin\u306eclassid\n\
-\ -classpath <path> java.class.path\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u4e0a\u66f8\u304d\n\
-\ -xpoweredBy X-Powered-By\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u306e\u8ffd\u52a0\n\
-\ -trimSpaces \u30a2\u30af\u30b7\u30e7\u30f3\u3084\u6307\u793a\u5b50\u306e\u9593\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c6\u30ad\u30b9\u30c8\u4e2d\u306e\u30b9\u30da\u30fc\u30b9\u3092\u524a\u9664\n\
-\ -trimSpaces Trim spaces in template text between actions, directives\n\
-\ -javaEncoding <enc> Set the encoding charset for Java classes (default UTF-8)\n\
-\ -source <version> Set the -source argument to the compiler (default 1.4)\n\
-\ -target <version> Set the -target argument to the compiler (default 1.4)\n\
-
-jspc.webxml.header=<?xml version="1.0" encoding="ISO-8859-1"?>\n\
-\n\
-<!DOCTYPE web-app\n\
-\ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"\n\
-\ "http://java.sun.com/dtd/web-app_2_3.dtd">\n\
-<!--\n\
-Automatically created by Apache Jakarta Tomcat JspC.\n\
--->\n\
-<web-app>\n\
-\n
-jspc.webxml.footer=\n\
-</web-app>\n\
-\n
-jspc.webinc.header=\n\
-<!--\n\
-Automatically created by Apache Jakarta Tomcat JspC.\n\
-Place this fragment in the web.xml before all icon, display-name,\n\
-description, distributable, and context-param elements.\n\
--->\n
-jspc.webinc.footer=\n\
-<!--\n\
-All session-config, mime-mapping, welcome-file-list, error-page, taglib,\n\
-resource-ref, security-constraint, login-config, security-role,\n\
-env-entry, and ejb-ref elements should follow this fragment.\n\
--->\n
-jspc.webinc.insertEnd=<!-- JSPC servlet mappings end -->
-jspc.webinc.insertStart=<!-- JSPC servlet mappings start -->
-jspc.error.jasperException=\u30a8\u30e9\u30fc: \u30d5\u30a1\u30a4\u30eb ''{0}'' \u306f\u6b21\u306e\u4f8b\u5916\u3092\u767a\u751f\u3057\u307e\u3057\u305f: {1}
-jspc.error.generalException=\u30a8\u30e9\u30fc: \u30d5\u30a1\u30a4\u30eb ''{0}'' \u306f\u6b21\u306e\u4f8b\u5916\u3092\u767a\u751f\u3057\u307e\u3057\u305f:
-jspc.error.fileDoesNotExist=\u30d5\u30a1\u30a4\u30eb\u5f15\u6570 ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-jspc.error.emptyWebApp=-webapp\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.library.invalid=\u30e9\u30a4\u30d6\u30e9\u30ea{0}\u306b\u5f93\u3046\u3068JSP\u30da\u30fc\u30b8\u306f\u7121\u52b9\u3067\u3059: {1}
-jsp.error.tlvclass.instantiation=TagLibraryValidator\u30af\u30e9\u30b9\u306e\u30ed\u30fc\u30c9\u53c8\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}
-jsp.error.tlv.invalid.page={0} \u306b\u5bfe\u3059\u308bTagLibraryValidator\u306e\u691c\u8a3c\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3059 ({1})
-jsp.error.tei.invalid.attributes={0} \u306b\u5bfe\u3059\u308bTagExtraInfo\u304b\u3089\u306e\u691c\u8a3c\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3059
-jsp.parser.sax.propertynotsupported=SAX\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093: {0}
-jsp.parser.sax.propertynotrecognized=SAX\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093: {0}
-jsp.parser.sax.featurenotsupported=SAX\u30d5\u30a3\u30fc\u30c1\u30e3\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093: {0}
-jsp.parser.sax.featurenotrecognized=SAX\u30d5\u30a3\u30fc\u30c1\u30e3\u304c\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093: {0}
-jsp.error.no.more.content=\u5fc5\u8981\u306a\u89e3\u6790\u4e2d\u306b\u5185\u5bb9\u306e\u6700\u5f8c\u307e\u3067\u9054\u3057\u307e\u3057\u305f: \u30bf\u30b0\u306e\u30cd\u30b9\u30c8\u306e\u30a8\u30e9\u30fc\u304b\u3082\u3057\u308c\u307e\u305b\u3093
-jsp.error.parse.xml=\u30d5\u30a1\u30a4\u30eb{0}\u306eXML\u89e3\u6790\u30a8\u30e9\u30fc
-jsp.error.parse.xml.line=\u30d5\u30a1\u30a4\u30eb{0}\u306eXML\u89e3\u6790\u30a8\u30e9\u30fc: (\u884c {1}, \u5217 {2})
-jsp.error.parse.xml.scripting.invalid.body={0} \u8981\u7d20\u306e\u30dc\u30c7\u30a3\u306fXML\u8981\u7d20\u3092\u542b\u3093\u3067\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.internal.tldinit=TldLocationsCache\u3092\u521d\u671f\u5316\u4e2d\u306e\u4f8b\u5916\u3067\u3059: {0}
-jsp.error.internal.filenotfound=\u5185\u90e8\u30a8\u30e9\u30fc: \u30d5\u30a1\u30a4\u30eb {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.internal.evaluator_not_found=\u5185\u90e8\u30a8\u30e9\u30fc: \u5f0f\u691c\u8a3c\u5668\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093
-jsp.error.parse.xml.invalidPublicId=\u7121\u52b9\u306aPUBLIC ID: {0}
-jsp.error.include.flush.invalid.value=flush\u5c5e\u6027\u306b\u7121\u52b9\u306a\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059: {0}
-jsp.error.unsupported.encoding=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u3059: {0}
-tld.error.variableNotAllowed=null\u3067\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3059TagExtraInfo\u3092\u6301\u3064\u4e00\u3064\u4ee5\u4e0a\u306e\u5909\u6570\u526f\u8981\u7d20\u3092\u6301\u3064\u30bf\u30b0\u306f\u30a8\u30e9\u30fc\u3067\u3059\u3002
-jsp.error.tldInWebDotXmlNotFound=web.xml\u3067\u6307\u5b9a\u3055\u308c\u305fURI {0} \u306bTLD\u3092\u914d\u7f6e\u3067\u304d\u307e\u305b\u3093
-jsp.error.taglibDirective.absUriCannotBeResolved=\u7d76\u5bfeURI: {0} \u306fweb.xml\u3068\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u914d\u5099\u3057\u305fJAR\u30d5\u30a1\u30a4\u30eb\u306e\u3069\u3061\u3089\u304b\u3067\u3082\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093
-jsp.error.taglibDirective.missing.location=taglib\u6307\u793a\u5b50\u306e\u4e2d\u306b'uri'\u5c5e\u6027\u3068'tagdir'\u5c5e\u6027\u306e\u3069\u3061\u3089\u3082\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.taglibDirective.both_uri_and_tagdir=\'uri\'\u5c5e\u6027 \u3068 \'tagdir\'\u5c5e\u6027\u306e\u4e21\u65b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059
-jsp.error.invalid.tagdir=\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u304c\"/WEB-INF/tags\"\u3067\u59cb\u307e\u308a\u307e\u305b\u3093
-jsp.error.unterminated.user.tag=\u672a\u7d42\u4e86\u306e\u30e6\u30fc\u30b6\u5b9a\u7fa9\u30bf\u30b0: \u7d42\u4e86\u30bf\u30b0 {0} \u304c\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u3001\u30cd\u30b9\u30c8\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059
-#jspx.error.templateDataNotInJspCdata=Validation Error: Element <{0}> cannot have template data. Template data must be encapsulated within a <jsp:cdata> element. [JSP1.2 PFD section 5.1.9]\nTemplate data in error: {1}
-jspx.error.templateDataNotInJspCdata=\u8a3c\u660e\u30a8\u30e9\u30fc: \u8981\u7d20<{0}>\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c7\u30fc\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c7\u30fc\u30bf\u306f\u3001<jsp:text>\u8981\u7d20\u306e\u4e2d\u3067\u96a0\u853d\u3055\u308c\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002[JSP1.2 PFD 5.1.9]\n\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c7\u30fc\u30bf\u306e\u30a8\u30e9\u30fc\u3067\u3059: {1}
-#Error while processing taglib jar file {0}: {1}
-jsp.error.taglib.reserved.prefix=taglib\u30d7\u30ea\u30d5\u30a3\u30af\u30b9 {0} \u306f\u4e88\u7d04\u3055\u308c\u3066\u3044\u307e\u3059
-jsp.error.invalid.javaEncoding=\u7121\u52b9\u306aJava\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u3059\u3002{0}\u3092\u8a66\u3057\u3066\u3001\u305d\u308c\u304b\u3089{1}\u3092\u8a66\u3057\u307e\u3057\u305f\u304c\u3001\u4e21\u65b9\u304c\u5931\u6557\u3057\u307e\u3057\u305f
-jsp.error.needAlternateJavaEncoding=\u30c7\u30d5\u30a9\u30eb\u30c8\u306eJava\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 {0} \u306f\u3042\u306a\u305f\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u306f\u7121\u52b9\u3067\u3059\u3002JspServlet\u306e 'javaEncoding' \u30d1\u30e9\u30e1\u30bf\u3067\u3001\u5225\u306e\u5024\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
-#Error when compiling, used for jsp line number error messages
-jsp.error.single.line.number=JSP\u30d5\u30a1\u30a4\u30eb: {1} \u306e\u4e2d\u306e{0}\u884c\u76ee\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
-jsp.error.multiple.line.number=\n\nJPS\u30d5\u30a1\u30a4\u30eb: {2}\u306e\u4e2d\u306e{0}\u884c\u76ee\u3068{1}\u884c\u76ee\u306e\u9593\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\n\n
-jsp.error.corresponding.servlet=\u751f\u6210\u3055\u308c\u305f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30a8\u30e9\u30fc\u3067\u3059:\n
-jsp.error.empty.body.not.allowed={0} \u306b\u5bfe\u3057\u3066\u7a7a\u306e\u30dc\u30c7\u30a3\u306f\u8a31\u3055\u308c\u307e\u305b\u3093
-jsp.error.jspbody.required=jsp:attribute\u304c\u4f7f\u7528\u3055\u308c\u305f\u5834\u5408\u306b\u306f\u3001{0}\u306b\u30bf\u30b0\u30dc\u30c7\u30a3\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306bjsp:body\u3092\u4f7f\u7528\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.jspbody.emptybody.only={0} \u30bf\u30b0\u306f\u3001\u305d\u306e\u30dc\u30c7\u30a3\u4e2d\u306bjsp:attribute\u3060\u3051\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059
-jsp.error.no.scriptlets=\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0\u8981\u7d20 ( <%!\u3001<jsp:declaration\u3001<%=\u3001<jsp:expression\u3001<%\u3001<jsp:scriptlet ) \u306f\u3053\u3053\u3067\u306f\u8a31\u3055\u308c\u307e\u305b\u3093
-jsp.error.internal.unexpected_node_type=\u5185\u90e8\u30a8\u30e9\u30fc: \u672a\u77e5\u306e\u30ce\u30fc\u30c9\u30bf\u30a4\u30d7\u304c\u8868\u308c\u307e\u3057\u305f
-jsp.error.tld.fn.invalid.signature=TLD\u306e\u4e2d\u306e\u95a2\u6570\u30b7\u30b0\u30cd\u30c1\u30e3\u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u69cb\u6587\u3067\u3059\u3002\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea: {0}\u3001\u95a2\u6570: {1}
-jsp.error.tld.fn.duplicate.name=\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea {1} \u306e\u4e2d\u306e\u95a2\u6570\u540d {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059
-jsp.error.tld.fn.invalid.signature.commaexpected=TLD\u306e\u4e2d\u306e\u95a2\u6570\u30b7\u30b0\u30cd\u30c1\u30e3\u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u69cb\u6587\u3067\u3059\u3002\u30b3\u30f3\u30de ',' \u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea: {0}\u3001\u95a2\u6570: {1}\u3002
-jsp.error.tld.fn.invalid.signature.parenexpected=TLD\u306e\u4e2d\u306e\u95a2\u6570\u30b7\u30b0\u30cd\u30c1\u30e3\u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u69cb\u6587\u3067\u3059\u3002\u62ec\u5f27 '(' \u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea: {0}\u3001\u95a2\u6570: {1}\u3002
-jsp.error.tld.mandatory.element.missing=\u5fc5\u9808TLD\u8981\u7d20\u304c\u306a\u3044\u3001\u53c8\u306f\u7a7a\u3067\u3059: {0}
-jsp.error.dynamic.attributes.not.implemented={0} \u30bf\u30b0\u306f\u305d\u308c\u304cdynamic\u5c5e\u6027\u3092\u53d7\u3051\u4ed8\u3051\u308b\u3068\u5ba3\u8a00\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u305d\u308c\u306b\u5fc5\u8981\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u305b\u3093
-jsp.error.nomatching.fragment=attribute\u6307\u793a\u5b50 (name={0}\u304a\u3088\u3073fragment=true\u3092\u6301\u3064) \u304cfragment\u6307\u793a\u5b50\u3088\u308a\u524d\u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.attribute.noequal=\u7b49\u53f7\u8a18\u53f7\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.attribute.noquote=\u5f15\u7528\u7b26\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.attribute.unterminated={0} \u306e\u5c5e\u6027\u304c\u6b63\u3057\u304f\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093
-jsp.error.missing.tagInfo={0} \u306b\u5bfe\u3059\u308bTagInfo\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304cTLD\u304b\u3089\u5931\u308f\u308c\u307e\u3057\u305f
-jsp.error.fragmentwithtype='fragment'\u5c5e\u6027\u3068'type'\u5c5e\u6027\u3092\u4e21\u65b9\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002'fragment'\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306b\u306f'type'\u306f'javax.servlet.jsp.tagext.JspFragment'\u306b\u56fa\u5b9a\u3055\u308c\u307e\u3059
-jsp.error.fragmentwithrtexprvalue='fragment'\u5c5e\u6027\u3068'rtexprvalue'\u5c5e\u6027\u3092\u4e21\u65b9\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002'fragment'\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306b\u306f'rtexprvalue'\u306f'true'\u306b\u56fa\u5b9a\u3055\u308c\u307e\u3059
-jsp.error.fragmentWithDeclareOrScope='fragment'\u5c5e\u6027\u3068'declare'\u5c5e\u6027\u306e\u4e21\u65b9\u53c8\u306f'scope'\u5c5e\u6027\u304cvariable\u6307\u793a\u5b50\u4e2d\u3067\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059
-jsp.error.var_and_varReader=\'var\'\u53c8\u306f\'varReader\'\u306e\u3069\u3061\u3089\u304b\u4e00\u3064\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059
-jsp.error.missing_var_or_varReader=\'var\'\u53c8\u306f\'varReader\'\u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093
-jsp.warning.bad.urlpattern.propertygroup=web.xml\u4e2d\u306eurl-pattern\u526f\u8981\u7d20\u4e2d\u306b\u8aa4\u3063\u305f\u5024 {0} \u304c\u3042\u308a\u307e\u3059
-jsp.error.unknown_attribute_type=\u5c5e\u6027 {0} \u306b\u5bfe\u3059\u308b\u672a\u77e5\u306e\u5c5e\u6027\u30bf\u30a4\u30d7\u3067\u3059
-jsp.error.jspelement.missing.name=\u5fc5\u9808\u306eXML\u30b9\u30bf\u30a4\u30eb\u306e'name'\u5c5e\u6027\u304cjsp:element\u4e2d\u306b\u3042\u308a\u307e\u305b\u3093
-jsp.error.xmlns.redefinition.notimplemented=\u5185\u90e8\u30a8\u30e9\u30fc: xmlns:{0}\u3092\u518d\u5b9a\u7fa9\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u540d\u524d\u7a7a\u9593\u306e\u518d\u5b9a\u7fa9\u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-jsp.error.could.not.add.taglibraries=1\u3064\u4ee5\u4e0a\u306e\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093
-jsp.error.duplicate.name.jspattribute=\u6a19\u6e96\u53c8\u306f\u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30b7\u30e7\u30f3\u4e2d\u3067\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u5c5e\u6027 {0} \u306f\u305d\u308c\u306b\u56f2\u307e\u308c\u305fjsp:attribute\u4e2d\u306ename\u5c5e\u6027\u306e\u5024\u3068\u3057\u3066\u3082\u8868\u308c\u307e\u3059
-jsp.error.not.in.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c6\u30ad\u30b9\u30c8\u30dc\u30c7\u30a3\u4e2d\u3067\u306f {0} \u306f\u8a31\u3055\u308c\u307e\u305b\u3093
-jsp.error.badStandardAction=\u7121\u52b9\u306a\u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3059
-jsp.error.xml.badStandardAction=\u7121\u52b9\u306a\u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3059: {0}
-jsp.error.tagdirective.badbodycontent=tag\u6307\u793a\u5b50\u4e2d\u306e\u7121\u52b9\u306abody-content ({0})\u3067\u3059
-jsp.error.simpletag.badbodycontent=\u30af\u30e9\u30b9 {0} \u306eTLD\u306fSimpleTag\u306b\u7121\u52b9\u306abody-content (JSP)\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059
-jsp.error.config_pagedir_encoding_mismatch=jsp-property-group\u4e2d\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308bPage-encoding ({0}) \u304cpage\u6307\u793a\u5b50\u4e2d\u306e\u6307\u5b9a ({1}) \u3068\u9055\u3044\u307e\u3059
-jsp.error.prolog_pagedir_encoding_mismatch=XML\u5c0e\u5165\u90e8\u3067\u6307\u5b9a\u3055\u308c\u305fpage-encoding ({0}) \u304cpage\u6307\u793a\u5b50\u4e2d\u306e\u6307\u5b9a ({1}) \u3068\u9055\u3044\u307e\u3059
-jsp.error.prolog_config_encoding_mismatch=XML\u5c0e\u5165\u90e8\u3067\u6307\u5b9a\u3055\u308c\u305fpage-encoding ({0}) \u304cjsp-property-group\u4e2d\u306e\u6307\u5b9a\u3068\u9055\u3044\u307e\u3059 ({1})
-jsp.error.attribute.custom.non_rt_with_expr=TLD\u53c8\u306f\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u4e2d\u306eattribute\u6307\u793a\u5b50\u306b\u5f93\u3063\u3066\u5c5e\u6027{0}\u306f\u3069\u3093\u306a\u5f0f\u3082\u53d7\u3051\u4ed8\u3051\u307e\u305b\u3093
-jsp.error.attribute.standard.non_rt_with_expr={1} \u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u306e {0} \u5c5e\u6027\u306f\u3069\u3093\u306a\u5f0f\u3082\u53d7\u3051\u4ed8\u3051\u307e\u305b\u3093
-jsp.error.scripting.variable.missing_name=\u5c5e\u6027 {0} \u304b\u3089\u30b9\u30af\u30ea\u30d7\u30c8\u5909\u6570\u540d\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u305b\u3093
-jasper.error.emptybodycontent.nonempty=TLD\u306b\u5f93\u3063\u3066\u30bf\u30b0 {0} \u306f\u7a7a\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u304c\u3001\u305d\u3046\u3067\u306f\u3042\u308a\u307e\u305b\u3093
-jsp.error.tagfile.nameNotUnique={2}\u884c\u76ee\u306e {0} \u306e\u5024\u3068 {1} \u306e\u5024\u306f\u540c\u3058\u3067\u3059
-jsp.error.tagfile.nameFrom.noAttribute=\u3053\u306ename-from-attribute\u5c5e\u6027\u306e\u5024\u3067\u3042\u308b\u5024 \"{0}\" \u306ename\u5c5e\u6027\u3092\u6301\u3064attribute\u6307\u793a\u5b50\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.tagfile.nameFrom.badAttribute=attribute\u6307\u793a\u5b50 ({1}\u884c\u76ee\u3067\u5ba3\u8a00\u3055\u308c\u3001\u305d\u306ename\u5c5e\u6027\u304c\"{0}\"\u3001\u3053\u306ename-from-attribute\u5c5e\u6027\u306e\u5024) \u306fjava.lang.String\u578b\u306e\"required\" \u3067 \"rtexprvalue\".\u3067\u3042\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.page.noSession=\u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u52a0\u308f\u3063\u3066\u3044\u306a\u3044\u30da\u30fc\u30b8\u306e\u4e2d\u3067\u306f\u30bb\u30c3\u30b7\u30e7\u30f3\u30b9\u30b3\u30fc\u30d7\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093
-jsp.error.useBean.noSession=JSP\u30da\u30fc\u30b8\u304c(page\u6307\u793a\u5b50\u306b\u3088\u308a)\u30bb\u30c3\u30b7\u30e7\u30f3\u4e2d\u3067\u5354\u8abf\u3057\u306a\u3044\u3053\u3068\u3092\u5ba3\u8a00\u3057\u3066\u3044\u308b\u6642\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u30b9\u30b3\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306euseBean\u304c\u4e0d\u6b63\u3067\u3059
-jsp.error.xml.encodingByteOrderUnsupported = \u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 \"{0}\" \u306b\u6307\u5b9a\u3055\u308c\u305f\u30d0\u30a4\u30c8\u30aa\u30fc\u30c0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.xml.encodingDeclInvalid = \u7121\u52b9\u306a\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u540d \"{0}\" \u3067\u3059
-jsp.error.xml.encodingDeclRequired = \u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u4e2d\u306b\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u5ba3\u8a00\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.morePseudoAttributes = \u3088\u308a\u591a\u304f\u306e\u7591\u4f3c\u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.noMorePseudoAttributes = \u3053\u308c\u4ee5\u4e0a\u306e\u7591\u4f3c\u5c5e\u6027\u306f\u8a31\u3055\u308c\u307e\u305b\u3093
-jsp.error.xml.versionInfoRequired = XML\u5ba3\u8a00\u306e\u4e2d\u306b\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.xmlDeclUnterminated = XML\u5ba3\u8a00\u306f\"?>\"\u3067\u7d42\u3089\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.xml.reservedPITarget = \"[xX][mM][lL]\"\u306b\u4e00\u81f4\u3059\u308b\u51e6\u7406\u547d\u4ee4\u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u8a31\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.xml.spaceRequiredInPI = \u7a7a\u767d\u304c\u51e6\u7406\u547d\u4ee4\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u30c7\u30fc\u30bf\u306e\u9593\u306b\u5fc5\u8981\u3067\u3059
-jsp.error.xml.invalidCharInContent = \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u7121\u52b9\u306aXML\u6587\u5b57 (Unicode: 0x{0}) \u304c\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u8981\u7d20\u5185\u5bb9\u306e\u4e2d\u306b\u898b\u3064\u304b\u308a\u307e\u3057\u305f
-jsp.error.xml.spaceRequiredBeforeStandalone = XML\u5ba3\u8a00\u306eencoding\u7591\u4f3c\u5c5e\u6027\u306e\u524d\u306b\u7a7a\u767d\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.sdDeclInvalid = \u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u6587\u66f8\u5ba3\u8a00\u5024\u306f\"yes\"\u53c8\u306f\"no\"\u306e\u3069\u3061\u3089\u304b\u3067\u3042\u308a\u3001\"{0}\"\u3067\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.xml.invalidCharInPI = \u7121\u52b9\u306aXML\u6587\u5b57 (Unicode: 0x{0}) \u304c\u547d\u4ee4\u51e6\u7406\u4e2d\u306b\u898b\u3064\u304b\u308a\u307e\u3057\u305f
-jsp.error.xml.versionNotSupported = XML\u30d0\u30fc\u30b8\u30e7\u30f3 \"{0}\" \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3001XML 1.0\u3060\u3051\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059
-jsp.error.xml.pseudoAttrNameExpected = \u7591\u4f3c\u5c5e\u6027\u540d\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.expectedByte ={1}\u30d0\u30a4\u30c8UTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u30d0\u30a4\u30c8 {0} \u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.invalidByte = {1}\u30d0\u30a4\u30c8UTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u7121\u52b9\u306a\u30d0\u30a4\u30c8 {0} \u3067\u3059
-jsp.error.xml.operationNotSupported = {1} reader\u306f\u64cd\u4f5c \"{0}\" \u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093
-jsp.error.xml.invalidHighSurrogate = UTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u30cf\u30a4\u30b5\u30ed\u30b2\u30fc\u30c8\u30d3\u30c3\u30c8\u306f0x10\u3092\u8d8a\u3048\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u304c\u30010x{0}\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f
-jsp.error.xml.invalidASCII = \u30d0\u30a4\u30c8 \"{0}\" \u306f7\u30d3\u30c3\u30c8ASCII\u3067\u306f\u3042\u308a\u307e\u305b\u3093
-jsp.error.xml.spaceRequiredBeforeEncodingInXMLDecl = XML\u5ba3\u8a00\u306eencoding\u7591\u4f3c\u5c5e\u6027\u306e\u524d\u306b\u7a7a\u767d\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.spaceRequiredBeforeEncodingInTextDecl = \u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u306eencoding\u7591\u4f3c\u5c5e\u6027\u306e\u524d\u306b\u7a7a\u767d\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.spaceRequiredBeforeVersionInTextDecl = \u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u306eversion\u7591\u4f3c\u5c5e\u6027\u306e\u524d\u306b\u7a7a\u767d\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.spaceRequiredBeforeVersionInXMLDecl = XML\u5ba3\u8a00\u306eversion\u7591\u4f3c\u5c5e\u6027\u306e\u524d\u306b\u7a7a\u767d\u304c\u5fc5\u8981\u3067\u3059
-jsp.error.xml.eqRequiredInXMLDecl = XML\u5ba3\u8a00\u4e2d\u3067\"{0}\"\u306e\u6b21\u306b'' = '' \u6587\u5b57\u304c\u7d9a\u304b\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.xml.eqRequiredInTextDecl = \u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u4e2d\u3067\"{0}\"\u306e\u6b21\u306b'' = ''\u6587\u5b57\u304c\u7d9a\u304b\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.xml.quoteRequiredInTextDecl = \u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u4e2d\u306e\"{0}\"\u306b\u7d9a\u304f\u5024\u306f\u30af\u30aa\u30fc\u30c8\u3067\u56f2\u307e\u308c\u305f\u6587\u5b57\u5217\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.xml.quoteRequiredInXMLDecl = XML\u5ba3\u8a00\u4e2d\u306e\"{0}\"\u306b\u7d9a\u304f\u5024\u306f\u30af\u30aa\u30fc\u30c8\u3067\u56f2\u307e\u308c\u305f\u6587\u5b57\u5217\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.xml.invalidCharInTextDecl = \u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u306e\u4e2d\u306b\u7121\u52b9\u306aXML\u6587\u5b57 (Unicode: 0x{0}) \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f
-jsp.error.xml.invalidCharInXMLDecl = XML\u5ba3\u8a00\u306e\u4e2d\u306b\u7121\u52b9\u306aXML\u6587\u5b57 (Unicode: 0x{0}) \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f
-jsp.error.xml.closeQuoteMissingInTextDecl = \u30c6\u30ad\u30b9\u30c8\u5ba3\u8a00\u4e2d\u306e\"{0}\"\u306b\u7d9a\u304f\u5024\u306e\u4e2d\u306e\u6700\u5f8c\u306e\u30af\u30aa\u30fc\u30c8\u304c\u3042\u308a\u307e\u305b\u3093
-jsp.error.xml.closeQuoteMissingInXMLDecl = XML\u5ba3\u8a00\u4e2d\u306e\"{0}\"\u306b\u7d9a\u304f\u5024\u306e\u4e2d\u306e\u6700\u5f8c\u306e\u30af\u30aa\u30fc\u30c8\u304c\u3042\u308a\u307e\u305b\u3093
-jsp.error.xml.invalidHighSurrogate = UTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u30cf\u30a4\u30b5\u30ed\u30b2\u30fc\u30c8\u30d3\u30c3\u30c8\u306f0x10\u3092\u8d8a\u3048\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u304c\u30010x{0}\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f
-jsp.error.multiple.jsp = \u8907\u6570\u306e\u4ed5\u69d8\u3092\u6e80\u305f\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
-jsp.error.jspoutput.conflict=<jsp:output>: \"{0}\"\u306b\u7570\u306a\u308b\u5024\u3092\u8907\u6570\u56de\u6307\u5b9a\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059 (\u65e7: {1}, \u65b0: {2})
-jsp.error.jspoutput.doctypenamesystem=<jsp:output>: 'doctype-root-element' \u53ca\u3073 'doctype-system' \u5c5e\u6027\u306f\u540c\u6642\u306b\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.jspoutput.doctypepulicsystem=<jsp:output>: 'doctype-public'\u5c5e\u6027\u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\u306f\u3001'doctype-system' \u5c5e\u6027\u3082\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.jspoutput.nonemptybody=<jsp:output> \u30dc\u30c7\u30a3\u3092\u6301\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.jspoutput.invalidUse=<jsp:output> \u6a19\u6e96\u69cb\u6587\u306e\u4e2d\u3067\u4f7f\u7528\u3057\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.attributes.not.allowed = {0} \u306f\u5c5e\u6027\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
-jsp.error.tagfile.badSuffix=\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 {0} \u306e\u4e2d\u306b\".tag\" \u62e1\u5f35\u5b50\u304c\u3042\u308a\u307e\u305b\u3093
-jsp.error.tagfile.illegalPath=\u4e0d\u6b63\u306a\u30bf\u30b0\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3067\u3059: {0}\u3001\u3053\u308c\u306f\"/WEB-INF/tags\"\u53c8\u306f\"/META-INF/tags\"\u3067\u59cb\u307e\u3089\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.plugin.wrongRootElement={0} \u306e\u4e2d\u306e\u30eb\u30fc\u30c8\u8981\u7d20\u306e\u540d\u524d\u306f {1} \u3067\u306f\u3042\u308a\u307e\u305b\u3093
-jsp.error.attribute.invalidPrefix=\u5c5e\u6027\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9 {0} \u306f\u3069\u306e\u53d6\u308a\u8fbc\u307e\u308c\u305f\u30bf\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3082\u5bfe\u5fdc\u3057\u307e\u305b\u3093
-jsp.error.nested.jspattribute=jsp:attribute\u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u5225\u306ejsp:attribute\u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u7bc4\u56f2\u5185\u3067\u30cd\u30b9\u30c8\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
-jsp.error.nested.jspbody=jsp:body\u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u5225\u306ejsp:body\u53c8\u306fjsp:attribute\u6a19\u6e96\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u7bc4\u56f2\u5185\u3067\u30cd\u30b9\u30c8\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
-jsp.error.variable.either.name=name-given\u53c8\u306fname-from-attribute\u5c5e\u6027\u306e\u3069\u3061\u3089\u304b\u3092variable\u6307\u793a\u5b50\u306e\u4e2d\u3067\u6307\u5b9a\u3055\u308c\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.variable.both.name=variable\u6307\u793a\u5b50\u4e2d\u3067name-given\u3068name-from-attribute\u5c5e\u6027\u306e\u4e21\u65b9\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093
-jsp.error.variable.alias=name-from-attribute\u304a\u3088\u3073alias\u5c5e\u6027\u306e\u4e21\u65b9\u3092variable\u6307\u793a\u5b50\u4e2d\u306b\u6307\u5b9a\u3059\u308b\u3001\u53c8\u306f\u3069\u3061\u3089\u3082\u6307\u5b9a\u3057\u306a\u3044\u3053\u3068\u304c\u3067\u304d\u307e\u3059
-jsp.error.attribute.null_name=\u7a7a\u306e\u5c5e\u6027\u540d\u3067\u3059
-jsp.error.jsptext.badcontent=\'<\'\u304c<jsp:text>\u306e\u30dc\u30c7\u30a3\u306e\u4e2d\u306b\u73fe\u308c\u308b\u6642\u306f\u3001CDATA\u306e\u4e2d\u306b\u96a0\u853d\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.jsproot.version.invalid=\u7121\u52b9\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3067\u3059: \"{0}\"\u3001\"1.2\" \u53c8\u306f \"2.0\"\u3000\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.noFunctionPrefix=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u540d\u524d\u7a7a\u9593\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u6642\u306b\u306f\u3001\u95a2\u6570 {0} \u306f\u30d7\u30ea\u30d5\u30a3\u30af\u30b9\u4ed8\u304d\u3067\u4f7f\u7528\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
-jsp.error.noFunction=\u95a2\u6570 {0} \u3092\u6307\u5b9a\u3055\u308c\u305f\u30d7\u30ea\u30d5\u30a3\u30af\u30b9\u3067\u914d\u7f6e\u3067\u304d\u307e\u305b\u3093
-jsp.error.noFunctionMethod=\u95a2\u6570 \"{1}\" \u306e\u30e1\u30bd\u30c3\u30c9 \"{0}\" \u304c \"{2}\" \u4e2d\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-jsp.error.function.classnotfound=TLD\u306e\u4e2d\u3067\u95a2\u6570 {1} \u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {2}
-jsp.error.signature.classnotfound=TLD\u306e\u4e2d\u306e\u30e1\u30bd\u30c3\u30c9\u30b7\u30b0\u30cd\u30c1\u30e3\u3067\u95a2\u6570 {1} \u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 {2}
-jsp.error.text.has_subelement=<jsp:text> \u306f\u526f\u8981\u7d20\u3092\u6301\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093
-jsp.error.data.file.read=\u30d5\u30a1\u30a4\u30eb \"{0}\" \u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
-jsp.error.prefix.refined=\u30d7\u30ea\u30d5\u30a3\u30c3\u30af\u30b9 {0} \u304c\u73fe\u5728\u306e\u30b9\u30b3\u30fc\u30d7\u4e2d\u3067\u65e2\u306b {2} \u3068\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u306e\u3067 {1} \u306b\u518d\u5b9a\u7fa9\u3057\u307e\u3057\u305f
-jsp.error.nested_jsproot=\u5165\u308c\u5b50\u306b\u306a\u3063\u305f <jsp:root> \u3067\u3059
-jsp.error.unbalanced.endtag=\u7d42\u4e86\u30bf\u30b0 \"</{0}\" \u306e\u5bfe\u5fdc\u304c\u53d6\u308c\u3066\u3044\u307e\u305b\u3093
-jsp.error.invalid.bean=useBean\u306e\u30af\u30e9\u30b9\u5c5e\u6027 {0} \u306e\u5024\u304c\u7121\u52b9\u3067\u3059
-jsp.error.prefix.use_before_dcl=\u3053\u306e\u30bf\u30b0\u6307\u793a\u5b50\u3067\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u30d7\u30ea\u30d5\u30a3\u30c3\u30af\u30b9 {0} \u306f\u3001\u3059\u3067\u306b\u30d5\u30a1\u30a4\u30eb {1} \u306e {2} \u884c\u76ee\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059
-
Modified: trunk/src/main/java/org/apache/jasper/runtime/HttpJspBase.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/runtime/HttpJspBase.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/runtime/HttpJspBase.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.runtime;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.IOException;
import javax.servlet.ServletConfig;
@@ -25,10 +27,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.HttpJspPage;
-import javax.servlet.jsp.JspFactory;
-import org.apache.jasper.compiler.Localizer;
-
/**
* This is the super class of all JSP-generated servlets.
*
@@ -53,7 +52,7 @@
}
public String getServletInfo() {
- return Localizer.getMessage("jsp.engine.info");
+ return MESSAGES.jspInfo();
}
public final void destroy() {
Modified: trunk/src/main/java/org/apache/jasper/runtime/JspContextWrapper.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/runtime/JspContextWrapper.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/runtime/JspContextWrapper.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.runtime;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
@@ -42,7 +44,6 @@
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.VariableInfo;
-import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.util.Enumerator;
/**
@@ -101,8 +102,7 @@
public Object getAttribute(String name) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
return pageAttributes.get(name);
@@ -111,8 +111,7 @@
public Object getAttribute(String name, int scope) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (scope == PAGE_SCOPE) {
@@ -125,8 +124,7 @@
public void setAttribute(String name, Object value) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (value != null) {
@@ -139,8 +137,7 @@
public void setAttribute(String name, Object value, int scope) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (scope == PAGE_SCOPE) {
@@ -157,8 +154,7 @@
public Object findAttribute(String name) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
Object o = pageAttributes.get(name);
@@ -180,8 +176,7 @@
public void removeAttribute(String name) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
pageAttributes.remove(name);
@@ -195,8 +190,7 @@
public void removeAttribute(String name, int scope) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (scope == PAGE_SCOPE) {
@@ -209,8 +203,7 @@
public int getAttributesScope(String name) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (pageAttributes.get(name) != null) {
Modified: trunk/src/main/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/runtime/JspRuntimeLibrary.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/runtime/JspRuntimeLibrary.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.runtime;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.beans.PropertyEditor;
import java.beans.PropertyEditorManager;
import java.io.ByteArrayOutputStream;
@@ -39,7 +41,6 @@
import org.apache.jasper.Constants;
import org.apache.jasper.JasperException;
-import org.apache.jasper.compiler.Localizer;
/**
* Bunch of util methods that are used by code generated for useBean,
@@ -336,8 +337,7 @@
if ( method != null ) {
if (type.isArray()) {
if (request == null) {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.setproperty.noindexset"));
+ throw new JasperException(MESSAGES.failedSettingBeanIndexedProperty());
}
Class t = type.getComponentType();
String[] values = request.getParameterValues(param);
@@ -362,16 +362,9 @@
}
if (!ignoreMethodNF && (method == null)) {
if (type == null) {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.noproperty",
- prop,
- bean.getClass().getName()));
+ throw new JasperException(MESSAGES.cannotFindBeanProperty(prop, bean.getClass().getName()));
} else {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.nomethod.setproperty",
- prop,
- type.getName(),
- bean.getClass().getName()));
+ throw new JasperException(MESSAGES.cannotSetBeanProperty(prop, type.getName(), bean.getClass().getName()));
}
}
}
@@ -600,8 +593,7 @@
public static Object handleGetProperty(Object o, String prop)
throws JasperException {
if (o == null) {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.nullbean"));
+ throw new JasperException(MESSAGES.nullBean());
}
Object value = null;
try {
@@ -783,25 +775,16 @@
}
} else {
// just in case introspection silently fails.
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.nobeaninfo",
- beanClass.getName()));
+ throw new JasperException(MESSAGES.cannotFindBeanInfo(beanClass.getName()));
}
} catch (Exception ex) {
throw new JasperException (ex);
}
if (method == null) {
if (type == null) {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.noproperty",
- prop,
- beanClass.getName()));
+ throw new JasperException(MESSAGES.cannotFindBeanProperty(prop, beanClass.getName()));
} else {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.nomethod.setproperty",
- prop,
- type.getName(),
- beanClass.getName()));
+ throw new JasperException(MESSAGES.cannotSetBeanProperty(prop, type.getName(), beanClass.getName()));
}
}
return method;
@@ -827,22 +810,16 @@
}
} else {
// just in case introspection silently fails.
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.nobeaninfo",
- beanClass.getName()));
+ throw new JasperException(MESSAGES.cannotFindBeanInfo(beanClass.getName()));
}
} catch (Exception ex) {
throw new JasperException (ex);
}
if (method == null) {
if (type == null) {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.noproperty", prop,
- beanClass.getName()));
+ throw new JasperException(MESSAGES.cannotFindBeanProperty(prop, beanClass.getName()));
} else {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.nomethod", prop,
- beanClass.getName()));
+ throw new JasperException(MESSAGES.cannotGetBeanProperty(prop, beanClass.getName()));
}
}
@@ -862,10 +839,8 @@
pe.setAsText(attrValue);
return pe.getValue();
} catch (Exception ex) {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.property.conversion",
- attrValue, attrClass.getName(), attrName,
- ex.getMessage()));
+ throw new JasperException(MESSAGES.errorConvertingBeanProperty
+ (attrValue, attrClass.getName(), attrName, ex.getMessage()));
}
}
@@ -880,14 +855,11 @@
propEditor.setAsText(attrValue);
return propEditor.getValue();
} else {
- throw new IllegalArgumentException(
- Localizer.getMessage("jsp.error.beans.propertyeditor.notregistered"));
+ throw MESSAGES.noRegisteredPropertyEditor();
}
} catch (IllegalArgumentException ex) {
- throw new JasperException(
- Localizer.getMessage("jsp.error.beans.property.conversion",
- attrValue, attrClass.getName(), attrName,
- ex.getMessage()));
+ throw new JasperException(MESSAGES.errorConvertingBeanProperty
+ (attrValue, attrClass.getName(), attrName, ex.getMessage()));
}
}
Modified: trunk/src/main/java/org/apache/jasper/runtime/JspWriterImpl.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/runtime/JspWriterImpl.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/runtime/JspWriterImpl.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.runtime;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.IOException;
import java.io.Writer;
import java.security.AccessController;
@@ -26,7 +28,6 @@
import javax.servlet.jsp.JspWriter;
import org.apache.jasper.Constants;
-import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.security.SecurityUtil;
/**
@@ -126,43 +127,28 @@
}
}
- private String getLocalizeMessage(final String message){
- if (SecurityUtil.isPackageProtectionEnabled()){
- return (String)AccessController.doPrivileged(new PrivilegedAction(){
- public Object run(){
- return Localizer.getMessage(message);
- }
- });
- } else {
- return Localizer.getMessage(message);
- }
- }
-
/**
* Discard the output buffer.
*/
public final void clear() throws IOException {
if ((bufferSize == 0) && (out != null))
// clear() is illegal after any unbuffered output (JSP.5.5)
- throw new IllegalStateException(
- getLocalizeMessage("jsp.error.ise_on_clear"));
+ throw MESSAGES.cannotClearWithNoBuffer();
if (flushed)
- throw new IOException(
- getLocalizeMessage("jsp.error.attempt_to_clear_flushed_buffer"));
+ throw MESSAGES.cannotClearAfterFlush();
ensureOpen();
nextChar = 0;
}
public void clearBuffer() throws IOException {
if (bufferSize == 0)
- throw new IllegalStateException(
- getLocalizeMessage("jsp.error.ise_on_clear"));
+ throw MESSAGES.cannotClearWithNoBuffer();
ensureOpen();
nextChar = 0;
}
private final void bufferOverflow() throws IOException {
- throw new IOException(getLocalizeMessage("jsp.error.overflow"));
+ throw MESSAGES.bufferOverflow();
}
/**
Modified: trunk/src/main/java/org/apache/jasper/runtime/PageContextImpl.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/runtime/PageContextImpl.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/runtime/PageContextImpl.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.runtime;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.IOException;
import java.io.Writer;
import java.security.AccessController;
@@ -48,7 +50,6 @@
import javax.servlet.jsp.tagext.BodyContent;
import org.apache.jasper.Constants;
-import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.el.ELContextImpl;
import org.apache.jasper.el.ExpressionEvaluatorImpl;
import org.apache.jasper.el.FunctionMapperImpl;
@@ -188,8 +189,7 @@
((JspWriterImpl) out).flushBuffer();
}
} catch (IOException ex) {
- IllegalStateException ise = new IllegalStateException(Localizer.getMessage("jsp.error.flush"), ex);
- throw ise;
+ throw MESSAGES.errorFlushingData(ex);
} finally {
servlet = null;
config = null;
@@ -209,8 +209,7 @@
public Object getAttribute(final String name) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -232,8 +231,7 @@
public Object getAttribute(final String name, final int scope) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -258,8 +256,7 @@
case SESSION_SCOPE:
if (session == null) {
- throw new IllegalStateException(Localizer
- .getMessage("jsp.error.page.noSession"));
+ throw MESSAGES.cannotUseSessionScope();
}
return session.getAttribute(name);
@@ -267,15 +264,14 @@
return context.getAttribute(name);
default:
- throw new IllegalArgumentException("Invalid scope");
+ throw MESSAGES.invalidScope();
}
}
public void setAttribute(final String name, final Object attribute) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -301,8 +297,7 @@
public void setAttribute(final String name, final Object o, final int scope) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -331,8 +326,7 @@
case SESSION_SCOPE:
if (session == null) {
- throw new IllegalStateException(Localizer
- .getMessage("jsp.error.page.noSession"));
+ throw MESSAGES.cannotUseSessionScope();
}
session.setAttribute(name, o);
break;
@@ -342,7 +336,7 @@
break;
default:
- throw new IllegalArgumentException("Invalid scope");
+ throw MESSAGES.invalidScope();
}
} else {
removeAttribute(name, scope);
@@ -352,8 +346,7 @@
public void removeAttribute(final String name, final int scope) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (SecurityUtil.isPackageProtectionEnabled()) {
AccessController.doPrivileged(new PrivilegedAction() {
@@ -379,8 +372,7 @@
case SESSION_SCOPE:
if (session == null) {
- throw new IllegalStateException(Localizer
- .getMessage("jsp.error.page.noSession"));
+ throw MESSAGES.cannotUseSessionScope();
}
session.removeAttribute(name);
break;
@@ -390,15 +382,14 @@
break;
default:
- throw new IllegalArgumentException("Invalid scope");
+ throw MESSAGES.invalidScope();
}
}
public int getAttributesScope(final String name) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -441,8 +432,7 @@
return AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
return doFindAttribute(name);
@@ -450,8 +440,7 @@
});
} else {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
return doFindAttribute(name);
@@ -505,8 +494,7 @@
case SESSION_SCOPE:
if (session == null) {
- throw new IllegalStateException(Localizer
- .getMessage("jsp.error.page.noSession"));
+ throw MESSAGES.cannotUseSessionScope();
}
return session.getAttributeNames();
@@ -514,15 +502,14 @@
return context.getAttributeNames();
default:
- throw new IllegalArgumentException("Invalid scope");
+ throw MESSAGES.invalidScope();
}
}
public void removeAttribute(final String name) {
if (name == null) {
- throw new NullPointerException(Localizer
- .getMessage("jsp.error.attribute.null_name"));
+ throw MESSAGES.nullAttributeName();
}
if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -685,10 +672,7 @@
try {
out.clear();
} catch (IOException ex) {
- IllegalStateException ise = new IllegalStateException(Localizer
- .getMessage("jsp.error.attempt_to_clear_flushed_buffer"));
- ise.initCause(ex);
- throw ise;
+ throw MESSAGES.illegalClearAfterFlush(ex);
}
// Make sure that the response object is not the wrapper for include
Modified: trunk/src/main/java/org/apache/jasper/servlet/JspServlet.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/servlet/JspServlet.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/servlet/JspServlet.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.servlet;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.IOException;
import java.lang.reflect.Constructor;
@@ -31,10 +33,9 @@
import org.apache.jasper.EmbeddedServletOptions;
import org.apache.jasper.Options;
import org.apache.jasper.compiler.JspRuntimeContext;
-import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.security.SecurityUtil;
import org.apache.tomcat.PeriodicEventListener;
-import org.jboss.logging.Logger;
+import org.jboss.web.JasperLogger;
/**
* The JSP engine (a.k.a Jasper).
@@ -54,9 +55,6 @@
*/
public class JspServlet extends HttpServlet implements PeriodicEventListener {
- // Logger
- private Logger log = Logger.getLogger(JspServlet.class);
-
private ServletContext context;
private ServletConfig config;
private Options options;
@@ -91,8 +89,7 @@
Object[] args = { config, context };
options = (Options) ctor.newInstance(args);
} catch (Throwable e) {
- // Need to localize this.
- log.warn("Failed to load engineOptionsClass", e);
+ JasperLogger.SERVLET_LOGGER.failedLoadingOptions(engineOptionsName, e);
// Use the default Options implementation
options = new EmbeddedServletOptions(config, context);
}
@@ -102,12 +99,6 @@
}
}
rctxt = new JspRuntimeContext(context, options);
-
- if (log.isDebugEnabled()) {
- log.debug(Localizer.getMessage("jsp.message.scratch.dir.is",
- options.getScratchDir().toString()));
- log.debug(Localizer.getMessage("jsp.message.dont.modify.servlets"));
- }
}
@@ -264,10 +255,6 @@
}
public void destroy() {
- if (log.isDebugEnabled()) {
- log.debug("JspServlet.destroy()");
- }
-
rctxt.destroy();
}
@@ -298,7 +285,7 @@
if (includeRequestUri != null) {
// This file was included. Throw an exception as
// a response.sendError() will be ignored
- String msg = Localizer.getMessage("jsp.error.file.not.found", jspUri);
+ String msg = MESSAGES.fileNotFound(jspUri);
// Strictly, filtering this is an application
// responsibility but just in case...
throw new ServletException(SecurityUtil.filter(msg));
@@ -308,9 +295,7 @@
HttpServletResponse.SC_NOT_FOUND,
request.getRequestURI());
} catch (IllegalStateException ise) {
- log.error(Localizer.getMessage(
- "jsp.error.file.not.found",
- jspUri));
+ JasperLogger.SERVLET_LOGGER.fileNotFound(jspUri);
}
}
return;
Modified: trunk/src/main/java/org/apache/jasper/servlet/JspServletWrapper.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/servlet/JspServletWrapper.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/servlet/JspServletWrapper.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,6 +17,8 @@
package org.apache.jasper.servlet;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
@@ -37,12 +39,10 @@
import org.apache.jasper.compiler.ErrorDispatcher;
import org.apache.jasper.compiler.JavacErrorDetail;
import org.apache.jasper.compiler.JspRuntimeContext;
-import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.runtime.InstanceManagerFactory;
import org.apache.jasper.runtime.JspSourceDependent;
import org.apache.tomcat.InstanceManager;
-import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
+import org.jboss.web.JasperLogger;
/**
* The JSP engine (a.k.a Jasper).
@@ -64,9 +64,6 @@
public class JspServletWrapper {
- // Logger
- private Logger log = Logger.getLogger(JspServletWrapper.class);
-
private Servlet theServlet;
private String jspUri;
private Class tagHandlerClass;
@@ -291,9 +288,8 @@
if ((available > 0L) && (available < Long.MAX_VALUE)) {
if (available > System.currentTimeMillis()) {
response.setDateHeader("Retry-After", available);
- response.sendError
- (HttpServletResponse.SC_SERVICE_UNAVAILABLE,
- Localizer.getMessage("jsp.error.unavailable"));
+ response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE,
+ MESSAGES.unavailable());
return;
} else {
// Wait period has expired. Reset.
@@ -423,8 +419,7 @@
instanceManager.destroyInstance(theServlet);
} catch (Exception e) {
// Log any exception, since it can't be passed along
- log.error(Localizer.getMessage("jsp.error.file.not.found",
- e.getMessage()), e);
+ JasperLogger.SERVLET_LOGGER.errorDestroyingServletInstance(e);
}
}
}
@@ -495,16 +490,11 @@
}
if (options.getDisplaySourceFragment()) {
- return new JasperException(Localizer.getMessage
- ("jsp.exception", detail.getJspFileName(),
- "" + jspLineNumber) +
- "\n\n" + detail.getJspExtract() +
- "\n\nStacktrace:", ex);
+ return new JasperException(MESSAGES.jspExceptionWithDetails(detail.getJspFileName(),
+ jspLineNumber, detail.getJspExtract()), ex);
} else {
- return new JasperException(Localizer.getMessage
- ("jsp.exception", detail.getJspFileName(),
- "" + jspLineNumber), ex);
+ return new JasperException(MESSAGES.jspException(detail.getJspFileName(), jspLineNumber), ex);
}
}
} catch (Exception je) {
Modified: trunk/src/main/java/org/apache/jasper/xmlparser/ASCIIReader.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/xmlparser/ASCIIReader.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/xmlparser/ASCIIReader.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,10 +17,11 @@
package org.apache.jasper.xmlparser;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.InputStream;
import java.io.IOException;
import java.io.Reader;
-import org.apache.jasper.compiler.Localizer;
/**
* A simple ASCII byte reader. This is an optimized reader for reading
@@ -86,8 +87,7 @@
public int read() throws IOException {
int b0 = fInputStream.read();
if (b0 > 0x80) {
- throw new IOException(Localizer.getMessage("jsp.error.xml.invalidASCII",
- Integer.toString(b0)));
+ throw MESSAGES.invalidByteRead(b0);
}
return b0;
} // read():int
@@ -114,8 +114,7 @@
for (int i = 0; i < count; i++) {
int b0 = (0xff & fBuffer[i]); // Convert to unsigned
if (b0 > 0x80) {
- throw new IOException(Localizer.getMessage("jsp.error.xml.invalidASCII",
- Integer.toString(b0)));
+ throw MESSAGES.invalidByteRead(b0);
}
ch[offset + i] = (char)b0;
}
Modified: trunk/src/main/java/org/apache/jasper/xmlparser/UTF8Reader.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/xmlparser/UTF8Reader.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/xmlparser/UTF8Reader.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -17,11 +17,12 @@
package org.apache.jasper.xmlparser;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.InputStream;
import java.io.IOException;
import java.io.Reader;
import java.io.UTFDataFormatException;
-import org.apache.jasper.compiler.Localizer;
/**
* @author Andy Clark, IBM
@@ -31,9 +32,6 @@
public class UTF8Reader
extends Reader {
- private org.jboss.logging.Logger log=
- org.jboss.logging.Logger.getLogger( UTF8Reader.class );
-
//
// Constants
//
@@ -41,11 +39,6 @@
/** Default byte buffer size (2048). */
public static final int DEFAULT_BUFFER_SIZE = 2048;
- // debugging
-
- /** Debug read. */
- private static final boolean DEBUG_READ = false;
-
//
// Data
//
@@ -207,11 +200,6 @@
fSurrogate = -1;
}
- // return character
- if (DEBUG_READ) {
- if (log.isDebugEnabled())
- log.debug("read(): 0x"+Integer.toHexString(c));
- }
return c;
} // read():int
@@ -492,11 +480,6 @@
invalidByte(1, 1, b0);
}
- // return number of characters converted
- if (DEBUG_READ) {
- if (log.isDebugEnabled())
- log.debug("read(char[],"+offset+','+length+"): count="+count);
- }
return count;
} // read(char[],int,int)
@@ -565,9 +548,7 @@
* or if some other I/O error occurs
*/
public void mark(int readAheadLimit) throws IOException {
- throw new IOException(
- Localizer.getMessage("jsp.error.xml.operationNotSupported",
- "mark()", "UTF-8"));
+ throw MESSAGES.markNotSupportedInUtf8Reader();
}
/**
@@ -606,30 +587,18 @@
/** Throws an exception for expected byte. */
private void expectedByte(int position, int count)
throws UTFDataFormatException {
-
- throw new UTFDataFormatException(
- Localizer.getMessage("jsp.error.xml.expectedByte",
- Integer.toString(position),
- Integer.toString(count)));
-
+ throw new UTFDataFormatException(MESSAGES.errorUtf8ExpectedByte(position, count));
} // expectedByte(int,int,int)
/** Throws an exception for invalid byte. */
private void invalidByte(int position, int count, int c)
throws UTFDataFormatException {
-
- throw new UTFDataFormatException(
- Localizer.getMessage("jsp.error.xml.invalidByte",
- Integer.toString(position),
- Integer.toString(count)));
+ throw new UTFDataFormatException(MESSAGES.errorUtf8InvalidByte(position, count));
} // invalidByte(int,int,int,int)
/** Throws an exception for invalid surrogate bits. */
private void invalidSurrogate(int uuuuu) throws UTFDataFormatException {
-
- throw new UTFDataFormatException(
- Localizer.getMessage("jsp.error.xml.invalidHighSurrogate",
- Integer.toHexString(uuuuu)));
+ throw new UTFDataFormatException(MESSAGES.errorUtf8InvalidHighSurrogate(Integer.toHexString(uuuuu)));
} // invalidSurrogate(int)
} // class UTF8Reader
Modified: trunk/src/main/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java
===================================================================
--- trunk/src/main/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -25,6 +25,8 @@
package org.apache.jasper.xmlparser;
+import static org.jboss.web.JasperMessages.MESSAGES;
+
import java.io.EOFException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -224,8 +226,7 @@
return new UCSReader(inputStream, UCSReader.UCS4LE);
}
} else {
- err.jspError("jsp.error.xml.encodingByteOrderUnsupported",
- encoding);
+ err.jspError(MESSAGES.unsupportedByteOrderForEncoding(encoding));
}
}
if (ENCODING.equals("ISO-10646-UCS-2")) {
@@ -237,8 +238,7 @@
return new UCSReader(inputStream, UCSReader.UCS2LE);
}
} else {
- err.jspError("jsp.error.xml.encodingByteOrderUnsupported",
- encoding);
+ err.jspError(MESSAGES.unsupportedByteOrderForEncoding(encoding));
}
}
@@ -246,7 +246,7 @@
boolean validIANA = XMLChar.isValidIANAEncoding(encoding);
boolean validJava = XMLChar.isValidJavaEncoding(encoding);
if (!validIANA || (fAllowJavaEncodings && !validJava)) {
- err.jspError("jsp.error.xml.encodingDeclInvalid", encoding);
+ err.jspError(MESSAGES.invalidEncodingDeclared(encoding));
// NOTE: AndyH suggested that, on failure, we use ISO Latin 1
// because every byte is a valid ISO Latin 1 character.
// It may not translate correctly but if we failed on
@@ -264,7 +264,7 @@
if (fAllowJavaEncodings) {
javaEncoding = encoding;
} else {
- err.jspError("jsp.error.xml.encodingDeclInvalid", encoding);
+ err.jspError(MESSAGES.invalidEncodingDeclared(encoding));
// see comment above.
javaEncoding = "ISO8859_1";
}
@@ -1329,10 +1329,11 @@
case STATE_VERSION: {
if (name == fVersionSymbol) {
if (!sawSpace) {
- reportFatalError(scanningTextDecl
- ? "jsp.error.xml.spaceRequiredBeforeVersionInTextDecl"
- : "jsp.error.xml.spaceRequiredBeforeVersionInXMLDecl",
- null);
+ if (scanningTextDecl) {
+ MESSAGES.requiredSpaceBeforeVersionInTextDeclaration();
+ } else {
+ MESSAGES.requiredSpaceBeforeVersionInXmlDeclaration();
+ }
}
version = fString.toString();
state = STATE_ENCODING;
@@ -1340,38 +1341,38 @@
// REVISIT: XML REC says we should throw an error
// in such cases.
// some may object the throwing of fatalError.
- err.jspError("jsp.error.xml.versionNotSupported",
- version);
+ err.jspError(MESSAGES.unsupportedXmlVersion(version));
}
} else if (name == fEncodingSymbol) {
if (!scanningTextDecl) {
- err.jspError("jsp.error.xml.versionInfoRequired");
+ err.jspError(MESSAGES.noXmlVersion());
}
if (!sawSpace) {
- reportFatalError(scanningTextDecl
- ? "jsp.error.xml.spaceRequiredBeforeEncodingInTextDecl"
- : "jsp.error.xml.spaceRequiredBeforeEncodingInXMLDecl",
- null);
+ if (scanningTextDecl) {
+ MESSAGES.requiredSpaceBeforeEncodingInTextDeclaration();
+ } else {
+ MESSAGES.requiredSpaceBeforeEncodingInXmlDeclaration();
+ }
}
encoding = fString.toString();
state = scanningTextDecl ? STATE_DONE : STATE_STANDALONE;
} else {
if (scanningTextDecl) {
- err.jspError("jsp.error.xml.encodingDeclRequired");
+ err.jspError(MESSAGES.requiredEncodingDeclaration());
+ } else {
+ err.jspError(MESSAGES.requiredVersionDeclaration());
}
- else {
- err.jspError("jsp.error.xml.versionInfoRequired");
- }
}
break;
}
case STATE_ENCODING: {
if (name == fEncodingSymbol) {
if (!sawSpace) {
- reportFatalError(scanningTextDecl
- ? "jsp.error.xml.spaceRequiredBeforeEncodingInTextDecl"
- : "jsp.error.xml.spaceRequiredBeforeEncodingInXMLDecl",
- null);
+ if (scanningTextDecl) {
+ err.jspError(MESSAGES.requiredSpaceBeforeEncodingInTextDeclaration());
+ } else {
+ err.jspError(MESSAGES.requiredSpaceBeforeEncodingInXmlDeclaration());
+ }
}
encoding = fString.toString();
state = scanningTextDecl ? STATE_DONE : STATE_STANDALONE;
@@ -1379,62 +1380,62 @@
// entity scanner
} else if (!scanningTextDecl && name == fStandaloneSymbol) {
if (!sawSpace) {
- err.jspError("jsp.error.xml.spaceRequiredBeforeStandalone");
+ err.jspError(MESSAGES.requiredSpaceBeforeStandaloneInXmlDeclaration());
}
standalone = fString.toString();
state = STATE_DONE;
if (!standalone.equals("yes") && !standalone.equals("no")) {
- err.jspError("jsp.error.xml.sdDeclInvalid");
+ err.jspError(MESSAGES.invalidStandaloneDeclaration(standalone));
}
} else {
- err.jspError("jsp.error.xml.encodingDeclRequired");
+ err.jspError(MESSAGES.requiredEncodingDeclaration());
}
break;
}
case STATE_STANDALONE: {
if (name == fStandaloneSymbol) {
if (!sawSpace) {
- err.jspError("jsp.error.xml.spaceRequiredBeforeStandalone");
+ err.jspError(MESSAGES.requiredSpaceBeforeStandaloneInXmlDeclaration());
}
standalone = fString.toString();
state = STATE_DONE;
if (!standalone.equals("yes") && !standalone.equals("no")) {
- err.jspError("jsp.error.xml.sdDeclInvalid");
+ err.jspError(MESSAGES.invalidStandaloneDeclaration(standalone));
}
} else {
- err.jspError("jsp.error.xml.encodingDeclRequired");
+ err.jspError(MESSAGES.requiredEncodingDeclaration());
}
break;
}
default: {
- err.jspError("jsp.error.xml.noMorePseudoAttributes");
+ err.jspError(MESSAGES.invalidPseudoAttribute());
}
}
sawSpace = skipSpaces();
}
// REVISIT: should we remove this error reporting?
if (scanningTextDecl && state != STATE_DONE) {
- err.jspError("jsp.error.xml.morePseudoAttributes");
+ err.jspError(MESSAGES.missingPseudoAttribute());
}
// If there is no data in the xml or text decl then we fail to report
// error for version or encoding info above.
if (scanningTextDecl) {
if (!dataFoundForTarget && encoding == null) {
- err.jspError("jsp.error.xml.encodingDeclRequired");
+ err.jspError(MESSAGES.requiredEncodingDeclaration());
}
} else {
if (!dataFoundForTarget && version == null) {
- err.jspError("jsp.error.xml.versionInfoRequired");
+ err.jspError(MESSAGES.requiredVersionDeclaration());
}
}
// end
if (!skipChar('?')) {
- err.jspError("jsp.error.xml.xmlDeclUnterminated");
+ err.jspError(MESSAGES.malformedXmlDeclaration());
}
if (!skipChar('>')) {
- err.jspError("jsp.error.xml.xmlDeclUnterminated");
+ err.jspError(MESSAGES.malformedXmlDeclaration());
}
@@ -1467,22 +1468,24 @@
String name = scanName();
if (name == null) {
- err.jspError("jsp.error.xml.pseudoAttrNameExpected");
+ err.jspError(MESSAGES.missingPseudoAttributeName());
}
skipSpaces();
if (!skipChar('=')) {
- reportFatalError(scanningTextDecl ?
- "jsp.error.xml.eqRequiredInTextDecl"
- : "jsp.error.xml.eqRequiredInXMLDecl",
- name);
+ if (scanningTextDecl) {
+ err.jspError(MESSAGES.missingEqualsInTextDeclaration(name));
+ } else {
+ err.jspError(MESSAGES.missingEqualsInXmlDeclaration(name));
+ }
}
skipSpaces();
int quote = peekChar();
if (quote != '\'' && quote != '"') {
- reportFatalError(scanningTextDecl ?
- "jsp.error.xml.quoteRequiredInTextDecl"
- : "jsp.error.xml.quoteRequiredInXMLDecl" ,
- name);
+ if (scanningTextDecl) {
+ err.jspError(MESSAGES.missingQuoteInTextDeclaration(name));
+ } else {
+ err.jspError(MESSAGES.missingQuoteInXmlDeclaration(name));
+ }
}
scanChar();
int c = scanLiteral(quote, value);
@@ -1498,10 +1501,11 @@
scanSurrogates(fStringBuffer2);
}
else if (XMLChar.isInvalid(c)) {
- String key = scanningTextDecl
- ? "jsp.error.xml.invalidCharInTextDecl"
- : "jsp.error.xml.invalidCharInXMLDecl";
- reportFatalError(key, Integer.toString(c, 16));
+ if (scanningTextDecl) {
+ err.jspError(MESSAGES.invalidCharInTextDeclaration(Integer.toString(c, 16)));
+ } else {
+ err.jspError(MESSAGES.invalidCharInXmlDeclaration(Integer.toString(c, 16)));
+ }
scanChar();
}
}
@@ -1511,10 +1515,11 @@
value.setValues(fStringBuffer2);
}
if (!skipChar(quote)) {
- reportFatalError(scanningTextDecl ?
- "jsp.error.xml.closeQuoteMissingInTextDecl"
- : "jsp.error.xml.closeQuoteMissingInXMLDecl",
- name);
+ if (scanningTextDecl) {
+ err.jspError(MESSAGES.missingClosingQuoteInTextDeclaration(name));
+ } else {
+ err.jspError(MESSAGES.missingClosingQuoteInXmlDeclaration(name));
+ }
}
// return
@@ -1570,8 +1575,7 @@
if (XMLChar.isHighSurrogate(c)) {
scanSurrogates(fStringBuffer);
} else if (XMLChar.isInvalid(c)) {
- err.jspError("jsp.error.xml.invalidCharInPI",
- Integer.toHexString(c));
+ err.jspError(MESSAGES.invalidCharInProcessingInstruction(Integer.toHexString(c)));
scanChar();
}
}
@@ -1598,8 +1602,7 @@
int high = scanChar();
int low = peekChar();
if (!XMLChar.isLowSurrogate(low)) {
- err.jspError("jsp.error.xml.invalidCharInContent",
- Integer.toString(high, 16));
+ err.jspError(MESSAGES.invalidCharInContent(Integer.toString(high, 16)));
return false;
}
scanChar();
@@ -1609,8 +1612,7 @@
// supplemental character must be a valid XML character
if (!XMLChar.isValid(c)) {
- err.jspError("jsp.error.xml.invalidCharInContent",
- Integer.toString(c, 16));
+ err.jspError(MESSAGES.invalidCharInContent(Integer.toString(c, 16)));
return false;
}
@@ -1622,16 +1624,6 @@
}
- // Adapted from:
- // org.apache.xerces.impl.XMLScanner.reportFatalError
- /**
- * Convenience function used in all XML scanners.
- */
- private void reportFatalError(String msgId, String arg)
- throws JasperException {
- err.jspError(msgId, arg);
- }
-
}
Modified: trunk/src/main/java/org/jboss/web/JasperLogger.java
===================================================================
--- trunk/src/main/java/org/jboss/web/JasperLogger.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/jboss/web/JasperLogger.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -25,6 +25,7 @@
import static org.jboss.logging.Logger.Level.ERROR;
import static org.jboss.logging.Logger.Level.INFO;
import static org.jboss.logging.Logger.Level.WARN;
+import static org.jboss.logging.Logger.Level.DEBUG;
import org.jboss.logging.BasicLogger;
import org.jboss.logging.Cause;
@@ -45,4 +46,122 @@
*/
JasperLogger ROOT_LOGGER = Logger.getMessageLogger(JasperLogger.class, "org.apache.jasper");
+ /**
+ * A logger with the category of the package name.
+ */
+ JasperLogger COMPILER_LOGGER = Logger.getMessageLogger(JasperLogger.class, "org.apache.jasper.compiler");
+
+ /**
+ * A logger with the category of the package name.
+ */
+ JasperLogger SERVLET_LOGGER = Logger.getMessageLogger(JasperLogger.class, "org.apache.jasper.servlet");
+
+ @LogMessage(level = WARN)
+ @Message(id = 5000, value = "Invalid %s value for the initParam keepgenerated. Will use the default value of \"false\"")
+ void invalidKeepGeneratedValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5001, value = "Invalid %s value for the initParam trimSpaces. Will use the default value of \"false\"")
+ void invalidTrimSpacesValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5002, value = "Invalid %s value for the initParam enablePooling. Will use the default value of \"false\"")
+ void invalidEnablePoolingValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5003, value = "Invalid %s value for the initParam mappedfile. Will use the default value of \"true\"")
+ void invalidMappedFileValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5004, value = "Invalid %s value for the initParam sendErrToClient. Will use the default value of \"false\"")
+ void invalidSendErrToClientValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5005, value = "Invalid %s value for the initParam classdebuginfo. Will use the default value of \"true\"")
+ void invalidClassDebugInfoValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5006, value = "Invalid %s value for the initParam checkInterval. Will disable periodic checking")
+ void invalidCheckIntervalValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5007, value = "Invalid %s value for the initParam modificationTestInterval. Will use the default value of \"4\" seconds")
+ void invalidModificationTestIntervalValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5008, value = "Invalid %s value for the initParam recompileOnFail. Will use the default value of \"false\"")
+ void invalidRecompileOnFailValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5009, value = "Invalid %s value for the initParam development. Will use the default value of \"true\"")
+ void invalidDevelopmentValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5010, value = "Invalid %s value for the initParam suppressSmap. Will use the default value of \"false\"")
+ void invalidSuppressSmapValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5011, value = "Invalid %s value for the initParam dumpSmap. Will use the default value of \"false\"")
+ void invalidDumpSmapValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5012, value = "Invalid %s value for the initParam genStrAsCharArray. Will use the default value of \"false\"")
+ void invalidGenStrAsCharArrayValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5013, value = "Invalid %s value for the initParam errorOnUseBeanInvalidClassAttribute. Will use the default value of \"true\"")
+ void invalidErrorOnUseBeanInvalidClassAttributeValue(String value);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 5014, value = "The JSP container needs a work directory")
+ void missingWorkDirectory();
+
+ @LogMessage(level = ERROR)
+ @Message(id = 5015, value = "The JSP container needs a valid work directory [%s]")
+ void missingWorkDirectory(String workDirectory);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5016, value = "Invalid %s value for the initParam fork. Will use the default value of \"true\"")
+ void invalidForkValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5017, value = "Invalid %s value for the initParam xpoweredBy. Will use the default value of \"true\"")
+ void invalidXpoweredByValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5018, value = "Invalid %s value for the initParam displaySourceFragment. Will use the default value of \"true\"")
+ void invalidDisplaySourceFragmentValue(String value);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5019, value = "Failed loading Java compiler %s")
+ void failedLoadingJavaCompiler(String className, @Cause Throwable t);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5020, value = "Failed loading custom options class %s")
+ void failedLoadingOptions(String className, @Cause Throwable t);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 5021, value = "File \"%s\" not found")
+ void fileNotFound(String uri);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 5022, value = "Error destroying JSP Servlet instance")
+ void errorDestroyingServletInstance(@Cause Throwable t);
+
+ @LogMessage(level = WARN)
+ @Message(id = 5023, value = "Bad value %s in the url-pattern subelement in the webapp descriptor")
+ void invalidJspPropertyGroupsUrlPattern(String value);
+
+ @LogMessage(level = DEBUG)
+ @Message(id = 5024, value = "Exception closing reader")
+ void errorClosingReader(@Cause Throwable t);
+
+ @LogMessage(level = DEBUG)
+ @Message(id = 5025, value = "Parent class loader is: %s")
+ void logParentClassLoader(String parentClassLoader);
+
+ @LogMessage(level = DEBUG)
+ @Message(id = 5026, value = "Compilation classpath: %s")
+ void logCompilationClasspath(String classpath);
+
}
Modified: trunk/src/main/java/org/jboss/web/JasperMessages.java
===================================================================
--- trunk/src/main/java/org/jboss/web/JasperMessages.java 2012-09-14 12:33:07 UTC (rev 2082)
+++ trunk/src/main/java/org/jboss/web/JasperMessages.java 2012-09-21 14:14:07 UTC (rev 2083)
@@ -22,6 +22,8 @@
package org.jboss.web;
+import java.io.IOException;
+
import org.jboss.logging.Cause;
import org.jboss.logging.Message;
import org.jboss.logging.MessageBundle;
@@ -39,4 +41,634 @@
*/
JasperMessages MESSAGES = Messages.getBundle(JasperMessages.class);
+ @Message(id = 4000, value = "No Java compiler available")
+ IllegalStateException noJavaCompiler();
+
+ @Message(id = 4001, value = "Unable to compile class for JSP")
+ String failedClassCompilation();
+
+ @Message(id = 4002, value = "Unable to load class for JSP")
+ String failedClassLoading();
+
+ @Message(id = 4003, value = "No output folder")
+ IllegalStateException noOutputFolder();
+
+ @Message(id = 4004, value = "No output folder")
+ IllegalStateException badOutputFolderUrl(@Cause Throwable t);
+
+ @Message(id = 4005, value = "Byte '%s' not 7-bit ASCII")
+ IOException invalidByteRead(int b);
+
+ @Message(id = 4006, value = "Mark is not supported by the UTF-8 reader")
+ IOException markNotSupportedInUtf8Reader();
+
+ @Message(id = 4007, value = "Expected byte %s of %s-byte UTF-8 sequence")
+ String errorUtf8ExpectedByte(int position, int count);
+
+ @Message(id = 4008, value = "Invalid byte %s of %s-byte UTF-8 sequence")
+ String errorUtf8InvalidByte(int position, int count);
+
+ @Message(id = 4009, value = "High surrogate bits in UTF-8 sequence must not exceed 0x10 but found 0x%s")
+ String errorUtf8InvalidHighSurrogate(String data);
+
+ @Message(id = 4010, value = "Given byte order for encoding \"%s\" is not supported")
+ String unsupportedByteOrderForEncoding(String encoding);
+
+ @Message(id = 4011, value = "Invalid encoding name \"%s\"")
+ String invalidEncodingDeclared(String encoding);
+
+ @Message(id = 4012, value = "XML version \"%s\" is not supported, only XML 1.0 is supported")
+ String unsupportedXmlVersion(String version);
+
+ @Message(id = 4013, value = "The version is required in the XML declaration")
+ String noXmlVersion();
+
+ @Message(id = 4014, value = "White space is required before the version pseudo attribute in the text declaration")
+ String requiredSpaceBeforeVersionInTextDeclaration();
+
+ @Message(id = 4015, value = "White space is required before the version pseudo attribute in the XML declaration")
+ String requiredSpaceBeforeVersionInXmlDeclaration();
+
+ @Message(id = 4016, value = "White space is required before the encoding pseudo attribute in the text declaration")
+ String requiredSpaceBeforeEncodingInTextDeclaration();
+
+ @Message(id = 4017, value = "White space is required before the encoding pseudo attribute in the XML declaration")
+ String requiredSpaceBeforeEncodingInXmlDeclaration();
+
+ @Message(id = 4018, value = "Encoding is required in the text declaration")
+ String requiredEncodingDeclaration();
+
+ @Message(id = 4019, value = "Version is required in the XML declaration")
+ String requiredVersionDeclaration();
+
+ @Message(id = 4020, value = "White space is required before the standalone pseudo attribute in the XML declaration")
+ String requiredSpaceBeforeStandaloneInXmlDeclaration();
+
+ @Message(id = 4021, value = "The standalone document declaration value must be \"yes\" or \"no\", not \"%s\"")
+ String invalidStandaloneDeclaration(String value);
+
+ @Message(id = 4022, value = "No more pseudo attributes is allowed")
+ String invalidPseudoAttribute();
+
+ @Message(id = 4023, value = "More pseudo attributes are expected")
+ String missingPseudoAttribute();
+
+ @Message(id = 4024, value = "The XML declaration must end with \"?>\"")
+ String malformedXmlDeclaration();
+
+ @Message(id = 4025, value = "A pseudo attribute name is expected")
+ String missingPseudoAttributeName();
+
+ @Message(id = 4026, value = "The '=' character must follow \"%s\" in the text declaration")
+ String missingEqualsInTextDeclaration(String name);
+
+ @Message(id = 4027, value = "The '=' character must follow \"%s\" in the XML declaration")
+ String missingEqualsInXmlDeclaration(String name);
+
+ @Message(id = 4028, value = "The value following \"%s\" in the text declaration must be a quoted string")
+ String missingQuoteInTextDeclaration(String name);
+
+ @Message(id = 4029, value = "The value following \"%s\" in the XML declaration must be a quoted string")
+ String missingQuoteInXmlDeclaration(String name);
+
+ @Message(id = 4030, value = "An invalid XML character (Unicode: 0x%s) was found in the text declaration")
+ String invalidCharInTextDeclaration(String name);
+
+ @Message(id = 4031, value = "An invalid XML character (Unicode: 0x%s) was found in the XML declaration")
+ String invalidCharInXmlDeclaration(String name);
+
+ @Message(id = 4032, value = "Closing quote in the value following \"%s\" in the text declaration is missing")
+ String missingClosingQuoteInTextDeclaration(String name);
+
+ @Message(id = 4033, value = "Closing quote in the value following \"%s\" in the XML declaration is missing")
+ String missingClosingQuoteInXmlDeclaration(String name);
+
+ @Message(id = 4034, value = "An invalid XML character (Unicode: 0x%s) was found in the processing instruction")
+ String invalidCharInProcessingInstruction(String character);
+
+ @Message(id = 4035, value = "An invalid XML character (Unicode: 0x%s) was found in the element content of the document")
+ String invalidCharInContent(String character);
+
+ @Message(id = 4036, value = "File \"%s\" not found")
+ String fileNotFound(String uri);
+
+ @Message(id = 4037, value = "JSP has been marked unavailable")
+ String unavailable();
+
+ @Message(id = 4038, value = "An exception occurred processing JSP page %s at line %s\n\n%s\n\nStacktrace:")
+ String jspExceptionWithDetails(String jsp, int line, String extract);
+
+ @Message(id = 4039, value = "Jasper JSP 2.2 Engine")
+ String jspInfo();
+
+ @Message(id = 4040, value = "Null attribute name")
+ NullPointerException nullAttributeName();
+
+ @Message(id = 4041, value = "Cannot set indexed property")
+ String failedSettingBeanIndexedProperty();
+
+ @Message(id = 4042, value = "Cannot find any information on property '%s' in a bean of type '%s'")
+ String cannotFindBeanProperty(String property, String beanClass);
+
+ @Message(id = 4043, value = "Can't find a method to write property '%s' of type '%s' in a bean of type '%s'")
+ String cannotSetBeanProperty(String property, String propertyClass, String beanClass);
+
+ @Message(id = 4044, value = "Attempted a bean operation on a null object")
+ String nullBean();
+
+ @Message(id = 4045, value = "No BeanInfo for the bean of type '%s' could be found, the class likely does not exist")
+ String cannotFindBeanInfo(String beanClass);
+
+ @Message(id = 4046, value = "Cannot find a method to read property '%s' in a bean of type '%s'")
+ String cannotGetBeanProperty(String property, String beanClass);
+
+ @Message(id = 4047, value = "Unable to convert string \"%s\" to class \"%s\" for attribute \"%s\": %s")
+ String errorConvertingBeanProperty(String value, String valueClass, String property, String errorMessage);
+
+ @Message(id = 4048, value = "Property Editor not registered with the PropertyEditorManager")
+ IllegalArgumentException noRegisteredPropertyEditor();
+
+ @Message(id = 4049, value = "Illegal to clear() when buffer size == 0")
+ IllegalStateException cannotClearWithNoBuffer();
+
+ @Message(id = 4050, value = "Attempt to clear a buffer that's already been flushed")
+ IOException cannotClearAfterFlush();
+
+ @Message(id = 4051, value = "JSP Buffer overflow")
+ IOException bufferOverflow();
+
+ @Message(id = 4052, value = "Exception occurred when flushing data")
+ IllegalStateException errorFlushingData(@Cause Throwable t);
+
+ @Message(id = 4053, value = "Attempt to clear a buffer that's already been flushed")
+ IllegalStateException illegalClearAfterFlush(@Cause Throwable t);
+
+ @Message(id = 4054, value = "Cannot access session scope in page that does not participate in any session")
+ IllegalStateException cannotUseSessionScope();
+
+ @Message(id = 4055, value = "Invalid scope specified")
+ IllegalArgumentException invalidScope();
+
+ @Message(id = 4056, value = "Attribute value %s is quoted with %s which must be escaped when used within the value")
+ IllegalArgumentException missingEscaping(String value, String quote);
+
+ @Message(id = 4057, value = "Bad scope specified for useBean")
+ String badScopeForUseBean();
+
+ @Message(id = 4058, value = "Malformed library version number")
+ String malformedLibraryVersionNumber();
+
+ @Message(id = 4059, value = "Default java encoding %s is invalid on your java platform. An alternate can be specified via the 'javaEncoding' parameter of JspServlet")
+ String needAlternateEncoding(String encoding);
+
+ @Message(id = 4060, value = "An error occurred at line: %s in the jsp file: %s")
+ String errorInJspFile(int line, String fileName);
+
+ @Message(id = 4061, value = "An error occurred at line: %s in the generated java file")
+ String errorInJavaFile(int line);
+
+ @Message(id = 4062, value = "Unable to compile class for JSP: %s")
+ String failedClassCompilation(String errorReport);
+
+ @Message(id = 4063, value = "The value for the useBean class attribute %s is invalid")
+ String invalidUseBeanAttributeClass(String className);
+
+ @Message(id = 4064, value = "Unable to find setter method for attribute: %s")
+ String cannotFindSetterMethod(String attributeName);
+
+ @Message(id = 4065, value = "Error introspecting tag handler: %s")
+ String errorIntrospectingTagHandler(String tagHandlerClass);
+
+ @Message(id = 4066, value = "Tag file directory %s does not start with \"/WEB-INF/tags\"")
+ String invalidTagFileDirectory(String tagFileDirectory);
+
+ @Message(id = 4067, value = "Invalid implicit TLD for tag file at %s")
+ String invalidImplicitTld(String tagFile);
+
+ @Message(id = 4068, value = "Invalid JSP version defined in implicit TLD for tag file at %s")
+ String invalidImplicitTldVersion(String tagFile);
+
+ @Message(id = 4069, value = "Unable to display JSP extract. Probably due to a JRE bug (see Tomcat bug 48498 for details).")
+ String errorDisplayingJspExtract();
+
+ @Message(id = 4070, value = "Error reading file \"%s\"")
+ String errorReadingFile(String file);
+
+ @Message(id = 4071, value = "Error parsing file \"%s\"")
+ String errorParsingFile(String file);
+
+ @Message(id = 4072, value = "<jsp:text> must not have any subelements")
+ String invalidJspTextSubelements();
+
+ @Message(id = 4073, value = "Unterminated %s tag")
+ String unterminatedTag(String tag);
+
+ @Message(id = 4074, value = "According to TLD, tag %s must be empty, but is not")
+ String invalidEmptyTagSubelements(String tag);
+
+ @Message(id = 4075, value = "Could not add one or more tag libraries: %s")
+ String errorAddingTagLibraries(String errorMessage);
+
+ @Message(id = 4076, value = "Nested <jsp:root>")
+ String nestedJspRoot();
+
+ @Message(id = 4077, value = "%s directive cannot be used in a tag file")
+ String invalidDirectiveInTagFile(String directive);
+
+ @Message(id = 4078, value = "Scripting elements are disallowed here")
+ String invalidScriptingElement();
+
+ @Message(id = 4079, value = "%s action cannot be used in a tag file")
+ String invalidActionInTagFile(String action);
+
+ @Message(id = 4080, value = "Invalid standard action: %s")
+ String invalidStandardAction(String action);
+
+ @Message(id = 4081, value = "No tag \"%s\" defined in tag library associated with uri \"%s\"")
+ String unknownTag(String tag, String tagLibUri);
+
+ @Message(id = 4082, value = "Unable to load tag handler class \"%s\" for tag \"%s\"")
+ String errorLoadingTagHandler(String tagClass, String tag);
+
+ @Message(id = 4083, value = "Body of %s element must not contain any XML elements")
+ String invalidScriptingBody(String element);
+
+ @Message(id = 4084, value = "Unterminated quotes")
+ String unterminatedQuotes();
+
+ @Message(id = 4085, value = "Attribute value should be quoted")
+ String unquotedAttributeValue();
+
+ @Message(id = 4086, value = "Recursive include of file %s")
+ String invalidRecursiveInclude(String file);
+
+ @Message(id = 4087, value = "File %s not seen in include")
+ String invalidInclude(String file);
+
+ @Message(id = 4088, value = "Invalid scope %s specified")
+ String invalidScope(String scope);
+
+ @Message(id = 4089, value = "The attribute %s specified in the standard or custom action also appears as the value of the name attribute in the enclosed jsp:attribute")
+ String duplicateAttribute(String attributeName);
+
+ @Message(id = 4090, value = "%s: Mandatory attribute %s missing")
+ String missingMandatoryAttribute(String elementName, String attributeName);
+
+ @Message(id = 4091, value = "%s has invalid attribute: %s")
+ String invalidAttribute(String elementName, String attributeName);
+
+ @Message(id = 4092, value = "Missing \".tag\" suffix in tag file path %s")
+ String invalidTagFileName(String path);
+
+ @Message(id = 4093, value = "Unsupported encoding: %s")
+ String unsupportedEncoding(String encoding);
+
+ @Message(id = 4094, value = "Page directive: invalid language attribute")
+ String unsupportedPageDirectiveLanguage();
+
+ @Message(id = 4095, value = "Tag directive: invalid language attribute")
+ String unsupportedTagDirectiveLanguage();
+
+ @Message(id = 4096, value = "Page directive: invalid buffer size")
+ String invalidPageDirectiveBufferSize();
+
+ @Message(id = 4097, value = "Page directive: invalid value for session")
+ String invalidPageDirectiveSession();
+
+ @Message(id = 4098, value = "Page directive: invalid value for autoFlush")
+ String invalidPageDirectiveAutoFlush();
+
+ @Message(id = 4099, value = "Page directive: invalid value for isThreadSafe")
+ String invalidPageDirectiveIsThreadSafe();
+
+ @Message(id = 4100, value = "Page directive: invalid value for isErrorPage")
+ String invalidPageDirectiveIsErrorPage();
+
+ @Message(id = 4101, value = "Page directive: invalid value for isELIgnored")
+ String invalidPageDirectiveIsElIgnored();
+
+ @Message(id = 4102, value = "Tag directive: invalid value for isELIgnored")
+ String invalidTagDirectiveIsElIgnored();
+
+ @Message(id = 4103, value = "Page directive: invalid value for deferredSyntaxAllowedAsLiteral")
+ String invalidPageDirectiveDeferredSyntaxAllowedAsLiteral();
+
+ @Message(id = 4104, value = "Tag directive: invalid value for deferredSyntaxAllowedAsLiteral")
+ String invalidTagDirectiveDeferredSyntaxAllowedAsLiteral();
+
+ @Message(id = 4105, value = "Page directive: invalid value for trimDirectiveWhitespaces")
+ String invalidPageDirectiveTrimDirectiveWhitespaces();
+
+ @Message(id = 4106, value = "Tag directive: invalid value for trimDirectiveWhitespaces")
+ String invalidTagDirectiveTrimDirectiveWhitespaces();
+
+ @Message(id = 4107, value = "Page-encoding specified in XML prolog (%s) is different from that specified in jsp-property-group (%s)")
+ String encodingConflict(String prologEncoding, String propertyGroupEncoding);
+
+ @Message(id = 4108, value = "Unable to determine scripting variable name from attribute %s")
+ String cannotFindVariableNameFromAttribute(String attribute);
+
+ @Message(id = 4109, value = "Name of root element in %s different from %s")
+ String wrongRootElement(String file, String element);
+
+ @Message(id = 4110, value = "Invalid tag plugin %s")
+ String invalidTagPlugin(String file);
+
+ @Message(id = 4111, value = "Duplicate function name %s in tag library %s")
+ String duplicateTagLibraryFunctionName(String function, String library);
+
+ @Message(id = 4112, value = "Mandatory TLD element %s missing in %s")
+ String missingRequiredTagLibraryElement(String element, String library);
+
+ @Message(id = 4113, value = "The absolute uri: %s cannot be resolved in either web.xml or the jar files deployed with this application")
+ String unresolvableAbsoluteUri(String uri);
+
+ @Message(id = 4114, value = "Unable to get JAR resource \"%s\" containing TLD")
+ String errorAccessingJar(String jar);
+
+ @Message(id = 4115, value = "Missing JAR resource \"%s\" containing TLD")
+ String missingJar(String jar);
+
+ @Message(id = 4116, value = "Failed to load or instantiate TagExtraInfo class: %s")
+ String errorLoadingTagExtraInfo(String tei);
+
+ @Message(id = 4117, value = "Failed to load or instantiate TagLibraryValidator class: %s")
+ String errorLoadingTagLibraryValidator(String tlv);
+
+ @Message(id = 4118, value = "Invalid body-content (%s) in tag directive")
+ String invalidBodyContentInTagDirective(String content);
+
+ @Message(id = 4119, value = "Tag directive: illegal to have multiple occurrences of the attribute \"%s\" with different values (old: %s, new: %s)")
+ String invalidConflictingTagDirectiveAttributeValues(String attribute, String oldValue, String newValue);
+
+ @Message(id = 4120, value = "Cannot specify a value type if 'deferredValue' is not 'true'")
+ String cannotUseValueTypeWithoutDeferredValue();
+
+ @Message(id = 4121, value = "Cannot specify a method signature if 'deferredMethod' is not 'true'")
+ String cannotUseMethodSignatureWithoutDeferredMethod();
+
+ @Message(id = 4122, value = "'deferredValue' and 'deferredMethod' cannot be both 'true'")
+ String cannotUseBothDeferredValueAndMethod();
+
+ @Message(id = 4123, value = "Cannot specify both 'fragment' and 'type' attributes. If 'fragment' is present, 'type' is fixed as 'javax.servlet.jsp.tagext.JspFragment'")
+ String cannotUseFragmentWithType();
+
+ @Message(id = 4124, value = "Cannot specify both 'fragment' and 'rtexprvalue' attributes. If 'fragment' is present, 'rtexprvalue' is fixed as 'true'")
+ String cannotUseFragmentWithRtexprValue();
+
+ @Message(id = 4125, value = "Invalid JSP version defined for tag file at %s")
+ String invalidTagFileJspVersion(String file);
+
+ @Message(id = 4126, value = "Either name-given or name-from-attribute attribute must be specified in a variable directive")
+ String mustSpecifyVariableDirectiveEitherName();
+
+ @Message(id = 4127, value = "Cannot specify both name-given or name-from-attribute attributes in a variable directive")
+ String mustNotSpecifyVariableDirectiveBothName();
+
+ @Message(id = 4128, value = "Both or none of the name-from-attribute and alias attributes must be specified in a variable directive")
+ String mustNotSpecifyVariableDirectiveBothOrNoneName();
+
+ @Message(id = 4129, value = "The value of %s and the value of %s in line %s are the same")
+ String invalidDuplicateNames(String name, String name2, int line);
+
+ @Message(id = 4130, value = "Cannot find an attribute directive with a name attribute with a value \"%s\", the value of this name-from-attribute attribute.")
+ String cannotFindAttribute(String name);
+
+ @Message(id = 4131, value = "The attribute directive (declared in line %s and whose name attribute is \"%s\", the value of this name-from-attribute attribute) must be of type java.lang.String, is \"required\" and not a \"rtexprvalue\".")
+ String invalidAttributeFound(int line, String name);
+
+ @Message(id = 4132, value = "%s directive can only be used in a tag file")
+ String invalidDirectiveInPage(String directive);
+
+ @Message(id = 4133, value = "Invalid directive")
+ String invalidDirective();
+
+ @Message(id = 4134, value = "The attribute prefix %s does not correspond to any imported tag library")
+ String invalidAttributePrefix(String prefix);
+
+ @Message(id = 4135, value = "Equal symbol expected")
+ String missingEqual();
+
+ @Message(id = 4136, value = "Quote symbol expected")
+ String missingQuote();
+
+ @Message(id = 4137, value = "Attribute for %s is not properly terminated")
+ String unterminatedAttribute(String end);
+
+ @Message(id = 4138, value = "Unable to include %s")
+ String errorIncluding(String file);
+
+ @Message(id = 4139, value = "The prefix %s specified in this tag directive has been previously used by an action in file %s line %s")
+ String prefixAlreadyInUse(String prefix, String file, int line);
+
+ @Message(id = 4140, value = "Attempt to redefine the prefix %s to %s, when it was already defined as %s in the current scope")
+ String prefixRedefinition(String prefix, String uri, String previousUri);
+
+ @Message(id = 4141, value = "Expecting \"jsp:param\" standard action with \"name\" and \"value\" attributes")
+ String missingParamAction();
+
+ @Message(id = 4142, value = "The %s tag can only have jsp:attribute in its body")
+ String invalidEmptyBodyTag(String tag);
+
+ @Message(id = 4143, value = "Must use jsp:body to specify tag body for %s if jsp:attribute is used.")
+ String invalidTagBody(String tag);
+
+ @Message(id = 4144, value = "jsp:attribute must be the subelement of a standard or custom action")
+ String invalidJspAttribute();
+
+ @Message(id = 4145, value = "jsp:body must be the subelement of a standard or custom action")
+ String invalidJspBody();
+
+ @Message(id = 4146, value = "jsp:fallback must be a direct child of jsp:plugin")
+ String invalidJspFallback();
+
+ @Message(id = 4147, value = "jsp:params must be a direct child of jsp:plugin")
+ String invalidJspParams();
+
+ @Message(id = 4148, value = "The jsp:param action must not be used outside the jsp:include, jsp:forward, or jsp:params elements")
+ String invalidJspParam();
+
+ @Message(id = 4149, value = "jsp:output must not be used in standard syntax")
+ String invalidJspOutput();
+
+ @Message(id = 4150, value = "Invalid standard action")
+ String invalidStandardAction();
+
+ @Message(id = 4151, value = "No tag \"%s\" defined in tag library imported with prefix \"%s\"")
+ String unknownTagPrefix(String tag, String prefix);
+
+ @Message(id = 4152, value = "\'<\', when appears in the body of <jsp:text>, must be encapsulated within a CDATA")
+ String badContent();
+
+ @Message(id = 4153, value = "%s not allowed in a template text body")
+ String invalidTemplateTextBody(String invalid);
+
+ @Message(id = 4154, value = "Custom tag is not allowed in a template text body")
+ String invalidTagInTemplateTextBody();
+
+ @Message(id = 4155, value = "The end tag \"</%s\" is unbalanced")
+ String unbalancedEndTag(String action);
+
+ @Message(id = 4156, value = "A jsp:attribute standard action cannot be nested within another jsp:attribute standard action")
+ String invalidJspAttributeNesting();
+
+ @Message(id = 4157, value = "A jsp:body standard action cannot be nested within another jsp:body or jsp:attribute standard action")
+ String invalidJspBodyNesting();
+
+ @Message(id = 4158, value = "Invalid body content type")
+ String invalidBodyContentType();
+
+ @Message(id = 4159, value = "Page directive: illegal to have multiple occurrences of '%s' with different values (old: %s, new: %s)")
+ String invalidConflictingPageDirectiveAttribute(String attribute, String oldValue, String newValue);
+
+ @Message(id = 4160, value = "Page directive must not have multiple occurrences of '%s'")
+ String invalidDuplicatePageDirectiveAttribute(String attribute);
+
+ @Message(id = 4161, value = "Page directive auto flush cannot be used with a buffer")
+ String invalidConflictingPageDirectiveAutoFlushBuffer();
+
+ @Message(id = 4162, value = "Tag directive must not have multiple occurrences of '%s'")
+ String invalidDuplicateTagDirectiveAttribute(String attribute);
+
+ @Message(id = 4163, value = "Page-encoding specified in jsp-property-group (%s) is different from that specified in page directive (%s)")
+ String pageEncodingConflictJspPropertyGroup(String jspPropertyGroupEncoding, String pageDirectiveEncoding);
+
+ @Message(id = 4164, value = "Page-encoding specified in XML prolog (%s) is different from that specified in page directive (%s)")
+ String pageEncodingConflictProlog(String prologEncoding, String pageDirectiveEncoding);
+
+ @Message(id = 4165, value = "Invalid version number: \"%s\", must be \"1.2\", \"2.0\", \"2.1\", or \"2.2\"")
+ String invalidJspVersionNumber(String version);
+
+ @Message(id = 4166, value = "Neither \'uri\' nor \'tagdir\' attribute specified")
+ String invalidTaglibDirectiveMissingLocation();
+
+ @Message(id = 4167, value = "Both \'uri\' and \'tagdir\' attributes specified")
+ String invalidTaglibDirectiveConflictingLocation();
+
+ @Message(id = 4168, value = "jsp:params must contain at least one nested jsp:param")
+ String invalidEmptyJspParams();
+
+ @Message(id = 4169, value = "setProperty: can't have non-null value when property=*")
+ String invalidSetProperty();
+
+ @Message(id = 4170, value = "setProperty: can't have non-null value whith param")
+ String invalidSetPropertyEitherParam();
+
+ @Message(id = 4171, value = "Missing type for useBean")
+ String missingUseBeanType();
+
+ @Message(id = 4172, value = "Duplicate bean name: %s")
+ String duplicateUseBeanName(String name);
+
+ @Message(id = 4173, value = "Illegal for useBean to use session scope when JSP page declares (via page directive) that it does not participate in sessions")
+ String cannotAccessSessionScopeWithUseBean();
+
+ @Message(id = 4174, value = "Cannot use both and attribute and a type in useBean")
+ String cannotUseBothAttributeAndTypeInUseBean();
+
+ @Message(id = 4175, value = "Type not declared in plugin")
+ String missingPluginType();
+
+ @Message(id = 4176, value = "Illegal value %s for 'type' attribute in plugin: must be 'bean' or 'applet'")
+ String badPluginType(String type);
+
+ @Message(id = 4177, value = "Code not declared in plugin")
+ String missingPluginCode();
+
+ @Message(id = 4178, value = "#{..} is not allowed in template text")
+ String invalidDeferredExpressionInTemplateText();
+
+ @Message(id = 4179, value = "TagInfo object for %s is missing from TLD")
+ String missingTagInfo(String tag);
+
+ @Message(id = 4180, value = "The TLD for the class %s specifies an invalid body-content (JSP) for a SimpleTag")
+ String invalidSimpleTagBodyContent(String tag);
+
+ @Message(id = 4181, value = "The %s tag declares that it accepts dynamic attributes but does not implement the required interface")
+ String unimplementedDynamicAttributes(String tag);
+
+ @Message(id = 4182, value = "Tag %s has one or more variable subelements and a TagExtraInfo class that returns one or more VariableInfo")
+ String invalidTeiWithVariableSubelements(String tag);
+
+ @Message(id = 4183, value = "Mandatory attributes missing")
+ String missingMandatoryAttributes();
+
+ @Message(id = 4184, value = "Mandatory XML-style \'name\' attribute missing")
+ String missingMandatoryNameAttribute();
+
+ @Message(id = 4185, value = "<jsp:output> must not have a body")
+ String invalidJspOutputBody();
+
+ @Message(id = 4186, value = "<jsp:output>: illegal to have multiple occurrences of \"%s\" with different values (old: %s, new: %s)")
+ String invalidJspOutputConflict(String attribute, String oldValue, String newValue);
+
+ @Message(id = 4187, value = "<jsp:output>: 'doctype-root-element' and 'doctype-system' attributes must appear together")
+ String errorJspOutputDoctype();
+
+ @Message(id = 4188, value = "<jsp:output>: 'doctype-system' attribute must appear if 'doctype-public' attribute appears")
+ String errorJspOutputMissingDoctype();
+
+ @Message(id = 4189, value = "Missing \'var\' or \'varReader\' attribute")
+ String missingVarAttribute();
+
+ @Message(id = 4190, value = "Only one of \'var\' or \'varReader\' may be specified")
+ String errorBothVarAttributes();
+
+ @Message(id = 4191, value = "Cannot use both ${} and #{} EL expressions in the same attribute value")
+ String errorUsingBothElTypes();
+
+ @Message(id = 4192, value = "A literal value was specified for attribute %s that is defined as a deferred method with a return type of void. JSP.2.3.4 does not permit literal values in this case")
+ String errorUsingLiteralValueWithDeferredVoidReturnTyep(String attribute);
+
+ @Message(id = 4193, value = "Unknown attribute type (%s) for attribute %s")
+ String unknownAttributeType(String attribute, String attributeType);
+
+ @Message(id = 4194, value = "Cannot coerce value (%s) to type (%s) for attribute %s")
+ String errorCoercingAttributeValue(String attribute, String attributeType, String value);
+
+ @Message(id = 4195, value = "According to TLD or attribute directive in tag file, attribute %s does not accept any expressions")
+ String noExpressionAllowedForAttribute(String attribute);
+
+ @Message(id = 4196, value = "%s contains invalid expression(s)")
+ String invalidExpression(String attributeValue);
+
+ @Message(id = 4197, value = "Attribute %s invalid for tag %s according to TLD")
+ String invalidAttributeForTag(String attribute, String tag);
+
+ @Message(id = 4198, value = "The %s attribute of the %s standard action does not accept any expressions")
+ String noExpressionAllowedForAttributeInAction(String attribute, String action);
+
+ @Message(id = 4199, value = "The function %s must be used with a prefix when a default namespace is not specified")
+ String missingFunctionPrefix(String function);
+
+ @Message(id = 4200, value = "The function prefix %s does not correspond to any imported tag library")
+ String unknownFunctionPrefix(String prefix);
+
+ @Message(id = 4201, value = "The function %s cannot be located with the specified prefix")
+ String unknownFunction(String function);
+
+ @Message(id = 4202, value = "Invalid syntax for function signature in TLD. Tag Library: %s, Function: %s")
+ String invalidFunctionSignature(String prefix, String function);
+
+ @Message(id = 4203, value = "Invalid syntax for function signature in TLD. Parenthesis '(' expected. Tag Library: %s, Function: %s")
+ String invalidFunctionSignatureMissingParent(String prefix, String function);
+
+ @Message(id = 4204, value = "The class %s specified in TLD for the function %s cannot be found")
+ String missingFunctionClass(String className, String function);
+
+ @Message(id = 4205, value = "The class %s specified in the method signature in TLD for the function %s cannot be found")
+ String missingSignatureClass(String className, String function);
+
+ @Message(id = 4206, value = "Method \"%s\" for function \"%s\" not found in class \"%s\"")
+ String missingMethodInClass(String method, String function, String className);
+
+ @Message(id = 4207, value = "Validation error messages from TagExtraInfo for %s")
+ String errorValidatingTag(String tag);
+
+ @Message(id = 4208, value = "Validation error messages from TagLibraryValidator for %s in %s")
+ String errorValidatingTaglibrary(String taglib, String jsp);
+
+ @Message(id = 4209, value = "An exception occurred processing JSP page %s at line %s")
+ String jspException(String jsp, int line);
+
}
11 years, 7 months