Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/Generated.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/PostConstruct.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/PreDestroy.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/Resource.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/Resources.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/security/DeclareRoles.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/security/DenyAll.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/security/PermitAll.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/security/RolesAllowed.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/annotation/security/RunAs.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/ejb/EJB.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/ejb/EJBs.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ArrayELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/BeanELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/CompositeELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ELContext.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ELContextEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ELContextListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ELException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/Expression.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ExpressionFactory.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/FunctionMapper.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ListELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/LocalStrings.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/LocalStrings_es.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/MapELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/MethodExpression.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/MethodInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/MethodNotFoundException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/PropertyNotFoundException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/PropertyNotWritableException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ResourceBundleELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/ValueExpression.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/el/VariableMapper.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/persistence/PersistenceContext.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/persistence/PersistenceContexts.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/persistence/PersistenceProperty.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/persistence/PersistenceUnit.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/persistence/PersistenceUnits.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/Filter.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/FilterChain.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/FilterConfig.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/GenericServlet.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/LocalStrings.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/LocalStrings_es.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/LocalStrings_fr.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/LocalStrings_ja.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/RequestDispatcher.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/Servlet.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletConfig.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletContext.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletContextAttributeEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletContextAttributeListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletContextEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletContextListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletInputStream.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletOutputStream.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletRequest.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletRequestAttributeEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletRequestAttributeListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletRequestEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletRequestListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletRequestWrapper.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletResponse.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/ServletResponseWrapper.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/SingleThreadModel.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/UnavailableException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/Cookie.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpServlet.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpServletRequest.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpServletRequestWrapper.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpServletResponse.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpServletResponseWrapper.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSession.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSessionActivationListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSessionAttributeListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSessionBindingEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSessionBindingListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSessionContext.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSessionEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpSessionListener.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/HttpUtils.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/LocalStrings.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/LocalStrings_es.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/LocalStrings_fr.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/LocalStrings_ja.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/http/package.html'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/ErrorData.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/HttpJspPage.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspApplicationContext.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspContext.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspEngineInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspFactory.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspPage.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspTagException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/JspWriter.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/PageContext.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/SkipPageException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/ELException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/ELParseException.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/Expression.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/ExpressionEvaluator.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/FunctionMapper.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/ImplicitObjectELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/ScopedAttributeELResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/VariableResolver.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/el/package.html'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/package.html'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/jsp_2_0.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/jsp_2_1.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/jspxml.dtd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/jspxml.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/web-jsptaglibrary_2_0.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/BodyContent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/BodyTag.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/BodyTagSupport.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/DynamicAttributes.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/FunctionInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/IterationTag.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/JspFragment.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/JspIdConsumer.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/JspTag.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/PageData.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/SimpleTag.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/SimpleTagSupport.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/Tag.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagAdapter.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagAttributeInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagData.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagExtraInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagFileInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagLibraryInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagLibraryValidator.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagSupport.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TagVariableInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/TryCatchFinally.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/ValidationMessage.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/VariableInfo.java'. Fisheye: No comparison available. Pass `N' to diff? Index: 3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/doc-files/BodyTagProtocol.gif =================================================================== diff -u -rddc5768c149d4049055f71b517524016f8f43b9c -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 Binary files differ Index: 3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/doc-files/IterationTagProtocol.gif =================================================================== diff -u -rddc5768c149d4049055f71b517524016f8f43b9c -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 Binary files differ Index: 3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/doc-files/TagProtocol.gif =================================================================== diff -u -rddc5768c149d4049055f71b517524016f8f43b9c -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 Binary files differ Index: 3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/doc-files/VariableInfo-1.gif =================================================================== diff -u -rddc5768c149d4049055f71b517524016f8f43b9c -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 Binary files differ Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/jsp/tagext/package.html'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/package.html'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/XMLSchema.dtd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/datatypes.dtd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/j2ee_1_4.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/j2ee_web_services_1_1.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/j2ee_web_services_client_1_1.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/web-app_2_2.dtd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/web-app_2_3.dtd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/web-app_2_4.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/web-app_2_5.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/servlet/resources/xml.xsd'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/xml/ws/WebServiceRef.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 refers to a dead (removed) revision in file `3rdParty_sources/jbossweb/javax/xml/ws/WebServiceRefs.java'. Fisheye: No comparison available. Pass `N' to diff? Index: 3rdParty_sources/servlet-api/javax/servlet/AsyncContext.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/AsyncContext.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/AsyncContext.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,507 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +/** + * Class representing the execution context for an asynchronous operation + * that was initiated on a ServletRequest. + * + *

An AsyncContext is created and initialized by a call to + * {@link ServletRequest#startAsync()} or + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)}. + * Repeated invocations of these methods will return the same AsyncContext + * instance, reinitialized as appropriate. + * + *

In the event that an asynchronous operation has timed out, the + * container must run through these steps: + *

    + *
  1. Invoke, at their {@link AsyncListener#onTimeout onTimeout} method, all + * {@link AsyncListener} instances registered with the ServletRequest + * on which the asynchronous operation was initiated.
  2. + *
  3. If none of the listeners called {@link #complete} or any of the + * {@link #dispatch} methods, perform an error dispatch with a status code + * equal to HttpServletResponse.SC_INTERNAL_SERVER_ERROR.
  4. + *
  5. If no matching error page was found, or the error page did not call + * {@link #complete} or any of the {@link #dispatch} methods, call + * {@link #complete}.
  6. + *
+ * + * @since Servlet 3.0 + */ +public interface AsyncContext { + + /** + * The name of the request attribute under which the original + * request URI is made available to the target of a + * {@link #dispatch(String)} or {@link #dispatch(ServletContext,String)} + */ + static final String ASYNC_REQUEST_URI = "javax.servlet.async.request_uri"; + + /** + * The name of the request attribute under which the original + * context path is made available to the target of a + * {@link #dispatch(String)} or {@link #dispatch(ServletContext,String)} + */ + static final String ASYNC_CONTEXT_PATH = "javax.servlet.async.context_path"; + + /** + * The name of the request attribute under which the original + * path info is made available to the target of a + * {@link #dispatch(String)} or {@link #dispatch(ServletContext,String)} + */ + static final String ASYNC_PATH_INFO = "javax.servlet.async.path_info"; + + /** + * The name of the request attribute under which the original + * servlet path is made available to the target of a + * {@link #dispatch(String)} or {@link #dispatch(ServletContext,String)} + */ + static final String ASYNC_SERVLET_PATH = "javax.servlet.async.servlet_path"; + + /** + * The name of the request attribute under which the original + * query string is made available to the target of a + * {@link #dispatch(String)} or {@link #dispatch(ServletContext,String)} + */ + static final String ASYNC_QUERY_STRING = "javax.servlet.async.query_string"; + + + /** + * Gets the request that was used to initialize this AsyncContext + * by calling {@link ServletRequest#startAsync()} or + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)}. + * + * @return the request that was used to initialize this AsyncContext + * + * @exception IllegalStateException if {@link #complete} or any of the + * {@link #dispatch} methods has been + * called in the asynchronous cycle + */ + public ServletRequest getRequest(); + + + /** + * Gets the response that was used to initialize this AsyncContext + * by calling {@link ServletRequest#startAsync()} or + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)}. + * + * @return the response that was used to initialize this AsyncContext + * + * @exception IllegalStateException if {@link #complete} or any of the + * {@link #dispatch} methods has been + * called in the asynchronous cycle + */ + public ServletResponse getResponse(); + + + /** + * Checks if this AsyncContext was initialized with the original or + * application-wrapped request and response objects. + * + *

This information may be used by filters invoked in the + * outbound direction, after a request was put into + * asynchronous mode, to determine whether any request and/or response + * wrappers that they added during their inbound invocation need + * to be preserved for the duration of the asynchronous operation, or may + * be released. + * + * @return true if this AsyncContext was initialized with the original + * request and response objects by calling + * {@link ServletRequest#startAsync()}, or if it was initialized by + * calling + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)}, + * and neither the ServletRequest nor ServletResponse arguments + * carried any application-provided wrappers; false otherwise + */ + public boolean hasOriginalRequestAndResponse(); + + + /** + * Dispatches the request and response objects of this AsyncContext + * to the servlet container. + * + *

If the asynchronous cycle was started with + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)}, + * and the request passed is an instance of HttpServletRequest, + * then the dispatch is to the URI returned by + * {@link javax.servlet.http.HttpServletRequest#getRequestURI}. + * Otherwise, the dispatch is to the URI of the request when it was + * last dispatched by the container. + * + *

The following sequence illustrates how this will work: + *

+     * // REQUEST dispatch to /url/A
+     * AsyncContext ac = request.startAsync();
+     * ...
+     * ac.dispatch(); // ASYNC dispatch to /url/A
+     * 
+     * // REQUEST to /url/A
+     * // FORWARD dispatch to /url/B
+     * request.getRequestDispatcher("/url/B").forward(request,response);
+     * // Start async operation from within the target of the FORWARD
+     * // dispatch
+     * ac = request.startAsync();
+     * ...
+     * ac.dispatch(); // ASYNC dispatch to /url/A
+     * 
+     * // REQUEST to /url/A
+     * // FORWARD dispatch to /url/B
+     * request.getRequestDispatcher("/url/B").forward(request,response);
+     * // Start async operation from within the target of the FORWARD
+     * // dispatch
+     * ac = request.startAsync(request,response);
+     * ...
+     * ac.dispatch(); // ASYNC dispatch to /url/B
+     * 
+ * + *

This method returns immediately after passing the request + * and response objects to a container managed thread, on which the + * dispatch operation will be performed. + * If this method is called before the container-initiated dispatch + * that called startAsync has returned to the container, the + * dispatch operation will be delayed until after the container-initiated + * dispatch has returned to the container. + * + *

The dispatcher type of the request is set to + * DispatcherType.ASYNC. Unlike + * {@link RequestDispatcher#forward(ServletRequest, ServletResponse) + * forward dispatches}, the response buffer and + * headers will not be reset, and it is legal to dispatch even if the + * response has already been committed. + * + *

Control over the request and response is delegated + * to the dispatch target, and the response will be closed when the + * dispatch target has completed execution, unless + * {@link ServletRequest#startAsync()} or + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)} + * are called. + * + *

Any errors or exceptions that may occur during the execution + * of this method must be caught and handled by the container, as + * follows: + *

    + *
  1. Invoke, at their {@link AsyncListener#onError onError} method, all + * {@link AsyncListener} instances registered with the ServletRequest + * for which this AsyncContext was created, and make the caught + * Throwable available via {@link AsyncEvent#getThrowable}.
  2. + *
  3. If none of the listeners called {@link #complete} or any of the + * {@link #dispatch} methods, perform an error dispatch with a status code + * equal to HttpServletResponse.SC_INTERNAL_SERVER_ERROR, and + * make the above Throwable available as the value of the + * RequestDispatcher.ERROR_EXCEPTION request attribute.
  4. + *
  5. If no matching error page was found, or the error page did not call + * {@link #complete} or any of the {@link #dispatch} methods, call + * {@link #complete}.
  6. + *
+ * + *

There can be at most one asynchronous dispatch operation per + * asynchronous cycle, which is started by a call to one of the + * {@link ServletRequest#startAsync} methods. Any attempt to perform an + * additional asynchronous dispatch operation within the same + * asynchronous cycle will result in an IllegalStateException. + * If startAsync is subsequently called on the dispatched request, + * then any of the dispatch or {@link #complete} methods may be called. + * + * @throws IllegalStateException if one of the dispatch methods + * has been called and the startAsync method has not been + * called during the resulting dispatch, or if {@link #complete} + * was called + * + * @see ServletRequest#getDispatcherType + */ + public void dispatch(); + + + /** + * Dispatches the request and response objects of this AsyncContext + * to the given path. + * + *

The path parameter is interpreted in the same way + * as in {@link ServletRequest#getRequestDispatcher(String)}, within + * the scope of the {@link ServletContext} from which this + * AsyncContext was initialized. + * + *

All path related query methods of the request must reflect the + * dispatch target, while the original request URI, context path, + * path info, servlet path, and query string may be recovered from + * the {@link #ASYNC_REQUEST_URI}, {@link #ASYNC_CONTEXT_PATH}, + * {@link #ASYNC_PATH_INFO}, {@link #ASYNC_SERVLET_PATH}, and + * {@link #ASYNC_QUERY_STRING} attributes of the request. These + * attributes will always reflect the original path elements, even under + * repeated dispatches. + * + *

There can be at most one asynchronous dispatch operation per + * asynchronous cycle, which is started by a call to one of the + * {@link ServletRequest#startAsync} methods. Any attempt to perform an + * additional asynchronous dispatch operation within the same + * asynchronous cycle will result in an IllegalStateException. + * If startAsync is subsequently called on the dispatched request, + * then any of the dispatch or {@link #complete} methods may be called. + * + *

See {@link #dispatch()} for additional details, including error + * handling. + * + * @param path the path of the dispatch target, scoped to the + * ServletContext from which this AsyncContext was initialized + * + * @throws IllegalStateException if one of the dispatch methods + * has been called and the startAsync method has not been + * called during the resulting dispatch, or if {@link #complete} + * was called + * + * @see ServletRequest#getDispatcherType + */ + public void dispatch(String path); + + + /** + * Dispatches the request and response objects of this AsyncContext + * to the given path scoped to the given context. + * + *

The path parameter is interpreted in the same way + * as in {@link ServletRequest#getRequestDispatcher(String)}, except that + * it is scoped to the given context. + * + *

All path related query methods of the request must reflect the + * dispatch target, while the original request URI, context path, + * path info, servlet path, and query string may be recovered from + * the {@link #ASYNC_REQUEST_URI}, {@link #ASYNC_CONTEXT_PATH}, + * {@link #ASYNC_PATH_INFO}, {@link #ASYNC_SERVLET_PATH}, and + * {@link #ASYNC_QUERY_STRING} attributes of the request. These + * attributes will always reflect the original path elements, even under + * repeated dispatches. + * + *

There can be at most one asynchronous dispatch operation per + * asynchronous cycle, which is started by a call to one of the + * {@link ServletRequest#startAsync} methods. Any attempt to perform an + * additional asynchronous dispatch operation within the same + * asynchronous cycle will result in an IllegalStateException. + * If startAsync is subsequently called on the dispatched request, + * then any of the dispatch or {@link #complete} methods may be called. + * + *

See {@link #dispatch()} for additional details, including error + * handling. + * + * @param context the ServletContext of the dispatch target + * @param path the path of the dispatch target, scoped to the given + * ServletContext + * + * @throws IllegalStateException if one of the dispatch methods + * has been called and the startAsync method has not been + * called during the resulting dispatch, or if {@link #complete} + * was called + * + * @see ServletRequest#getDispatcherType + */ + public void dispatch(ServletContext context, String path); + + + /** + * Completes the asynchronous operation that was started on the request + * that was used to initialze this AsyncContext, closing the response + * that was used to initialize this AsyncContext. + * + *

Any listeners of type {@link AsyncListener} that were registered + * with the ServletRequest for which this AsyncContext was created will + * be invoked at their {@link AsyncListener#onComplete(AsyncEvent) + * onComplete} method. + * + *

It is legal to call this method any time after a call to + * {@link ServletRequest#startAsync()} or + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)}, + * and before a call to one of the dispatch methods + * of this class. + * If this method is called before the container-initiated dispatch + * that called startAsync has returned to the container, then + * the call will not take effect (and any invocations of + * {@link AsyncListener#onComplete(AsyncEvent)} will be delayed) until + * after the container-initiated dispatch has returned to the container. + */ + public void complete(); + + + /** + * Causes the container to dispatch a thread, possibly from a managed + * thread pool, to run the specified Runnable. The container may + * propagate appropriate contextual information to the Runnable. + * + * @param run the asynchronous handler + */ + public void start(Runnable run); + + + /** + * Registers the given {@link AsyncListener} with the most recent + * asynchronous cycle that was started by a call to one of the + * {@link ServletRequest#startAsync} methods. + * + *

The given AsyncListener will receive an {@link AsyncEvent} when + * the asynchronous cycle completes successfully, times out, results + * in an error, or a new asynchronous cycle is being initiated via + * one of the {@link ServletRequest#startAsync} methods. + * + *

AsyncListener instances will be notified in the order in which + * they were added. + * + *

If {@link ServletRequest#startAsync(ServletRequest, ServletResponse)} + * or {@link ServletRequest#startAsync} is called, + * the exact same request and response objects are available from the + * {@link AsyncEvent} when the {@link AsyncListener} is notified. + * + * @param listener the AsyncListener to be registered + * + * @throws IllegalStateException if this method is called after + * the container-initiated dispatch, during which one of the + * {@link ServletRequest#startAsync} methods was called, has + * returned to the container + */ + public void addListener(AsyncListener listener); + + + /** + * Registers the given {@link AsyncListener} with the most recent + * asynchronous cycle that was started by a call to one of the + * {@link ServletRequest#startAsync} methods. + * + *

The given AsyncListener will receive an {@link AsyncEvent} when + * the asynchronous cycle completes successfully, times out, results + * in an error, or a new asynchronous cycle is being initiated via + * one of the {@link ServletRequest#startAsync} methods. + * + *

AsyncListener instances will be notified in the order in which + * they were added. + * + *

The given ServletRequest and ServletResponse objects will + * be made available to the given AsyncListener via the + * {@link AsyncEvent#getSuppliedRequest getSuppliedRequest} and + * {@link AsyncEvent#getSuppliedResponse getSuppliedResponse} methods, + * respectively, of the {@link AsyncEvent} delivered to it. These objects + * should not be read from or written to, respectively, at the time the + * AsyncEvent is delivered, because additional wrapping may have + * occurred since the given AsyncListener was registered, but may be used + * in order to release any resources associated with them. + * + * @param listener the AsyncListener to be registered + * @param servletRequest the ServletRequest that will be included + * in the AsyncEvent + * @param servletResponse the ServletResponse that will be included + * in the AsyncEvent + * + * @throws IllegalStateException if this method is called after + * the container-initiated dispatch, during which one of the + * {@link ServletRequest#startAsync} methods was called, has + * returned to the container + */ + public void addListener(AsyncListener listener, + ServletRequest servletRequest, + ServletResponse servletResponse); + + + /** + * Instantiates the given {@link AsyncListener} class. + * + *

The returned AsyncListener instance may be further customized + * before it is registered with this AsyncContext via a call to one of + * the addListener methods. + * + *

The given AsyncListener class must define a zero argument + * constructor, which is used to instantiate it. + * + *

This method supports resource injection if the given + * clazz represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + + *

This method supports any annotations applicable to AsyncListener. + * + * @param clazz the AsyncListener class to instantiate + * + * @return the new AsyncListener instance + * + * @throws ServletException if the given clazz fails to be + * instantiated + */ + public T createListener(Class clazz) + throws ServletException; + + + /** + * Sets the timeout (in milliseconds) for this AsyncContext. + * + *

The timeout applies to this AsyncContext once the + * container-initiated dispatch during which one of the + * {@link ServletRequest#startAsync} methods was called has + * returned to the container. + * + *

The timeout will expire if neither the {@link #complete} method + * nor any of the dispatch methods are called. A timeout value of + * zero or less indicates no timeout. + * + *

If {@link #setTimeout} is not called, then the container's + * default timeout, which is available via a call to + * {@link #getTimeout}, will apply. + * + *

The default value is 30000 ms. + * + * @param timeout the timeout in milliseconds + * + * @throws IllegalStateException if this method is called after + * the container-initiated dispatch, during which one of the + * {@link ServletRequest#startAsync} methods was called, has + * returned to the container + */ + public void setTimeout(long timeout); + + + /** + * Gets the timeout (in milliseconds) for this AsyncContext. + * + *

This method returns the container's default timeout for + * asynchronous operations, or the timeout value passed to the most + * recent invocation of {@link #setTimeout}. + * + *

A timeout value of zero or less indicates no timeout. + * + * @return the timeout in milliseconds + */ + public long getTimeout(); + +} Index: 3rdParty_sources/servlet-api/javax/servlet/AsyncEvent.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/AsyncEvent.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/AsyncEvent.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,166 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +/** + * Event that gets fired when the asynchronous operation initiated on a + * ServletRequest (via a call to {@link ServletRequest#startAsync} or + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)}) + * has completed, timed out, or produced an error. + * + * @since Servlet 3.0 + */ +public class AsyncEvent { + + private AsyncContext context; + private ServletRequest request; + private ServletResponse response; + private Throwable throwable; + + + /** + * Constructs an AsyncEvent from the given AsyncContext. + * + * @param context the AsyncContex to be delivered with this AsyncEvent + */ + public AsyncEvent(AsyncContext context) { + this(context, context.getRequest(), context.getResponse(), null); + } + + /** + * Constructs an AsyncEvent from the given AsyncContext, ServletRequest, + * and ServletResponse. + * + * @param context the AsyncContex to be delivered with this AsyncEvent + * @param request the ServletRequest to be delivered with this AsyncEvent + * @param response the ServletResponse to be delivered with this + * AsyncEvent + */ + public AsyncEvent(AsyncContext context, ServletRequest request, + ServletResponse response) { + this(context, request, response, null); + } + + /** + * Constructs an AsyncEvent from the given AsyncContext and Throwable. + * + * @param context the AsyncContex to be delivered with this AsyncEvent + * @param throwable the Throwable to be delivered with this AsyncEvent + */ + public AsyncEvent(AsyncContext context, Throwable throwable) { + this(context, context.getRequest(), context.getResponse(), throwable); + } + + /** + * Constructs an AsyncEvent from the given AsyncContext, ServletRequest, + * ServletResponse, and Throwable. + * + * @param context the AsyncContex to be delivered with this AsyncEvent + * @param request the ServletRequest to be delivered with this AsyncEvent + * @param response the ServletResponse to be delivered with this + * AsyncEvent + * @param throwable the Throwable to be delivered with this AsyncEvent + */ + public AsyncEvent(AsyncContext context, ServletRequest request, + ServletResponse response, Throwable throwable) { + this.context = context; + this.request = request; + this.response = response; + this.throwable = throwable; + } + + /** + * Gets the AsyncContext from this AsyncEvent. + * + * @return the AsyncContext that was used to initialize this AsyncEvent + */ + public AsyncContext getAsyncContext() { + return context; + } + + /** + * Gets the ServletRequest from this AsyncEvent. + * + *

If the AsyncListener to which this AsyncEvent is being delivered + * was added using {@link AsyncContext#addListener(AsyncListener, + * ServletRequest, ServletResponse)}, the returned ServletRequest + * will be the same as the one supplied to the above method. + * If the AsyncListener was added via + * {@link AsyncContext#addListener(AsyncListener)}, this method + * must return null. + * + * @return the ServletRequest that was used to initialize this AsyncEvent, + * or null if this AsyncEvent was initialized without any ServletRequest + */ + public ServletRequest getSuppliedRequest() { + return request; + } + + /** + * Gets the ServletResponse from this AsyncEvent. + * + *

If the AsyncListener to which this AsyncEvent is being delivered + * was added using {@link AsyncContext#addListener(AsyncListener, + * ServletRequest, ServletResponse)}, the returned ServletResponse + * will be the same as the one supplied to the above method. + * If the AsyncListener was added via + * {@link AsyncContext#addListener(AsyncListener)}, this method + * must return null. + * + * @return the ServletResponse that was used to initialize this AsyncEvent, + * or null if this AsyncEvent was initialized without any ServletResponse + */ + public ServletResponse getSuppliedResponse() { + return response; + } + + /** + * Gets the Throwable from this AsyncEvent. + * + * @return the Throwable that was used to initialize this AsyncEvent, + * or null if this AsyncEvent was initialized without any Throwable + */ + public Throwable getThrowable() { + return throwable; + } + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/AsyncListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/AsyncListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/AsyncListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,164 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import java.io.IOException; +import java.util.EventListener; + +/** + * Listener that will be notified in the event that an asynchronous + * operation initiated on a ServletRequest to which the listener had been + * added has completed, timed out, or resulted in an error. + * + * @since Servlet 3.0 + */ +public interface AsyncListener extends EventListener { + + /** + * Notifies this AsyncListener that an asynchronous operation + * has been completed. + * + *

The {@link AsyncContext} corresponding to the asynchronous + * operation that has been completed may be obtained by calling + * {@link AsyncEvent#getAsyncContext getAsyncContext} on the given + * event. + * + *

In addition, if this AsyncListener had been registered via a call + * to {@link AsyncContext#addListener(AsyncListener, + * ServletRequest, ServletResponse)}, the supplied ServletRequest and + * ServletResponse objects may be retrieved by calling + * {@link AsyncEvent#getSuppliedRequest getSuppliedRequest} and + * {@link AsyncEvent#getSuppliedResponse getSuppliedResponse}, + * respectively, on the given event. + * + * @param event the AsyncEvent indicating that an asynchronous + * operation has been completed + * + * @throws IOException if an I/O related error has occurred during the + * processing of the given AsyncEvent + */ + public void onComplete(AsyncEvent event) throws IOException; + + + /** + * Notifies this AsyncListener that an asynchronous operation + * has timed out. + * + *

The {@link AsyncContext} corresponding to the asynchronous + * operation that has timed out may be obtained by calling + * {@link AsyncEvent#getAsyncContext getAsyncContext} on the given + * event. + * + *

In addition, if this AsyncListener had been registered via a call + * to {@link AsyncContext#addListener(AsyncListener, + * ServletRequest, ServletResponse)}, the supplied ServletRequest and + * ServletResponse objects may be retrieved by calling + * {@link AsyncEvent#getSuppliedRequest getSuppliedRequest} and + * {@link AsyncEvent#getSuppliedResponse getSuppliedResponse}, + * respectively, on the given event. + * + * @param event the AsyncEvent indicating that an asynchronous + * operation has timed out + * + * @throws IOException if an I/O related error has occurred during the + * processing of the given AsyncEvent + */ + public void onTimeout(AsyncEvent event) throws IOException; + + + /** + * Notifies this AsyncListener that an asynchronous operation + * has failed to complete. + * + *

The {@link AsyncContext} corresponding to the asynchronous + * operation that failed to complete may be obtained by calling + * {@link AsyncEvent#getAsyncContext getAsyncContext} on the given + * event. + * + *

In addition, if this AsyncListener had been registered via a call + * to {@link AsyncContext#addListener(AsyncListener, + * ServletRequest, ServletResponse)}, the supplied ServletRequest and + * ServletResponse objects may be retrieved by calling + * {@link AsyncEvent#getSuppliedRequest getSuppliedRequest} and + * {@link AsyncEvent#getSuppliedResponse getSuppliedResponse}, + * respectively, on the given event. + * + * @param event the AsyncEvent indicating that an asynchronous + * operation has failed to complete + * + * @throws IOException if an I/O related error has occurred during the + * processing of the given AsyncEvent + */ + public void onError(AsyncEvent event) throws IOException; + + + /** + * Notifies this AsyncListener that a new asynchronous cycle is being + * initiated via a call to one of the {@link ServletRequest#startAsync} + * methods. + * + *

The {@link AsyncContext} corresponding to the asynchronous + * operation that is being reinitialized may be obtained by calling + * {@link AsyncEvent#getAsyncContext getAsyncContext} on the given + * event. + * + *

In addition, if this AsyncListener had been registered via a call + * to {@link AsyncContext#addListener(AsyncListener, + * ServletRequest, ServletResponse)}, the supplied ServletRequest and + * ServletResponse objects may be retrieved by calling + * {@link AsyncEvent#getSuppliedRequest getSuppliedRequest} and + * {@link AsyncEvent#getSuppliedResponse getSuppliedResponse}, + * respectively, on the given event. + * + *

This AsyncListener will not receive any events related to the + * new asynchronous cycle unless it registers itself (via a call + * to {@link AsyncContext#addListener}) with the AsyncContext that + * is delivered as part of the given AsyncEvent. + * + * @param event the AsyncEvent indicating that a new asynchronous + * cycle is being initiated + * + * @throws IOException if an I/O related error has occurred during the + * processing of the given AsyncEvent + */ + public void onStartAsync(AsyncEvent event) throws IOException; + +} Index: 3rdParty_sources/servlet-api/javax/servlet/DispatcherType.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/DispatcherType.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/DispatcherType.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,54 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +/** + * Enumeration of filter dispatcher types. + * + * @since Servlet 3.0 + */ +public enum DispatcherType { + FORWARD, + INCLUDE, + REQUEST, + ASYNC, + ERROR +} Index: 3rdParty_sources/servlet-api/javax/servlet/Filter.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/Filter.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/Filter.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,162 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.IOException; + +/** + * A filter is an object that performs filtering tasks on either the + * request to a resource (a servlet or static content), or on the response + * from a resource, or both. + * + *

Filters perform filtering in the doFilter method. + * Every Filter has access to a FilterConfig object from which it can obtain + * its initialization parameters, and a reference to the ServletContext which + * it can use, for example, to load resources needed for filtering tasks. + * + *

Filters are configured in the deployment descriptor of a web + * application. + * + *

Examples that have been identified for this design are: + *

    + *
  1. Authentication Filters + *
  2. Logging and Auditing Filters + *
  3. Image conversion Filters + *
  4. Data compression Filters + *
  5. Encryption Filters + *
  6. Tokenizing Filters + *
  7. Filters that trigger resource access events + *
  8. XSL/T filters + *
  9. Mime-type chain Filter + *
+ * + * @since Servlet 2.3 + */ + +public interface Filter { + + /** + * Called by the web container to indicate to a filter that it is + * being placed into service. + * + *

The servlet container calls the init + * method exactly once after instantiating the filter. The init + * method must complete successfully before the filter is asked to do any + * filtering work. + * + *

The web container cannot place the filter into service if the init + * method either + *

    + *
  1. Throws a ServletException + *
  2. Does not return within a time period defined by the web container + *
+ */ + public void init(FilterConfig filterConfig) throws ServletException; + + + /** + * The doFilter method of the Filter is called by the + * container each time a request/response pair is passed through the + * chain due to a client request for a resource at the end of the chain. + * The FilterChain passed in to this method allows the Filter to pass + * on the request and response to the next entity in the chain. + * + *

A typical implementation of this method would follow the following + * pattern: + *

    + *
  1. Examine the request + *
  2. Optionally wrap the request object with a custom implementation to + * filter content or headers for input filtering + *
  3. Optionally wrap the response object with a custom implementation to + * filter content or headers for output filtering + *
  4. + * + *
  5. Directly set headers on the response after invocation of the + * next entity in the filter chain. + *
+ */ + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) + throws IOException, ServletException; + + + /** + * Called by the web container to indicate to a filter that it is being + * taken out of service. + * + *

This method is only called once all threads within the filter's + * doFilter method have exited or after a timeout period has passed. + * After the web container calls this method, it will not call the + * doFilter method again on this instance of the filter. + * + *

This method gives the filter an opportunity to clean up any + * resources that are being held (for example, memory, file handles, + * threads) and make sure that any persistent state is synchronized + * with the filter's current state in memory. + */ + public void destroy(); +} + Index: 3rdParty_sources/servlet-api/javax/servlet/FilterChain.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/FilterChain.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/FilterChain.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,86 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.IOException; + + /** + * A FilterChain is an object provided by the servlet container to the developer + * giving a view into the invocation chain of a filtered request for a resource. Filters + * use the FilterChain 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. + * + * @see Filter + * @since Servlet 2.3 + **/ + +public interface FilterChain { + + /** + * Causes the next filter in the chain to be invoked, or if the calling filter is the last filter + * in the chain, causes the resource at the end of the chain to be invoked. + * + * @param request the request to pass along the chain. + * @param response the response to pass along the chain. + */ + + public void doFilter ( ServletRequest request, ServletResponse response ) throws IOException, ServletException; + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/FilterConfig.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/FilterConfig.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/FilterConfig.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,117 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.util.Enumeration; + +/** + * A filter configuration object used by a servlet container + * to pass information to a filter during initialization. + * + * @see Filter + * @since Servlet 2.3 + */ +public interface FilterConfig { + + /** + * Returns the filter-name of this filter as defined in the deployment + * descriptor. + */ + public String getFilterName(); + + + /** + * Returns a reference to the {@link ServletContext} in which the caller + * is executing. + * + * @return a {@link ServletContext} object, used by the caller to + * interact with its servlet container + * + * @see ServletContext + */ + public ServletContext getServletContext(); + + + /** + * Returns a String containing the value of the + * named initialization parameter, or null if + * the initialization parameter does not exist. + * + * @param name a String specifying the name of the + * initialization parameter + * + * @return a String containing the value of the + * initialization parameter, or null if + * the initialization parameter does not exist + */ + public String getInitParameter(String name); + + + /** + * Returns the names of the filter's initialization parameters + * as an Enumeration of String objects, + * or an empty Enumeration if the filter has + * no initialization parameters. + * + * @return an Enumeration of String objects + * containing the names of the filter's initialization parameters + */ + public Enumeration getInitParameterNames(); + +} Index: 3rdParty_sources/servlet-api/javax/servlet/FilterRegistration.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/FilterRegistration.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/FilterRegistration.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,150 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import java.util.*; + +/** + * Interface through which a {@link Filter} may be further configured. + * + * @since Servlet 3.0 + */ +public interface FilterRegistration extends Registration { + + /** + * Adds a filter mapping with the given servlet names and dispatcher + * types for the Filter represented by this FilterRegistration. + * + *

Filter mappings are matched in the order in which they were + * added. + * + *

Depending on the value of the isMatchAfter parameter, the + * given filter mapping will be considered after or before any + * declared filter mappings of the ServletContext from which this + * FilterRegistration was obtained. + * + *

If this method is called multiple times, each successive call + * adds to the effects of the former. + * + * @param dispatcherTypes the dispatcher types of the filter mapping, + * or null if the default DispatcherType.REQUEST is to be used + * @param isMatchAfter true if the given filter mapping should be matched + * after any declared filter mappings, and false if it is supposed to + * be matched before any declared filter mappings of the ServletContext + * from which this FilterRegistration was obtained + * @param servletNames the servlet names of the filter mapping + * + * @throws IllegalArgumentException if servletNames is null or + * empty + * @throws IllegalStateException if the ServletContext from which this + * FilterRegistration was obtained has already been initialized + */ + public void addMappingForServletNames( + EnumSet dispatcherTypes, boolean isMatchAfter, + String... servletNames); + + /** + * Gets the currently available servlet name mappings + * of the Filter represented by this FilterRegistration. + * + *

If permitted, any changes to the returned Collection must not + * affect this FilterRegistration. + * + * @return a (possibly empty) Collection of the currently + * available servlet name mappings of the Filter represented by this + * FilterRegistration + */ + public Collection getServletNameMappings(); + + /** + * Adds a filter mapping with the given url patterns and dispatcher + * types for the Filter represented by this FilterRegistration. + * + *

Filter mappings are matched in the order in which they were + * added. + * + *

Depending on the value of the isMatchAfter parameter, the + * given filter mapping will be considered after or before any + * declared filter mappings of the ServletContext from which + * this FilterRegistration was obtained. + * + *

If this method is called multiple times, each successive call + * adds to the effects of the former. + * + * @param dispatcherTypes the dispatcher types of the filter mapping, + * or null if the default DispatcherType.REQUEST is to be used + * @param isMatchAfter true if the given filter mapping should be matched + * after any declared filter mappings, and false if it is supposed to + * be matched before any declared filter mappings of the ServletContext + * from which this FilterRegistration was obtained + * @param urlPatterns the url patterns of the filter mapping + * + * @throws IllegalArgumentException if urlPatterns is null or + * empty + * @throws IllegalStateException if the ServletContext from which this + * FilterRegistration was obtained has already been initialized + */ + public void addMappingForUrlPatterns( + EnumSet dispatcherTypes, boolean isMatchAfter, + String... urlPatterns); + + /** + * Gets the currently available URL pattern mappings of the Filter + * represented by this FilterRegistration. + * + *

If permitted, any changes to the returned Collection must not + * affect this FilterRegistration. + * + * @return a (possibly empty) Collection of the currently + * available URL pattern mappings of the Filter represented by this + * FilterRegistration + */ + public Collection getUrlPatternMappings(); + + /** + * Interface through which a {@link Filter} registered via one of the + * addFilter methods on {@link ServletContext} may be further + * configured. + */ + interface Dynamic extends FilterRegistration, Registration.Dynamic { + } +} + Index: 3rdParty_sources/servlet-api/javax/servlet/GenericServlet.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/GenericServlet.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/GenericServlet.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,337 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.IOException; +import java.util.Enumeration; +import java.util.ResourceBundle; + +/** + * + * Defines a generic, protocol-independent + * servlet. To write an HTTP servlet for use on the + * Web, extend {@link javax.servlet.http.HttpServlet} instead. + * + *

GenericServlet implements the Servlet + * and ServletConfig interfaces. GenericServlet + * may be directly extended by a servlet, although it's more common to extend + * a protocol-specific subclass such as HttpServlet. + * + *

GenericServlet makes writing servlets + * easier. It provides simple versions of the lifecycle methods + * init and destroy and of the methods + * in the ServletConfig interface. GenericServlet + * also implements the log method, declared in the + * ServletContext interface. + * + *

To write a generic servlet, you need only + * override the abstract service method. + * + * + * @author Various + */ + + +public abstract class GenericServlet + implements Servlet, ServletConfig, java.io.Serializable +{ + private static final String LSTRING_FILE = "javax.servlet.LocalStrings"; + private static ResourceBundle lStrings = + ResourceBundle.getBundle(LSTRING_FILE); + + private transient ServletConfig config; + + + /** + * + * Does nothing. All of the servlet initialization + * is done by one of the init methods. + * + */ + public GenericServlet() { } + + + /** + * Called by the servlet container to indicate to a servlet that the + * servlet is being taken out of service. See {@link Servlet#destroy}. + * + * + */ + public void destroy() { + } + + + /** + * Returns a String containing the value of the named + * initialization parameter, or null if the parameter does + * not exist. See {@link ServletConfig#getInitParameter}. + * + *

This method is supplied for convenience. It gets the + * value of the named parameter from the servlet's + * ServletConfig object. + * + * @param name a String specifying the name + * of the initialization parameter + * + * @return String a String containing the value + * of the initialization parameter + * + */ + public String getInitParameter(String name) { + ServletConfig sc = getServletConfig(); + if (sc == null) { + throw new IllegalStateException( + lStrings.getString("err.servlet_config_not_initialized")); + } + + return sc.getInitParameter(name); + } + + + /** + * Returns the names of the servlet's initialization parameters + * as an Enumeration of String objects, + * or an empty Enumeration if the servlet has no + * initialization parameters. See {@link + * ServletConfig#getInitParameterNames}. + * + *

This method is supplied for convenience. It gets the + * parameter names from the servlet's ServletConfig object. + * + * + * @return Enumeration an enumeration of String + * objects containing the names of + * the servlet's initialization parameters + */ + public Enumeration getInitParameterNames() { + ServletConfig sc = getServletConfig(); + if (sc == null) { + throw new IllegalStateException( + lStrings.getString("err.servlet_config_not_initialized")); + } + + return sc.getInitParameterNames(); + } + + + /** + * Returns this servlet's {@link ServletConfig} object. + * + * @return ServletConfig the ServletConfig object + * that initialized this servlet + */ + public ServletConfig getServletConfig() { + return config; + } + + + /** + * Returns a reference to the {@link ServletContext} in which this servlet + * is running. See {@link ServletConfig#getServletContext}. + * + *

This method is supplied for convenience. It gets the + * context from the servlet's ServletConfig object. + * + * + * @return ServletContext the ServletContext object + * passed to this servlet by the init + * method + */ + public ServletContext getServletContext() { + ServletConfig sc = getServletConfig(); + if (sc == null) { + throw new IllegalStateException( + lStrings.getString("err.servlet_config_not_initialized")); + } + + return sc.getServletContext(); + } + + + /** + * Returns information about the servlet, such as + * author, version, and copyright. + * By default, this method returns an empty string. Override this method + * to have it return a meaningful value. See {@link + * Servlet#getServletInfo}. + * + * + * @return String information about this servlet, by default an + * empty string + */ + public String getServletInfo() { + return ""; + } + + + /** + * Called by the servlet container to indicate to a servlet that the + * servlet is being placed into service. See {@link Servlet#init}. + * + *

This implementation stores the {@link ServletConfig} + * object it receives from the servlet container for later use. + * When overriding this form of the method, call + * super.init(config). + * + * @param config the ServletConfig object + * that contains configutation + * information for this servlet + * + * @exception ServletException if an exception occurs that + * interrupts the servlet's normal + * operation + * + * @see UnavailableException + */ + public void init(ServletConfig config) throws ServletException { + this.config = config; + this.init(); + } + + + /** + * A convenience method which can be overridden so that there's no need + * to call super.init(config). + * + *

Instead of overriding {@link #init(ServletConfig)}, simply override + * this method and it will be called by + * GenericServlet.init(ServletConfig config). + * The ServletConfig object can still be retrieved via {@link + * #getServletConfig}. + * + * @exception ServletException if an exception occurs that + * interrupts the servlet's + * normal operation + */ + public void init() throws ServletException { + + } + + + /** + * Writes the specified message to a servlet log file, prepended by the + * servlet's name. See {@link ServletContext#log(String)}. + * + * @param msg a String specifying + * the message to be written to the log file + */ + public void log(String msg) { + getServletContext().log(getServletName() + ": "+ msg); + } + + + /** + * Writes an explanatory message and a stack trace + * for a given Throwable exception + * to the servlet log file, prepended by the servlet's name. + * See {@link ServletContext#log(String, Throwable)}. + * + * + * @param message a String that describes + * the error or exception + * + * @param t the java.lang.Throwable error + * or exception + */ + public void log(String message, Throwable t) { + getServletContext().log(getServletName() + ": " + message, t); + } + + + /** + * Called by the servlet container to allow the servlet to respond to + * a request. See {@link Servlet#service}. + * + *

This method is declared abstract so subclasses, such as + * HttpServlet, must override it. + * + * @param req the ServletRequest object + * that contains the client's request + * + * @param res the ServletResponse object + * that will contain the servlet's response + * + * @exception ServletException if an exception occurs that + * interferes with the servlet's + * normal operation occurred + * + * @exception IOException if an input or output + * exception occurs + */ + + public abstract void service(ServletRequest req, ServletResponse res) + throws ServletException, IOException; + + + /** + * Returns the name of this servlet instance. + * See {@link ServletConfig#getServletName}. + * + * @return the name of this servlet instance + */ + public String getServletName() { + ServletConfig sc = getServletConfig(); + if (sc == null) { + throw new IllegalStateException( + lStrings.getString("err.servlet_config_not_initialized")); + } + + return sc.getServletName(); + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/HttpConstraintElement.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/HttpConstraintElement.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/HttpConstraintElement.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,172 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import java.util.*; +import javax.servlet.annotation.HttpConstraint; +import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic; +import javax.servlet.annotation.ServletSecurity.TransportGuarantee; + +/** + * Java Class representation of an {@link HttpConstraint} annotation value. + * + * @since Servlet 3.0 + */ +public class HttpConstraintElement { + + private EmptyRoleSemantic emptyRoleSemantic; + private TransportGuarantee transportGuarantee; + private String[] rolesAllowed; + + /** + * Constructs a default HTTP constraint element + */ + public HttpConstraintElement() { + this(EmptyRoleSemantic.PERMIT); + } + + /** + * Convenience constructor to establish EmptyRoleSemantic.DENY + * + * @param semantic should be EmptyRoleSemantic.DENY + */ + public HttpConstraintElement(EmptyRoleSemantic semantic) { + this(semantic, TransportGuarantee.NONE, new String[0]); + } + + /** + * Constructor to establish non-empty getRolesAllowed and/or + * TransportGuarantee.CONFIDENTIAL. + * + * @param guarantee TransportGuarantee.NONE or + * TransportGuarantee.CONFIDENTIAL + * @param roleNames the names of the roles that are to be + * allowed access + */ + public HttpConstraintElement(TransportGuarantee guarantee, + String... roleNames) { + this(EmptyRoleSemantic.PERMIT, guarantee, roleNames); + } + + /** + * Constructor to establish all of getEmptyRoleSemantic, + * getRolesAllowed, and getTransportGuarantee. + * + * @param semantic EmptyRoleSemantic.DENY or + * EmptyRoleSemantic.PERMIT + * @param guarantee TransportGuarantee.NONE or + * TransportGuarantee.CONFIDENTIAL + * @param roleNames the names of the roles that are to be allowed + * access, or missing if the semantic is EmptyRoleSemantic.DENY + */ + public HttpConstraintElement(EmptyRoleSemantic semantic, + TransportGuarantee guarantee, String... roleNames) { + if (semantic == EmptyRoleSemantic.DENY && roleNames.length > 0) { + throw new IllegalArgumentException( + "Deny semantic with rolesAllowed"); + } + this.emptyRoleSemantic = semantic; + this.transportGuarantee = guarantee; + this.rolesAllowed = copyStrings(roleNames); + } + + /** + * Gets the default authorization semantic. + * + *

This value is insignificant when getRolesAllowed + * returns a non-empty array, and should not be specified when a + * non-empty array is specified for getRolesAllowed. + * + * @return the {@link EmptyRoleSemantic} to be applied when + * getRolesAllowed returns an empty (that is, zero-length) + * array + */ + public EmptyRoleSemantic getEmptyRoleSemantic() { + return this.emptyRoleSemantic; + } + + /** + * Gets the data protection requirement (i.e., whether or not SSL/TLS is + * required) that must be satisfied by the transport connection. + * + * @return the {@link TransportGuarantee} indicating the data + * protection that must be provided by the connection + */ + public TransportGuarantee getTransportGuarantee() { + return this.transportGuarantee; + } + + /** + * Gets the names of the authorized roles. + * + *

Duplicate role names appearing in getRolesAllowed are insignificant + * and may be discarded. The String "*" has no special meaning + * as a role name (should it occur in getRolesAllowed). + * + * @return a (possibly empty) array of role names. When the + * array is empty, its meaning depends on the value of + * {@link #getEmptyRoleSemantic}. If its value is DENY, + * and getRolesAllowed returns an empty array, + * access is to be denied independent of authentication state and + * identity. Conversely, if its value is PERMIT, it + * indicates that access is to be allowed independent of authentication + * state and identity. When the array contains the names of one or + * more roles, it indicates that access is contingent on membership in at + * least one of the named roles (independent of the value of + * {@link #getEmptyRoleSemantic}). + */ + public String[] getRolesAllowed() { + return copyStrings(this.rolesAllowed); + } + + private String[] copyStrings(String[] strings) { + String[] arr = null; + if (strings != null) { + int len = strings.length; + arr = new String[len]; + if (len > 0) { + System.arraycopy(strings, 0, arr, 0, len); + } + } + + return ((arr != null) ? arr : new String[0]); + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/HttpMethodConstraintElement.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/HttpMethodConstraintElement.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/HttpMethodConstraintElement.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,98 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import javax.servlet.annotation.HttpMethodConstraint; + +/** + * Java Class represntation of an {@link HttpMethodConstraint} annotation value. + * + * @since Servlet 3.0 + */ +public class HttpMethodConstraintElement extends HttpConstraintElement { + + private String methodName; + + /** + * Constructs an instance with default {@link HttpConstraintElement} + * value. + * + * @param methodName the name of an HTTP protocol method. The name must + * not be null, or the empty string, and must be a legitimate HTTP + * Method name as defined by RFC 2616 + */ + public HttpMethodConstraintElement(String methodName) { + if (methodName == null || methodName.length() == 0) { + throw new IllegalArgumentException("invalid HTTP method name"); + } + this.methodName = methodName; + } + /** + * Constructs an instance with specified {@link HttpConstraintElement} + * value. + * + * @param methodName the name of an HTTP protocol method. The name must + * not be null, or the empty string, and must be a legitimate HTTP + * Method name as defined by RFC 2616 + * + * @param constraint the HTTPconstraintElement value to assign to the + * named HTTP method + */ + public HttpMethodConstraintElement(String methodName, + HttpConstraintElement constraint) { + super(constraint.getEmptyRoleSemantic(), + constraint.getTransportGuarantee(), + constraint.getRolesAllowed()); + if (methodName == null || methodName.length() == 0) { + throw new IllegalArgumentException("invalid HTTP method name"); + } + this.methodName = methodName; + } + + /** + * Gets the HTTP method name. + * + * @return the Http method name + */ + public String getMethodName() { + return this.methodName; + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/LocalStrings.properties =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/LocalStrings.properties (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/LocalStrings.properties (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,65 @@ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common Development +# and Distribution License("CDDL") (collectively, the "License"). You +# may not use this file except in compliance with the License. You can +# obtain a copy of the License at +# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html +# or packager/legal/LICENSE.txt. See the License for the specific +# language governing permissions and limitations under the License. +# +# When distributing the software, include this License Header Notice in each +# file and include the License file at packager/legal/LICENSE.txt. +# +# GPL Classpath Exception: +# Oracle designates this particular file as subject to the "Classpath" +# exception as provided by Oracle in the GPL Version 2 section of the License +# file that accompanied this code. +# +# Modifications: +# If applicable, add the following below the License Header, with the fields +# enclosed by brackets [] replaced by your own identifying information: +# "Portions Copyright [year] [name of copyright owner]" +# +# Contributor(s): +# If you wish your version of this file to be governed by only the CDDL or +# only the GPL Version 2, indicate your decision by adding "[Contributor] +# elects to include this software in this distribution under the [CDDL or GPL +# Version 2] license." If you don't indicate a single choice of license, a +# recipient has the option to distribute your version of this file under +# either the CDDL, the GPL Version 2 or to extend the choice of license to +# its licensees as provided above. However, if you add GPL Version 2 code +# and therefore, elected the GPL Version 2 license, then the option applies +# only if the new code is made subject to such option by the copyright +# holder. +# +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright 2004 The Apache Software Foundation +# +# 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. +# + +# Default localized string information +# Localized for Locale en_US + +err.not_iso8859_1=Not an ISO 8859-1 character: {0} +err.servlet_config_not_initialized=ServletConfig has not been initialized +value.true=true +value.false=false Index: 3rdParty_sources/servlet-api/javax/servlet/LocalStrings_fr.properties =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/LocalStrings_fr.properties (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/LocalStrings_fr.properties (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,66 @@ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common Development +# and Distribution License("CDDL") (collectively, the "License"). You +# may not use this file except in compliance with the License. You can +# obtain a copy of the License at +# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html +# or packager/legal/LICENSE.txt. See the License for the specific +# language governing permissions and limitations under the License. +# +# When distributing the software, include this License Header Notice in each +# file and include the License file at packager/legal/LICENSE.txt. +# +# GPL Classpath Exception: +# Oracle designates this particular file as subject to the "Classpath" +# exception as provided by Oracle in the GPL Version 2 section of the License +# file that accompanied this code. +# +# Modifications: +# If applicable, add the following below the License Header, with the fields +# enclosed by brackets [] replaced by your own identifying information: +# "Portions Copyright [year] [name of copyright owner]" +# +# Contributor(s): +# If you wish your version of this file to be governed by only the CDDL or +# only the GPL Version 2, indicate your decision by adding "[Contributor] +# elects to include this software in this distribution under the [CDDL or GPL +# Version 2] license." If you don't indicate a single choice of license, a +# recipient has the option to distribute your version of this file under +# either the CDDL, the GPL Version 2 or to extend the choice of license to +# its licensees as provided above. However, if you add GPL Version 2 code +# and therefore, elected the GPL Version 2 license, then the option applies +# only if the new code is made subject to such option by the copyright +# holder. +# +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright 2004 The Apache Software Foundation +# +# 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. +# + +# Default localized string information +# Localized for Locale fr_FR + +err.not_iso8859_1={0} n''est pas un caract�re ISO 8859-1 +value.true=true +value.false=false + + Index: 3rdParty_sources/servlet-api/javax/servlet/LocalStrings_ja.properties =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/LocalStrings_ja.properties (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/LocalStrings_ja.properties (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,64 @@ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common Development +# and Distribution License("CDDL") (collectively, the "License"). You +# may not use this file except in compliance with the License. You can +# obtain a copy of the License at +# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html +# or packager/legal/LICENSE.txt. See the License for the specific +# language governing permissions and limitations under the License. +# +# When distributing the software, include this License Header Notice in each +# file and include the License file at packager/legal/LICENSE.txt. +# +# GPL Classpath Exception: +# Oracle designates this particular file as subject to the "Classpath" +# exception as provided by Oracle in the GPL Version 2 section of the License +# file that accompanied this code. +# +# Modifications: +# If applicable, add the following below the License Header, with the fields +# enclosed by brackets [] replaced by your own identifying information: +# "Portions Copyright [year] [name of copyright owner]" +# +# Contributor(s): +# If you wish your version of this file to be governed by only the CDDL or +# only the GPL Version 2, indicate your decision by adding "[Contributor] +# elects to include this software in this distribution under the [CDDL or GPL +# Version 2] license." If you don't indicate a single choice of license, a +# recipient has the option to distribute your version of this file under +# either the CDDL, the GPL Version 2 or to extend the choice of license to +# its licensees as provided above. However, if you add GPL Version 2 code +# and therefore, elected the GPL Version 2 license, then the option applies +# only if the new code is made subject to such option by the copyright +# holder. +# +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright 2004 The Apache Software Foundation +# +# 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. +# + +# Default localized string information +# Localized for Locale ja_JP + +err.not_iso8859_1=ISO 8859-1 \u306e\u6587\u5b57\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0} +value.true=true +value.false=false Index: 3rdParty_sources/servlet-api/javax/servlet/MultipartConfigElement.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/MultipartConfigElement.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/MultipartConfigElement.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,142 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import javax.servlet.annotation.MultipartConfig; + +/** + * Java Class represntation of an {@link MultipartConfig} annotation value. + * + * @since Servlet 3.0 + */ +public class MultipartConfigElement { + + private String location; + private long maxFileSize; + private long maxRequestSize; + private int fileSizeThreshold; + + /** + * Constructs an instance with defaults for all but location. + * + * @param location defualts to "" if values is null. + */ + public MultipartConfigElement(String location) { + if (location == null) { + this.location = ""; + } else { + this.location = location; + } + this.maxFileSize = -1L; + this.maxRequestSize = -1L; + this.fileSizeThreshold = 0; + } + + /** + * Constructs an instance with all values specified. + * + * @param location the directory location where files will be stored + * @param maxFileSize the maximum size allowed for uploaded files + * @param maxRequestSize the maximum size allowed for + * multipart/form-data requests + * @param fileSizeThreshold the size threshold after which files will + * be written to disk + */ + public MultipartConfigElement(String location, long maxFileSize, + long maxRequestSize, int fileSizeThreshold) { + if (location == null) { + this.location = ""; + } else { + this.location = location; + } + this.maxFileSize = maxFileSize; + this.maxRequestSize = maxRequestSize; + this.fileSizeThreshold = fileSizeThreshold; + } + + /** + * Constructs an instance from a {@link MultipartConfig} annotation value. + * + * @param annotation the annotation value + */ + public MultipartConfigElement(MultipartConfig annotation) { + this.location = annotation.location(); + this.fileSizeThreshold = annotation.fileSizeThreshold(); + this.maxFileSize = annotation.maxFileSize(); + this.maxRequestSize = annotation.maxRequestSize(); + } + + /** + * Gets the directory location where files will be stored. + * + * @return the directory location where files will be stored + */ + public String getLocation() { + return this.location; + } + + /** + * Gets the maximum size allowed for uploaded files. + * + * @return the maximum size allowed for uploaded files + */ + public long getMaxFileSize() { + return this.maxFileSize; + } + + /** + * Gets the maximum size allowed for multipart/form-data requests. + * + * @return the maximum size allowed for multipart/form-data requests + */ + public long getMaxRequestSize() { + return this.maxRequestSize; + } + + /** + * Gets the size threshold after which files will be written to disk. + * + * @return the size threshold after which files will be written to disk + */ + public int getFileSizeThreshold() { + return this.fileSizeThreshold; + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/ReadListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ReadListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ReadListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,82 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2011-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + + +package javax.servlet; + +import java.io.IOException; +import java.util.EventListener; + +/** + *

+ * This class represents a call-back mechanism that will notify implementations + * as HTTP request data becomes available to be read without blocking. + *

+ * + * @since Servlet 3.1 + */ +public interface ReadListener extends EventListener { + + /** + * When an instance of the ReadListener is registered with a {@link ServletInputStream}, + * this method will be invoked by the container the first time when it is possible + * to read data. Subsequently the container will invoke this method if and only + * if {@link javax.servlet.ServletInputStream#isReady()} method + * has been called and has returned false. + * + * @throws IOException if an I/O related error has occurred during processing + */ + public void onDataAvailable() throws IOException; + + /** + * Invoked when all data for the current request has been read. + * + * @throws IOException if an I/O related error has occurred during processing + */ + + public void onAllDataRead() throws IOException; + + /** + * Invoked when an error occurs processing the request. + */ + public void onError(Throwable t); + + +} Index: 3rdParty_sources/servlet-api/javax/servlet/Registration.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/Registration.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/Registration.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,183 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import java.util.Map; +import java.util.Set; + +/** + * Interface through which a {@link Servlet} or {@link Filter} may be + * further configured. + * + *

A Registration object whose {@link #getClassName} method returns null + * is considered preliminary. Servlets and Filters whose implementation + * class is container implementation specific may be declared without + * any servlet-class or filter-class elements, respectively, + * and will be represented as preliminary Registration objects. + * Preliminary registrations must be completed by calling one of the + * addServlet or addFilter methods on + * {@link ServletContext}, and passing in the Servlet or Filter name + * (obtained via {@link #getName}) along with the supporting Servlet or Filter + * implementation class name, Class object, or instance, respectively. + * In most cases, preliminary registrations will be completed by an + * appropriate, container-provided {@link ServletContainerInitializer}. + * + * @since Servlet 3.0 + */ +public interface Registration { + + /** + * Gets the name of the Servlet or Filter that is represented by this + * Registration. + * + * @return the name of the Servlet or Filter that is represented by this + * Registration + */ + public String getName(); + + /** + * Gets the fully qualified class name of the Servlet or Filter that + * is represented by this Registration. + * + * @return the fully qualified class name of the Servlet or Filter + * that is represented by this Registration, or null if this + * Registration is preliminary + */ + public String getClassName(); + + /** + * Sets the initialization parameter with the given name and value + * on the Servlet or Filter that is represented by this Registration. + * + * @param name the initialization parameter name + * @param value the initialization parameter value + * + * @return true if the update was successful, i.e., an initialization + * parameter with the given name did not already exist for the Servlet + * or Filter represented by this Registration, and false otherwise + * + * @throws IllegalStateException if the ServletContext from which this + * Registration was obtained has already been initialized + * @throws IllegalArgumentException if the given name or value is + * null + */ + public boolean setInitParameter(String name, String value); + + /** + * Gets the value of the initialization parameter with the given name + * that will be used to initialize the Servlet or Filter represented + * by this Registration object. + * + * @param name the name of the initialization parameter whose value is + * requested + * + * @return the value of the initialization parameter with the given + * name, or null if no initialization parameter with the given + * name exists + */ + public String getInitParameter(String name); + + /** + * Sets the given initialization parameters on the Servlet or Filter + * that is represented by this Registration. + * + *

The given map of initialization parameters is processed + * by-value, i.e., for each initialization parameter contained + * in the map, this method calls {@link #setInitParameter(String,String)}. + * If that method would return false for any of the + * initialization parameters in the given map, no updates will be + * performed, and false will be returned. Likewise, if the map contains + * an initialization parameter with a null name or value, no + * updates will be performed, and an IllegalArgumentException will be + * thrown. + * + * @param initParameters the initialization parameters + * + * @return the (possibly empty) Set of initialization parameter names + * that are in conflict + * + * @throws IllegalStateException if the ServletContext from which this + * Registration was obtained has already been initialized + * @throws IllegalArgumentException if the given map contains an + * initialization parameter with a null name or value + */ + public Set setInitParameters(Map initParameters); + + /** + * Gets an immutable (and possibly empty) Map containing the + * currently available initialization parameters that will be used to + * initialize the Servlet or Filter represented by this Registration + * object. + * + * @return Map containing the currently available initialization + * parameters that will be used to initialize the Servlet or Filter + * represented by this Registration object + */ + public Map getInitParameters(); + + /** + * Interface through which a {@link Servlet} or {@link Filter} registered + * via one of the addServlet or addFilter methods, + * respectively, on {@link ServletContext} may be further configured. + */ + interface Dynamic extends Registration { + + /** + * Configures the Servlet or Filter represented by this dynamic + * Registration as supporting asynchronous operations or not. + * + *

By default, servlet and filters do not support asynchronous + * operations. + * + *

A call to this method overrides any previous setting. + * + * @param isAsyncSupported true if the Servlet or Filter represented + * by this dynamic Registration supports asynchronous operations, + * false otherwise + * + * @throws IllegalStateException if the ServletContext from which + * this dynamic Registration was obtained has already been + * initialized + */ + public void setAsyncSupported(boolean isAsyncSupported); + } +} + Index: 3rdParty_sources/servlet-api/javax/servlet/RequestDispatcher.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/RequestDispatcher.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/RequestDispatcher.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,280 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.IOException; + +/** + * Defines an object that receives requests from the client + * and sends them to any resource (such as a servlet, + * HTML file, or JSP file) on the server. The servlet + * container creates the RequestDispatcher object, + * which is used as a wrapper around a server resource located + * at a particular path or given by a particular name. + * + *

This interface is intended to wrap servlets, + * but a servlet container can create RequestDispatcher + * objects to wrap any type of resource. + * + * @author Various + * + * @see ServletContext#getRequestDispatcher(java.lang.String) + * @see ServletContext#getNamedDispatcher(java.lang.String) + * @see ServletRequest#getRequestDispatcher(java.lang.String) + */ + +public interface RequestDispatcher { + + /** + * The name of the request attribute under which the original + * request URI is made available to the target of a + * {@link #forward(ServletRequest,ServletResponse) forward} + */ + static final String FORWARD_REQUEST_URI = "javax.servlet.forward.request_uri"; + + /** + * The name of the request attribute under which the original + * context path is made available to the target of a + * {@link #forward(ServletRequest,ServletResponse) forward} + */ + static final String FORWARD_CONTEXT_PATH = "javax.servlet.forward.context_path"; + + /** + * The name of the request attribute under which the original + * path info is made available to the target of a + * {@link #forward(ServletRequest,ServletResponse) forward} + */ + static final String FORWARD_PATH_INFO = "javax.servlet.forward.path_info"; + + /** + * The name of the request attribute under which the original + * servlet path is made available to the target of a + * {@link #forward(ServletRequest,ServletResponse) forward} + */ + static final String FORWARD_SERVLET_PATH = "javax.servlet.forward.servlet_path"; + + /** + * The name of the request attribute under which the original + * query string is made available to the target of a + * {@link #forward(ServletRequest,ServletResponse) forward} + */ + static final String FORWARD_QUERY_STRING = "javax.servlet.forward.query_string"; + + /** + * The name of the request attribute under which the request URI + * of the target of an {@link #include(ServletRequest,ServletResponse) + * include} is stored + */ + static final String INCLUDE_REQUEST_URI = "javax.servlet.include.request_uri"; + + /** + * The name of the request attribute under which the context path + * of the target of an {@link #include(ServletRequest,ServletResponse) + * include} is stored + */ + static final String INCLUDE_CONTEXT_PATH = "javax.servlet.include.context_path"; + + /** + * The name of the request attribute under which the path info + * of the target of an {@link #include(ServletRequest,ServletResponse) + * include} is stored + */ + static final String INCLUDE_PATH_INFO = "javax.servlet.include.path_info"; + + /** + * The name of the request attribute under which the servlet path + * of the target of an {@link #include(ServletRequest,ServletResponse) + * include} is stored + */ + static final String INCLUDE_SERVLET_PATH = "javax.servlet.include.servlet_path"; + + /** + * The name of the request attribute under which the query string + * of the target of an {@link #include(ServletRequest,ServletResponse) + * include} is stored + */ + static final String INCLUDE_QUERY_STRING = "javax.servlet.include.query_string"; + + /** + * The name of the request attribute under which the exception object + * is propagated during an error dispatch + */ + public static final String ERROR_EXCEPTION = "javax.servlet.error.exception"; + + /** + * The name of the request attribute under which the type of the + * exception object is propagated during an error dispatch + */ + public static final String ERROR_EXCEPTION_TYPE = "javax.servlet.error.exception_type"; + + /** + * The name of the request attribute under which the exception message + * is propagated during an error dispatch + */ + public static final String ERROR_MESSAGE = "javax.servlet.error.message"; + + /** + * The name of the request attribute under which the request URI + * whose processing caused the error is propagated during an error + * dispatch + */ + public static final String ERROR_REQUEST_URI = "javax.servlet.error.request_uri"; + + /** + * The name of the request attribute under which the name of the servlet + * in which the error occurred is propagated during an error dispatch + */ + public static final String ERROR_SERVLET_NAME = "javax.servlet.error.servlet_name"; + + /** + * The name of the request attribute under which the response status + * is propagated during an error dispatch + */ + public static final String ERROR_STATUS_CODE = "javax.servlet.error.status_code"; + + + /** + * Forwards a request from + * a servlet to another resource (servlet, JSP file, or + * HTML file) on the server. This method allows + * one servlet to do preliminary processing of + * a request and another resource to generate + * the response. + * + *

For a RequestDispatcher obtained via + * getRequestDispatcher(), the ServletRequest + * object has its path elements and parameters adjusted to match + * the path of the target resource. + * + *

forward should be called before the response has been + * committed to the client (before response body output has been flushed). + * If the response already has been committed, this method throws + * an IllegalStateException. + * Uncommitted output in the response buffer is automatically cleared + * before the forward. + * + *

The request and response parameters must be either the same + * objects as were passed to the calling servlet's service method or be + * subclasses of the {@link ServletRequestWrapper} or + * {@link ServletResponseWrapper} classes + * that wrap them. + * + *

This method sets the dispatcher type of the given request to + * DispatcherType.FORWARD. + * + * @param request a {@link ServletRequest} object that represents the + * request the client makes of the servlet + * + * @param response a {@link ServletResponse} object that represents + * the response the servlet returns to the client + * + * @throws ServletException if the target resource throws this exception + * + * @throws IOException if the target resource throws this exception + * + * @throws IllegalStateException if the response was already committed + * + * @see ServletRequest#getDispatcherType + */ + public void forward(ServletRequest request, ServletResponse response) + throws ServletException, IOException; + + /** + * + * Includes the content of a resource (servlet, JSP page, + * HTML file) in the response. In essence, this method enables + * programmatic server-side includes. + * + *

The {@link ServletResponse} object has its path elements + * and parameters remain unchanged from the caller's. The included + * servlet cannot change the response status code or set headers; + * any attempt to make a change is ignored. + * + *

The request and response parameters must be either the same + * objects as were passed to the calling servlet's service method or be + * subclasses of the {@link ServletRequestWrapper} or + * {@link ServletResponseWrapper} classes that wrap them. + * + *

This method sets the dispatcher type of the given request to + * DispatcherType.INCLUDE. + * + * @param request a {@link ServletRequest} object that contains the + * client's request + * + * @param response a {@link ServletResponse} object that contains the + * servlet's response + * + * @throws ServletException if the included resource throws this + * exception + * + * @throws IOException if the included resource throws this exception + * + * @see ServletRequest#getDispatcherType + */ + public void include(ServletRequest request, ServletResponse response) + throws ServletException, IOException; +} + + + + + + + + Index: 3rdParty_sources/servlet-api/javax/servlet/Servlet.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/Servlet.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/Servlet.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,233 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.IOException; + + +/** + * Defines methods that all servlets must implement. + * + *

A servlet is a small Java program that runs within a Web server. + * Servlets receive and respond to requests from Web clients, + * usually across HTTP, the HyperText Transfer Protocol. + * + *

To implement this interface, you can write a generic servlet + * that extends + * javax.servlet.GenericServlet or an HTTP servlet that + * extends javax.servlet.http.HttpServlet. + * + *

This interface defines methods to initialize a servlet, + * to service requests, and to remove a servlet from the server. + * These are known as life-cycle methods and are called in the + * following sequence: + *

    + *
  1. The servlet is constructed, then initialized with the init method. + *
  2. Any calls from clients to the service method are handled. + *
  3. The servlet is taken out of service, then destroyed with the + * destroy method, then garbage collected and finalized. + *
+ * + *

In addition to the life-cycle methods, this interface + * provides the getServletConfig method, which the servlet + * can use to get any startup information, and the getServletInfo + * method, which allows the servlet to return basic information about itself, + * such as author, version, and copyright. + * + * @author Various + * + * @see GenericServlet + * @see javax.servlet.http.HttpServlet + * + */ + + +public interface Servlet { + + /** + * Called by the servlet container to indicate to a servlet that the + * servlet is being placed into service. + * + *

The servlet container calls the init + * method exactly once after instantiating the servlet. + * The init method must complete successfully + * before the servlet can receive any requests. + * + *

The servlet container cannot place the servlet into service + * if the init method + *

    + *
  1. Throws a ServletException + *
  2. Does not return within a time period defined by the Web server + *
+ * + * + * @param config a ServletConfig object + * containing the servlet's + * configuration and initialization parameters + * + * @exception ServletException if an exception has occurred that + * interferes with the servlet's normal + * operation + * + * @see UnavailableException + * @see #getServletConfig + * + */ + + public void init(ServletConfig config) throws ServletException; + + + + /** + * + * Returns a {@link ServletConfig} object, which contains + * initialization and startup parameters for this servlet. + * The ServletConfig object returned is the one + * passed to the init method. + * + *

Implementations of this interface are responsible for storing the + * ServletConfig object so that this + * method can return it. The {@link GenericServlet} + * class, which implements this interface, already does this. + * + * @return the ServletConfig object + * that initializes this servlet + * + * @see #init + * + */ + + public ServletConfig getServletConfig(); + + + + /** + * Called by the servlet container to allow the servlet to respond to + * a request. + * + *

This method is only called after the servlet's init() + * method has completed successfully. + * + *

The status code of the response always should be set for a servlet + * that throws or sends an error. + * + * + *

Servlets typically run inside multithreaded servlet containers + * that can handle multiple requests concurrently. Developers must + * be aware to synchronize access to any shared resources such as files, + * network connections, and as well as the servlet's class and instance + * variables. + * More information on multithreaded programming in Java is available in + * + * the Java tutorial on multi-threaded programming. + * + * + * @param req the ServletRequest object that contains + * the client's request + * + * @param res the ServletResponse object that contains + * the servlet's response + * + * @exception ServletException if an exception occurs that interferes + * with the servlet's normal operation + * + * @exception IOException if an input or output exception occurs + * + */ + + public void service(ServletRequest req, ServletResponse res) + throws ServletException, IOException; + + + + /** + * Returns information about the servlet, such + * as author, version, and copyright. + * + *

The string that this method returns should + * be plain text and not markup of any kind (such as HTML, XML, + * etc.). + * + * @return a String containing servlet information + * + */ + + public String getServletInfo(); + + + + /** + * + * Called by the servlet container to indicate to a servlet that the + * servlet is being taken out of service. This method is + * only called once all threads within the servlet's + * service method have exited or after a timeout + * period has passed. After the servlet container calls this + * method, it will not call the service method again + * on this servlet. + * + *

This method gives the servlet an opportunity + * to clean up any resources that are being held (for example, memory, + * file handles, threads) and make sure that any persistent state is + * synchronized with the servlet's current state in memory. + * + */ + + public void destroy(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletConfig.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletConfig.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletConfig.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,117 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.util.Enumeration; + +/** + * A servlet configuration object used by a servlet container + * to pass information to a servlet during initialization. + */ + public interface ServletConfig { + + /** + * Returns the name of this servlet instance. + * The name may be provided via server administration, assigned in the + * web application deployment descriptor, or for an unregistered (and thus + * unnamed) servlet instance it will be the servlet's class name. + * + * @return the name of the servlet instance + */ + public String getServletName(); + + + /** + * Returns a reference to the {@link ServletContext} in which the caller + * is executing. + * + * @return a {@link ServletContext} object, used + * by the caller to interact with its servlet container + * + * @see ServletContext + */ + public ServletContext getServletContext(); + + + /** + * Gets the value of the initialization parameter with the given name. + * + * @param name the name of the initialization parameter whose value to + * get + * + * @return a String containing the value + * of the initialization parameter, or null if + * the initialization parameter does not exist + */ + public String getInitParameter(String name); + + + /** + * Returns the names of the servlet's initialization parameters + * as an Enumeration of String objects, + * or an empty Enumeration if the servlet has + * no initialization parameters. + * + * @return an Enumeration of String + * objects containing the names of the servlet's + * initialization parameters + */ + public Enumeration getInitParameterNames(); + +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletContainerInitializer.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletContainerInitializer.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletContainerInitializer.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,115 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import java.util.Set; + +/** + * Interface which allows a library/runtime to be notified of a web + * application's startup phase and perform any required programmatic + * registration of servlets, filters, and listeners in response to it. + * + *

Implementations of this interface may be annotated with + * {@link javax.servlet.annotation.HandlesTypes HandlesTypes}, in order to + * receive (at their {@link #onStartup} method) the Set of application + * classes that implement, extend, or have been annotated with the class + * types specified by the annotation. + * + *

If an implementation of this interface does not use HandlesTypes + * annotation, or none of the application classes match the ones specified + * by the annotation, the container must pass a null Set of classes + * to {@link #onStartup}. + * + *

When examining the classes of an application to see if they match + * any of the criteria specified by the HandlesTypes annontation + * of a ServletContainerInitializer, the container may run into + * classloading problems if any of the application's optional JAR + * files are missing. Because the container is not in a position to decide + * whether these types of classloading failures will prevent + * the application from working correctly, it must ignore them, + * while at the same time providing a configuration option that would + * log them. + * + *

Implementations of this interface must be declared by a JAR file + * resource located inside the META-INF/services directory and + * named for the fully qualified class name of this interface, and will be + * discovered using the runtime's service provider lookup mechanism + * or a container specific mechanism that is semantically equivalent to + * it. In either case, ServletContainerInitializer services from web + * fragment JAR files excluded from an absolute ordering must be ignored, + * and the order in which these services are discovered must follow the + * application's classloading delegation model. + * + * @see javax.servlet.annotation.HandlesTypes + * + * @since Servlet 3.0 + */ +public interface ServletContainerInitializer { + + /** + * Notifies this ServletContainerInitializer of the startup + * of the application represented by the given ServletContext. + * + *

If this ServletContainerInitializer is bundled in a JAR + * file inside the WEB-INF/lib directory of an application, + * its onStartup method will be invoked only once during the + * startup of the bundling application. If this + * ServletContainerInitializer is bundled inside a JAR file + * outside of any WEB-INF/lib directory, but still + * discoverable as described above, its onStartup method + * will be invoked every time an application is started. + * + * @param c the Set of application classes that extend, implement, or + * have been annotated with the class types specified by the + * {@link javax.servlet.annotation.HandlesTypes HandlesTypes} annotation, + * or null if there are no matches, or this + * ServletContainerInitializer has not been annotated with + * HandlesTypes + * + * @param ctx the ServletContext of the web application that + * is being started and in which the classes contained in c + * were found + * + * @throws ServletException if an error has occurred + */ + public void onStartup(Set> c, ServletContext ctx) + throws ServletException; +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletContext.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletContext.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletContext.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,1599 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Enumeration; +import java.util.EnumSet; +import java.util.EventListener; +import java.util.Map; +import java.util.Set; +import javax.servlet.descriptor.JspConfigDescriptor; + +/** + * Defines a set of methods that a servlet uses to communicate with its + * servlet container, for example, to get the MIME type of a file, dispatch + * requests, or write to a log file. + * + *

There is one context per "web application" per Java Virtual Machine. (A + * "web application" is a collection of servlets and content installed under a + * specific subset of the server's URL namespace such as /catalog + * and possibly installed via a .war file.) + * + *

In the case of a web + * application marked "distributed" in its deployment descriptor, there will + * be one context instance for each virtual machine. In this situation, the + * context cannot be used as a location to share global information (because + * the information won't be truly global). Use an external resource like + * a database instead. + * + *

The ServletContext object is contained within + * the {@link ServletConfig} object, which the Web server provides the + * servlet when the servlet is initialized. + * + * @author Various + * + * @see Servlet#getServletConfig + * @see ServletConfig#getServletContext + */ + +public interface ServletContext { + + /** + * The name of the ServletContext attribute which stores + * the private temporary directory (of type java.io.File) + * provided by the servlet container for the ServletContext + */ + public static final String TEMPDIR = "javax.servlet.context.tempdir"; + + + /** + * The name of the ServletContext attribute whose value + * (of type java.util.List<java.lang.String>) contains + * the list of names of JAR files in WEB-INF/lib ordered by + * their web fragment names (with possible exclusions if + * <absolute-ordering> without any + * <others/> is being used), or null if no + * absolute or relative ordering has been specified + */ + public static final String ORDERED_LIBS = + "javax.servlet.context.orderedLibs"; + + + /** + * Returns the context path of the web application. + * + *

The context path is the portion of the request URI that is used + * to select the context of the request. The context path always comes + * first in a request URI. If this context is the “default” context + * rooted at the base of the Web server’s URL name space, this path + * will be an empty string. Otherwise, if the context is not rooted at + * the root of the server’s name space, the path starts with a / + * character but does not end with a / character. + * + *

It is possible that a servlet container may match a context by + * more than one context path. In such cases the + * {@link javax.servlet.http.HttpServletRequest#getContextPath()} + * will return the actual context path used by the request and it may + * differ from the path returned by this method. + * The context path returned by this method should be considered as the + * prime or preferred context path of the application. + * + * @return The context path of the web application, or "" for the + * default (root) context + * + * @see javax.servlet.http.HttpServletRequest#getContextPath() + * + * @since Servlet 2.5 + */ + public String getContextPath(); + + + /** + * Returns a ServletContext object that + * corresponds to a specified URL on the server. + * + *

This method allows servlets to gain + * access to the context for various parts of the server, and as + * needed obtain {@link RequestDispatcher} objects from the context. + * The given path must be begin with /, is interpreted relative + * to the server's document root and is matched against the context + * roots of other web applications hosted on this container. + * + *

In a security conscious environment, the servlet container may + * return null for a given URL. + * + * @param uripath a String specifying the context path of + * another web application in the container. + * @return the ServletContext object that + * corresponds to the named URL, or null if either + none exists or the container wishes to restrict + * this access. + * + * @see RequestDispatcher + */ + public ServletContext getContext(String uripath); + + + /** + * Returns the major version of the Servlet API that this + * servlet container supports. All implementations that comply + * with Version 3.0 must have this method return the integer 3. + * + * @return 3 + */ + public int getMajorVersion(); + + + /** + * Returns the minor version of the Servlet API that this + * servlet container supports. All implementations that comply + * with Version 3.0 must have this method return the integer 0. + * + * @return 0 + */ + public int getMinorVersion(); + + + /** + * Gets the major version of the Servlet specification that the + * application represented by this ServletContext is based on. + * + *

The value returned may be different from {@link #getMajorVersion}, + * which returns the major version of the Servlet specification + * supported by the Servlet container. + * + * @return the major version of the Servlet specification that the + * application represented by this ServletContext is based on + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public int getEffectiveMajorVersion(); + + + /** + * Gets the minor version of the Servlet specification that the + * application represented by this ServletContext is based on. + * + *

The value returned may be different from {@link #getMinorVersion}, + * which returns the minor version of the Servlet specification + * supported by the Servlet container. + * + * @return the minor version of the Servlet specification that the + * application xrepresented by this ServletContext is based on + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public int getEffectiveMinorVersion(); + + + /** + * Returns the MIME type of the specified file, or null if + * the MIME type is not known. The MIME type is determined + * by the configuration of the servlet container, and may be specified + * in a web application deployment descriptor. Common MIME + * types include text/html and image/gif. + * + * @param file a String specifying the name of a file + * + * @return a String specifying the file's MIME type + */ + public String getMimeType(String file); + + + /** + * Returns a directory-like listing of all the paths to resources + * within the web application whose longest sub-path matches the + * supplied path argument. + * + *

Paths indicating subdirectory paths end with a /. + * + *

The returned paths are all relative to the root of the web + * application, or relative to the /META-INF/resources + * directory of a JAR file inside the web application's + * /WEB-INF/lib directory, and have a leading /. + * + *

For example, for a web application containing: + * + *

+     *   /welcome.html
+     *   /catalog/index.html
+     *   /catalog/products.html
+     *   /catalog/offers/books.html
+     *   /catalog/offers/music.html
+     *   /customer/login.jsp
+     *   /WEB-INF/web.xml
+     *   /WEB-INF/classes/com.acme.OrderServlet.class
+     *   /WEB-INF/lib/catalog.jar!/META-INF/resources/catalog/moreOffers/books.html
+     * 
+ * + * getResourcePaths("/") would return + * {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}, + * and getResourcePaths("/catalog/") would return + * {"/catalog/index.html", "/catalog/products.html", + * "/catalog/offers/", "/catalog/moreOffers/"}. + * + * @param path the partial path used to match the resources, + * which must start with a / + * @return a Set containing the directory listing, or null if there + * are no resources in the web application whose path + * begins with the supplied path. + * + * @since Servlet 2.3 + */ + public Set getResourcePaths(String path); + + + /** + * Returns a URL to the resource that is mapped to the given path. + * + *

The path must begin with a / and is interpreted + * as relative to the current context root, + * or relative to the /META-INF/resources directory + * of a JAR file inside the web application's /WEB-INF/lib + * directory. + * This method will first search the document root of the + * web application for the requested resource, before searching + * any of the JAR files inside /WEB-INF/lib. + * The order in which the JAR files inside /WEB-INF/lib + * are searched is undefined. + * + *

This method allows the servlet container to make a resource + * available to servlets from any source. Resources + * can be located on a local or remote + * file system, in a database, or in a .war file. + * + *

The servlet container must implement the URL handlers + * and URLConnection objects that are necessary + * to access the resource. + * + *

This method returns null + * if no resource is mapped to the pathname. + * + *

Some containers may allow writing to the URL returned by + * this method using the methods of the URL class. + * + *

The resource content is returned directly, so be aware that + * requesting a .jsp page returns the JSP source code. + * Use a RequestDispatcher instead to include results of + * an execution. + * + *

This method has a different purpose than + * java.lang.Class.getResource, + * which looks up resources based on a class loader. This + * method does not use class loaders. + * + * @param path a String specifying + * the path to the resource + * + * @return the resource located at the named path, + * or null if there is no resource at that path + * + * @exception MalformedURLException if the pathname is not given in + * the correct form + */ + public URL getResource(String path) throws MalformedURLException; + + + /** + * Returns the resource located at the named path as + * an InputStream object. + * + *

The data in the InputStream can be + * of any type or length. The path must be specified according + * to the rules given in getResource. + * This method returns null if no resource exists at + * the specified path. + * + *

Meta-information such as content length and content type + * that is available via getResource + * method is lost when using this method. + * + *

The servlet container must implement the URL handlers + * and URLConnection objects necessary to access + * the resource. + * + *

This method is different from + * java.lang.Class.getResourceAsStream, + * which uses a class loader. This method allows servlet containers + * to make a resource available + * to a servlet from any location, without using a class loader. + * + * + * @param path a String specifying the path + * to the resource + * + * @return the InputStream returned to the + * servlet, or null if no resource + * exists at the specified path + */ + public InputStream getResourceAsStream(String path); + + + /** + * + * Returns a {@link RequestDispatcher} object that acts + * as a wrapper for the resource located at the given path. + * A RequestDispatcher object can be used to forward + * a request to the resource or to include the resource in a response. + * The resource can be dynamic or static. + * + *

The pathname must begin with a / and is interpreted as + * relative to the current context root. Use getContext + * to obtain a RequestDispatcher for resources in foreign + * contexts. + * + *

This method returns null if the + * ServletContext cannot return a + * RequestDispatcher. + * + * @param path a String specifying the pathname + * to the resource + * + * @return a RequestDispatcher object + * that acts as a wrapper for the resource + * at the specified path, or null if + * the ServletContext cannot return + * a RequestDispatcher + * + * @see RequestDispatcher + * @see ServletContext#getContext + */ + public RequestDispatcher getRequestDispatcher(String path); + + + /** + * Returns a {@link RequestDispatcher} object that acts + * as a wrapper for the named servlet. + * + *

Servlets (and JSP pages also) may be given names via server + * administration or via a web application deployment descriptor. + * A servlet instance can determine its name using + * {@link ServletConfig#getServletName}. + * + *

This method returns null if the + * ServletContext + * cannot return a RequestDispatcher for any reason. + * + * @param name a String specifying the name + * of a servlet to wrap + * + * @return a RequestDispatcher object + * that acts as a wrapper for the named servlet, + * or null if the ServletContext + * cannot return a RequestDispatcher + * + * @see RequestDispatcher + * @see ServletContext#getContext + * @see ServletConfig#getServletName + */ + public RequestDispatcher getNamedDispatcher(String name); + + + /** + * @deprecated As of Java Servlet API 2.1, with no direct replacement. + * + *

This method was originally defined to retrieve a servlet + * from a ServletContext. In this version, this method + * always returns null and remains only to preserve + * binary compatibility. This method will be permanently removed + * in a future version of the Java Servlet API. + * + *

In lieu of this method, servlets can share information using the + * ServletContext class and can perform shared business logic + * by invoking methods on common non-servlet classes. + */ + public Servlet getServlet(String name) throws ServletException; + + + /** + * @deprecated As of Java Servlet API 2.0, with no replacement. + * + *

This method was originally defined to return an + * Enumeration of all the servlets known to this servlet + * context. + * In this version, this method always returns an empty enumeration and + * remains only to preserve binary compatibility. This method + * will be permanently removed in a future version of the Java + * Servlet API. + */ + public Enumeration getServlets(); + + + /** + * @deprecated As of Java Servlet API 2.1, with no replacement. + * + *

This method was originally defined to return an + * Enumeration + * of all the servlet names known to this context. In this version, + * this method always returns an empty Enumeration and + * remains only to preserve binary compatibility. This method will + * be permanently removed in a future version of the Java Servlet API. + */ + public Enumeration getServletNames(); + + + /** + * + * Writes the specified message to a servlet log file, usually + * an event log. The name and type of the servlet log file is + * specific to the servlet container. + * + * @param msg a String specifying the + * message to be written to the log file + */ + public void log(String msg); + + + /** + * @deprecated As of Java Servlet API 2.1, use + * {@link #log(String message, Throwable throwable)} + * instead. + * + *

This method was originally defined to write an + * exception's stack trace and an explanatory error message + * to the servlet log file. + */ + public void log(Exception exception, String msg); + + + /** + * Writes an explanatory message and a stack trace + * for a given Throwable exception + * to the servlet log file. The name and type of the servlet log + * file is specific to the servlet container, usually an event log. + * + * @param message a String that + * describes the error or exception + * + * @param throwable the Throwable error + * or exception + */ + public void log(String message, Throwable throwable); + + + /** + * Gets the real path corresponding to the given + * virtual path. + * + *

For example, if path is equal to /index.html, + * this method will return the absolute file path on the server's + * filesystem to which a request of the form + * http://<host>:<port>/<contextPath>/index.html + * would be mapped, where <contextPath> corresponds to the + * context path of this ServletContext. + * + *

The real path returned will be in a form + * appropriate to the computer and operating system on + * which the servlet container is running, including the + * proper path separators. + * + *

Resources inside the /META-INF/resources + * directories of JAR files bundled in the application's + * /WEB-INF/lib directory must be considered only if the + * container has unpacked them from their containing JAR file, in + * which case the path to the unpacked location must be returned. + * + *

This method returns null if the servlet container + * is unable to translate the given virtual path to a + * real path. + * + * @param path the virtual path to be translated to a + * real path + * + * @return the real path, or null if the + * translation cannot be performed + */ + public String getRealPath(String path); + + + /** + * Returns the name and version of the servlet container on which + * the servlet is running. + * + *

The form of the returned string is + * servername/versionnumber. + * For example, the JavaServer Web Development Kit may return the string + * JavaServer Web Dev Kit/1.0. + * + *

The servlet container may return other optional information + * after the primary string in parentheses, for example, + * JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86). + * + * + * @return a String containing at least the + * servlet container name and version number + */ + public String getServerInfo(); + + + /** + * Returns a String containing the value of the named + * context-wide initialization parameter, or null if the + * parameter does not exist. + * + *

This method can make available configuration information useful + * to an entire web application. For example, it can provide a + * webmaster's email address or the name of a system that holds + * critical data. + * + * @param name a String containing the name of the + * parameter whose value is requested + * + * @return a String containing at least the + * servlet container name and version number + * + * @see ServletConfig#getInitParameter + */ + public String getInitParameter(String name); + + + /** + * Returns the names of the context's initialization parameters as an + * Enumeration of String objects, or an + * empty Enumeration if the context has no initialization + * parameters. + * + * @return an Enumeration of String + * objects containing the names of the context's + * initialization parameters + * + * @see ServletConfig#getInitParameter + */ + public Enumeration getInitParameterNames(); + + + /** + * Sets the context initialization parameter with the given name and + * value on this ServletContext. + * + * @param name the name of the context initialization parameter to set + * @param value the value of the context initialization parameter to set + * + * @return true if the context initialization parameter with the given + * name and value was set successfully on this ServletContext, and false + * if it was not set because this ServletContext already contains a + * context initialization parameter with a matching name + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public boolean setInitParameter(String name, String value); + + + /** + * Returns the servlet container attribute with the given name, + * or null if there is no attribute by that name. + * + *

An attribute allows a servlet container to give the + * servlet additional information not + * already provided by this interface. See your + * server documentation for information about its attributes. + * A list of supported attributes can be retrieved using + * getAttributeNames. + * + *

The attribute is returned as a java.lang.Object + * or some subclass. + * + *

Attribute names should follow the same convention as package + * names. The Java Servlet API specification reserves names + * matching java.*, javax.*, + * and sun.*. + * + * @param name a String specifying the name + * of the attribute + * + * @return an Object containing the value + * of the attribute, or null + * if no attribute exists matching the given + * name + * + * @see ServletContext#getAttributeNames + */ + public Object getAttribute(String name); + + + /** + * Returns an Enumeration containing the + * attribute names available within this ServletContext. + * + *

Use the {@link #getAttribute} method with an attribute name + * to get the value of an attribute. + * + * @return an Enumeration of attribute + * names + * + * @see #getAttribute + */ + public Enumeration getAttributeNames(); + + + /** + * Binds an object to a given attribute name in this ServletContext. If + * the name specified is already used for an attribute, this + * method will replace the attribute with the new to the new attribute. + *

If listeners are configured on the ServletContext the + * container notifies them accordingly. + *

+ * If a null value is passed, the effect is the same as calling + * removeAttribute(). + * + *

Attribute names should follow the same convention as package + * names. The Java Servlet API specification reserves names + * matching java.*, javax.*, and + * sun.*. + * + * @param name a String specifying the name + * of the attribute + * + * @param object an Object representing the + * attribute to be bound + */ + public void setAttribute(String name, Object object); + + + /** + * Removes the attribute with the given name from + * this ServletContext. After removal, subsequent calls to + * {@link #getAttribute} to retrieve the attribute's value + * will return null. + * + *

If listeners are configured on the ServletContext the + * container notifies them accordingly. + * + * @param name a String specifying the name + * of the attribute to be removed + */ + public void removeAttribute(String name); + + + /** + * Returns the name of this web application corresponding to this + * ServletContext as specified in the deployment descriptor for this + * web application by the display-name element. + * + * @return The name of the web application or null if no name has been + * declared in the deployment descriptor. + * + * @since Servlet 2.3 + */ + public String getServletContextName(); + + + /** + * Adds the servlet with the given name and class name to this servlet + * context. + * + *

The registered servlet may be further configured via the returned + * {@link ServletRegistration} object. + * + *

The specified className will be loaded using the + * classloader associated with the application represented by this + * ServletContext. + * + *

If this ServletContext already contains a preliminary + * ServletRegistration for a servlet with the given servletName, + * it will be completed (by assigning the given className to it) + * and returned. + * + *

This method introspects the class with the given className + * for the {@link javax.servlet.annotation.ServletSecurity}, + * {@link javax.servlet.annotation.MultipartConfig}, + * javax.annotation.security.RunAs, and + * javax.annotation.security.DeclareRoles annotations. + * In addition, this method supports resource injection if the + * class with the given className represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param servletName the name of the servlet + * @param className the fully qualified class name of the servlet + * + * @return a ServletRegistration object that may be used to further + * configure the registered servlet, or null if this + * ServletContext already contains a complete ServletRegistration for + * a servlet with the given servletName + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws IllegalArgumentException if servletName is null + * or an empty String + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public ServletRegistration.Dynamic addServlet( + String servletName, String className); + + + /** + * Registers the given servlet instance with this ServletContext + * under the given servletName. + * + *

The registered servlet may be further configured via the returned + * {@link ServletRegistration} object. + * + *

If this ServletContext already contains a preliminary + * ServletRegistration for a servlet with the given servletName, + * it will be completed (by assigning the class name of the given servlet + * instance to it) and returned. + * + * @param servletName the name of the servlet + * @param servlet the servlet instance to register + * + * @return a ServletRegistration object that may be used to further + * configure the given servlet, or null if this + * ServletContext already contains a complete ServletRegistration for a + * servlet with the given servletName or if the same servlet + * instance has already been registered with this or another + * ServletContext in the same container + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @throws IllegalArgumentException if the given servlet instance + * implements {@link SingleThreadModel}, or servletName is null + * or an empty String + * + * @since Servlet 3.0 + */ + public ServletRegistration.Dynamic addServlet( + String servletName, Servlet servlet); + + + /** + * Adds the servlet with the given name and class type to this servlet + * context. + * + *

The registered servlet may be further configured via the returned + * {@link ServletRegistration} object. + * + *

If this ServletContext already contains a preliminary + * ServletRegistration for a servlet with the given servletName, + * it will be completed (by assigning the name of the given + * servletClass to it) and returned. + * + *

This method introspects the given servletClass for + * the {@link javax.servlet.annotation.ServletSecurity}, + * {@link javax.servlet.annotation.MultipartConfig}, + * javax.annotation.security.RunAs, and + * javax.annotation.security.DeclareRoles annotations. + * In addition, this method supports resource injection if the + * given servletClass represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param servletName the name of the servlet + * @param servletClass the class object from which the servlet will be + * instantiated + * + * @return a ServletRegistration object that may be used to further + * configure the registered servlet, or null if this + * ServletContext already contains a complete ServletRegistration for + * the given servletName + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws IllegalArgumentException if servletName is null + * or an empty String + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public ServletRegistration.Dynamic addServlet(String servletName, + Class servletClass); + + + /** + * Instantiates the given Servlet class. + * + *

The returned Servlet instance may be further customized before it + * is registered with this ServletContext via a call to + * {@link #addServlet(String,Servlet)}. + * + *

The given Servlet class must define a zero argument constructor, + * which is used to instantiate it. + * + *

This method introspects the given clazz for + * the following annotations: + * {@link javax.servlet.annotation.ServletSecurity}, + * {@link javax.servlet.annotation.MultipartConfig}, + * javax.annotation.security.RunAs, and + * javax.annotation.security.DeclareRoles. + * In addition, this method supports resource injection if the + * given clazz represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param clazz the Servlet class to instantiate + * + * @return the new Servlet instance + * + * @throws ServletException if the given clazz fails to be + * instantiated + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public T createServlet(Class clazz) + throws ServletException; + + /** + * Gets the ServletRegistration corresponding to the servlet with the + * given servletName. + * + * @return the (complete or preliminary) ServletRegistration for the + * servlet with the given servletName, or null if no + * ServletRegistration exists under that name + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public ServletRegistration getServletRegistration(String servletName); + + + /** + * Gets a (possibly empty) Map of the ServletRegistration + * objects (keyed by servlet name) corresponding to all servlets + * registered with this ServletContext. + * + *

The returned Map includes the ServletRegistration objects + * corresponding to all declared and annotated servlets, as well as the + * ServletRegistration objects corresponding to all servlets that have + * been added via one of the addServlet methods. + * + *

If permitted, any changes to the returned Map must not affect this + * ServletContext. + * + * @return Map of the (complete and preliminary) ServletRegistration + * objects corresponding to all servlets currently registered with this + * ServletContext + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public Map getServletRegistrations(); + + + /** + * Adds the filter with the given name and class name to this servlet + * context. + * + *

The registered filter may be further configured via the returned + * {@link FilterRegistration} object. + * + *

The specified className will be loaded using the + * classloader associated with the application represented by this + * ServletContext. + * + *

If this ServletContext already contains a preliminary + * FilterRegistration for a filter with the given filterName, + * it will be completed (by assigning the given className to it) + * and returned. + * + *

This method supports resource injection if the class with the + * given className represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param filterName the name of the filter + * @param className the fully qualified class name of the filter + * + * @return a FilterRegistration object that may be used to further + * configure the registered filter, or null if this + * ServletContext already contains a complete FilterRegistration for + * a filter with the given filterName + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws IllegalArgumentException if filterName is null or + * an empty String + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public FilterRegistration.Dynamic addFilter( + String filterName, String className); + + + /** + * Registers the given filter instance with this ServletContext + * under the given filterName. + * + *

The registered filter may be further configured via the returned + * {@link FilterRegistration} object. + * + *

If this ServletContext already contains a preliminary + * FilterRegistration for a filter with the given filterName, + * it will be completed (by assigning the class name of the given filter + * instance to it) and returned. + * + * @param filterName the name of the filter + * @param filter the filter instance to register + * + * @return a FilterRegistration object that may be used to further + * configure the given filter, or null if this + * ServletContext already contains a complete FilterRegistration for a + * filter with the given filterName or if the same filter + * instance has already been registered with this or another + * ServletContext in the same container + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws IllegalArgumentException if filterName is null or + * an empty String + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public FilterRegistration.Dynamic addFilter( + String filterName, Filter filter); + + + /** + * Adds the filter with the given name and class type to this servlet + * context. + * + *

The registered filter may be further configured via the returned + * {@link FilterRegistration} object. + * + *

If this ServletContext already contains a preliminary + * FilterRegistration for a filter with the given filterName, + * it will be completed (by assigning the name of the given + * filterClass to it) and returned. + * + *

This method supports resource injection if the given + * filterClass represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param filterName the name of the filter + * @param filterClass the class object from which the filter will be + * instantiated + * + * @return a FilterRegistration object that may be used to further + * configure the registered filter, or null if this + * ServletContext already contains a complete FilterRegistration for a + * filter with the given filterName + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws IllegalArgumentException if filterName is null or + * an empty String + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public FilterRegistration.Dynamic addFilter(String filterName, + Class filterClass); + + + /** + * Instantiates the given Filter class. + * + *

The returned Filter instance may be further customized before it + * is registered with this ServletContext via a call to + * {@link #addFilter(String,Filter)}. + * + *

The given Filter class must define a zero argument constructor, + * which is used to instantiate it. + * + *

This method supports resource injection if the given + * clazz represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param clazz the Filter class to instantiate + * + * @return the new Filter instance + * + * @throws ServletException if the given clazz fails to be + * instantiated + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public T createFilter(Class clazz) + throws ServletException; + + + /** + * Gets the FilterRegistration corresponding to the filter with the + * given filterName. + * + * @return the (complete or preliminary) FilterRegistration for the + * filter with the given filterName, or null if no + * FilterRegistration exists under that name + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public FilterRegistration getFilterRegistration(String filterName); + + + /** + * Gets a (possibly empty) Map of the FilterRegistration + * objects (keyed by filter name) corresponding to all filters + * registered with this ServletContext. + * + *

The returned Map includes the FilterRegistration objects + * corresponding to all declared and annotated filters, as well as the + * FilterRegistration objects corresponding to all filters that have + * been added via one of the addFilter methods. + * + *

Any changes to the returned Map must not affect this + * ServletContext. + * + * @return Map of the (complete and preliminary) FilterRegistration + * objects corresponding to all filters currently registered with this + * ServletContext + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public Map getFilterRegistrations(); + + + /** + * Gets the {@link SessionCookieConfig} object through which various + * properties of the session tracking cookies created on behalf of this + * ServletContext may be configured. + * + *

Repeated invocations of this method will return the same + * SessionCookieConfig instance. + * + * @return the SessionCookieConfig object through which + * various properties of the session tracking cookies created on + * behalf of this ServletContext may be configured + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public SessionCookieConfig getSessionCookieConfig(); + + + /** + * Sets the session tracking modes that are to become effective for this + * ServletContext. + * + *

The given sessionTrackingModes replaces any + * session tracking modes set by a previous invocation of this + * method on this ServletContext. + * + * @param sessionTrackingModes the set of session tracking modes to + * become effective for this ServletContext + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @throws IllegalArgumentException if sessionTrackingModes + * specifies a combination of SessionTrackingMode.SSL with a + * session tracking mode other than SessionTrackingMode.SSL, + * or if sessionTrackingModes specifies a session tracking mode + * that is not supported by the servlet container + * + * @since Servlet 3.0 + */ + public void setSessionTrackingModes(Set sessionTrackingModes); + + + /** + * Gets the session tracking modes that are supported by default for this + * ServletContext. + * + * @return set of the session tracking modes supported by default for + * this ServletContext + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public Set getDefaultSessionTrackingModes(); + + + /** + * Gets the session tracking modes that are in effect for this + * ServletContext. + * + *

The session tracking modes in effect are those provided to + * {@link #setSessionTrackingModes setSessionTrackingModes}. + * + *

By default, the session tracking modes returned by + * {@link #getDefaultSessionTrackingModes getDefaultSessionTrackingModes} + * are in effect. + * + * @return set of the session tracking modes in effect for this + * ServletContext + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public Set getEffectiveSessionTrackingModes(); + + + /** + * Adds the listener with the given class name to this ServletContext. + * + *

The class with the given name will be loaded using the + * classloader associated with the application represented by this + * ServletContext, and must implement one or more of the following + * interfaces: + *

+ * + *

If this ServletContext was passed to + * {@link ServletContainerInitializer#onStartup}, then the class with + * the given name may also implement {@link ServletContextListener}, + * in addition to the interfaces listed above. + * + *

As part of this method call, the container must load the class + * with the specified class name to ensure that it implements one of + * the required interfaces. + * + *

If the class with the given name implements a listener interface + * whose invocation order corresponds to the declaration order (i.e., + * if it implements {@link ServletRequestListener}, + * {@link ServletContextListener}, or + * {@link javax.servlet.http.HttpSessionListener}), + * then the new listener will be added to the end of the ordered list of + * listeners of that interface. + * + *

This method supports resource injection if the class with the + * given className represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param className the fully qualified class name of the listener + * + * @throws IllegalArgumentException if the class with the given name + * does not implement any of the above interfaces, or if it implements + * {@link ServletContextListener} and this ServletContext was not + * passed to {@link ServletContainerInitializer#onStartup} + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public void addListener(String className); + + + /** + * Adds the given listener to this ServletContext. + * + *

The given listener must be an instance of one or more of the + * following interfaces: + *

+ * + *

If this ServletContext was passed to + * {@link ServletContainerInitializer#onStartup}, then the given + * listener may also be an instance of {@link ServletContextListener}, + * in addition to the interfaces listed above. + * + *

If the given listener is an instance of a listener interface whose + * invocation order corresponds to the declaration order (i.e., if it + * is an instance of {@link ServletRequestListener}, + * {@link ServletContextListener}, or + * {@link javax.servlet.http.HttpSessionListener}), + * then the listener will be added to the end of the ordered list of + * listeners of that interface. + * + * @param t the listener to be added + * + * @throws IllegalArgumentException if the given listener is not + * an instance of any of the above interfaces, or if it is an instance + * of {@link ServletContextListener} and this ServletContext was not + * passed to {@link ServletContainerInitializer#onStartup} + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public void addListener(T t); + + + /** + * Adds a listener of the given class type to this ServletContext. + * + *

The given listenerClass must implement one or more of the + * following interfaces: + *

+ * + *

If this ServletContext was passed to + * {@link ServletContainerInitializer#onStartup}, then the given + * listenerClass may also implement + * {@link ServletContextListener}, in addition to the interfaces listed + * above. + * + *

If the given listenerClass implements a listener + * interface whose invocation order corresponds to the declaration order + * (i.e., if it implements {@link ServletRequestListener}, + * {@link ServletContextListener}, or + * {@link javax.servlet.http.HttpSessionListener}), + * then the new listener will be added to the end of the ordered list + * of listeners of that interface. + * + *

This method supports resource injection if the given + * listenerClass represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param listenerClass the listener class to be instantiated + * + * @throws IllegalArgumentException if the given listenerClass + * does not implement any of the above interfaces, or if it implements + * {@link ServletContextListener} and this ServletContext was not passed + * to {@link ServletContainerInitializer#onStartup} + * + * @throws IllegalStateException if this ServletContext has already + * been initialized + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.0 + */ + public void addListener(Class listenerClass); + + + /** + * Instantiates the given EventListener class. + * + *

The specified EventListener class must implement at least one of + * the {@link ServletContextListener}, + * {@link ServletContextAttributeListener}, + * {@link ServletRequestListener}, + * {@link ServletRequestAttributeListener}, + * {@link javax.servlet.http.HttpSessionAttributeListener} + * {@link javax.servlet.http.HttpSessionIdListener}, or + * {@link javax.servlet.http.HttpSessionListener}, or + * interfaces. + * + *

The returned EventListener instance may be further customized + * before it is registered with this ServletContext via a call to + * {@link #addListener(EventListener)}. + * + *

The given EventListener class must define a zero argument + * constructor, which is used to instantiate it. + * + *

This method supports resource injection if the given + * clazz represents a Managed Bean. + * See the Java EE platform and JSR 299 specifications for additional + * details about Managed Beans and resource injection. + * + * @param clazz the EventListener class to instantiate + * + * @return the new EventListener instance + * + * @throws ServletException if the given clazz fails to be + * instantiated + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @throws IllegalArgumentException if the specified EventListener class + * does not implement any of the + * {@link ServletContextListener}, + * {@link ServletContextAttributeListener}, + * {@link ServletRequestListener}, + * {@link ServletRequestAttributeListener}, + * {@link javax.servlet.http.HttpSessionAttributeListener} + * {@link javax.servlet.http.HttpSessionIdListener}, or + * {@link javax.servlet.http.HttpSessionListener}, or + * interfaces. + * + * @since Servlet 3.0 + */ + public T createListener(Class clazz) + throws ServletException; + + + /** + * Gets the <jsp-config> related configuration + * that was aggregated from the web.xml and + * web-fragment.xml descriptor files of the web application + * represented by this ServletContext. + * + * @return the <jsp-config> related configuration + * that was aggregated from the web.xml and + * web-fragment.xml descriptor files of the web application + * represented by this ServletContext, or null if no such configuration + * exists + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @see javax.servlet.descriptor.JspConfigDescriptor + * + * @since Servlet 3.0 + */ + public JspConfigDescriptor getJspConfigDescriptor(); + + + /** + * Gets the class loader of the web application represented by this + * ServletContext. + * + *

If a security manager exists, and the caller's class loader + * is not the same as, or an ancestor of the requested class loader, + * then the security manager's checkPermission method is + * called with a RuntimePermission("getClassLoader") + * permission to check whether access to the requested class loader + * should be granted. + * + * @return the class loader of the web application represented by this + * ServletContext + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @throws SecurityException if a security manager denies access to + * the requested class loader + * + * @since Servlet 3.0 + */ + public ClassLoader getClassLoader(); + + + /** + * Declares role names that are tested using isUserInRole. + * + *

Roles that are implicitly declared as a result of their use within + * the {@link ServletRegistration.Dynamic#setServletSecurity + * setServletSecurity} or {@link ServletRegistration.Dynamic#setRunAsRole + * setRunAsRole} methods of the {@link ServletRegistration} interface need + * not be declared. + * + * @param roleNames the role names being declared + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @throws IllegalArgumentException if any of the argument roleNames is + * null or the empty string + * + * @throws IllegalStateException if the ServletContext has already + * been initialized + * + * @since Servlet 3.0 + */ + public void declareRoles(String... roleNames); + + + /** + * Returns the configuration name of the logical host on which the + * ServletContext is deployed. + * + * Servlet containers may support multiple logical hosts. This method must + * return the same name for all the servlet contexts deployed on a logical + * host, and the name returned by this method must be distinct, stable per + * logical host, and suitable for use in associating server configuration + * information with the logical host. The returned value is NOT expected + * or required to be equivalent to a network address or hostname of the + * logical host. + * + * @return a String containing the configuration name of the + * logical host on which the servlet context is deployed. + * + * @throws UnsupportedOperationException if this ServletContext was + * passed to the {@link ServletContextListener#contextInitialized} method + * of a {@link ServletContextListener} that was neither declared in + * web.xml or web-fragment.xml, nor annotated + * with {@link javax.servlet.annotation.WebListener} + * + * @since Servlet 3.1 + */ + public String getVirtualServerName(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletContextAttributeEvent.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletContextAttributeEvent.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletContextAttributeEvent.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,115 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +/** + * Event class for notifications about changes to the attributes of + * the ServletContext of a web application. + * + * @see ServletContextAttributeListener + * + * @since Servlet 2.3 + */ + +public class ServletContextAttributeEvent extends ServletContextEvent { + + private static final long serialVersionUID = -5804680734245618303L; + + private String name; + private Object value; + + /** + * Constructs a ServletContextAttributeEvent from the given + * ServletContext, attribute name, and attribute value. + * + * @param source the ServletContext whose attribute changed + * @param name the name of the ServletContext attribute that changed + * @param value the value of the ServletContext attribute that changed + */ + public ServletContextAttributeEvent(ServletContext source, + String name, Object value) { + super(source); + this.name = name; + this.value = value; + } + + /** + * Gets the name of the ServletContext attribute that changed. + * + * @return the name of the ServletContext attribute that changed + */ + public String getName() { + return this.name; + } + + /** + * Gets the value of the ServletContext attribute that changed. + * + *

If the attribute was added, this is the value of the attribute. + * If the attribute was removed, this is the value of the removed + * attribute. If the attribute was replaced, this is the old value of + * the attribute. + * + * @return the value of the ServletContext attribute that changed + */ + public Object getValue() { + return this.value; + } +} + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletContextAttributeListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletContextAttributeListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletContextAttributeListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,113 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.util.EventListener; + +/** + * Interface for receiving notification events about ServletContext + * attribute changes. + * + *

In order to receive these notification events, the implementation + * class must be either declared in the deployment descriptor of the web + * application, annotated with {@link javax.servlet.annotation.WebListener}, + * or registered via one of the addListener methods defined on + * {@link ServletContext}. + * + *

The order in which implementations of this interface are invoked is + * unspecified. + * + * @see ServletContextAttributeEvent + * + * @since Servlet 2.3 + */ + +public interface ServletContextAttributeListener extends EventListener { + + /** + * Receives notification that an attribute has been added to the + * ServletContext. + * + * @param event the ServletContextAttributeEvent containing the + * ServletContext to which the attribute was added, along with the + * attribute name and value + */ + public void attributeAdded(ServletContextAttributeEvent event); + + /** + * Receives notification that an attribute has been removed + * from the ServletContext. + * + * @param event the ServletContextAttributeEvent containing the + * ServletContext from which the attribute was removed, along with + * the attribute name and value + */ + public void attributeRemoved(ServletContextAttributeEvent event); + + /* + * Receives notification that an attribute has been replaced + * in the ServletContext. + * + * @param event the ServletContextAttributeEvent containing the + * ServletContext in which the attribute was replaced, along with + * the attribute name and its old value + */ + public void attributeReplaced(ServletContextAttributeEvent event); +} + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletContextEvent.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletContextEvent.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletContextEvent.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,89 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +/** + * This is the event class for notifications about changes to + * the servlet context of a web application. + * @see ServletContextListener + * + * @since Servlet 2.3 + */ + +public class ServletContextEvent extends java.util.EventObject { + + private static final long serialVersionUID = -7501701636134222423L; + + /** Construct a ServletContextEvent from the given context. + * + * @param source - the ServletContext that is sending the event. + */ + public ServletContextEvent(ServletContext source) { + super(source); + } + + /** + * Return the ServletContext that changed. + * + * @return the ServletContext that sent the event. + */ + public ServletContext getServletContext () { + return (ServletContext) super.getSource(); + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletContextListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletContextListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletContextListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,110 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.util.EventListener; + +/** + * Interface for receiving notification events about ServletContext + * lifecycle changes. + * + *

In order to receive these notification events, the implementation + * class must be either declared in the deployment descriptor of the web + * application, annotated with {@link javax.servlet.annotation.WebListener}, + * or registered via one of the addListener methods defined on + * {@link ServletContext}. + * + *

Implementations of this interface are invoked at their + * {@link #contextInitialized} method in the order in which they have been + * declared, and at their {@link #contextDestroyed} method in reverse + * order. + * + * @see ServletContextEvent + * + * @since Servlet 2.3 + */ +public interface ServletContextListener extends EventListener { + + /** + * Receives notification that the web application initialization + * process is starting. + * + *

All ServletContextListeners are notified of context + * initialization before any filters or servlets in the web + * application are initialized. + * + * @param sce the ServletContextEvent containing the ServletContext + * that is being initialized + */ + public void contextInitialized(ServletContextEvent sce); + + /** + * Receives notification that the ServletContext is about to be + * shut down. + * + *

All servlets and filters will have been destroyed before any + * ServletContextListeners are notified of context + * destruction. + * + * @param sce the ServletContextEvent containing the ServletContext + * that is being destroyed + */ + public void contextDestroyed(ServletContextEvent sce); +} + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletException.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletException.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletException.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,182 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + + +/** + * Defines a general exception a servlet can throw when it + * encounters difficulty. + * + * @author Various + */ + + +public class ServletException extends Exception { + + private Throwable rootCause; + + + + + + /** + * Constructs a new servlet exception. + * + */ + + public ServletException() { + super(); + } + + + + + + /** + * Constructs a new servlet exception with the + * specified message. The message can be written + * to the server log and/or displayed for the user. + * + * @param message a String + * specifying the text of + * the exception message + * + */ + + public ServletException(String message) { + super(message); + } + + + + + + /** + * Constructs a new servlet exception when the servlet + * needs to throw an exception and include a message + * about the "root cause" exception that interfered with its + * normal operation, including a description message. + * + * + * @param message a String containing + * the text of the exception message + * + * @param rootCause the Throwable exception + * that interfered with the servlet's + * normal operation, making this servlet + * exception necessary + * + */ + + public ServletException(String message, Throwable rootCause) { + super(message, rootCause); + this.rootCause = rootCause; + } + + + + + + /** + * Constructs a new servlet exception when the servlet + * needs to throw an exception and include a message + * about the "root cause" exception that interfered with its + * normal operation. The exception's message is based on the localized + * message of the underlying exception. + * + *

This method calls the getLocalizedMessage method + * on the Throwable exception to get a localized exception + * message. When subclassing ServletException, + * this method can be overridden to create an exception message + * designed for a specific locale. + * + * @param rootCause the Throwable exception + * that interfered with the servlet's + * normal operation, making the servlet exception + * necessary + * + */ + + public ServletException(Throwable rootCause) { + super(rootCause); + this.rootCause = rootCause; + } + + + + + + /** + * Returns the exception that caused this servlet exception. + * + * + * @return the Throwable + * that caused this servlet exception + * + */ + + public Throwable getRootCause() { + return rootCause; + } +} + + + + + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletInputStream.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletInputStream.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletInputStream.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,189 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.InputStream; +import java.io.IOException; + +/** + * + * Provides an input stream for reading binary data from a client + * request, including an efficient readLine method + * for reading data one line at a time. With some protocols, such + * as HTTP POST and PUT, a ServletInputStream + * object can be used to read data sent from the client. + * + *

A ServletInputStream object is normally retrieved via + * the {@link ServletRequest#getInputStream} method. + * + * + *

This is an abstract class that a servlet container implements. + * Subclasses of this class + * must implement the java.io.InputStream.read() method. + * + * + * @author Various + * + * @see ServletRequest + * + */ + +public abstract class ServletInputStream extends InputStream { + + + + /** + * Does nothing, because this is an abstract class. + * + */ + + protected ServletInputStream() { } + + + + + /** + * + * Reads the input stream, one line at a time. Starting at an + * offset, reads bytes into an array, until it reads a certain number + * of bytes or reaches a newline character, which it reads into the + * array as well. + * + *

This method returns -1 if it reaches the end of the input + * stream before reading the maximum number of bytes. + * + * + * + * @param b an array of bytes into which data is read + * + * @param off an integer specifying the character at which + * this method begins reading + * + * @param len an integer specifying the maximum number of + * bytes to read + * + * @return an integer specifying the actual number of bytes + * read, or -1 if the end of the stream is reached + * + * @exception IOException if an input or output exception has occurred + * + */ + public int readLine(byte[] b, int off, int len) throws IOException { + + if (len <= 0) { + return 0; + } + int count = 0, c; + + while ((c = read()) != -1) { + b[off++] = (byte)c; + count++; + if (c == '\n' || count == len) { + break; + } + } + return count > 0 ? count : -1; + } + + + /** + * Returns true when all the data from the stream has been read else + * it returns false. + * + * @return true when all data for this particular request + * has been read, otherwise returns false. + * + * @since Servlet 3.1 + */ + public abstract boolean isFinished(); + + /** + * Returns true if data can be read without blocking else returns + * false. + * + * @return true if data can be obtained without blocking, + * otherwise returns false. + * + * @since Servlet 3.1 + */ + public abstract boolean isReady(); + + /** + * Instructs the ServletInputStream to invoke the provided + * {@link ReadListener} when it is possible to read + * + * @param readListener the {@link ReadListener} that should be notified + * when it's possible to read. + * + * @exception IllegalStateException if one of the following conditions is true + *

+ * + * @throws NullPointerException if readListener is null + * + * @since Servlet 3.1 + + */ + public abstract void setReadListener(ReadListener readListener); +} + + + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletOutputStream.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletOutputStream.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletOutputStream.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,436 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.OutputStream; +import java.io.IOException; +import java.io.CharConversionException; +import java.text.MessageFormat; +import java.util.ResourceBundle; + +/** + * Provides an output stream for sending binary data to the + * client. A ServletOutputStream object is normally retrieved + * via the {@link ServletResponse#getOutputStream} method. + * + *

This is an abstract class that the servlet container implements. + * Subclasses of this class + * must implement the java.io.OutputStream.write(int) + * method. + * + * + * @author Various + * + * @see ServletResponse + * + */ + +public abstract class ServletOutputStream extends OutputStream { + + private static final String LSTRING_FILE = "javax.servlet.LocalStrings"; + private static ResourceBundle lStrings = + ResourceBundle.getBundle(LSTRING_FILE); + + + + /** + * + * Does nothing, because this is an abstract class. + * + */ + + protected ServletOutputStream() { } + + + /** + * Writes a String to the client, + * without a carriage return-line feed (CRLF) + * character at the end. + * + * + * @param s the String to send to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void print(String s) throws IOException { + if (s==null) s="null"; + int len = s.length(); + for (int i = 0; i < len; i++) { + char c = s.charAt (i); + + // + // XXX 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 & 0xff00) != 0) { // high order byte must be zero + String errMsg = lStrings.getString("err.not_iso8859_1"); + Object[] errArgs = new Object[1]; + errArgs[0] = Character.valueOf(c); + errMsg = MessageFormat.format(errMsg, errArgs); + throw new CharConversionException(errMsg); + } + write (c); + } + } + + + + /** + * Writes a boolean value to the client, + * with no carriage return-line feed (CRLF) + * character at the end. + * + * @param b the boolean value + * to send to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void print(boolean b) throws IOException { + String msg; + if (b) { + msg = lStrings.getString("value.true"); + } else { + msg = lStrings.getString("value.false"); + } + print(msg); + } + + + + /** + * Writes a character to the client, + * with no carriage return-line feed (CRLF) + * at the end. + * + * @param c the character to send to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void print(char c) throws IOException { + print(String.valueOf(c)); + } + + + + + /** + * + * Writes an int to the client, + * with no carriage return-line feed (CRLF) + * at the end. + * + * @param i the int to send to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void print(int i) throws IOException { + print(String.valueOf(i)); + } + + + + + /** + * + * Writes a long value to the client, + * with no carriage return-line feed (CRLF) at the end. + * + * @param l the long value + * to send to the client + * + * @exception IOException if an input or output exception + * occurred + * + */ + + public void print(long l) throws IOException { + print(String.valueOf(l)); + } + + + + /** + * + * Writes a float value to the client, + * with no carriage return-line feed (CRLF) at the end. + * + * @param f the float value + * to send to the client + * + * @exception IOException if an input or output exception occurred + * + * + */ + + public void print(float f) throws IOException { + print(String.valueOf(f)); + } + + + + /** + * + * Writes a double value to the client, + * with no carriage return-line feed (CRLF) at the end. + * + * @param d the double value + * to send to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void print(double d) throws IOException { + print(String.valueOf(d)); + } + + + + /** + * Writes a carriage return-line feed (CRLF) + * to the client. + * + * + * + * @exception IOException if an input or output exception occurred + * + */ + + public void println() throws IOException { + print("\r\n"); + } + + + + /** + * Writes a String to the client, + * followed by a carriage return-line feed (CRLF). + * + * + * @param s the String to write to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void println(String s) throws IOException { + print(s); + println(); + } + + + + + /** + * + * Writes a boolean value to the client, + * followed by a + * carriage return-line feed (CRLF). + * + * + * @param b the boolean value + * to write to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void println(boolean b) throws IOException { + print(b); + println(); + } + + + + /** + * + * Writes a character to the client, followed by a carriage + * return-line feed (CRLF). + * + * @param c the character to write to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void println(char c) throws IOException { + print(c); + println(); + } + + + + /** + * + * Writes an int to the client, followed by a + * carriage return-line feed (CRLF) character. + * + * + * @param i the int to write to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void println(int i) throws IOException { + print(i); + println(); + } + + + + /** + * + * Writes a long value to the client, followed by a + * carriage return-line feed (CRLF). + * + * + * @param l the long value to write to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void println(long l) throws IOException { + print(l); + println(); + } + + + + /** + * + * Writes a float value to the client, + * followed by a carriage return-line feed (CRLF). + * + * @param f the float value + * to write to the client + * + * + * @exception IOException if an input or output exception + * occurred + * + */ + + public void println(float f) throws IOException { + print(f); + println(); + } + + + + /** + * + * Writes a double value to the client, + * followed by a carriage return-line feed (CRLF). + * + * + * @param d the double value + * to write to the client + * + * @exception IOException if an input or output exception occurred + * + */ + + public void println(double d) throws IOException { + print(d); + println(); + } + + /** + * This method can be used to determine if data can be written without blocking. + * + * @return true if a write to this ServletOutputStream + * will succeed, otherwise returns false. + * + * @since Servlet 3.1 + */ + public abstract boolean isReady(); + + /** + * Instructs the ServletOutputStream to invoke the provided + * {@link WriteListener} when it is possible to write + * + * + * @param writeListener the {@link WriteListener} that should be notified + * when it's possible to write + * + * @exception IllegalStateException if one of the following conditions is true + *

+ * + * @throws NullPointerException if writeListener is null + * + * @since Servlet 3.1 + */ + public abstract void setWriteListener(WriteListener writeListener); + +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletRegistration.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletRegistration.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletRegistration.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,212 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import java.util.*; + +/** + * Interface through which a {@link Servlet} may be further configured. + * + * @since Servlet 3.0 + */ +public interface ServletRegistration extends Registration { + + /** + * Adds a servlet mapping with the given URL patterns for the Servlet + * represented by this ServletRegistration. + * + *

If any of the specified URL patterns are already mapped to a + * different Servlet, no updates will be performed. + * + *

If this method is called multiple times, each successive call + * adds to the effects of the former. + * + * @param urlPatterns the URL patterns of the servlet mapping + * + * @return the (possibly empty) Set of URL patterns that are already + * mapped to a different Servlet + * + * @throws IllegalArgumentException if urlPatterns is null + * or empty + * @throws IllegalStateException if the ServletContext from which this + * ServletRegistration was obtained has already been initialized + */ + public Set addMapping(String... urlPatterns); + + /** + * Gets the currently available mappings of the + * Servlet represented by this ServletRegistration. + * + *

If permitted, any changes to the returned Collection must not + * affect this ServletRegistration. + * + * @return a (possibly empty) Collection of the currently + * available mappings of the Servlet represented by this + * ServletRegistration + */ + public Collection getMappings(); + + /** + * Gets the name of the runAs role of the Servlet represented by this + * ServletRegistration. + * + * @return the name of the runAs role, or null if the Servlet is + * configured to run as its caller + */ + public String getRunAsRole(); + + /** + * Interface through which a {@link Servlet} registered via one of the + * addServlet methods on {@link ServletContext} may be further + * configured. + */ + interface Dynamic extends ServletRegistration, Registration.Dynamic { + + /** + * Sets the loadOnStartup priority on the Servlet + * represented by this dynamic ServletRegistration. + * + *

A loadOnStartup value of greater than or equal to + * zero indicates to the container the initialization priority of + * the Servlet. In this case, the container must instantiate and + * initialize the Servlet during the initialization phase of the + * ServletContext, that is, after it has invoked all of the + * ServletContextListener objects configured for the ServletContext + * at their {@link ServletContextListener#contextInitialized} + * method. + * + *

If loadOnStartup is a negative integer, the container + * is free to instantiate and initialize the Servlet lazily. + * + *

The default value for loadOnStartup is -1. + * + *

A call to this method overrides any previous setting. + * + * @param loadOnStartup the initialization priority of the Servlet + * + * @throws IllegalStateException if the ServletContext from which + * this ServletRegistration was obtained has already been initialized + */ + public void setLoadOnStartup(int loadOnStartup); + + /** + * Sets the {@link ServletSecurityElement} to be applied to the + * mappings defined for this ServletRegistration. + * + *

This method applies to all mappings added to this + * ServletRegistration up until the point that the + * ServletContext from which it was obtained has been + * initialized. + * + *

If a URL pattern of this ServletRegistration is an exact target + * of a security-constraint that was established via + * the portable deployment descriptor, then this method does not + * change the security-constraint for that pattern, + * and the pattern will be included in the return value. + * + *

If a URL pattern of this ServletRegistration is an exact + * target of a security constraint that was established via the + * {@link javax.servlet.annotation.ServletSecurity} annotation + * or a previous call to this method, then this method replaces + * the security constraint for that pattern. + * + *

If a URL pattern of this ServletRegistration is neither the + * exact target of a security constraint that was established via + * the {@link javax.servlet.annotation.ServletSecurity} annotation + * or a previous call to this method, nor the exact target of a + * security-constraint in the portable deployment + * descriptor, then this method establishes the security constraint + * for that pattern from the argument + * ServletSecurityElement. + * + * @param constraint the {@link ServletSecurityElement} to be applied + * to the patterns mapped to this ServletRegistration + * + * @return the (possibly empty) Set of URL patterns that were already + * the exact target of a security-constraint that was + * established via the portable deployment descriptor. This method + * has no effect on the patterns included in the returned set + * + * @throws IllegalArgumentException if constraint is null + * + * @throws IllegalStateException if the {@link ServletContext} from + * which this ServletRegistration was obtained has + * already been initialized + */ + public Set setServletSecurity(ServletSecurityElement constraint); + + /** + * Sets the {@link MultipartConfigElement} to be applied to the + * mappings defined for this ServletRegistration. If this + * method is called multiple times, each successive call overrides the + * effects of the former. + * + * @param multipartConfig the {@link MultipartConfigElement} to be + * applied to the patterns mapped to the registration + * + * @throws IllegalArgumentException if multipartConfig is + * null + * + * @throws IllegalStateException if the {@link ServletContext} from + * which this ServletRegistration was obtained has already been + * initialized + */ + public void setMultipartConfig( + MultipartConfigElement multipartConfig); + + /** + * Sets the name of the runAs role for this + * ServletRegistration. + * + * @param roleName the name of the runAs role + * + * @throws IllegalArgumentException if roleName is null + * + * @throws IllegalStateException if the {@link ServletContext} from + * which this ServletRegistration was obtained has already been + * initialized + */ + public void setRunAsRole(String roleName); + + } + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletRequest.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletRequest.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletRequest.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,718 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.*; +import java.util.*; + +/** + * Defines an object to provide client request information to a servlet. The + * servlet container creates a ServletRequest object and passes + * it as an argument to the servlet's service method. + * + *

A ServletRequest object provides data including + * parameter name and values, attributes, and an input stream. + * Interfaces that extend ServletRequest can provide + * additional protocol-specific data (for example, HTTP data is + * provided by {@link javax.servlet.http.HttpServletRequest}. + * + * @author Various + * + * @see javax.servlet.http.HttpServletRequest + * + */ +public interface ServletRequest { + + /** + * Returns the value of the named attribute as an Object, + * or null if no attribute of the given name exists. + * + *

Attributes can be set two ways. The servlet container may set + * attributes to make available custom information about a request. + * For example, for requests made using HTTPS, the attribute + * javax.servlet.request.X509Certificate can be used to + * retrieve information on the certificate of the client. Attributes + * can also be set programatically using + * {@link ServletRequest#setAttribute}. This allows information to be + * embedded into a request before a {@link RequestDispatcher} call. + * + *

Attribute names should follow the same conventions as package + * names. This specification reserves names matching java.*, + * javax.*, and sun.*. + * + * @param name a String specifying the name of the attribute + * + * @return an Object containing the value of the attribute, + * or null if the attribute does not exist + */ + public Object getAttribute(String name); + + /** + * Returns an Enumeration containing the + * names of the attributes available to this request. + * This method returns an empty Enumeration + * if the request has no attributes available to it. + * + * @return an Enumeration of strings containing the names + * of the request's attributes + */ + public Enumeration getAttributeNames(); + + /** + * Returns the name of the character encoding used in the body of this + * request. This method returns null if the request + * does not specify a character encoding + * + * @return a String containing the name of the character + * encoding, or null if the request does not specify a + * character encoding + */ + public String getCharacterEncoding(); + + /** + * Overrides the name of the character encoding used in the body of this + * request. This method must be called prior to reading request parameters + * or reading input using getReader(). Otherwise, it has no effect. + * + * @param env String containing the name of + * the character encoding. + * + * @throws UnsupportedEncodingException if this ServletRequest is still + * in a state where a character encoding may be set, + * but the specified encoding is invalid + */ + public void setCharacterEncoding(String env) throws UnsupportedEncodingException; + + /** + * Returns the length, in bytes, of the request body and made available by + * the input stream, or -1 if the length is not known ir is greater than + * Integer.MAX_VALUE. For HTTP servlets, + * same as the value of the CGI variable CONTENT_LENGTH. + * + * @return an integer containing the length of the request body or -1 if + * the length is not known or is greater than Integer.MAX_VALUE. + */ + public int getContentLength(); + + /** + * Returns the length, in bytes, of the request body and made available by + * the input stream, or -1 if the length is not known. For HTTP servlets, + * same as the value of the CGI variable CONTENT_LENGTH. + * + * @return a long containing the length of the request body or -1L if + * the length is not known + * + * @since Servlet 3.1 + */ + public long getContentLengthLong(); + + /** + * Returns the MIME type of the body of the request, or + * null if the type is not known. For HTTP servlets, + * same as the value of the CGI variable CONTENT_TYPE. + * + * @return a String containing the name of the MIME type + * of the request, or null if the type is not known + */ + public String getContentType(); + + /** + * Retrieves the body of the request as binary data using + * a {@link ServletInputStream}. Either this method or + * {@link #getReader} may be called to read the body, not both. + * + * @return a {@link ServletInputStream} object containing + * the body of the request + * + * @exception IllegalStateException if the {@link #getReader} method + * has already been called for this request + * + * @exception IOException if an input or output exception occurred + */ + public ServletInputStream getInputStream() throws IOException; + + /** + * Returns the value of a request parameter as a String, + * or null if the parameter does not exist. Request parameters + * are extra information sent with the request. For HTTP servlets, + * parameters are contained in the query string or posted form data. + * + *

You should only use this method when you are sure the + * parameter has only one value. If the parameter might have + * more than one value, use {@link #getParameterValues}. + * + *

If you use this method with a multivalued + * parameter, the value returned is equal to the first value + * in the array returned by getParameterValues. + * + *

If the parameter data was sent in the request body, such as occurs + * with an HTTP POST request, then reading the body directly via {@link + * #getInputStream} or {@link #getReader} can interfere + * with the execution of this method. + * + * @param name a String specifying the name of the parameter + * + * @return a String representing the single value of + * the parameter + * + * @see #getParameterValues + */ + public String getParameter(String name); + + /** + * + * Returns an Enumeration of String + * objects containing the names of the parameters contained + * in this request. If the request has + * no parameters, the method returns an empty Enumeration. + * + * @return an Enumeration of String + * objects, each String containing the name of + * a request parameter; or an empty Enumeration + * if the request has no parameters + */ + public Enumeration getParameterNames(); + + /** + * Returns an array of String objects containing + * all of the values the given request parameter has, or + * null if the parameter does not exist. + * + *

If the parameter has a single value, the array has a length + * of 1. + * + * @param name a String containing the name of + * the parameter whose value is requested + * + * @return an array of String objects + * containing the parameter's values + * + * @see #getParameter + */ + public String[] getParameterValues(String name); + + /** + * Returns a java.util.Map of the parameters of this request. + * + *

Request parameters are extra information sent with the request. + * For HTTP servlets, parameters are contained in the query string or + * posted form data. + * + * @return an immutable java.util.Map containing parameter names as + * keys and parameter values as map values. The keys in the parameter + * map are of type String. The values in the parameter map are of type + * String array. + */ + public Map getParameterMap(); + + /** + * Returns the name and version of the protocol the request uses + * in the form protocol/majorVersion.minorVersion, for + * example, HTTP/1.1. For HTTP servlets, the value + * returned is the same as the value of the CGI variable + * SERVER_PROTOCOL. + * + * @return a String containing the protocol + * name and version number + */ + public String getProtocol(); + + /** + * Returns the name of the scheme used to make this request, + * for example, + * http, https, or ftp. + * Different schemes have different rules for constructing URLs, + * as noted in RFC 1738. + * + * @return a String containing the name + * of the scheme used to make this request + */ + public String getScheme(); + + /** + * Returns the host name of the server to which the request was sent. + * It is the value of the part before ":" in the Host + * header value, if any, or the resolved server name, or the server IP + * address. + * + * @return a String containing the name of the server + */ + public String getServerName(); + + /** + * Returns the port number to which the request was sent. + * It is the value of the part after ":" in the Host + * header value, if any, or the server port where the client connection + * was accepted on. + * + * @return an integer specifying the port number + */ + public int getServerPort(); + + /** + * Retrieves the body of the request as character data using + * a BufferedReader. The reader translates the character + * data according to the character encoding used on the body. + * Either this method or {@link #getInputStream} may be called to read the + * body, not both. + * + * @return a BufferedReader containing the body of the request + * + * @exception UnsupportedEncodingException if the character set encoding + * used is not supported and the text cannot be decoded + * + * @exception IllegalStateException if {@link #getInputStream} method + * has been called on this request + * + * @exception IOException if an input or output exception occurred + * + * @see #getInputStream + */ + public BufferedReader getReader() throws IOException; + + /** + * Returns the Internet Protocol (IP) address of the client + * or last proxy that sent the request. + * For HTTP servlets, same as the value of the + * CGI variable REMOTE_ADDR. + * + * @return a String containing the + * IP address of the client that sent the request + */ + public String getRemoteAddr(); + + /** + * Returns the fully qualified name of the client + * or the last proxy that sent the request. + * If the engine cannot or chooses not to resolve the hostname + * (to improve performance), this method returns the dotted-string form of + * the IP address. For HTTP servlets, same as the value of the CGI variable + * REMOTE_HOST. + * + * @return a String containing the fully + * qualified name of the client + */ + public String getRemoteHost(); + + /** + * Stores an attribute in this request. + * Attributes are reset between requests. This method is most + * often used in conjunction with {@link RequestDispatcher}. + * + *

Attribute names should follow the same conventions as + * package names. Names beginning with java.*, + * javax.*, and com.sun.*, are + * reserved for use by Sun Microsystems. + *
If the object passed in is null, the effect is the same as + * calling {@link #removeAttribute}. + *
It is warned that when the request is dispatched from the + * servlet resides in a different web application by + * RequestDispatcher, the object set by this method + * may not be correctly retrieved in the caller servlet. + * + * @param name a String specifying + * the name of the attribute + * + * @param o the Object to be stored + * + */ + public void setAttribute(String name, Object o); + + /** + * + * Removes an attribute from this request. This method is not + * generally needed as attributes only persist as long as the request + * is being handled. + * + *

Attribute names should follow the same conventions as + * package names. Names beginning with java.*, + * javax.*, and com.sun.*, are + * reserved for use by Sun Microsystems. + * + * @param name a String specifying + * the name of the attribute to remove + */ + public void removeAttribute(String name); + + /** + * Returns the preferred Locale that the client will + * accept content in, based on the Accept-Language header. + * If the client request doesn't provide an Accept-Language header, + * this method returns the default locale for the server. + * + * @return the preferred Locale for the client + */ + public Locale getLocale(); + + /** + * Returns an Enumeration of Locale objects + * indicating, in decreasing order starting with the preferred locale, the + * locales that are acceptable to the client based on the Accept-Language + * header. + * If the client request doesn't provide an Accept-Language header, + * this method returns an Enumeration containing one + * Locale, the default locale for the server. + * + * @return an Enumeration of preferred + * Locale objects for the client + */ + public Enumeration getLocales(); + + /** + * + * Returns a boolean indicating whether this request was made using a + * secure channel, such as HTTPS. + * + * @return a boolean indicating if the request was made using a + * secure channel + */ + public boolean isSecure(); + + /** + * + * Returns a {@link RequestDispatcher} object that acts as a wrapper for + * the resource located at the given path. + * A RequestDispatcher object can be used to forward + * a request to the resource or to include the resource in a response. + * The resource can be dynamic or static. + * + *

The pathname specified may be relative, although it cannot extend + * outside the current servlet context. If the path begins with + * a "/" it is interpreted as relative to the current context root. + * This method returns null if the servlet container + * cannot return a RequestDispatcher. + * + *

The difference between this method and {@link + * ServletContext#getRequestDispatcher} is that this method can take a + * relative path. + * + * @param path a String specifying the pathname + * to the resource. If it is relative, it must be + * relative against the current servlet. + * + * @return a RequestDispatcher object that acts as a + * wrapper for the resource at the specified path, + * or null if the servlet container cannot + * return a RequestDispatcher + * + * @see RequestDispatcher + * @see ServletContext#getRequestDispatcher + */ + public RequestDispatcher getRequestDispatcher(String path); + + /** + * @deprecated As of Version 2.1 of the Java Servlet API, + * use {@link ServletContext#getRealPath} instead. + */ + public String getRealPath(String path); + + /** + * Returns the Internet Protocol (IP) source port of the client + * or last proxy that sent the request. + * + * @return an integer specifying the port number + * + * @since Servlet 2.4 + */ + public int getRemotePort(); + + /** + * Returns the host name of the Internet Protocol (IP) interface on + * which the request was received. + * + * @return a String containing the host + * name of the IP on which the request was received. + * + * @since Servlet 2.4 + */ + public String getLocalName(); + + /** + * Returns the Internet Protocol (IP) address of the interface on + * which the request was received. + * + * @return a String containing the + * IP address on which the request was received. + * + * @since Servlet 2.4 + */ + public String getLocalAddr(); + + /** + * Returns the Internet Protocol (IP) port number of the interface + * on which the request was received. + * + * @return an integer specifying the port number + * + * @since Servlet 2.4 + */ + public int getLocalPort(); + + /** + * Gets the servlet context to which this ServletRequest was last + * dispatched. + * + * @return the servlet context to which this ServletRequest was last + * dispatched + * + * @since Servlet 3.0 + */ + public ServletContext getServletContext(); + + /** + * Puts this request into asynchronous mode, and initializes its + * {@link AsyncContext} with the original (unwrapped) ServletRequest + * and ServletResponse objects. + * + *

Calling this method will cause committal of the associated + * response to be delayed until {@link AsyncContext#complete} is + * called on the returned {@link AsyncContext}, or the asynchronous + * operation has timed out. + * + *

Calling {@link AsyncContext#hasOriginalRequestAndResponse()} on + * the returned AsyncContext will return true. Any filters + * invoked in the outbound direction after this request was put + * into asynchronous mode may use this as an indication that any request + * and/or response wrappers that they added during their inbound + * invocation need not stay around for the duration of the asynchronous + * operation, and therefore any of their associated resources may be + * released. + * + *

This method clears the list of {@link AsyncListener} instances + * (if any) that were registered with the AsyncContext returned by the + * previous call to one of the startAsync methods, after calling each + * AsyncListener at its {@link AsyncListener#onStartAsync onStartAsync} + * method. + * + *

Subsequent invocations of this method, or its overloaded + * variant, will return the same AsyncContext instance, reinitialized + * as appropriate. + * + * @return the (re)initialized AsyncContext + * + * @throws IllegalStateException if this request is within the scope of + * a filter or servlet that does not support asynchronous operations + * (that is, {@link #isAsyncSupported} returns false), + * or if this method is called again without any asynchronous dispatch + * (resulting from one of the {@link AsyncContext#dispatch} methods), + * is called outside the scope of any such dispatch, or is called again + * within the scope of the same dispatch, or if the response has + * already been closed + * + * @see AsyncContext#dispatch() + * @since Servlet 3.0 + */ + public AsyncContext startAsync() throws IllegalStateException; + + /** + * Puts this request into asynchronous mode, and initializes its + * {@link AsyncContext} with the given request and response objects. + * + *

The ServletRequest and ServletResponse arguments must be + * the same instances, or instances of {@link ServletRequestWrapper} and + * {@link ServletResponseWrapper} that wrap them, that were passed to the + * {@link Servlet#service service} method of the Servlet or the + * {@link Filter#doFilter doFilter} method of the Filter, respectively, + * in whose scope this method is being called. + * + *

Calling this method will cause committal of the associated + * response to be delayed until {@link AsyncContext#complete} is + * called on the returned {@link AsyncContext}, or the asynchronous + * operation has timed out. + * + *

Calling {@link AsyncContext#hasOriginalRequestAndResponse()} on + * the returned AsyncContext will return false, + * unless the passed in ServletRequest and ServletResponse arguments + * are the original ones or do not carry any application-provided wrappers. + * Any filters invoked in the outbound direction after this + * request was put into asynchronous mode may use this as an indication + * that some of the request and/or response wrappers that they added + * during their inbound invocation may need to stay in place for + * the duration of the asynchronous operation, and their associated + * resources may not be released. + * A ServletRequestWrapper applied during the inbound + * invocation of a filter may be released by the outbound + * invocation of the filter only if the given servletRequest, + * which is used to initialize the AsyncContext and will be returned by + * a call to {@link AsyncContext#getRequest()}, does not contain said + * ServletRequestWrapper. The same holds true for ServletResponseWrapper + * instances. + * + *

This method clears the list of {@link AsyncListener} instances + * (if any) that were registered with the AsyncContext returned by the + * previous call to one of the startAsync methods, after calling each + * AsyncListener at its {@link AsyncListener#onStartAsync onStartAsync} + * method. + * + *

Subsequent invocations of this method, or its zero-argument + * variant, will return the same AsyncContext instance, reinitialized + * as appropriate. If a call to this method is followed by a call to its + * zero-argument variant, the specified (and possibly wrapped) request + * and response objects will remain locked in on the returned + * AsyncContext. + * + * @param servletRequest the ServletRequest used to initialize the + * AsyncContext + * @param servletResponse the ServletResponse used to initialize the + * AsyncContext + * + * @return the (re)initialized AsyncContext + * + * @throws IllegalStateException if this request is within the scope of + * a filter or servlet that does not support asynchronous operations + * (that is, {@link #isAsyncSupported} returns false), + * or if this method is called again without any asynchronous dispatch + * (resulting from one of the {@link AsyncContext#dispatch} methods), + * is called outside the scope of any such dispatch, or is called again + * within the scope of the same dispatch, or if the response has + * already been closed + * + * @since Servlet 3.0 + */ + public AsyncContext startAsync(ServletRequest servletRequest, + ServletResponse servletResponse) + throws IllegalStateException; + + /** + * Checks if this request has been put into asynchronous mode. + * + *

A ServletRequest is put into asynchronous mode by calling + * {@link #startAsync} or + * {@link #startAsync(ServletRequest,ServletResponse)} on it. + * + *

This method returns false if this request was + * put into asynchronous mode, but has since been dispatched using + * one of the {@link AsyncContext#dispatch} methods or released + * from asynchronous mode via a call to {@link AsyncContext#complete}. + * + * @return true if this request has been put into asynchronous mode, + * false otherwise + * + * @since Servlet 3.0 + */ + public boolean isAsyncStarted(); + + /** + * Checks if this request supports asynchronous operation. + * + *

Asynchronous operation is disabled for this request if this request + * is within the scope of a filter or servlet that has not been annotated + * or flagged in the deployment descriptor as being able to support + * asynchronous handling. + * + * @return true if this request supports asynchronous operation, false + * otherwise + * + * @since Servlet 3.0 + */ + public boolean isAsyncSupported(); + + /** + * Gets the AsyncContext that was created or reinitialized by the + * most recent invocation of {@link #startAsync} or + * {@link #startAsync(ServletRequest,ServletResponse)} on this request. + * + * @return the AsyncContext that was created or reinitialized by the + * most recent invocation of {@link #startAsync} or + * {@link #startAsync(ServletRequest,ServletResponse)} on + * this request + * + * @throws IllegalStateException if this request has not been put + * into asynchronous mode, i.e., if neither {@link #startAsync} nor + * {@link #startAsync(ServletRequest,ServletResponse)} has been called + * + * @since Servlet 3.0 + */ + public AsyncContext getAsyncContext(); + + /** + * Gets the dispatcher type of this request. + * + *

The dispatcher type of a request is used by the container + * to select the filters that need to be applied to the request: + * Only filters with matching dispatcher type and url patterns will + * be applied. + * + *

Allowing a filter that has been configured for multiple + * dispatcher types to query a request for its dispatcher type + * allows the filter to process the request differently depending on + * its dispatcher type. + * + *

The initial dispatcher type of a request is defined as + * DispatcherType.REQUEST. The dispatcher type of a request + * dispatched via {@link RequestDispatcher#forward(ServletRequest, + * ServletResponse)} or {@link RequestDispatcher#include(ServletRequest, + * ServletResponse)} is given as DispatcherType.FORWARD or + * DispatcherType.INCLUDE, respectively, while the + * dispatcher type of an asynchronous request dispatched via + * one of the {@link AsyncContext#dispatch} methods is given as + * DispatcherType.ASYNC. Finally, the dispatcher type of a + * request dispatched to an error page by the container's error handling + * mechanism is given as DispatcherType.ERROR. + * + * @return the dispatcher type of this request + * + * @see DispatcherType + * + * @since Servlet 3.0 + */ + public DispatcherType getDispatcherType(); + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletRequestAttributeEvent.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletRequestAttributeEvent.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletRequestAttributeEvent.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,112 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + + + /** + * This is the event class for notifications of changes to the + * attributes of the servlet request in an application. + * @see ServletRequestAttributeListener + * @since Servlet 2.4 + */ + +public class ServletRequestAttributeEvent extends ServletRequestEvent { + + private static final long serialVersionUID = -1466635426192317793L; + + private String name; + private Object value; + + /** Construct a ServletRequestAttributeEvent giving the servlet context + * of this web application, the ServletRequest whose attributes are + * changing and the name and value of the attribute. + * + * @param sc the ServletContext that is sending the event. + * @param request the ServletRequest that is sending the event. + * @param name the name of the request attribute. + * @param value the value of the request attribute. + */ + public ServletRequestAttributeEvent(ServletContext sc, ServletRequest request, String name, Object value) { + super(sc, request); + this.name = name; + this.value = value; + } + + /** + * Return the name of the attribute that changed on the ServletRequest. + * + * @return the name of the changed request attribute + */ + public String getName() { + return this.name; + } + + /** + * Returns the value of the attribute that has been added, removed or + * replaced. If the attribute was added, this is the value of the + * attribute. If the attribute was removed, this is the value of the + * removed attribute. If the attribute was replaced, this is the old + * value of the attribute. + * + * @return the value of the changed request attribute + */ + public Object getValue() { + return this.value; + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletRequestAttributeListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletRequestAttributeListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletRequestAttributeListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,118 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.util.EventListener; + +/** + * Interface for receiving notification events about ServletRequest + * attribute changes. + * + *

Notifications will be generated while the request + * is within the scope of the web application. A ServletRequest + * is defined as coming into scope of a web application when it + * is about to enter the first servlet or filter of the web + * application, and as going out of scope when it exits the last + * servlet or the first filter in the chain. + * + *

In order to receive these notification events, the implementation + * class must be either declared in the deployment descriptor of the web + * application, annotated with {@link javax.servlet.annotation.WebListener}, + * or registered via one of the addListener methods defined on + * {@link ServletContext}. + * + *

The order in which implementations of this interface are invoked is + * unspecified. + * + * @since Servlet 2.4 + */ + +public interface ServletRequestAttributeListener extends EventListener { + + /** + * Receives notification that an attribute has been added to the + * ServletRequest. + * + * @param srae the ServletRequestAttributeEvent containing the + * ServletRequest and the name and value of the attribute that was + * added + */ + public void attributeAdded(ServletRequestAttributeEvent srae); + + /** + * Receives notification that an attribute has been removed from the + * ServletRequest. + * + * @param srae the ServletRequestAttributeEvent containing the + * ServletRequest and the name and value of the attribute that was + * removed + */ + public void attributeRemoved(ServletRequestAttributeEvent srae); + + /** + * Receives notification that an attribute has been replaced on the + * ServletRequest. + * + * @param srae the ServletRequestAttributeEvent containing the + * ServletRequest and the name and (old) value of the attribute + * that was replaced + */ + public void attributeReplaced(ServletRequestAttributeEvent srae); +} + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletRequestEvent.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletRequestEvent.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletRequestEvent.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,97 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +/** + * Events of this kind indicate lifecycle events for a ServletRequest. + * The source of the event is the ServletContext of this web application. + * + * @see ServletRequestListener + * @since Servlet 2.4 + */ +public class ServletRequestEvent extends java.util.EventObject { + + private static final long serialVersionUID = -7467864054698729101L; + + private final transient ServletRequest request; + + /** Construct a ServletRequestEvent for the given ServletContext + * and ServletRequest. + * + * @param sc the ServletContext of the web application. + * @param request the ServletRequest that is sending the event. + */ + public ServletRequestEvent(ServletContext sc, ServletRequest request) { + super(sc); + this.request = request; + } + + /** + * Returns the ServletRequest that is changing. + */ + public ServletRequest getServletRequest () { + return this.request; + } + + /** + * Returns the ServletContext of this web application. + */ + public ServletContext getServletContext () { + return (ServletContext) super.getSource(); + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletRequestListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletRequestListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletRequestListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,105 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.util.EventListener; + +/** + * Interface for receiving notification events about requests coming + * into and going out of scope of a web application. + * + *

A ServletRequest is defined as coming into scope of a web + * application when it is about to enter the first servlet or filter + * of the web application, and as going out of scope as it exits + * the last servlet or the first filter in the chain. + * + *

In order to receive these notification events, the implementation + * class must be either declared in the deployment descriptor of the web + * application, annotated with {@link javax.servlet.annotation.WebListener}, + * or registered via one of the addListener methods defined on + * {@link ServletContext}. + * + *

Implementations of this interface are invoked at their + * {@link #requestInitialized} method in the order in which they have been + * declared, and at their {@link #requestDestroyed} method in reverse + * order. + * + * @since Servlet 2.4 + */ + +public interface ServletRequestListener extends EventListener { + + /** + * Receives notification that a ServletRequest is about to go out + * of scope of the web application. + * + * @param sre the ServletRequestEvent containing the ServletRequest + * and the ServletContext representing the web application + */ + public void requestDestroyed(ServletRequestEvent sre); + + /** + * Receives notification that a ServletRequest is about to come + * into scope of the web application. + * + * @param sre the ServletRequestEvent containing the ServletRequest + * and the ServletContext representing the web application + */ + public void requestInitialized(ServletRequestEvent sre); +} Index: 3rdParty_sources/servlet-api/javax/servlet/ServletRequestWrapper.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletRequestWrapper.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletRequestWrapper.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,590 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Enumeration; +import java.util.Locale; +import java.util.Map; + +/** + * Provides a convenient implementation of the ServletRequest interface that + * can be subclassed by developers wishing to adapt the request to a Servlet. + * This class implements the Wrapper or Decorator pattern. Methods default to + * calling through to the wrapped request object. + * + * @see javax.servlet.ServletRequest + * + * @since Servlet 2.3 + */ + +public class ServletRequestWrapper implements ServletRequest { + + private ServletRequest request; + + /** + * Creates a ServletRequest adaptor wrapping the given request object. + * @throws java.lang.IllegalArgumentException if the request is null + */ + public ServletRequestWrapper(ServletRequest request) { + if (request == null) { + throw new IllegalArgumentException("Request cannot be null"); + } + this.request = request; + } + + + /** + * Return the wrapped request object. + */ + public ServletRequest getRequest() { + return this.request; + } + + + /** + * Sets the request object being wrapped. + * @throws java.lang.IllegalArgumentException if the request is null. + */ + public void setRequest(ServletRequest request) { + if (request == null) { + throw new IllegalArgumentException("Request cannot be null"); + } + this.request = request; + } + + + /** + * The default behavior of this method is to call getAttribute(String name) + * on the wrapped request object. + */ + public Object getAttribute(String name) { + return this.request.getAttribute(name); + } + + + /** + * The default behavior of this method is to return getAttributeNames() + * on the wrapped request object. + */ + public Enumeration getAttributeNames() { + return this.request.getAttributeNames(); + } + + + /** + * The default behavior of this method is to return getCharacterEncoding() + * on the wrapped request object. + */ + public String getCharacterEncoding() { + return this.request.getCharacterEncoding(); + } + + + /** + * The default behavior of this method is to set the character encoding + * on the wrapped request object. + */ + public void setCharacterEncoding(String enc) + throws UnsupportedEncodingException { + this.request.setCharacterEncoding(enc); + } + + + /** + * The default behavior of this method is to return getContentLength() + * on the wrapped request object. + */ + public int getContentLength() { + return this.request.getContentLength(); + } + + /** + * The default behavior of this method is to return getContentLengthLong() + * on the wrapped request object. + * + * @since Servlet 3.1 + */ + public long getContentLengthLong() { + return this.request.getContentLengthLong(); + } + + + /** + * The default behavior of this method is to return getContentType() + * on the wrapped request object. + */ + public String getContentType() { + return this.request.getContentType(); + } + + + /** + * The default behavior of this method is to return getInputStream() + * on the wrapped request object. + */ + public ServletInputStream getInputStream() throws IOException { + return this.request.getInputStream(); + } + + + /** + * The default behavior of this method is to return + * getParameter(String name) on the wrapped request object. + */ + public String getParameter(String name) { + return this.request.getParameter(name); + } + + + /** + * The default behavior of this method is to return getParameterMap() + * on the wrapped request object. + */ + public Map getParameterMap() { + return this.request.getParameterMap(); + } + + + /** + * The default behavior of this method is to return getParameterNames() + * on the wrapped request object. + */ + public Enumeration getParameterNames() { + return this.request.getParameterNames(); + } + + + /** + * The default behavior of this method is to return + * getParameterValues(String name) on the wrapped request object. + */ + public String[] getParameterValues(String name) { + return this.request.getParameterValues(name); + } + + + /** + * The default behavior of this method is to return getProtocol() + * on the wrapped request object. + */ + public String getProtocol() { + return this.request.getProtocol(); + } + + + /** + * The default behavior of this method is to return getScheme() + * on the wrapped request object. + */ + public String getScheme() { + return this.request.getScheme(); + } + + + /** + * The default behavior of this method is to return getServerName() + * on the wrapped request object. + */ + public String getServerName() { + return this.request.getServerName(); + } + + + /** + * The default behavior of this method is to return getServerPort() + * on the wrapped request object. + */ + public int getServerPort() { + return this.request.getServerPort(); + } + + + /** + * The default behavior of this method is to return getReader() + * on the wrapped request object. + */ + public BufferedReader getReader() throws IOException { + return this.request.getReader(); + } + + + /** + * The default behavior of this method is to return getRemoteAddr() + * on the wrapped request object. + */ + public String getRemoteAddr() { + return this.request.getRemoteAddr(); + } + + + /** + * The default behavior of this method is to return getRemoteHost() + * on the wrapped request object. + */ + public String getRemoteHost() { + return this.request.getRemoteHost(); + } + + + /** + * The default behavior of this method is to return + * setAttribute(String name, Object o) on the wrapped request object. + */ + public void setAttribute(String name, Object o) { + this.request.setAttribute(name, o); + } + + + /** + * The default behavior of this method is to call + * removeAttribute(String name) on the wrapped request object. + */ + public void removeAttribute(String name) { + this.request.removeAttribute(name); + } + + + /** + * The default behavior of this method is to return getLocale() + * on the wrapped request object. + */ + public Locale getLocale() { + return this.request.getLocale(); + } + + + /** + * The default behavior of this method is to return getLocales() + * on the wrapped request object. + */ + public Enumeration getLocales() { + return this.request.getLocales(); + } + + + /** + * The default behavior of this method is to return isSecure() + * on the wrapped request object. + */ + public boolean isSecure() { + return this.request.isSecure(); + } + + + /** + * The default behavior of this method is to return + * getRequestDispatcher(String path) on the wrapped request object. + */ + public RequestDispatcher getRequestDispatcher(String path) { + return this.request.getRequestDispatcher(path); + } + + + /** + * The default behavior of this method is to return + * getRealPath(String path) on the wrapped request object. + * + * @deprecated As of Version 2.1 of the Java Servlet API, + * use {@link ServletContext#getRealPath} instead + */ + public String getRealPath(String path) { + return this.request.getRealPath(path); + } + + + /** + * The default behavior of this method is to return + * getRemotePort() on the wrapped request object. + * + * @since Servlet 2.4 + */ + public int getRemotePort(){ + return this.request.getRemotePort(); + } + + + /** + * The default behavior of this method is to return + * getLocalName() on the wrapped request object. + * + * @since Servlet 2.4 + */ + public String getLocalName(){ + return this.request.getLocalName(); + } + + + /** + * The default behavior of this method is to return + * getLocalAddr() on the wrapped request object. + * + * @since Servlet 2.4 + */ + public String getLocalAddr(){ + return this.request.getLocalAddr(); + } + + + /** + * The default behavior of this method is to return + * getLocalPort() on the wrapped request object. + * + * @since Servlet 2.4 + */ + public int getLocalPort(){ + return this.request.getLocalPort(); + } + + + /** + * Gets the servlet context to which the wrapped servlet request was last + * dispatched. + * + * @return the servlet context to which the wrapped servlet request was + * last dispatched + * + * @since Servlet 3.0 + */ + public ServletContext getServletContext() { + return request.getServletContext(); + } + + + /** + * The default behavior of this method is to invoke + * {@link ServletRequest#startAsync} on the wrapped request object. + * + * @return the (re)initialized AsyncContext + * + * @throws IllegalStateException if the request is within the scope of + * a filter or servlet that does not support asynchronous operations + * (that is, {@link #isAsyncSupported} returns false), + * or if this method is called again without any asynchronous dispatch + * (resulting from one of the {@link AsyncContext#dispatch} methods), + * is called outside the scope of any such dispatch, or is called again + * within the scope of the same dispatch, or if the response has + * already been closed + * + * @see ServletRequest#startAsync + * + * @since Servlet 3.0 + */ + public AsyncContext startAsync() throws IllegalStateException { + return request.startAsync(); + } + + + /** + * The default behavior of this method is to invoke + * {@link ServletRequest#startAsync(ServletRequest, ServletResponse)} + * on the wrapped request object. + * + * @param servletRequest the ServletRequest used to initialize the + * AsyncContext + * @param servletResponse the ServletResponse used to initialize the + * AsyncContext + * + * @return the (re)initialized AsyncContext + * + * @throws IllegalStateException if the request is within the scope of + * a filter or servlet that does not support asynchronous operations + * (that is, {@link #isAsyncSupported} returns false), + * or if this method is called again without any asynchronous dispatch + * (resulting from one of the {@link AsyncContext#dispatch} methods), + * is called outside the scope of any such dispatch, or is called again + * within the scope of the same dispatch, or if the response has + * already been closed + * + * @see ServletRequest#startAsync(ServletRequest, ServletResponse) + * + * @since Servlet 3.0 + */ + public AsyncContext startAsync(ServletRequest servletRequest, + ServletResponse servletResponse) + throws IllegalStateException { + return request.startAsync(servletRequest, servletResponse); + } + + + /** + * Checks if the wrapped request has been put into asynchronous mode. + * + * @return true if this request has been put into asynchronous mode, + * false otherwise + * + * @see ServletRequest#isAsyncStarted + * + * @since Servlet 3.0 + */ + public boolean isAsyncStarted() { + return request.isAsyncStarted(); + } + + + /** + * Checks if the wrapped request supports asynchronous operation. + * + * @return true if this request supports asynchronous operation, false + * otherwise + * + * @see ServletRequest#isAsyncSupported + * + * @since Servlet 3.0 + */ + public boolean isAsyncSupported() { + return request.isAsyncSupported(); + } + + + /** + * Gets the AsyncContext that was created or reinitialized by the + * most recent invocation of {@link #startAsync} or + * {@link #startAsync(ServletRequest,ServletResponse)} on the wrapped + * request. + * + * @return the AsyncContext that was created or reinitialized by the + * most recent invocation of {@link #startAsync} or + * {@link #startAsync(ServletRequest,ServletResponse)} on + * the wrapped request + * + * @throws IllegalStateException if this request has not been put + * into asynchronous mode, i.e., if neither {@link #startAsync} nor + * {@link #startAsync(ServletRequest,ServletResponse)} has been called + * + * @see ServletRequest#getAsyncContext + * + * @since Servlet 3.0 + */ + public AsyncContext getAsyncContext() { + return request.getAsyncContext(); + } + + + /** + * Checks (recursively) if this ServletRequestWrapper wraps the given + * {@link ServletRequest} instance. + * + * @param wrapped the ServletRequest instance to search for + * + * @return true if this ServletRequestWrapper wraps the + * given ServletRequest instance, false otherwise + * + * @since Servlet 3.0 + */ + public boolean isWrapperFor(ServletRequest wrapped) { + if (request == wrapped) { + return true; + } else if (request instanceof ServletRequestWrapper) { + return ((ServletRequestWrapper) request).isWrapperFor(wrapped); + } else { + return false; + } + } + + + /** + * Checks (recursively) if this ServletRequestWrapper wraps a + * {@link ServletRequest} of the given class type. + * + * @param wrappedType the ServletRequest class type to + * search for + * + * @return true if this ServletRequestWrapper wraps a + * ServletRequest of the given class type, false otherwise + * + * @throws IllegalArgumentException if the given class does not + * implement {@link ServletRequest} + * + * @since Servlet 3.0 + */ + public boolean isWrapperFor(Class wrappedType) { + if (!ServletRequest.class.isAssignableFrom(wrappedType)) { + throw new IllegalArgumentException("Given class " + + wrappedType.getName() + " not a subinterface of " + + ServletRequest.class.getName()); + } + if (wrappedType.isAssignableFrom(request.getClass())) { + return true; + } else if (request instanceof ServletRequestWrapper) { + return ((ServletRequestWrapper) request).isWrapperFor(wrappedType); + } else { + return false; + } + } + + + /** + * Gets the dispatcher type of the wrapped request. + * + * @return the dispatcher type of the wrapped request + * + * @see ServletRequest#getDispatcherType + * + * @since Servlet 3.0 + */ + public DispatcherType getDispatcherType() { + return request.getDispatcherType(); + } + + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletResponse.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletResponse.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletResponse.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,457 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Locale; + + +/** + * Defines an object to assist a servlet in sending a response to the client. + * The servlet container creates a ServletResponse object and + * passes it as an argument to the servlet's service method. + * + *

To send binary data in a MIME body response, use + * the {@link ServletOutputStream} returned by {@link #getOutputStream}. + * To send character data, use the PrintWriter object + * returned by {@link #getWriter}. To mix binary and text data, + * for example, to create a multipart response, use a + * ServletOutputStream and manage the character sections + * manually. + * + *

The charset for the MIME body response can be specified + * explicitly using the {@link #setCharacterEncoding} and + * {@link #setContentType} methods, or implicitly + * using the {@link #setLocale} method. + * Explicit specifications take precedence over + * implicit specifications. If no charset is specified, ISO-8859-1 will be + * used. The setCharacterEncoding, + * setContentType, or setLocale method must + * be called before getWriter and before committing + * the response for the character encoding to be used. + * + *

See the Internet RFCs such as + * + * RFC 2045 for more information on MIME. Protocols such as SMTP + * and HTTP define profiles of MIME, and those standards + * are still evolving. + * + * @author Various + * + * @see ServletOutputStream + */ + +public interface ServletResponse { + + /** + * Returns the name of the character encoding (MIME charset) + * used for the body sent in this response. + * The character encoding may have been specified explicitly + * using the {@link #setCharacterEncoding} or + * {@link #setContentType} methods, or implicitly using the + * {@link #setLocale} method. Explicit specifications take + * precedence over implicit specifications. Calls made + * to these methods after getWriter has been + * called or after the response has been committed have no + * effect on the character encoding. If no character encoding + * has been specified, ISO-8859-1 is returned. + *

See RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt) + * for more information about character encoding and MIME. + * + * @return a String specifying the name of + * the character encoding, for example, UTF-8 + */ + public String getCharacterEncoding(); + + /** + * Returns the content type used for the MIME body + * sent in this response. The content type proper must + * have been specified using {@link #setContentType} + * before the response is committed. If no content type + * has been specified, this method returns null. + * If a content type has been specified, and a + * character encoding has been explicitly or implicitly + * specified as described in {@link #getCharacterEncoding} + * or {@link #getWriter} has been called, + * the charset parameter is included in the string returned. + * If no character encoding has been specified, the + * charset parameter is omitted. + * + * @return a String specifying the content type, + * for example, text/html; charset=UTF-8, or null + * + * @since Servlet 2.4 + */ + public String getContentType(); + + + + /** + * Returns a {@link ServletOutputStream} suitable for writing binary + * data in the response. The servlet container does not encode the + * binary data. + * + *

Calling flush() on the ServletOutputStream commits the response. + * + * Either this method or {@link #getWriter} may + * be called to write the body, not both, except when {@link #reset} + * has been called. + * + * @return a {@link ServletOutputStream} for writing binary data + * + * @exception IllegalStateException if the getWriter method + * has been called on this response + * + * @exception IOException if an input or output exception occurred + * + * @see #getWriter + * @see #reset + */ + public ServletOutputStream getOutputStream() throws IOException; + + /** + * Returns a PrintWriter object that + * can send character text to the client. + * The PrintWriter uses the character + * encoding returned by {@link #getCharacterEncoding}. + * If the response's character encoding has not been + * specified as described in getCharacterEncoding + * (i.e., the method just returns the default value + * ISO-8859-1), getWriter + * updates it to ISO-8859-1. + *

Calling flush() on the PrintWriter + * commits the response. + *

Either this method or {@link #getOutputStream} may be called + * to write the body, not both, except when {@link #reset} + * has been called. + * + * @return a PrintWriter object that + * can return character data to the client + * + * @exception java.io.UnsupportedEncodingException + * if the character encoding returned + * by getCharacterEncoding cannot be used + * + * @exception IllegalStateException + * if the getOutputStream + * method has already been called for this response object + * + * @exception IOException + * if an input or output exception occurred + * + * @see #getOutputStream + * @see #setCharacterEncoding + * @see #reset + */ + public PrintWriter getWriter() throws IOException; + + /** + * Sets the character encoding (MIME charset) of the response + * being sent to the client, for example, to UTF-8. + * If the character encoding has already been set by + * {@link #setContentType} or {@link #setLocale}, + * this method overrides it. + * Calling {@link #setContentType} with the String + * of text/html and calling + * this method with the String of UTF-8 + * is equivalent with calling + * setContentType with the String of + * text/html; charset=UTF-8. + *

This method can be called repeatedly to change the character + * encoding. + * This method has no effect if it is called after + * getWriter has been + * called or after the response has been committed. + *

Containers must communicate the character encoding used for + * the servlet response's writer to the client if the protocol + * provides a way for doing so. In the case of HTTP, the character + * encoding is communicated as part of the Content-Type + * header for text media types. Note that the character encoding + * cannot be communicated via HTTP headers if the servlet does not + * specify a content type; however, it is still used to encode text + * written via the servlet response's writer. + * + * @param charset a String specifying only the character set + * defined by IANA Character Sets + * (http://www.iana.org/assignments/character-sets) + * + * @see #setContentType + * @see #setLocale + * + * @since Servlet 2.4 + */ + public void setCharacterEncoding(String charset); + + /** + * Sets the length of the content body in the response + * In HTTP servlets, this method sets the HTTP Content-Length header. + * + * @param len an integer specifying the length of the + * content being returned to the client; sets the Content-Length header + */ + public void setContentLength(int len); + + /** + * Sets the length of the content body in the response + * In HTTP servlets, this method sets the HTTP Content-Length header. + * + * @param len a long specifying the length of the + * content being returned to the client; sets the Content-Length header + * + * @since Servlet 3.1 + */ + public void setContentLengthLong(long len); + + /** + * Sets the content type of the response being sent to + * the client, if the response has not been committed yet. + * The given content type may include a character encoding + * specification, for example, text/html;charset=UTF-8. + * The response's character encoding is only set from the given + * content type if this method is called before getWriter + * is called. + *

This method may be called repeatedly to change content type and + * character encoding. + * This method has no effect if called after the response + * has been committed. It does not set the response's character + * encoding if it is called after getWriter + * has been called or after the response has been committed. + *

Containers must communicate the content type and the character + * encoding used for the servlet response's writer to the client if + * the protocol provides a way for doing so. In the case of HTTP, + * the Content-Type header is used. + * + * @param type a String specifying the MIME + * type of the content + * + * @see #setLocale + * @see #setCharacterEncoding + * @see #getOutputStream + * @see #getWriter + * + */ + + public void setContentType(String type); + + + /** + * Sets the preferred buffer size for the body of the response. + * The servlet container will use a buffer at least as large as + * the size requested. The actual buffer size used can be found + * using getBufferSize. + * + *

A larger buffer allows more content to be written before anything is + * actually sent, thus providing the servlet with more time to set + * appropriate status codes and headers. A smaller buffer decreases + * server memory load and allows the client to start receiving data more + * quickly. + * + *

This method must be called before any response body content is + * written; if content has been written or the response object has + * been committed, this method throws an + * IllegalStateException. + * + * @param size the preferred buffer size + * + * @exception IllegalStateException if this method is called after + * content has been written + * + * @see #getBufferSize + * @see #flushBuffer + * @see #isCommitted + * @see #reset + */ + public void setBufferSize(int size); + + /** + * Returns the actual buffer size used for the response. If no buffering + * is used, this method returns 0. + * + * @return the actual buffer size used + * + * @see #setBufferSize + * @see #flushBuffer + * @see #isCommitted + * @see #reset + */ + public int getBufferSize(); + + /** + * Forces any content in the buffer to be written to the client. A call + * to this method automatically commits the response, meaning the status + * code and headers will be written. + * + * @see #setBufferSize + * @see #getBufferSize + * @see #isCommitted + * @see #reset + * + */ + public void flushBuffer() throws IOException; + + /** + * Clears the content of the underlying buffer in the response without + * clearing headers or status code. If the + * response has been committed, this method throws an + * IllegalStateException. + * + * @see #setBufferSize + * @see #getBufferSize + * @see #isCommitted + * @see #reset + * + * @since Servlet 2.3 + */ + + public void resetBuffer(); + + /** + * Returns a boolean indicating if the response has been + * committed. A committed response has already had its status + * code and headers written. + * + * @return a boolean indicating if the response has been + * committed + * + * @see #setBufferSize + * @see #getBufferSize + * @see #flushBuffer + * @see #reset + * + */ + public boolean isCommitted(); + + /** + * Clears any data that exists in the buffer as well as the status code, + * headers. The state of calling {@link #getWriter} or + * {@link #getOutputStream} is also cleared. It is legal, for instance, + * to call {@link #getWriter}, {@link #reset} and then + * {@link #getOutputStream}. If {@link #getWriter} or + * {@link #getOutputStream} have been called before this method, + * then the corrresponding returned Writer or OutputStream will be + * staled and the behavior of using the stale object is undefined. + * If the response has been committed, this method throws an + * IllegalStateException. + * + * @exception IllegalStateException if the response has already been + * committed + * + * @see #setBufferSize + * @see #getBufferSize + * @see #flushBuffer + * @see #isCommitted + */ + public void reset(); + + /** + * Sets the locale of the response, if the response has not been + * committed yet. It also sets the response's character encoding + * appropriately for the locale, if the character encoding has not + * been explicitly set using {@link #setContentType} or + * {@link #setCharacterEncoding}, getWriter hasn't + * been called yet, and the response hasn't been committed yet. + * If the deployment descriptor contains a + * locale-encoding-mapping-list element, and that + * element provides a mapping for the given locale, that mapping + * is used. Otherwise, the mapping from locale to character + * encoding is container dependent. + *

This method may be called repeatedly to change locale and + * character encoding. The method has no effect if called after the + * response has been committed. It does not set the response's + * character encoding if it is called after {@link #setContentType} + * has been called with a charset specification, after + * {@link #setCharacterEncoding} has been called, after + * getWriter has been called, or after the response + * has been committed. + *

Containers must communicate the locale and the character encoding + * used for the servlet response's writer to the client if the protocol + * provides a way for doing so. In the case of HTTP, the locale is + * communicated via the Content-Language header, + * the character encoding as part of the Content-Type + * header for text media types. Note that the character encoding + * cannot be communicated via HTTP headers if the servlet does not + * specify a content type; however, it is still used to encode text + * written via the servlet response's writer. + * + * @param loc the locale of the response + * + * @see #getLocale + * @see #setContentType + * @see #setCharacterEncoding + */ + public void setLocale(Locale loc); + + /** + * Returns the locale specified for this response + * using the {@link #setLocale} method. Calls made to + * setLocale after the response is committed + * have no effect. If no locale has been specified, + * the container's default locale is returned. + * + * @see #setLocale + */ + public Locale getLocale(); + +} + + + + + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletResponseWrapper.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletResponseWrapper.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletResponseWrapper.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,319 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Locale; + +/** + * + * Provides a convenient implementation of the ServletResponse interface that + * can be subclassed by developers wishing to adapt the response from a Servlet. + * This class implements the Wrapper or Decorator pattern. Methods default to + * calling through to the wrapped response object. + * + * @author Various + * @since Servlet 2.3 + * + * @see javax.servlet.ServletResponse + */ + + +public class ServletResponseWrapper implements ServletResponse { + private ServletResponse response; + /** + * Creates a ServletResponse adaptor wrapping the given response object. + * @throws java.lang.IllegalArgumentException if the response is null. + */ + + + public ServletResponseWrapper(ServletResponse response) { + if (response == null) { + throw new IllegalArgumentException("Response cannot be null"); + } + this.response = response; + } + + /** + * Return the wrapped ServletResponse object. + */ + + public ServletResponse getResponse() { + return this.response; + } + + + /** + * Sets the response being wrapped. + * @throws java.lang.IllegalArgumentException if the response is null. + */ + + public void setResponse(ServletResponse response) { + if (response == null) { + throw new IllegalArgumentException("Response cannot be null"); + } + this.response = response; + } + + /** + * The default behavior of this method is to call setCharacterEncoding(String charset) + * on the wrapped response object. + * + * @since Servlet 2.4 + */ + + public void setCharacterEncoding(String charset) { + this.response.setCharacterEncoding(charset); + } + + /** + * The default behavior of this method is to return getCharacterEncoding() + * on the wrapped response object. + */ + + public String getCharacterEncoding() { + return this.response.getCharacterEncoding(); + } + + + /** + * The default behavior of this method is to return getOutputStream() + * on the wrapped response object. + */ + + public ServletOutputStream getOutputStream() throws IOException { + return this.response.getOutputStream(); + } + + /** + * The default behavior of this method is to return getWriter() + * on the wrapped response object. + */ + + + public PrintWriter getWriter() throws IOException { + return this.response.getWriter(); + } + + /** + * The default behavior of this method is to call setContentLength(int len) + * on the wrapped response object. + */ + + public void setContentLength(int len) { + this.response.setContentLength(len); + } + + /** + * The default behavior of this method is to call setContentLengthLong(long len) + * on the wrapped response object. + */ + + public void setContentLengthLong(long len) { + this.response.setContentLengthLong(len); + } + + /** + * The default behavior of this method is to call setContentType(String type) + * on the wrapped response object. + */ + + public void setContentType(String type) { + this.response.setContentType(type); + } + + /** + * The default behavior of this method is to return getContentType() + * on the wrapped response object. + * + * @since Servlet 2.4 + */ + + public String getContentType() { + return this.response.getContentType(); + } + + /** + * The default behavior of this method is to call setBufferSize(int size) + * on the wrapped response object. + */ + public void setBufferSize(int size) { + this.response.setBufferSize(size); + } + + /** + * The default behavior of this method is to return getBufferSize() + * on the wrapped response object. + */ + public int getBufferSize() { + return this.response.getBufferSize(); + } + + /** + * The default behavior of this method is to call flushBuffer() + * on the wrapped response object. + */ + + public void flushBuffer() throws IOException { + this.response.flushBuffer(); + } + + /** + * The default behavior of this method is to return isCommitted() + * on the wrapped response object. + */ + public boolean isCommitted() { + return this.response.isCommitted(); + } + + /** + * The default behavior of this method is to call reset() + * on the wrapped response object. + */ + + public void reset() { + this.response.reset(); + } + + /** + * The default behavior of this method is to call resetBuffer() + * on the wrapped response object. + */ + + public void resetBuffer() { + this.response.resetBuffer(); + } + + /** + * The default behavior of this method is to call setLocale(Locale loc) + * on the wrapped response object. + */ + + public void setLocale(Locale loc) { + this.response.setLocale(loc); + } + + /** + * The default behavior of this method is to return getLocale() + * on the wrapped response object. + */ + public Locale getLocale() { + return this.response.getLocale(); + } + + + /** + * Checks (recursively) if this ServletResponseWrapper wraps the given + * {@link ServletResponse} instance. + * + * @param wrapped the ServletResponse instance to search for + * + * @return true if this ServletResponseWrapper wraps the + * given ServletResponse instance, false otherwise + * + * @since Servlet 3.0 + */ + public boolean isWrapperFor(ServletResponse wrapped) { + if (response == wrapped) { + return true; + } else if (response instanceof ServletResponseWrapper) { + return ((ServletResponseWrapper) response).isWrapperFor(wrapped); + } else { + return false; + } + } + + + /** + * Checks (recursively) if this ServletResponseWrapper wraps a + * {@link ServletResponse} of the given class type. + * + * @param wrappedType the ServletResponse class type to + * search for + * + * @return true if this ServletResponseWrapper wraps a + * ServletResponse of the given class type, false otherwise + * + * @throws IllegalArgumentException if the given class does not + * implement {@link ServletResponse} + * + * @since Servlet 3.0 + */ + public boolean isWrapperFor(Class wrappedType) { + if (!ServletResponse.class.isAssignableFrom(wrappedType)) { + throw new IllegalArgumentException("Given class " + + wrappedType.getName() + " not a subinterface of " + + ServletResponse.class.getName()); + } + if (wrappedType.isAssignableFrom(response.getClass())) { + return true; + } else if (response instanceof ServletResponseWrapper) { + return ((ServletResponseWrapper) response).isWrapperFor(wrappedType); + } else { + return false; + } + } + +} + + + + + Index: 3rdParty_sources/servlet-api/javax/servlet/ServletSecurityElement.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/ServletSecurityElement.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/ServletSecurityElement.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,202 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +import java.util.*; +import javax.servlet.annotation.HttpMethodConstraint; +import javax.servlet.annotation.ServletSecurity; + +/** + * Java Class represntation of a {@link ServletSecurity} annotation value. + * + * @since Servlet 3.0 + */ +public class ServletSecurityElement extends HttpConstraintElement { + + private Collection methodNames; + private Collection methodConstraints; + + /** + * Constructs an instance using the default + * HttpConstraintElement value as the default Constraint + * element and with no HTTP Method specific constraint elements. + */ + public ServletSecurityElement() { + methodConstraints = new HashSet(); + methodNames = Collections.emptySet(); + } + + /** + * Constructs an instance with a default Constraint element + * and with no HTTP Method specific constraint elements. + * + * @param constraint the HttpConstraintElement to be + * applied to all HTTP methods other than those represented in the + * methodConstraints + */ + public ServletSecurityElement(HttpConstraintElement constraint) { + super(constraint.getEmptyRoleSemantic(), + constraint.getTransportGuarantee(), + constraint.getRolesAllowed()); + methodConstraints = new HashSet(); + methodNames = Collections.emptySet(); + } + + /** + * Constructs an instance using the default + * HttpConstraintElement value as the default Constraint + * element and with a collection of HTTP Method specific constraint + * elements. + * + * @param methodConstraints the collection of HTTP method specific + * constraint elements + * + * @throws IllegalArgumentException if duplicate method names are + * detected + */ + public ServletSecurityElement( + Collection methodConstraints) { + this.methodConstraints = (methodConstraints == null ? + new HashSet() : methodConstraints); + methodNames = checkMethodNames(this.methodConstraints); + } + + /** + * Constructs an instance with a default Constraint element + * and with a collection of HTTP Method specific constraint elements. + * + * @param constraint the HttpConstraintElement to be + * applied to all HTTP methods other than those represented in the + * methodConstraints + * @param methodConstraints the collection of HTTP method specific + * constraint elements. + * + * @throws IllegalArgumentException if duplicate method names are + * detected + */ + public ServletSecurityElement(HttpConstraintElement constraint, + Collection methodConstraints) { + super(constraint.getEmptyRoleSemantic(), + constraint.getTransportGuarantee(), + constraint.getRolesAllowed()); + this.methodConstraints = (methodConstraints == null ? + new HashSet() : methodConstraints); + methodNames = checkMethodNames(this.methodConstraints); + } + + /** + * Constructs an instance from a {@link ServletSecurity} annotation value. + * + * @param annotation the annotation value + * + * @throws IllegalArgumentException if duplicate method names are + * detected + */ + public ServletSecurityElement(ServletSecurity annotation) { + super(annotation.value().value(), + annotation.value().transportGuarantee(), + annotation.value().rolesAllowed()); + this.methodConstraints = new HashSet(); + for (HttpMethodConstraint constraint : + annotation.httpMethodConstraints()) { + this.methodConstraints.add( + new HttpMethodConstraintElement( + constraint.value(), + new HttpConstraintElement(constraint.emptyRoleSemantic(), + constraint.transportGuarantee(), + constraint.rolesAllowed()))); + } + methodNames = checkMethodNames(this.methodConstraints); + } + + /** + * Gets the (possibly empty) collection of HTTP Method specific + * constraint elements. + * + *

If permitted, any changes to the returned Collection must not + * affect this ServletSecurityElement. + * + * + * @return the (possibly empty) collection of HttpMethodConstraintElement + * objects + */ + public Collection getHttpMethodConstraints() { + return Collections.unmodifiableCollection(methodConstraints); + } + + /** + * Gets the set of HTTP method names named by the HttpMethodConstraints. + * + *

If permitted, any changes to the returned Collection must not + * affect this ServletSecurityElement. + * + + * + * @return the collection String method names + */ + public Collection getMethodNames() { + return Collections.unmodifiableCollection(methodNames); + } + + /** + * Checks for duplicate method names in methodConstraints. + * + * @param methodConstraints + * + * @retrun Set of method names + * + * @throws IllegalArgumentException if duplicate method names are + * detected + */ + private Collection checkMethodNames( + Collection methodConstraints) { + Collection methodNames = new HashSet(); + for (HttpMethodConstraintElement methodConstraint : + methodConstraints) { + String methodName = methodConstraint.getMethodName(); + if (!methodNames.add(methodName)) { + throw new IllegalArgumentException( + "Duplicate HTTP method name: " + methodName); + } + } + return methodNames; + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/SessionCookieConfig.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/SessionCookieConfig.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/SessionCookieConfig.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,322 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +/** + * Class that may be used to configure various properties of cookies + * used for session tracking purposes. + * + *

An instance of this class is acquired by a call to + * {@link ServletContext#getSessionCookieConfig}. + * + * @since Servlet 3.0 + */ +public interface SessionCookieConfig { + + /** + * Sets the name that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + *

NOTE: Changing the name of session tracking cookies may break + * other tiers (for example, a load balancing frontend) that assume + * the cookie name to be equal to the default JSESSIONID, + * and therefore should only be done cautiously. + * + * @param name the cookie name to use + * + * @throws IllegalStateException if the ServletContext + * from which this SessionCookieConfig was acquired has + * already been initialized + */ + public void setName(String name); + + + /** + * Gets the name that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + *

By default, JSESSIONID will be used as the cookie name. + * + * @return the cookie name set via {@link #setName}, or + * null if {@link #setName} was never called + * + * @see javax.servlet.http.Cookie#getName() + */ + public String getName(); + + + /** + * Sets the domain name that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + * @param domain the cookie domain to use + * + * @throws IllegalStateException if the ServletContext + * from which this SessionCookieConfig was acquired has + * already been initialized + * + * @see javax.servlet.http.Cookie#setDomain(String) + */ + public void setDomain(String domain); + + + /** + * Gets the domain name that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + * @return the cookie domain set via {@link #setDomain}, or + * null if {@link #setDomain} was never called + * + * @see javax.servlet.http.Cookie#getDomain() + */ + public String getDomain(); + + + /** + * Sets the path that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + * @param path the cookie path to use + * + * @throws IllegalStateException if the ServletContext + * from which this SessionCookieConfig was acquired has + * already been initialized + * + * @see javax.servlet.http.Cookie#setPath(String) + */ + public void setPath(String path); + + + /** + * Gets the path that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + *

By default, the context path of the ServletContext + * from which this SessionCookieConfig was acquired will + * be used. + * + * @return the cookie path set via {@link #setPath}, or null + * if {@link #setPath} was never called + * + * @see javax.servlet.http.Cookie#getPath() + */ + public String getPath(); + + + /** + * Sets the comment that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + *

As a side effect of this call, the session tracking cookies + * will be marked with a Version attribute equal to + * 1. + * + * @param comment the cookie comment to use + * + * @throws IllegalStateException if the ServletContext + * from which this SessionCookieConfig was acquired has + * already been initialized + * + * @see javax.servlet.http.Cookie#setComment(String) + * @see javax.servlet.http.Cookie#getVersion + */ + public void setComment(String comment); + + + /** + * Gets the comment that will be assigned to any session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + * @return the cookie comment set via {@link #setComment}, or + * null if {@link #setComment} was never called + * + * @see javax.servlet.http.Cookie#getComment() + */ + public String getComment(); + + + /** + * Marks or unmarks the session tracking cookies created on behalf + * of the application represented by the ServletContext from + * which this SessionCookieConfig was acquired as + * HttpOnly. + * + *

A cookie is marked as HttpOnly by adding the + * HttpOnly attribute to it. HttpOnly cookies are + * not supposed to be exposed to client-side scripting code, and may + * therefore help mitigate certain kinds of cross-site scripting + * attacks. + * + * @param httpOnly true if the session tracking cookies created + * on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired shall be marked as HttpOnly, false otherwise + * + * @throws IllegalStateException if the ServletContext + * from which this SessionCookieConfig was acquired has + * already been initialized + * + * @see javax.servlet.http.Cookie#setHttpOnly(boolean) + */ + public void setHttpOnly(boolean httpOnly); + + + /** + * Checks if the session tracking cookies created on behalf of the + * application represented by the ServletContext from which + * this SessionCookieConfig was acquired will be marked as + * HttpOnly. + * + * @return true if the session tracking cookies created on behalf of + * the application represented by the ServletContext from + * which this SessionCookieConfig was acquired will be marked + * as HttpOnly, false otherwise + * + * @see javax.servlet.http.Cookie#isHttpOnly() + */ + public boolean isHttpOnly(); + + + /** + * Marks or unmarks the session tracking cookies created on behalf of + * the application represented by the ServletContext from which + * this SessionCookieConfig was acquired as secure. + * + *

One use case for marking a session tracking cookie as + * secure, even though the request that initiated the session + * came over HTTP, is to support a topology where the web container is + * front-ended by an SSL offloading load balancer. + * In this case, the traffic between the client and the load balancer + * will be over HTTPS, whereas the traffic between the load balancer + * and the web container will be over HTTP. + * + * @param secure true if the session tracking cookies created on + * behalf of the application represented by the ServletContext + * from which this SessionCookieConfig was acquired shall be + * marked as secure even if the request that initiated the + * corresponding session is using plain HTTP instead of HTTPS, and false + * if they shall be marked as secure only if the request that + * initiated the corresponding session was also secure + * + * @throws IllegalStateException if the ServletContext + * from which this SessionCookieConfig was acquired has + * already been initialized + * + * @see javax.servlet.http.Cookie#setSecure(boolean) + * @see ServletRequest#isSecure() + */ + public void setSecure(boolean secure); + + + /** + * Checks if the session tracking cookies created on behalf of the + * application represented by the ServletContext from which + * this SessionCookieConfig was acquired will be marked as + * secure even if the request that initiated the corresponding + * session is using plain HTTP instead of HTTPS. + * + * @return true if the session tracking cookies created on behalf of the + * application represented by the ServletContext from which + * this SessionCookieConfig was acquired will be marked as + * secure even if the request that initiated the corresponding + * session is using plain HTTP instead of HTTPS, and false if they will + * be marked as secure only if the request that initiated the + * corresponding session was also secure + * + * @see javax.servlet.http.Cookie#getSecure() + * @see ServletRequest#isSecure() + */ + public boolean isSecure(); + + + /** + * Sets the lifetime (in seconds) for the session tracking cookies + * created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + * @param maxAge the lifetime (in seconds) of the session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + * @throws IllegalStateException if the ServletContext + * from which this SessionCookieConfig was acquired has + * already been initialized + * + * @see javax.servlet.http.Cookie#setMaxAge + */ + public void setMaxAge(int maxAge); + + + /** + * Gets the lifetime (in seconds) of the session tracking cookies + * created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired. + * + *

By default, -1 is returned. + * + * @return the lifetime (in seconds) of the session tracking + * cookies created on behalf of the application represented by the + * ServletContext from which this SessionCookieConfig + * was acquired, or -1 (the default) + * + * @see javax.servlet.http.Cookie#getMaxAge + */ + public int getMaxAge(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/SessionTrackingMode.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/SessionTrackingMode.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/SessionTrackingMode.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,52 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet; + +/** + * Enumeration of session tracking modes. + * + * @since Servlet 3.0 + */ +public enum SessionTrackingMode { + COOKIE, + URL, + SSL +} Index: 3rdParty_sources/servlet-api/javax/servlet/SingleThreadModel.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/SingleThreadModel.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/SingleThreadModel.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,90 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + +/** + * Ensures that servlets handle + * only one request at a time. This interface has no methods. + * + *

If a servlet implements this interface, you are guaranteed + * that no two threads will execute concurrently in the + * servlet's service method. The servlet container + * can make this guarantee by synchronizing access to a single + * instance of the servlet, or by maintaining a pool of servlet + * instances and dispatching each new request to a free servlet. + * + *

Note that SingleThreadModel does not solve all thread safety + * issues. For example, session attributes and static variables can + * still be accessed by multiple requests on multiple threads + * at the same time, even when SingleThreadModel servlets are used. + * It is recommended that a developer take other means to resolve + * those issues instead of implementing this interface, such as + * avoiding the usage of an instance variable or synchronizing + * the block of the code accessing those resources. + * This interface is deprecated in Servlet API version 2.4. + * + * + * @author Various + * + * @deprecated As of Java Servlet API 2.4, with no direct + * replacement. + */ + +public interface SingleThreadModel { +} Index: 3rdParty_sources/servlet-api/javax/servlet/UnavailableException.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/UnavailableException.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/UnavailableException.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,246 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet; + + +/** + * Defines an exception that a servlet or filter throws to indicate + * that it is permanently or temporarily unavailable. + * + *

When a servlet or filter is permanently unavailable, something is wrong + * with it, and it cannot handle + * requests until some action is taken. For example, a servlet + * might be configured incorrectly, or a filter's state may be corrupted. + * The component should log both the error and the corrective action + * that is needed. + * + *

A servlet or filter is temporarily unavailable if it cannot handle + * requests momentarily due to some system-wide problem. For example, + * a third-tier server might not be accessible, or there may be + * insufficient memory or disk storage to handle requests. A system + * administrator may need to take corrective action. + * + *

Servlet containers can safely treat both types of unavailable + * exceptions in the same way. However, treating temporary unavailability + * effectively makes the servlet container more robust. Specifically, + * the servlet container might block requests to the servlet or filter for a period + * of time suggested by the exception, rather than rejecting them until + * the servlet container restarts. + * + * + * @author Various + * + */ + +public class UnavailableException +extends ServletException { + + private Servlet servlet; // what's unavailable + private boolean permanent; // needs admin action? + private int seconds; // unavailability estimate + + /** + * + * @deprecated As of Java Servlet API 2.2, use {@link + * #UnavailableException(String)} instead. + * + * @param servlet the Servlet instance that is + * unavailable + * + * @param msg a String specifying the + * descriptive message + * + */ + + public UnavailableException(Servlet servlet, String msg) { + super(msg); + this.servlet = servlet; + permanent = true; + } + + /** + * @deprecated As of Java Servlet API 2.2, use {@link + * #UnavailableException(String, int)} instead. + * + * @param seconds an integer specifying the number of seconds + * the servlet expects to be unavailable; if + * zero or negative, indicates that the servlet + * can't make an estimate + * + * @param servlet the Servlet that is unavailable + * + * @param msg a String specifying the descriptive + * message, which can be written to a log file or + * displayed for the user. + * + */ + + public UnavailableException(int seconds, Servlet servlet, String msg) { + super(msg); + this.servlet = servlet; + if (seconds <= 0) + this.seconds = -1; + else + this.seconds = seconds; + permanent = false; + } + + /** + * + * Constructs a new exception with a descriptive + * message indicating that the servlet is permanently + * unavailable. + * + * @param msg a String specifying the + * descriptive message + * + */ + + public UnavailableException(String msg) { + super(msg); + + permanent = true; + } + + /** + * Constructs a new exception with a descriptive message + * indicating that the servlet is temporarily unavailable + * and giving an estimate of how long it will be unavailable. + * + *

In some cases, the servlet cannot make an estimate. For + * example, the servlet might know that a server it needs is + * not running, but not be able to report how long it will take + * to be restored to functionality. This can be indicated with + * a negative or zero value for the seconds argument. + * + * @param msg a String specifying the + * descriptive message, which can be written + * to a log file or displayed for the user. + * + * @param seconds an integer specifying the number of seconds + * the servlet expects to be unavailable; if + * zero or negative, indicates that the servlet + * can't make an estimate + * + */ + + public UnavailableException(String msg, int seconds) { + super(msg); + + if (seconds <= 0) + this.seconds = -1; + else + this.seconds = seconds; + + permanent = false; + } + + /** + * + * Returns a boolean indicating + * whether the servlet is permanently unavailable. + * If so, something is wrong with the servlet, and the + * system administrator must take some corrective action. + * + * @return true if the servlet is + * permanently unavailable; false + * if the servlet is available or temporarily + * unavailable + * + */ + + public boolean isPermanent() { + return permanent; + } + + /** + * @deprecated As of Java Servlet API 2.2, with no replacement. + * + * Returns the servlet that is reporting its unavailability. + * + * @return the Servlet object that is + * throwing the UnavailableException + * + */ + + public Servlet getServlet() { + return servlet; + } + + /** + * Returns the number of seconds the servlet expects to + * be temporarily unavailable. + * + *

If this method returns a negative number, the servlet + * is permanently unavailable or cannot provide an estimate of + * how long it will be unavailable. No effort is + * made to correct for the time elapsed since the exception was + * first reported. + * + * @return an integer specifying the number of seconds + * the servlet will be temporarily unavailable, + * or a negative number if the servlet is permanently + * unavailable or cannot make an estimate + * + */ + + public int getUnavailableSeconds() { + return permanent ? -1 : seconds; + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/WriteListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/WriteListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/WriteListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,72 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2011-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + + +package javax.servlet; + +import java.io.IOException; +import java.util.EventListener; + +/** + * + * Callback notification mechanism that signals to the developer it's possible + * to write content without blocking. + * + * @since Servlet 3.1 + */ +public interface WriteListener extends EventListener { + + /** + * When an instance of the WriteListener is registered with a {@link ServletOutputStream}, + * this method will be invoked by the container the first time when it is possible + * to write data. Subsequently the container will invoke this method if and only + * if {@link javax.servlet.ServletOutputStream#isReady()} method + * has been called and has returned false. + * + * @throws IOException if an I/O related error has occurred during processing + */ + public void onWritePossible() throws IOException; + + /** + * Invoked when an error occurs writing data using the non-blocking APIs. + */ + public void onError(final Throwable t); + +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/HandlesTypes.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/HandlesTypes.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/HandlesTypes.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,74 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.Target; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * This annotation is used to declare the class types that a + * {@link javax.servlet.ServletContainerInitializer + * ServletContainerInitializer} can handle. + * + * @see javax.servlet.ServletContainerInitializer + * + * @since Servlet 3.0 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface HandlesTypes { + + /** + * The classes in which a {@link javax.servlet.ServletContainerInitializer + * ServletContainerInitializer} has expressed interest. + * + *

If an implementation of ServletContainerInitializer + * specifies this annotation, the Servlet container must pass the + * Set of application classes that extend, implement, or have + * been annotated with the class types listed by this annotation to + * the {@link javax.servlet.ServletContainerInitializer#onStartup} + * method of the ServletContainerInitializer (if no matching classes + * are found, null must be passed instead) + */ + Class[] value(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/HttpConstraint.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/HttpConstraint.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/HttpConstraint.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,113 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic; +import javax.servlet.annotation.ServletSecurity.TransportGuarantee; + +/** + * This annotation is used within the {@link ServletSecurity} annotation to + * represent the security constraints to be applied to all HTTP protocol + * methods for which a corresponding {@link HttpMethodConstraint} element does + * NOT occur within the {@link ServletSecurity} annotation. + * + *

For the special case where an @HttpConstraint that returns + * all default values occurs in combination with at least one + * {@link HttpMethodConstraint} that returns other than all default values, the + * @HttpConstraint represents that no security constraint is to be + * applied to any of the HTTP protocol methods to which a security constraint + * would otherwise apply. This exception is made to ensure that such + * potentially non-specific uses of @HttpConstraint do not yield + * constraints that will explicitly establish unprotected access for such + * methods; given that they would not otherwise be covered by a constraint. + * + * @since Servlet 3.0 + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface HttpConstraint { + + /** + * The default authorization semantic. + * This value is insignificant when rolesAllowed returns a + * non-empty array, and should not be specified when a non-empty + * array is specified for rolesAllowed. + * + * @return the {@link EmptyRoleSemantic} to be applied when + * rolesAllowed returns an empty (that is, zero-length) array. + */ + EmptyRoleSemantic value() default EmptyRoleSemantic.PERMIT; + + /** + * The data protection requirements (i.e., whether or not SSL/TLS is + * required) that must be satisfied by the connections on which requests + * arrive. + * + * @return the {@link TransportGuarantee} + * indicating the data protection that must be provided by the connection. + */ + TransportGuarantee transportGuarantee() default TransportGuarantee.NONE; + + /** + * The names of the authorized roles. + * + * Duplicate role names appearing in rolesAllowed are insignificant and + * may be discarded during runtime processing of the annotation. The String + * "*" has no special meaning as a role name (should it occur in + * rolesAllowed). + * + * @return an array of zero or more role names. When the array contains + * zero elements, its meaning depends on the EmptyRoleSemantic + * returned by the value method. If value returns + * DENY, and rolesAllowed returns a zero length array, + * access is to be denied independent of authentication state and identity. + * Conversely, if value returns PERMIT, it + * indicates that access is to be allowed independent of authentication + * state and identity. When the array contains the names of one or more + * roles, it indicates that access is contingent on membership in at + * least one of the named roles (independent of the + * EmptyRoleSemantic returned by the value method). + */ + String[] rolesAllowed() default {}; +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/HttpMethodConstraint.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/HttpMethodConstraint.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/HttpMethodConstraint.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,110 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic; +import javax.servlet.annotation.ServletSecurity.TransportGuarantee; + +/** + * This annotation is used within the {@link ServletSecurity} annotation to + * represent security constraints on specific HTTP protocol messages. + * + * @since Servlet 3.0 + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface HttpMethodConstraint { + + /** + * Http protocol method name + * + * @return the name of an HTTP protocol method. value + * may not be null, or the empty string, and must be a + * legitimate HTTP Method name as defined by RFC 2616. + */ + String value(); + + /** + * The default authorization semantic. + * This value is insignificant when rolesAllowed returns a + * non-empty array, and should not be specified when a non-empty + * array is specified for rolesAllowed. + * + * @return the {@link EmptyRoleSemantic} to be applied when + * rolesAllowed returns an empty (that is, zero-length) array. + */ + EmptyRoleSemantic emptyRoleSemantic() default EmptyRoleSemantic.PERMIT; + + /** + * The data protection requirements (i.e., whether or not SSL/TLS is + * required) that must be satisfied by the connections on which requests + * arrive. + * + * @return the {@link TransportGuarantee} + * indicating the data protection that must be provided by the connection. + */ + TransportGuarantee transportGuarantee() default TransportGuarantee.NONE; + + /** + * The names of the authorized roles. + * + * Duplicate role names appearing in rolesAllowed are insignificant and + * may be discarded during runtime processing of the annotation. The String + * "*" has no special meaning as a role name (should it occur in + * rolesAllowed). + * + * @return an array of zero or more role names. When the array contains + * zero elements, its meaning depends on the value returned by + * emptyRoleSemantic. If emptyRoleSemantic returns + * DENY, and rolesAllowed returns a zero length array, + * access is to be denied independent of authentication state and identity. + * Conversely, if emptyRoleSemantic returns + * PERMIT, it indicates that access is to be allowed + * independent of authentication state and identity. When the array + * contains the names of one or more roles, it indicates that access is + * contingent on membership in at least one of the named roles (independent + * of the value returned by emptyRoleSemantic). + */ + String[] rolesAllowed() default {}; +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/MultipartConfig.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/MultipartConfig.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/MultipartConfig.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,88 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.Target; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Annotation that may be specified on a {@link javax.servlet.Servlet} + * class, indicating that instances of the Servlet expect requests + * that conform to the multipart/form-data MIME type. + * + *

Servlets annotated with MultipartConfig may retrieve the + * {@link javax.servlet.http.Part} components of a given + * multipart/form-data request by calling + * {@link javax.servlet.http.HttpServletRequest#getPart getPart} or + * {@link javax.servlet.http.HttpServletRequest#getParts getParts}. + */ + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MultipartConfig { + + /** + * The directory location where files will be stored + */ + String location() default ""; + + /** + * The maximum size allowed for uploaded files. + * + *

The default is -1L, which means unlimited. + */ + long maxFileSize() default -1L; + + /** + * The maximum size allowed for multipart/form-data + * requests + * + *

The default is -1L, which means unlimited. + */ + long maxRequestSize() default -1L; + + /** + * The size threshold after which the file will be written to disk + */ + int fileSizeThreshold() default 0; +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/ServletSecurity.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/ServletSecurity.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/ServletSecurity.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,121 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Target; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * This annotation is used on a Servlet implementation class to specify security + * constraints to be enforced by a Servlet container on HTTP protocol messages. + * The Servlet container will enforce these constraints on the url-patterns + * mapped to the servlets mapped to the annotated class. + * + * @since Servlet 3.0 + */ + +@Inherited +@Documented +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface ServletSecurity { + + /** + * Defines the access semantic to be applied to an empty rolesAllowed array. + */ + enum EmptyRoleSemantic { + /** + * access is to be permitted independent of authentication state and + * identity. + */ + PERMIT, + /** + * access is to be denied independent of authentication state and + * identity. + */ + DENY + } + + /** + * Defines the data protection requirements that must be satisfied by + * the transport + */ + enum TransportGuarantee { + /** + * no protection of user data must be performed by the transport. + */ + NONE, + /** + * All user data must be encrypted by the transport (typically + * using SSL/TLS). + */ + CONFIDENTIAL + } + + /** + * Get the {@link HttpConstraint} that defines the protection + * that is to be applied to all HTTP methods that are NOT represented in + * the array returned by httpMethodConstraints. + * + * @return a HttpConstraint object. + */ + HttpConstraint value() default @HttpConstraint; + + /** + * Get the HTTP method specific constraints. Each + * {@link HttpMethodConstraint} names an HTTP protocol method + * and defines the protection to be applied to it. + * + * @return an array of {@link HttpMethodConstraint} elements each + * defining the protection to be applied to one HTTP protocol method. For + * any HTTP method name, there must be at most one corresponding element in + * the returned array. If the returned array is of zero length, it indicates + * that no HTTP method specific constraints are defined. + */ + + + HttpMethodConstraint[] httpMethodConstraints() default {}; +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/WebFilter.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/WebFilter.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/WebFilter.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,125 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.servlet.DispatcherType; + +/** + * Annotation used to declare a servlet filter. + * + *

This annotation is processed by the container at deployment time, + * and the corresponding filter applied to the specified URL patterns, + * servlets, and dispatcher types. + * + * @see javax.servlet.Filter + * + * @since Servlet 3.0 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface WebFilter { + + /** + * The description of the filter + */ + String description() default ""; + + /** + * The display name of the filter + */ + String displayName() default ""; + + /** + * The init parameters of the filter + */ + WebInitParam[] initParams() default {}; + + /** + * The name of the filter + */ + String filterName() default ""; + + /** + * The small-icon of the filter + */ + String smallIcon() default ""; + + /** + * The large-icon of the filter + */ + String largeIcon() default ""; + + /** + * The names of the servlets to which the filter applies. + */ + String[] servletNames() default {}; + + /** + * The URL patterns to which the filter applies + */ + String[] value() default {}; + + /** + * The URL patterns to which the filter applies + */ + String[] urlPatterns() default {}; + + /** + * The dispatcher types to which the filter applies + */ + DispatcherType[] dispatcherTypes() default {DispatcherType.REQUEST}; + + /** + * Declares whether the filter supports asynchronous operation mode. + * + * @see javax.servlet.ServletRequest#startAsync + * @see javax.servlet.ServletRequest#startAsync(ServletRequest, + * ServletResponse) + */ + boolean asyncSupported() default false; + +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/WebInitParam.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/WebInitParam.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/WebInitParam.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,74 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.annotation.Documented; + +/** + * This annotation is used on a Servlet or Filter implementation class + * to specify an initialization parameter. + * + * @since Servlet 3.0 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface WebInitParam { + + /** + * Name of the initialization parameter + */ + String name(); + + /** + * Value of the initialization parameter + */ + String value(); + + /** + * Description of the initialization parameter + */ + String description() default ""; +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/WebListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/WebListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/WebListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,71 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * This annotation is used to declare a WebListener. + * + * Any class annotated with WebListener must implement one or more of + * the {@link javax.servlet.ServletContextListener}, + * {@link javax.servlet.ServletContextAttributeListener}, + * {@link javax.servlet.ServletRequestListener}, + * {@link javax.servlet.ServletRequestAttributeListener}, + * {@link javax.servlet.http.HttpSessionListener}, or + * {@link javax.servlet.http.HttpSessionAttributeListener}, or + * {@link javax.servlet.http.HttpSessionIdListener} interfaces. + * + * @since Servlet 3.0 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface WebListener { + /** + * Description of the listener + */ + String value() default ""; +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/WebServlet.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/WebServlet.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/WebServlet.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,119 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Retention; +import java.lang.annotation.Documented; + +/** + * Annotation used to declare a servlet. + * + *

This annotation is processed by the container at deployment time, + * and the corresponding servlet made available at the specified URL + * patterns. + * + * @see javax.servlet.Servlet + * + * @since Servlet 3.0 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface WebServlet { + + /** + * The name of the servlet + */ + String name() default ""; + + /** + * The URL patterns of the servlet + */ + String[] value() default {}; + + /** + * The URL patterns of the servlet + */ + String[] urlPatterns() default {}; + + /** + * The load-on-startup order of the servlet + */ + int loadOnStartup() default -1; + + /** + * The init parameters of the servlet + */ + WebInitParam [] initParams() default {}; + + /** + * Declares whether the servlet supports asynchronous operation mode. + * + * @see javax.servlet.ServletRequest#startAsync + * @see javax.servlet.ServletRequest#startAsync(ServletRequest, + * ServletResponse) + */ + boolean asyncSupported() default false; + + /** + * The small-icon of the servlet + */ + String smallIcon() default ""; + + /** + * The large-icon of the servlet + */ + String largeIcon() default ""; + + /** + * The description of the servlet + */ + String description() default ""; + + /** + * The display name of the servlet + */ + String displayName() default ""; + +} Index: 3rdParty_sources/servlet-api/javax/servlet/annotation/package.html =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/annotation/package.html (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/annotation/package.html (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,57 @@ + + + + + + + + + + +The javax.servlet.annotation package contains a number of annotations +that allow users to use annotations to declare servlets, filters, +listeners and specify the metadata for the declared component. + +@since Servlet 3.0 + + Index: 3rdParty_sources/servlet-api/javax/servlet/descriptor/JspConfigDescriptor.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/descriptor/JspConfigDescriptor.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/descriptor/JspConfigDescriptor.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,85 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.descriptor; + +import java.util.Collection; + +/** + * This interface provides access to the <jsp-config> + * related configuration of a web application. + * + *

The configuration is aggregated from the web.xml and + * web-fragment.xml descriptor files of the web application. + * + * @since Servlet 3.0 + */ +public interface JspConfigDescriptor { + + /** + * Gets the <taglib> child elements of the + * <jsp-config> element represented by this + * JspConfigDescriptor. + * + *

Any changes to the returned Collection must not + * affect this JspConfigDescriptor. + * + * @return a (possibly empty) Collection of the + * <taglib<>/code> child elements of the + * <jsp-config> element represented by this + * JspConfigDescriptor + */ + public Collection getTaglibs(); + + /** + * Gets the <jsp-property-group> child elements + * of the <jsp-config> element represented by this + * JspConfigDescriptor. + * + *

Any changes to the returned Collection must not + * affect this JspConfigDescriptor. + * + * @return a (possibly empty) Collection of the + * <jsp-property-group> child elements of the + * <jsp-config> element represented by this + * JspConfigDescriptor + */ + public Collection getJspPropertyGroups(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/descriptor/JspPropertyGroupDescriptor.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/descriptor/JspPropertyGroupDescriptor.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/descriptor/JspPropertyGroupDescriptor.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,204 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.descriptor; + +import java.util.Collection; + +/** + * This interface provides access to the + * <jsp-property-group> + * related configuration of a web application. + * + *

The configuration is aggregated from the web.xml and + * web-fragment.xml descriptor files of the web application. + * + * @since Servlet 3.0 + */ +public interface JspPropertyGroupDescriptor { + + /** + * Gets the URL patterns of the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + *

Any changes to the returned Collection must not + * affect this JspPropertyGroupDescriptor. + * + * @return a (possibly empty) Collection of the URL + * patterns of the JSP property group represented by this + * JspPropertyGroupDescriptor + */ + public Collection getUrlPatterns(); + + /** + * Gets the value of the el-ignored configuration, which + * specifies whether Expression Language (EL) evaluation is enabled for + * any JSP pages mapped to the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + * @return the value of the el-ignored configuration, or + * null if unspecified + */ + public String getElIgnored(); + + /** + * Gets the value of the page-encoding configuration, + * which specifies the default page encoding for any JSP pages mapped + * to the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + * @return the value of the page-encoding configuration, or + * null if unspecified + */ + public String getPageEncoding(); + + /** + * Gets the value of the scripting-invalid configuration, + * which specifies whether scripting is enabled for any JSP pages mapped + * to the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + * @return the value of the scripting-invalid configuration, + * or null if unspecified + */ + public String getScriptingInvalid(); + + /** + * Gets the value of the is-xml configuration, which + * specifies whether any JSP pages mapped to the JSP property group + * represented by this JspPropertyGroupDescriptor will + * be treated as JSP documents (XML syntax). + * + * @return the value of the is-xml configuration, or + * null if unspecified + */ + public String getIsXml(); + + /** + * Gets the include-prelude configuration + * of the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + *

Any changes to the returned Collection must not + * affect this JspPropertyGroupDescriptor. + * + * @return a (possibly empty) Collection of the + * include-prelude configuration of + * the JSP property group represented by this + * JspPropertyGroupDescriptor + */ + public Collection getIncludePreludes(); + + /** + * Gets the include-coda configuration + * of the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + *

Any changes to the returned Collection must not + * affect this JspPropertyGroupDescriptor. + * + * @return a (possibly empty) Collection of the + * include-coda configuration of + * the JSP property group represented by this + * JspPropertyGroupDescriptor + */ + public Collection getIncludeCodas(); + + /** + * Gets the value of the + * deferred-syntax-allowed-as-literal configuration, which + * specifies whether the character sequence "#{", + * which is normally reserved for Expression Language (EL) expressions, + * will cause a translation error if it appears as a String literal + * in any JSP pages mapped to the JSP property group represented by + * this JspPropertyGroupDescriptor. + * + * @return the value of the + * deferred-syntax-allowed-as-literal configuration, or + * null if unspecified + */ + public String getDeferredSyntaxAllowedAsLiteral(); + + /** + * Gets the value of the trim-directive-whitespaces + * configuration, which specifies whether template text containing only + * whitespaces must be removed from the response output of any JSP + * pages mapped to the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + * @return the value of the trim-directive-whitespaces + * configuration, or null if unspecified + */ + public String getTrimDirectiveWhitespaces(); + + /** + * Gets the value of the default-content-type configuration, + * which specifies the default response content type for any JSP pages + * mapped to the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + * @return the value of the default-content-type + * configuration, or null if unspecified + */ + public String getDefaultContentType(); + + /** + * Gets the value of the buffer configuration, which + * specifies the default size of the response buffer for any JSP pages + * mapped to the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + * @return the value of the buffer configuration, or + * null if unspecified + */ + public String getBuffer(); + + /** + * Gets the value of the error-on-undeclared-namespace + * configuration, which specifies whether an error will be raised at + * translation time if tag with an undeclared namespace is used in + * any JSP pages mapped to the JSP property group represented by this + * JspPropertyGroupDescriptor. + * + * @return the value of the error-on-undeclared-namespace + * configuration, or null if unspecified + */ + public String getErrorOnUndeclaredNamespace(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/descriptor/TaglibDescriptor.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/descriptor/TaglibDescriptor.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/descriptor/TaglibDescriptor.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,71 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.descriptor; + +/** + * This interface provides access to the <taglib> + * related configuration of a web application. + * + *

The configuration is aggregated from the web.xml and + * web-fragment.xml descriptor files of the web application. + * + * @since Servlet 3.0 + */ +public interface TaglibDescriptor { + + /** + * Gets the unique identifier of the tag library represented by this + * TaglibDescriptor. + * + * @return the unique identifier of the tag library represented by this + * TaglibDescriptor + */ + public String getTaglibURI(); + + /** + * Gets the location of the tag library represented by this + * TaglibDescriptor. + * + * @return the location of the tag library represented by this + * TaglibDescriptor + */ + public String getTaglibLocation(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/descriptor/package.html =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/descriptor/package.html (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/descriptor/package.html (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,53 @@ + + + + + + + + +Provides programmatic access to a web application's configuration information that was aggregated from the web.xml and web-fragment.xml descriptors. + +@since Servlet 3.0 + + Index: 3rdParty_sources/servlet-api/javax/servlet/http/Cookie.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/Cookie.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/Cookie.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,506 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.io.Serializable; +import java.text.MessageFormat; +import java.util.Locale; +import java.util.ResourceBundle; + +/** + * + * Creates a cookie, a small amount of information sent by a servlet to + * a Web browser, saved by the browser, and later sent back to the server. + * A cookie's value can uniquely + * identify a client, so cookies are commonly used for session management. + * + *

A cookie has a name, a single value, and optional attributes + * such as a comment, path and domain qualifiers, a maximum age, and a + * version number. Some Web browsers have bugs in how they handle the + * optional attributes, so use them sparingly to improve the interoperability + * of your servlets. + * + *

The servlet sends cookies to the browser by using the + * {@link HttpServletResponse#addCookie} method, which adds + * fields to HTTP response headers to send cookies to the + * browser, one at a time. The browser is expected to + * support 20 cookies for each Web server, 300 cookies total, and + * may limit cookie size to 4 KB each. + * + *

The browser returns cookies to the servlet by adding + * fields to HTTP request headers. Cookies can be retrieved + * from a request by using the {@link HttpServletRequest#getCookies} method. + * Several cookies might have the same name but different path attributes. + * + *

Cookies affect the caching of the Web pages that use them. + * HTTP 1.0 does not cache pages that use cookies created with + * this class. This class does not support the cache control + * defined with HTTP 1.1. + * + *

This class supports both the Version 0 (by Netscape) and Version 1 + * (by RFC 2109) cookie specifications. By default, cookies are + * created using Version 0 to ensure the best interoperability. + * + * @author Various + */ +public class Cookie implements Cloneable, Serializable { + + private static final long serialVersionUID = -6454587001725327448L; + + private static final String TSPECIALS; + + private static final String LSTRING_FILE = + "javax.servlet.http.LocalStrings"; + + private static ResourceBundle lStrings = + ResourceBundle.getBundle(LSTRING_FILE); + + static { + if (Boolean.valueOf(System.getProperty("org.glassfish.web.rfc2109_cookie_names_enforced", "true"))) { + TSPECIALS = "/()<>@,;:\\\"[]?={} \t"; + } else { + TSPECIALS = ",; "; + } + } + + // + // The value of the cookie itself. + // + + private String name; // NAME= ... "$Name" style is reserved + private String value; // value of NAME + + // + // Attributes encoded in the header's cookie fields. + // + + private String comment; // ;Comment=VALUE ... describes cookie's use + // ;Discard ... implied by maxAge < 0 + private String domain; // ;Domain=VALUE ... domain that sees cookie + private int maxAge = -1; // ;Max-Age=VALUE ... cookies auto-expire + private String path; // ;Path=VALUE ... URLs that see the cookie + private boolean secure; // ;Secure ... e.g. use SSL + private int version = 0; // ;Version=1 ... means RFC 2109++ style + private boolean isHttpOnly = false; + + /** + * Constructs a cookie with the specified name and value. + * + *

The name must conform to RFC 2109. However, vendors may + * provide a configuration option that allows cookie names conforming + * to the original Netscape Cookie Specification to be accepted. + * + *

The name of a cookie cannot be changed once the cookie has + * been created. + * + *

The value can be anything the server chooses to send. Its + * value is probably of interest only to the server. The cookie's + * value can be changed after creation with the + * setValue method. + * + *

By default, cookies are created according to the Netscape + * cookie specification. The version can be changed with the + * setVersion method. + * + * @param name the name of the cookie + * + * @param value the value of the cookie + * + * @throws IllegalArgumentException if the cookie name is null or + * empty or contains any illegal characters (for example, a comma, + * space, or semicolon) or matches a token reserved for use by the + * cookie protocol + * + * @see #setValue + * @see #setVersion + */ + public Cookie(String name, String value) { + if (name == null || name.length() == 0) { + throw new IllegalArgumentException( + lStrings.getString("err.cookie_name_blank")); + } + if (!isToken(name) || + name.equalsIgnoreCase("Comment") || // rfc2019 + name.equalsIgnoreCase("Discard") || // 2019++ + name.equalsIgnoreCase("Domain") || + name.equalsIgnoreCase("Expires") || // (old cookies) + name.equalsIgnoreCase("Max-Age") || // rfc2019 + name.equalsIgnoreCase("Path") || + name.equalsIgnoreCase("Secure") || + name.equalsIgnoreCase("Version") || + name.startsWith("$")) { + String errMsg = lStrings.getString("err.cookie_name_is_token"); + Object[] errArgs = new Object[1]; + errArgs[0] = name; + errMsg = MessageFormat.format(errMsg, errArgs); + throw new IllegalArgumentException(errMsg); + } + + this.name = name; + this.value = value; + } + + /** + * Specifies a comment that describes a cookie's purpose. + * The comment is useful if the browser presents the cookie + * to the user. Comments + * are not supported by Netscape Version 0 cookies. + * + * @param purpose a String specifying the comment + * to display to the user + * + * @see #getComment + */ + public void setComment(String purpose) { + comment = purpose; + } + + /** + * Returns the comment describing the purpose of this cookie, or + * null if the cookie has no comment. + * + * @return the comment of the cookie, or null if unspecified + * + * @see #setComment + */ + public String getComment() { + return comment; + } + + /** + * + * Specifies the domain within which this cookie should be presented. + * + *

The form of the domain name is specified by RFC 2109. A domain + * name begins with a dot (.foo.com) and means that + * the cookie is visible to servers in a specified Domain Name System + * (DNS) zone (for example, www.foo.com, but not + * a.b.foo.com). By default, cookies are only returned + * to the server that sent them. + * + * @param domain the domain name within which this cookie is visible; + * form is according to RFC 2109 + * + * @see #getDomain + */ + public void setDomain(String domain) { + this.domain = domain.toLowerCase(Locale.ENGLISH); // IE allegedly needs this + } + + /** + * Gets the domain name of this Cookie. + * + *

Domain names are formatted according to RFC 2109. + * + * @return the domain name of this Cookie + * + * @see #setDomain + */ + public String getDomain() { + return domain; + } + + /** + * Sets the maximum age in seconds for this Cookie. + * + *

A positive value indicates that the cookie will expire + * after that many seconds have passed. Note that the value is + * the maximum age when the cookie will expire, not the cookie's + * current age. + * + *

A negative value means + * that the cookie is not stored persistently and will be deleted + * when the Web browser exits. A zero value causes the cookie + * to be deleted. + * + * @param expiry an integer specifying the maximum age of the + * cookie in seconds; if negative, means + * the cookie is not stored; if zero, deletes + * the cookie + * + * @see #getMaxAge + */ + public void setMaxAge(int expiry) { + maxAge = expiry; + } + + /** + * Gets the maximum age in seconds of this Cookie. + * + *

By default, -1 is returned, which indicates that + * the cookie will persist until browser shutdown. + * + * @return an integer specifying the maximum age of the + * cookie in seconds; if negative, means + * the cookie persists until browser shutdown + * + * @see #setMaxAge + */ + public int getMaxAge() { + return maxAge; + } + + /** + * Specifies a path for the cookie + * to which the client should return the cookie. + * + *

The cookie is visible to all the pages in the directory + * you specify, and all the pages in that directory's subdirectories. + * A cookie's path must include the servlet that set the cookie, + * for example, /catalog, which makes the cookie + * visible to all directories on the server under /catalog. + * + *

Consult RFC 2109 (available on the Internet) for more + * information on setting path names for cookies. + * + * + * @param uri a String specifying a path + * + * @see #getPath + */ + public void setPath(String uri) { + path = uri; + } + + /** + * Returns the path on the server + * to which the browser returns this cookie. The + * cookie is visible to all subpaths on the server. + * + * @return a String specifying a path that contains + * a servlet name, for example, /catalog + * + * @see #setPath + */ + public String getPath() { + return path; + } + + /** + * Indicates to the browser whether the cookie should only be sent + * using a secure protocol, such as HTTPS or SSL. + * + *

The default value is false. + * + * @param flag if true, sends the cookie from the browser + * to the server only when using a secure protocol; if false, + * sent on any protocol + * + * @see #getSecure + */ + public void setSecure(boolean flag) { + secure = flag; + } + + /** + * Returns true if the browser is sending cookies + * only over a secure protocol, or false if the + * browser can send cookies using any protocol. + * + * @return true if the browser uses a secure protocol, + * false otherwise + * + * @see #setSecure + */ + public boolean getSecure() { + return secure; + } + + /** + * Returns the name of the cookie. The name cannot be changed after + * creation. + * + * @return the name of the cookie + */ + public String getName() { + return name; + } + + /** + * Assigns a new value to this Cookie. + * + *

If you use a binary value, you may want to use BASE64 encoding. + * + *

With Version 0 cookies, values should not contain white + * space, brackets, parentheses, equals signs, commas, + * double quotes, slashes, question marks, at signs, colons, + * and semicolons. Empty values may not behave the same way + * on all browsers. + * + * @param newValue the new value of the cookie + * + * @see #getValue + */ + public void setValue(String newValue) { + value = newValue; + } + + /** + * Gets the current value of this Cookie. + * + * @return the current value of this Cookie + * + * @see #setValue + */ + public String getValue() { + return value; + } + + /** + * Returns the version of the protocol this cookie complies + * with. Version 1 complies with RFC 2109, + * and version 0 complies with the original + * cookie specification drafted by Netscape. Cookies provided + * by a browser use and identify the browser's cookie version. + * + * @return 0 if the cookie complies with the + * original Netscape specification; 1 + * if the cookie complies with RFC 2109 + * + * @see #setVersion + */ + public int getVersion() { + return version; + } + + /** + * Sets the version of the cookie protocol that this Cookie complies + * with. + * + *

Version 0 complies with the original Netscape cookie + * specification. Version 1 complies with RFC 2109. + * + *

Since RFC 2109 is still somewhat new, consider + * version 1 as experimental; do not use it yet on production sites. + * + * @param v 0 if the cookie should comply with the original Netscape + * specification; 1 if the cookie should comply with RFC 2109 + * + * @see #getVersion + */ + public void setVersion(int v) { + version = v; + } + + /* + * Tests a string and returns true if the string counts as a + * reserved token in the Java language. + * + * @param value the String to be tested + * + * @return true if the String is a reserved + * token; false otherwise + */ + private boolean isToken(String value) { + int len = value.length(); + for (int i = 0; i < len; i++) { + char c = value.charAt(i); + if (c < 0x20 || c >= 0x7f || TSPECIALS.indexOf(c) != -1) { + return false; + } + } + + return true; + } + + /** + * Overrides the standard java.lang.Object.clone + * method to return a copy of this Cookie. + */ + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e.getMessage()); + } + } + + /** + * Marks or unmarks this Cookie as HttpOnly. + * + *

If isHttpOnly is set to true, this cookie is + * marked as HttpOnly, by adding the HttpOnly attribute + * to it. + * + *

HttpOnly cookies are not supposed to be exposed to + * client-side scripting code, and may therefore help mitigate certain + * kinds of cross-site scripting attacks. + * + * @param isHttpOnly true if this cookie is to be marked as + * HttpOnly, false otherwise + * + * @since Servlet 3.0 + */ + public void setHttpOnly(boolean isHttpOnly) { + this.isHttpOnly = isHttpOnly; + } + + /** + * Checks whether this Cookie has been marked as HttpOnly. + * + * @return true if this Cookie has been marked as HttpOnly, + * false otherwise + * + * @since Servlet 3.0 + */ + public boolean isHttpOnly() { + return isHttpOnly; + } +} + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpServlet.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpServlet.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpServlet.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,957 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Method; +import java.text.MessageFormat; +import java.util.Enumeration; +import java.util.Locale; +import java.util.ResourceBundle; + +import javax.servlet.*; + + +/** + * + * Provides an abstract class to be subclassed to create + * an HTTP servlet suitable for a Web site. A subclass of + * HttpServlet must override at least + * one method, usually one of these: + * + *

+ * + *

There's almost no reason to override the service + * method. service handles standard HTTP + * requests by dispatching them to the handler methods + * for each HTTP request type (the doXXX + * methods listed above). + * + *

Likewise, there's almost no reason to override the + * doOptions and doTrace methods. + * + *

Servlets typically run on multithreaded servers, + * so be aware that a servlet must handle concurrent + * requests and be careful to synchronize access to shared resources. + * Shared resources include in-memory data such as + * instance or class variables and external objects + * such as files, database connections, and network + * connections. + * See the + * + * Java Tutorial on Multithreaded Programming for more + * information on handling multiple threads in a Java program. + * + * @author Various + */ + +public abstract class HttpServlet extends GenericServlet +{ + private static final String METHOD_DELETE = "DELETE"; + private static final String METHOD_HEAD = "HEAD"; + private static final String METHOD_GET = "GET"; + private static final String METHOD_OPTIONS = "OPTIONS"; + private static final String METHOD_POST = "POST"; + private static final String METHOD_PUT = "PUT"; + private static final String METHOD_TRACE = "TRACE"; + + private static final String HEADER_IFMODSINCE = "If-Modified-Since"; + private static final String HEADER_LASTMOD = "Last-Modified"; + + private static final String LSTRING_FILE = + "javax.servlet.http.LocalStrings"; + private static ResourceBundle lStrings = + ResourceBundle.getBundle(LSTRING_FILE); + + + /** + * Does nothing, because this is an abstract class. + * + */ + + public HttpServlet() { } + + + /** + * + * Called by the server (via the service method) to + * allow a servlet to handle a GET request. + * + *

Overriding this method to support a GET request also + * automatically supports an HTTP HEAD request. A HEAD + * request is a GET request that returns no body in the + * response, only the request header fields. + * + *

When overriding this method, read the request data, + * write the response headers, get the response's writer or + * output stream object, and finally, write the response data. + * It's best to include content type and encoding. When using + * a PrintWriter object to return the response, + * set the content type before accessing the + * PrintWriter object. + * + *

The servlet container must write the headers before + * committing the response, because in HTTP the headers must be sent + * before the response body. + * + *

Where possible, set the Content-Length header (with the + * {@link javax.servlet.ServletResponse#setContentLength} method), + * to allow the servlet container to use a persistent connection + * to return its response to the client, improving performance. + * The content length is automatically set if the entire response fits + * inside the response buffer. + * + *

When using HTTP 1.1 chunked encoding (which means that the response + * has a Transfer-Encoding header), do not set the Content-Length header. + * + *

The GET method should be safe, that is, without + * any side effects for which users are held responsible. + * For example, most form queries have no side effects. + * If a client request is intended to change stored data, + * the request should use some other HTTP method. + * + *

The GET method should also be idempotent, meaning + * that it can be safely repeated. Sometimes making a + * method safe also makes it idempotent. For example, + * repeating queries is both safe and idempotent, but + * buying a product online or modifying data is neither + * safe nor idempotent. + * + *

If the request is incorrectly formatted, doGet + * returns an HTTP "Bad Request" message. + * + * @param req an {@link HttpServletRequest} object that + * contains the request the client has made + * of the servlet + * + * @param resp an {@link HttpServletResponse} object that + * contains the response the servlet sends + * to the client + * + * @exception IOException if an input or output error is + * detected when the servlet handles + * the GET request + * + * @exception ServletException if the request for the GET + * could not be handled + * + * @see javax.servlet.ServletResponse#setContentType + */ + + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException + { + String protocol = req.getProtocol(); + String msg = lStrings.getString("http.method_get_not_supported"); + if (protocol.endsWith("1.1")) { + resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg); + } else { + resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); + } + } + + + /** + * + * Returns the time the HttpServletRequest + * object was last modified, + * in milliseconds since midnight January 1, 1970 GMT. + * If the time is unknown, this method returns a negative + * number (the default). + * + *

Servlets that support HTTP GET requests and can quickly determine + * their last modification time should override this method. + * This makes browser and proxy caches work more effectively, + * reducing the load on server and network resources. + * + * @param req the HttpServletRequest + * object that is sent to the servlet + * + * @return a long integer specifying + * the time the HttpServletRequest + * object was last modified, in milliseconds + * since midnight, January 1, 1970 GMT, or + * -1 if the time is not known + */ + + protected long getLastModified(HttpServletRequest req) { + return -1; + } + + + /** + * + * + *

Receives an HTTP HEAD request from the protected + * service method and handles the + * request. + * The client sends a HEAD request when it wants + * to see only the headers of a response, such as + * Content-Type or Content-Length. The HTTP HEAD + * method counts the output bytes in the response + * to set the Content-Length header accurately. + * + *

If you override this method, you can avoid computing + * the response body and just set the response headers + * directly to improve performance. Make sure that the + * doHead method you write is both safe + * and idempotent (that is, protects itself from being + * called multiple times for one HTTP HEAD request). + * + *

If the HTTP HEAD request is incorrectly formatted, + * doHead returns an HTTP "Bad Request" + * message. + * + * @param req the request object that is passed to the servlet + * + * @param resp the response object that the servlet + * uses to return the headers to the clien + * + * @exception IOException if an input or output error occurs + * + * @exception ServletException if the request for the HEAD + * could not be handled + */ + protected void doHead(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException + { + NoBodyResponse response = new NoBodyResponse(resp); + + doGet(req, response); + response.setContentLength(); + } + + + /** + * + * Called by the server (via the service method) + * to allow a servlet to handle a POST request. + * + * The HTTP POST method allows the client to send + * data of unlimited length to the Web server a single time + * and is useful when posting information such as + * credit card numbers. + * + *

When overriding this method, read the request data, + * write the response headers, get the response's writer or output + * stream object, and finally, write the response data. It's best + * to include content type and encoding. When using a + * PrintWriter object to return the response, set the + * content type before accessing the PrintWriter object. + * + *

The servlet container must write the headers before committing the + * response, because in HTTP the headers must be sent before the + * response body. + * + *

Where possible, set the Content-Length header (with the + * {@link javax.servlet.ServletResponse#setContentLength} method), + * to allow the servlet container to use a persistent connection + * to return its response to the client, improving performance. + * The content length is automatically set if the entire response fits + * inside the response buffer. + * + *

When using HTTP 1.1 chunked encoding (which means that the response + * has a Transfer-Encoding header), do not set the Content-Length header. + * + *

This method does not need to be either safe or idempotent. + * Operations requested through POST can have side effects for + * which the user can be held accountable, for example, + * updating stored data or buying items online. + * + *

If the HTTP POST request is incorrectly formatted, + * doPost returns an HTTP "Bad Request" message. + * + * + * @param req an {@link HttpServletRequest} object that + * contains the request the client has made + * of the servlet + * + * @param resp an {@link HttpServletResponse} object that + * contains the response the servlet sends + * to the client + * + * @exception IOException if an input or output error is + * detected when the servlet handles + * the request + * + * @exception ServletException if the request for the POST + * could not be handled + * + * @see javax.servlet.ServletOutputStream + * @see javax.servlet.ServletResponse#setContentType + */ + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException + { + String protocol = req.getProtocol(); + String msg = lStrings.getString("http.method_post_not_supported"); + if (protocol.endsWith("1.1")) { + resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg); + } else { + resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); + } + } + + + /** + * Called by the server (via the service method) + * to allow a servlet to handle a PUT request. + * + * The PUT operation allows a client to + * place a file on the server and is similar to + * sending a file by FTP. + * + *

When overriding this method, leave intact + * any content headers sent with the request (including + * Content-Length, Content-Type, Content-Transfer-Encoding, + * Content-Encoding, Content-Base, Content-Language, Content-Location, + * Content-MD5, and Content-Range). If your method cannot + * handle a content header, it must issue an error message + * (HTTP 501 - Not Implemented) and discard the request. + * For more information on HTTP 1.1, see RFC 2616 + * . + * + *

This method does not need to be either safe or idempotent. + * Operations that doPut performs can have side + * effects for which the user can be held accountable. When using + * this method, it may be useful to save a copy of the + * affected URL in temporary storage. + * + *

If the HTTP PUT request is incorrectly formatted, + * doPut returns an HTTP "Bad Request" message. + * + * @param req the {@link HttpServletRequest} object that + * contains the request the client made of + * the servlet + * + * @param resp the {@link HttpServletResponse} object that + * contains the response the servlet returns + * to the client + * + * @exception IOException if an input or output error occurs + * while the servlet is handling the + * PUT request + * + * @exception ServletException if the request for the PUT + * cannot be handled + */ + protected void doPut(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException + { + String protocol = req.getProtocol(); + String msg = lStrings.getString("http.method_put_not_supported"); + if (protocol.endsWith("1.1")) { + resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg); + } else { + resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); + } + } + + + /** + * Called by the server (via the service method) + * to allow a servlet to handle a DELETE request. + * + * The DELETE operation allows a client to remove a document + * or Web page from the server. + * + *

This method does not need to be either safe + * or idempotent. Operations requested through + * DELETE can have side effects for which users + * can be held accountable. When using + * this method, it may be useful to save a copy of the + * affected URL in temporary storage. + * + *

If the HTTP DELETE request is incorrectly formatted, + * doDelete returns an HTTP "Bad Request" + * message. + * + * @param req the {@link HttpServletRequest} object that + * contains the request the client made of + * the servlet + * + * @param resp the {@link HttpServletResponse} object that + * contains the response the servlet returns + * to the client + * + * @exception IOException if an input or output error occurs + * while the servlet is handling the + * DELETE request + * + * @exception ServletException if the request for the + * DELETE cannot be handled + */ + protected void doDelete(HttpServletRequest req, + HttpServletResponse resp) + throws ServletException, IOException + { + String protocol = req.getProtocol(); + String msg = lStrings.getString("http.method_delete_not_supported"); + if (protocol.endsWith("1.1")) { + resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg); + } else { + resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); + } + } + + + private Method[] getAllDeclaredMethods(Class c) { + + Class clazz = c; + Method[] allMethods = null; + + while (!clazz.equals(HttpServlet.class)) { + Method[] thisMethods = clazz.getDeclaredMethods(); + if (allMethods != null && allMethods.length > 0) { + Method[] subClassMethods = allMethods; + allMethods = + new Method[thisMethods.length + subClassMethods.length]; + System.arraycopy(thisMethods, 0, allMethods, 0, + thisMethods.length); + System.arraycopy(subClassMethods, 0, allMethods, thisMethods.length, + subClassMethods.length); + } else { + allMethods = thisMethods; + } + + clazz = clazz.getSuperclass(); + } + + return ((allMethods != null) ? allMethods : new Method[0]); + } + + + /** + * Called by the server (via the service method) + * to allow a servlet to handle a OPTIONS request. + * + * The OPTIONS request determines which HTTP methods + * the server supports and + * returns an appropriate header. For example, if a servlet + * overrides doGet, this method returns the + * following header: + * + *

Allow: GET, HEAD, TRACE, OPTIONS + * + *

There's no need to override this method unless the + * servlet implements new HTTP methods, beyond those + * implemented by HTTP 1.1. + * + * @param req the {@link HttpServletRequest} object that + * contains the request the client made of + * the servlet + * + * @param resp the {@link HttpServletResponse} object that + * contains the response the servlet returns + * to the client + * + * @exception IOException if an input or output error occurs + * while the servlet is handling the + * OPTIONS request + * + * @exception ServletException if the request for the + * OPTIONS cannot be handled + */ + protected void doOptions(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException + { + Method[] methods = getAllDeclaredMethods(this.getClass()); + + boolean ALLOW_GET = false; + boolean ALLOW_HEAD = false; + boolean ALLOW_POST = false; + boolean ALLOW_PUT = false; + boolean ALLOW_DELETE = false; + boolean ALLOW_TRACE = true; + boolean ALLOW_OPTIONS = true; + + for (int i=0; i 0) { + allow.append(", "); + } + allow.append(METHOD_HEAD); + } + if (ALLOW_POST) { + if (allow.length() > 0) { + allow.append(", "); + } + allow.append(METHOD_POST); + } + if (ALLOW_PUT) { + if (allow.length() > 0) { + allow.append(", "); + } + allow.append(METHOD_PUT); + } + if (ALLOW_DELETE) { + if (allow.length() > 0) { + allow.append(", "); + } + allow.append(METHOD_DELETE); + } + if (ALLOW_TRACE) { + if (allow.length() > 0) { + allow.append(", "); + } + allow.append(METHOD_TRACE); + } + if (ALLOW_OPTIONS) { + if (allow.length() > 0) { + allow.append(", "); + } + allow.append(METHOD_OPTIONS); + } + + resp.setHeader("Allow", allow.toString()); + } + + + /** + * Called by the server (via the service method) + * to allow a servlet to handle a TRACE request. + * + * A TRACE returns the headers sent with the TRACE + * request to the client, so that they can be used in + * debugging. There's no need to override this method. + * + * @param req the {@link HttpServletRequest} object that + * contains the request the client made of + * the servlet + * + * + * @param resp the {@link HttpServletResponse} object that + * contains the response the servlet returns + * to the client + * + * @exception IOException if an input or output error occurs + * while the servlet is handling the + * TRACE request + * + * @exception ServletException if the request for the + * TRACE cannot be handled + */ + protected void doTrace(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException + { + + int responseLength; + + String CRLF = "\r\n"; + StringBuilder buffer = new StringBuilder("TRACE ").append(req.getRequestURI()) + .append(" ").append(req.getProtocol()); + + Enumeration reqHeaderEnum = req.getHeaderNames(); + + while( reqHeaderEnum.hasMoreElements() ) { + String headerName = reqHeaderEnum.nextElement(); + buffer.append(CRLF).append(headerName).append(": ") + .append(req.getHeader(headerName)); + } + + buffer.append(CRLF); + + responseLength = buffer.length(); + + resp.setContentType("message/http"); + resp.setContentLength(responseLength); + ServletOutputStream out = resp.getOutputStream(); + out.print(buffer.toString()); + } + + + /** + * Receives standard HTTP requests from the public + * service method and dispatches + * them to the doXXX methods defined in + * this class. This method is an HTTP-specific version of the + * {@link javax.servlet.Servlet#service} method. There's no + * need to override this method. + * + * @param req the {@link HttpServletRequest} object that + * contains the request the client made of + * the servlet + * + * @param resp the {@link HttpServletResponse} object that + * contains the response the servlet returns + * to the client + * + * @exception IOException if an input or output error occurs + * while the servlet is handling the + * HTTP request + * + * @exception ServletException if the HTTP request + * cannot be handled + * + * @see javax.servlet.Servlet#service + */ + protected void service(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException + { + String method = req.getMethod(); + + if (method.equals(METHOD_GET)) { + long lastModified = getLastModified(req); + if (lastModified == -1) { + // servlet doesn't support if-modified-since, no reason + // to go through further expensive logic + doGet(req, resp); + } else { + long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE); + if (ifModifiedSince < lastModified) { + // If the servlet mod time is later, call doGet() + // Round down to the nearest second for a proper compare + // A ifModifiedSince of -1 will always be less + maybeSetLastModified(resp, lastModified); + doGet(req, resp); + } else { + resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); + } + } + + } else if (method.equals(METHOD_HEAD)) { + long lastModified = getLastModified(req); + maybeSetLastModified(resp, lastModified); + doHead(req, resp); + + } else if (method.equals(METHOD_POST)) { + doPost(req, resp); + + } else if (method.equals(METHOD_PUT)) { + doPut(req, resp); + + } else if (method.equals(METHOD_DELETE)) { + doDelete(req, resp); + + } else if (method.equals(METHOD_OPTIONS)) { + doOptions(req,resp); + + } else if (method.equals(METHOD_TRACE)) { + doTrace(req,resp); + + } else { + // + // Note that this means NO servlet supports whatever + // method was requested, anywhere on this server. + // + + String errMsg = lStrings.getString("http.method_not_implemented"); + Object[] errArgs = new Object[1]; + errArgs[0] = method; + errMsg = MessageFormat.format(errMsg, errArgs); + + resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg); + } + } + + + /* + * Sets the Last-Modified entity header field, if it has not + * already been set and if the value is meaningful. Called before + * doGet, to ensure that headers are set before response data is + * written. A subclass might have set this header already, so we + * check. + */ + private void maybeSetLastModified(HttpServletResponse resp, + long lastModified) { + if (resp.containsHeader(HEADER_LASTMOD)) + return; + if (lastModified >= 0) + resp.setDateHeader(HEADER_LASTMOD, lastModified); + } + + + /** + * Dispatches client requests to the protected + * service method. There's no need to + * override this method. + * + * @param req the {@link HttpServletRequest} object that + * contains the request the client made of + * the servlet + * + * @param res the {@link HttpServletResponse} object that + * contains the response the servlet returns + * to the client + * + * @exception IOException if an input or output error occurs + * while the servlet is handling the + * HTTP request + * + * @exception ServletException if the HTTP request cannot + * be handled + * + * @see javax.servlet.Servlet#service + */ + @Override + public void service(ServletRequest req, ServletResponse res) + throws ServletException, IOException + { + HttpServletRequest request; + HttpServletResponse response; + + if (!(req instanceof HttpServletRequest && + res instanceof HttpServletResponse)) { + throw new ServletException("non-HTTP request or response"); + } + + request = (HttpServletRequest) req; + response = (HttpServletResponse) res; + + service(request, response); + } +} + + +/* + * A response that includes no body, for use in (dumb) "HEAD" support. + * This just swallows that body, counting the bytes in order to set + * the content length appropriately. All other methods delegate directly + * to the wrapped HTTP Servlet Response object. + */ +// file private +class NoBodyResponse extends HttpServletResponseWrapper { + + private static final ResourceBundle lStrings + = ResourceBundle.getBundle("javax.servlet.http.LocalStrings"); + + private NoBodyOutputStream noBody; + private PrintWriter writer; + private boolean didSetContentLength; + private boolean usingOutputStream; + + // file private + NoBodyResponse(HttpServletResponse r) { + super(r); + noBody = new NoBodyOutputStream(); + } + + // file private + void setContentLength() { + if (!didSetContentLength) { + if (writer != null) { + writer.flush(); + } + setContentLength(noBody.getContentLength()); + } + } + + @Override + public void setContentLength(int len) { + super.setContentLength(len); + didSetContentLength = true; + } + + @Override + public void setContentLengthLong(long len) { + super.setContentLengthLong(len); + didSetContentLength = true; + } + + @Override + public void setHeader(String name, String value) { + super.setHeader(name, value); + checkHeader(name); + } + + @Override + public void addHeader(String name, String value) { + super.addHeader(name, value); + checkHeader(name); + } + + @Override + public void setIntHeader(String name, int value) { + super.setIntHeader(name, value); + checkHeader(name); + } + + @Override + public void addIntHeader(String name, int value) { + super.addIntHeader(name, value); + checkHeader(name); + } + + private void checkHeader(String name) { + if ("content-length".equalsIgnoreCase(name)) { + didSetContentLength = true; + } + } + + @Override + public ServletOutputStream getOutputStream() throws IOException { + + if (writer != null) { + throw new IllegalStateException( + lStrings.getString("err.ise.getOutputStream")); + } + usingOutputStream = true; + + return noBody; + } + + @Override + public PrintWriter getWriter() throws UnsupportedEncodingException { + + if (usingOutputStream) { + throw new IllegalStateException( + lStrings.getString("err.ise.getWriter")); + } + + if (writer == null) { + OutputStreamWriter w = new OutputStreamWriter( + noBody, getCharacterEncoding()); + writer = new PrintWriter(w); + } + + return writer; + } +} + + +/* + * Servlet output stream that gobbles up all its data. + */ +// file private +class NoBodyOutputStream extends ServletOutputStream { + + private static final String LSTRING_FILE = + "javax.servlet.http.LocalStrings"; + private static ResourceBundle lStrings = + ResourceBundle.getBundle(LSTRING_FILE); + + private int contentLength = 0; + + // file private + NoBodyOutputStream() {} + + // file private + int getContentLength() { + return contentLength; + } + + @Override + public void write(int b) { + contentLength++; + } + + @Override + public void write(byte buf[], int offset, int len) + throws IOException + { + if (buf == null) { + throw new NullPointerException( + lStrings.getString("err.io.nullArray")); + } + + if (offset < 0 || len < 0 || offset+len > buf.length) { + String msg = lStrings.getString("err.io.indexOutOfBounds"); + Object[] msgArgs = new Object[3]; + msgArgs[0] = Integer.valueOf(offset); + msgArgs[1] = Integer.valueOf(len); + msgArgs[2] = Integer.valueOf(buf.length); + msg = MessageFormat.format(msg, msgArgs); + throw new IndexOutOfBoundsException(msg); + } + + contentLength += len; + } + + + public boolean isReady() { + return false; + } + + public void setWriteListener(WriteListener writeListener) { + + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletRequest.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletRequest.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletRequest.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,748 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.io.IOException; +import java.util.*; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; + +/** + * + * Extends the {@link javax.servlet.ServletRequest} interface + * to provide request information for HTTP servlets. + * + *

The servlet container creates an HttpServletRequest + * object and passes it as an argument to the servlet's service + * methods (doGet, doPost, etc). + * + * + * @author Various + */ + +public interface HttpServletRequest extends ServletRequest { + + /** + * String identifier for Basic authentication. Value "BASIC" + */ + public static final String BASIC_AUTH = "BASIC"; + + /** + * String identifier for Form authentication. Value "FORM" + */ + public static final String FORM_AUTH = "FORM"; + + /** + * String identifier for Client Certificate authentication. Value "CLIENT_CERT" + */ + public static final String CLIENT_CERT_AUTH = "CLIENT_CERT"; + + /** + * String identifier for Digest authentication. Value "DIGEST" + */ + public static final String DIGEST_AUTH = "DIGEST"; + + /** + * Returns the name of the authentication scheme used to protect + * the servlet. All servlet containers support basic, form and client + * certificate authentication, and may additionally support digest + * authentication. + * If the servlet is not authenticated null is returned. + * + *

Same as the value of the CGI variable AUTH_TYPE. + * + * @return one of the static members BASIC_AUTH, + * FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH + * (suitable for == comparison) or + * the container-specific string indicating + * the authentication scheme, or + * null if the request was + * not authenticated. + */ + public String getAuthType(); + + /** + * Returns an array containing all of the Cookie + * objects the client sent with this request. + * This method returns null if no cookies were sent. + * + * @return an array of all the Cookies + * included with this request, or null + * if the request has no cookies + */ + public Cookie[] getCookies(); + + /** + * Returns the value of the specified request header + * as a long value that represents a + * Date object. Use this method with + * headers that contain dates, such as + * If-Modified-Since. + * + *

The date is returned as + * the number of milliseconds since January 1, 1970 GMT. + * The header name is case insensitive. + * + *

If the request did not have a header of the + * specified name, this method returns -1. If the header + * can't be converted to a date, the method throws + * an IllegalArgumentException. + * + * @param name a String specifying the + * name of the header + * + * @return a long value + * representing the date specified + * in the header expressed as + * the number of milliseconds + * since January 1, 1970 GMT, + * or -1 if the named header + * was not included with the + * request + * + * @exception IllegalArgumentException If the header value + * can't be converted + * to a date + */ + public long getDateHeader(String name); + + /** + * Returns the value of the specified request header + * as a String. If the request did not include a header + * of the specified name, this method returns null. + * If there are multiple headers with the same name, this method + * returns the first head in the request. + * The header name is case insensitive. You can use + * this method with any request header. + * + * @param name a String specifying the + * header name + * + * @return a String containing the + * value of the requested + * header, or null + * if the request does not + * have a header of that name + */ + public String getHeader(String name); + + /** + * Returns all the values of the specified request header + * as an Enumeration of String objects. + * + *

Some headers, such as Accept-Language can be sent + * by clients as several headers each with a different value rather than + * sending the header as a comma separated list. + * + *

If the request did not include any headers + * of the specified name, this method returns an empty + * Enumeration. + * The header name is case insensitive. You can use + * this method with any request header. + * + * @param name a String specifying the + * header name + * + * @return an Enumeration containing + * the values of the requested header. If + * the request does not have any headers of + * that name return an empty + * enumeration. If + * the container does not allow access to + * header information, return null + */ + public Enumeration getHeaders(String name); + + /** + * Returns an enumeration of all the header names + * this request contains. If the request has no + * headers, this method returns an empty enumeration. + * + *

Some servlet containers do not allow + * servlets to access headers using this method, in + * which case this method returns null + * + * @return an enumeration of all the + * header names sent with this + * request; if the request has + * no headers, an empty enumeration; + * if the servlet container does not + * allow servlets to use this method, + * null + */ + public Enumeration getHeaderNames(); + + /** + * Returns the value of the specified request header + * as an int. If the request does not have a header + * of the specified name, this method returns -1. If the + * header cannot be converted to an integer, this method + * throws a NumberFormatException. + * + *

The header name is case insensitive. + * + * @param name a String specifying the name + * of a request header + * + * @return an integer expressing the value + * of the request header or -1 + * if the request doesn't have a + * header of this name + * + * @exception NumberFormatException If the header value + * can't be converted + * to an int + */ + public int getIntHeader(String name); + + /** + * Returns the name of the HTTP method with which this + * request was made, for example, GET, POST, or PUT. + * Same as the value of the CGI variable REQUEST_METHOD. + * + * @return a String + * specifying the name + * of the method with which + * this request was made + */ + public String getMethod(); + + /** + * Returns any extra path information associated with + * the URL the client sent when it made this request. + * The extra path information follows the servlet path + * but precedes the query string and will start with + * a "/" character. + * + *

This method returns null if there + * was no extra path information. + * + *

Same as the value of the CGI variable PATH_INFO. + * + * @return a String, decoded by the + * web container, specifying + * extra path information that comes + * after the servlet path but before + * the query string in the request URL; + * or null if the URL does not have + * any extra path information + */ + public String getPathInfo(); + + /** + * Returns any extra path information after the servlet name + * but before the query string, and translates it to a real + * path. Same as the value of the CGI variable PATH_TRANSLATED. + * + *

If the URL does not have any extra path information, + * this method returns null or the servlet container + * cannot translate the virtual path to a real path for any reason + * (such as when the web application is executed from an archive). + * + * The web container does not decode this string. + * + * @return a String specifying the + * real path, or null if + * the URL does not have any extra path + * information + */ + public String getPathTranslated(); + + /** + * Returns the portion of the request URI that indicates the context + * of the request. The context path always comes first in a request + * URI. The path starts with a "/" character but does not end with a "/" + * character. For servlets in the default (root) context, this method + * returns "". The container does not decode this string. + * + *

It is possible that a servlet container may match a context by + * more than one context path. In such cases this method will return the + * actual context path used by the request and it may differ from the + * path returned by the + * {@link javax.servlet.ServletContext#getContextPath()} method. + * The context path returned by + * {@link javax.servlet.ServletContext#getContextPath()} + * should be considered as the prime or preferred context path of the + * application. + * + * @return a String specifying the + * portion of the request URI that indicates the context + * of the request + * + * @see javax.servlet.ServletContext#getContextPath() + */ + public String getContextPath(); + + /** + * Returns the query string that is contained in the request + * URL after the path. This method returns null + * if the URL does not have a query string. Same as the value + * of the CGI variable QUERY_STRING. + * + * @return a String containing the query + * string or null if the URL + * contains no query string. The value is not + * decoded by the container. + */ + public String getQueryString(); + + /** + * Returns the login of the user making this request, if the + * user has been authenticated, or null if the user + * has not been authenticated. + * Whether the user name is sent with each subsequent request + * depends on the browser and type of authentication. Same as the + * value of the CGI variable REMOTE_USER. + * + * @return a String specifying the login + * of the user making this request, or null + * if the user login is not known + */ + public String getRemoteUser(); + + /** + * Returns a boolean indicating whether the authenticated user is included + * in the specified logical "role". Roles and role membership can be + * defined using deployment descriptors. If the user has not been + * authenticated, the method returns false. + * + *

The role name “*” should never be used as an argument in calling + * isUserInRole. Any call to isUserInRole with + * “*” must return false. + * If the role-name of the security-role to be tested is “**”, and + * the application has NOT declared an application security-role with + * role-name “**”, isUserInRole must only return true if + * the user has been authenticated; that is, only when + * {@link #getRemoteUser} and {@link #getUserPrincipal} would both return + * a non-null value. Otherwise, the container must check + * the user for membership in the application role. + * + * @param role a String specifying the name + * of the role + * + * @return a boolean indicating whether + * the user making this request belongs to a given role; + * false if the user has not been + * authenticated + */ + public boolean isUserInRole(String role); + + /** + * Returns a java.security.Principal object containing + * the name of the current authenticated user. If the user has not been + * authenticated, the method returns null. + * + * @return a java.security.Principal containing + * the name of the user making this request; + * null if the user has not been + * authenticated + */ + public java.security.Principal getUserPrincipal(); + + /** + * Returns the session ID specified by the client. This may + * not be the same as the ID of the current valid session + * for this request. + * If the client did not specify a session ID, this method returns + * null. + * + * @return a String specifying the session + * ID, or null if the request did + * not specify a session ID + * + * @see #isRequestedSessionIdValid + */ + public String getRequestedSessionId(); + + /** + * Returns the part of this request's URL from the protocol + * name up to the query string in the first line of the HTTP request. + * The web container does not decode this String. + * For example: + * + * + * + * + *
First line of HTTP request Returned Value
POST /some/path.html HTTP/1.1/some/path.html + *
GET http://foo.bar/a.html HTTP/1.0 + * /a.html + *
HEAD /xyz?a=b HTTP/1.1/xyz + *
+ * + *

To reconstruct an URL with a scheme and host, use + * {@link HttpUtils#getRequestURL}. + * + * @return a String containing + * the part of the URL from the + * protocol name up to the query string + * + * @see HttpUtils#getRequestURL + */ + public String getRequestURI(); + + /** + * Reconstructs the URL the client used to make the request. + * The returned URL contains a protocol, server name, port + * number, and server path, but it does not include query + * string parameters. + * + *

If this request has been forwarded using + * {@link javax.servlet.RequestDispatcher#forward}, the server path in the + * reconstructed URL must reflect the path used to obtain the + * RequestDispatcher, and not the server path specified by the client. + * + *

Because this method returns a StringBuffer, + * not a string, you can modify the URL easily, for example, + * to append query parameters. + * + *

This method is useful for creating redirect messages + * and for reporting errors. + * + * @return a StringBuffer object containing + * the reconstructed URL + */ + public StringBuffer getRequestURL(); + + /** + * Returns the part of this request's URL that calls + * the servlet. This path starts with a "/" character + * and includes either the servlet name or a path to + * the servlet, but does not include any extra path + * information or a query string. Same as the value of + * the CGI variable SCRIPT_NAME. + * + *

This method will return an empty string ("") if the + * servlet used to process this request was matched using + * the "/*" pattern. + * + * @return a String containing + * the name or path of the servlet being + * called, as specified in the request URL, + * decoded, or an empty string if the servlet + * used to process the request is matched + * using the "/*" pattern. + */ + public String getServletPath(); + + /** + * Returns the current HttpSession + * associated with this request or, if there is no + * current session and create is true, returns + * a new session. + * + *

If create is false + * and the request has no valid HttpSession, + * this method returns null. + * + *

To make sure the session is properly maintained, + * you must call this method before + * the response is committed. If the container is using cookies + * to maintain session integrity and is asked to create a new session + * when the response is committed, an IllegalStateException is thrown. + * + * @param create true to create + * a new session for this request if necessary; + * false to return null + * if there's no current session + * + * @return the HttpSession associated + * with this request or null if + * create is false + * and the request has no valid session + * + * @see #getSession() + */ + public HttpSession getSession(boolean create); + + /** + * Returns the current session associated with this request, + * or if the request does not have a session, creates one. + * + * @return the HttpSession associated + * with this request + * + * @see #getSession(boolean) + */ + public HttpSession getSession(); + + /** + * Change the session id of the current session associated with this + * request and return the new session id. + * + * @return the new session id + * + * @throws IllegalStateException if there is no session associated + * with the request + * + * @since Servlet 3.1 + */ + public String changeSessionId(); + + /** + * Checks whether the requested session ID is still valid. + * + *

If the client did not specify any session ID, this method returns + * false. + * + * @return true if this + * request has an id for a valid session + * in the current session context; + * false otherwise + * + * @see #getRequestedSessionId + * @see #getSession + * @see HttpSessionContext + */ + public boolean isRequestedSessionIdValid(); + + /** + * Checks whether the requested session ID came in as a cookie. + * + * @return true if the session ID + * came in as a + * cookie; otherwise, false + * + * @see #getSession + */ + public boolean isRequestedSessionIdFromCookie(); + + /** + * Checks whether the requested session ID came in as part of the + * request URL. + * + * @return true if the session ID + * came in as part of a URL; otherwise, + * false + * + * @see #getSession + */ + public boolean isRequestedSessionIdFromURL(); + + /** + * @deprecated As of Version 2.1 of the Java Servlet + * API, use {@link #isRequestedSessionIdFromURL} + * instead. + */ + public boolean isRequestedSessionIdFromUrl(); + + /** + * Use the container login mechanism configured for the + * ServletContext to authenticate the user making + * this request. + * + *

This method may modify and commit the argument + * HttpServletResponse. + * + * @param response The HttpServletResponse + * associated with this HttpServletRequest + * + * @return true when non-null values were or have been + * established as the values returned by getUserPrincipal, + * getRemoteUser, and getAuthType. Return + * false if authentication is incomplete and the underlying + * login mechanism has committed, in the response, the message (e.g., + * challenge) and HTTP status code to be returned to the user. + * + * @throws IOException if an input or output error occurred while + * reading from this request or writing to the given response + * + * @throws IllegalStateException if the login mechanism attempted to + * modify the response and it was already committed + * + * @throws ServletException if the authentication failed and + * the caller is responsible for handling the error (i.e., the + * underlying login mechanism did NOT establish the message and + * HTTP status code to be returned to the user) + * + * @since Servlet 3.0 + */ + public boolean authenticate(HttpServletResponse response) + throws IOException,ServletException; + + /** + * Validate the provided username and password in the password validation + * realm used by the web container login mechanism configured for the + * ServletContext. + * + *

This method returns without throwing a ServletException + * when the login mechanism configured for the ServletContext + * supports username password validation, and when, at the time of the + * call to login, the identity of the caller of the request had + * not been established (i.e, all of getUserPrincipal, + * getRemoteUser, and getAuthType return null), + * and when validation of the provided credentials is successful. + * Otherwise, this method throws a ServletException as + * described below. + * + *

When this method returns without throwing an exception, it must + * have established non-null values as the values returned by + * getUserPrincipal, getRemoteUser, and + * getAuthType. + * + * @param username The String value corresponding to + * the login identifier of the user. + * + * @param password The password String corresponding + * to the identified user. + * + * @exception ServletException if the configured login mechanism + * does not support username + * password authentication, or if a + * non-null caller identity had + * already been established (prior + * to the call to login), or if + * validation of the provided + * username and password fails. + * + * @since Servlet 3.0 + */ + public void login(String username, String password) + throws ServletException; + + /** + * Establish null as the value returned when + * getUserPrincipal, getRemoteUser, + * and getAuthType is called on the request. + * + * @exception ServletException if logout fails + * + * @since Servlet 3.0 + */ + public void logout() throws ServletException; + + /** + * Gets all the {@link Part} components of this request, provided + * that it is of type multipart/form-data. + * + *

If this request is of type multipart/form-data, but + * does not contain any Part components, the returned + * Collection will be empty. + * + *

Any changes to the returned Collection must not + * affect this HttpServletRequest. + * + * @return a (possibly empty) Collection of the + * Part components of this request + * + * @throws IOException if an I/O error occurred during the retrieval + * of the {@link Part} components of this request + * + * @throws ServletException if this request is not of type + * multipart/form-data + * + * @throws IllegalStateException if the request body is larger than + * maxRequestSize, or any Part in the + * request is larger than maxFileSize, or there is no + * @MultipartConfig or multipart-config in + * deployment descriptors + * + * @see javax.servlet.annotation.MultipartConfig#maxFileSize + * @see javax.servlet.annotation.MultipartConfig#maxRequestSize + * + * @since Servlet 3.0 + */ + public Collection getParts() throws IOException, ServletException; + + /** + * Gets the {@link Part} with the given name. + * + * @param name the name of the requested Part + * + * @return The Part with the given name, or + * null if this request is of type + * multipart/form-data, but does not + * contain the requested Part + * + * @throws IOException if an I/O error occurred during the retrieval + * of the requested Part + * @throws ServletException if this request is not of type + * multipart/form-data + * @throws IllegalStateException if the request body is larger than + * maxRequestSize, or any Part in the + * request is larger than maxFileSize, or there is no + * @MultipartConfig or multipart-config in + * deployment descriptors + * + * @see javax.servlet.annotation.MultipartConfig#maxFileSize + * @see javax.servlet.annotation.MultipartConfig#maxRequestSize + * + * @since Servlet 3.0 + */ + public Part getPart(String name) throws IOException, ServletException; + + /** + * Create an instance of HttpUpgradeHandler for an given + * class and uses it for the http protocol upgrade processing. + * + * @param handlerClass The HttpUpgradeHandler class used for the upgrade. + * + * @return an instance of the HttpUpgradeHandler + * + * @exception IOException if an I/O error occurred during the upgrade + * @exception ServletException if the given handlerClass fails to + * be instantiated + * + * @see javax.servlet.http.HttpUpgradeHandler + * @see javax.servlet.http.WebConnection + * + * @since Servlet 3.1 + */ + public T upgrade(Class handlerClass) + throws IOException, ServletException; +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletRequestWrapper.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletRequestWrapper.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletRequestWrapper.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,401 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.io.IOException; +import java.util.*; +import javax.servlet.ServletException; +import javax.servlet.ServletRequestWrapper; + +/** + * Provides a convenient implementation of the HttpServletRequest interface + * that can be subclassed by developers wishing to adapt the request to a + * Servlet. + * + *

This class implements the Wrapper or Decorator pattern. Methods default + * to calling through to the wrapped request object. + * + * @see javax.servlet.http.HttpServletRequest + * @since Servlet 2.3 + */ + + +public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest { + + /** + * Constructs a request object wrapping the given request. + * @throws java.lang.IllegalArgumentException if the request is null + */ + public HttpServletRequestWrapper(HttpServletRequest request) { + super(request); + } + + private HttpServletRequest _getHttpServletRequest() { + return (HttpServletRequest) super.getRequest(); + } + + /** + * The default behavior of this method is to return getAuthType() + * on the wrapped request object. + */ + @Override + public String getAuthType() { + return this._getHttpServletRequest().getAuthType(); + } + + /** + * The default behavior of this method is to return getCookies() + * on the wrapped request object. + */ + @Override + public Cookie[] getCookies() { + return this._getHttpServletRequest().getCookies(); + } + + /** + * The default behavior of this method is to return getDateHeader(String name) + * on the wrapped request object. + */ + @Override + public long getDateHeader(String name) { + return this._getHttpServletRequest().getDateHeader(name); + } + + /** + * The default behavior of this method is to return getHeader(String name) + * on the wrapped request object. + */ + @Override + public String getHeader(String name) { + return this._getHttpServletRequest().getHeader(name); + } + + /** + * The default behavior of this method is to return getHeaders(String name) + * on the wrapped request object. + */ + @Override + public Enumeration getHeaders(String name) { + return this._getHttpServletRequest().getHeaders(name); + } + + /** + * The default behavior of this method is to return getHeaderNames() + * on the wrapped request object. + */ + @Override + public Enumeration getHeaderNames() { + return this._getHttpServletRequest().getHeaderNames(); + } + + /** + * The default behavior of this method is to return + * getIntHeader(String name) on the wrapped request object. + */ + @Override + public int getIntHeader(String name) { + return this._getHttpServletRequest().getIntHeader(name); + } + + /** + * The default behavior of this method is to return getMethod() + * on the wrapped request object. + */ + @Override + public String getMethod() { + return this._getHttpServletRequest().getMethod(); + } + + /** + * The default behavior of this method is to return getPathInfo() + * on the wrapped request object. + */ + @Override + public String getPathInfo() { + return this._getHttpServletRequest().getPathInfo(); + } + + /** + * The default behavior of this method is to return getPathTranslated() + * on the wrapped request object. + */ + @Override + public String getPathTranslated() { + return this._getHttpServletRequest().getPathTranslated(); + } + + /** + * The default behavior of this method is to return getContextPath() + * on the wrapped request object. + */ + @Override + public String getContextPath() { + return this._getHttpServletRequest().getContextPath(); + } + + /** + * The default behavior of this method is to return getQueryString() + * on the wrapped request object. + */ + @Override + public String getQueryString() { + return this._getHttpServletRequest().getQueryString(); + } + + /** + * The default behavior of this method is to return getRemoteUser() + * on the wrapped request object. + */ + @Override + public String getRemoteUser() { + return this._getHttpServletRequest().getRemoteUser(); + } + + /** + * The default behavior of this method is to return isUserInRole(String role) + * on the wrapped request object. + */ + @Override + public boolean isUserInRole(String role) { + return this._getHttpServletRequest().isUserInRole(role); + } + + /** + * The default behavior of this method is to return getUserPrincipal() + * on the wrapped request object. + */ + @Override + public java.security.Principal getUserPrincipal() { + return this._getHttpServletRequest().getUserPrincipal(); + } + + /** + * The default behavior of this method is to return getRequestedSessionId() + * on the wrapped request object. + */ + @Override + public String getRequestedSessionId() { + return this._getHttpServletRequest().getRequestedSessionId(); + } + + /** + * The default behavior of this method is to return getRequestURI() + * on the wrapped request object. + */ + @Override + public String getRequestURI() { + return this._getHttpServletRequest().getRequestURI(); + } + + /** + * The default behavior of this method is to return getRequestURL() + * on the wrapped request object. + */ + @Override + public StringBuffer getRequestURL() { + return this._getHttpServletRequest().getRequestURL(); + } + + /** + * The default behavior of this method is to return getServletPath() + * on the wrapped request object. + */ + @Override + public String getServletPath() { + return this._getHttpServletRequest().getServletPath(); + } + + /** + * The default behavior of this method is to return getSession(boolean create) + * on the wrapped request object. + */ + @Override + public HttpSession getSession(boolean create) { + return this._getHttpServletRequest().getSession(create); + } + + /** + * The default behavior of this method is to return getSession() + * on the wrapped request object. + */ + @Override + public HttpSession getSession() { + return this._getHttpServletRequest().getSession(); + } + + /** + * The default behavior of this method is to return changeSessionId() + * on the wrapped request object. + * + * @since Servlet 3.1 + */ + @Override + public String changeSessionId() { + return this._getHttpServletRequest().changeSessionId(); + } + + /** + * The default behavior of this method is to return isRequestedSessionIdValid() + * on the wrapped request object. + */ + @Override + public boolean isRequestedSessionIdValid() { + return this._getHttpServletRequest().isRequestedSessionIdValid(); + } + + /** + * The default behavior of this method is to return isRequestedSessionIdFromCookie() + * on the wrapped request object. + */ + @Override + public boolean isRequestedSessionIdFromCookie() { + return this._getHttpServletRequest().isRequestedSessionIdFromCookie(); + } + + /** + * The default behavior of this method is to return isRequestedSessionIdFromURL() + * on the wrapped request object. + */ + @Override + public boolean isRequestedSessionIdFromURL() { + return this._getHttpServletRequest().isRequestedSessionIdFromURL(); + } + + /** + * The default behavior of this method is to return isRequestedSessionIdFromUrl() + * on the wrapped request object. + */ + @Override + public boolean isRequestedSessionIdFromUrl() { + return this._getHttpServletRequest().isRequestedSessionIdFromUrl(); + } + + /** + * The default behavior of this method is to call authenticate on the + * wrapped request object. + * + * @since Servlet 3.0 + */ + @Override + public boolean authenticate(HttpServletResponse response) + throws IOException, ServletException { + return this._getHttpServletRequest().authenticate(response); + } + + /** + * The default behavior of this method is to call login on the wrapped + * request object. + * + * @since Servlet 3.0 + */ + @Override + public void login(String username, String password) + throws ServletException { + this._getHttpServletRequest().login(username,password); + } + + /** + * The default behavior of this method is to call login on the wrapped + * request object. + * + * @since Servlet 3.0 + */ + @Override + public void logout() throws ServletException { + this._getHttpServletRequest().logout(); + } + + /** + * The default behavior of this method is to call getParts on the wrapped + * request object. + * + *

Any changes to the returned Collection must not + * affect this HttpServletRequestWrapper. + * + * @since Servlet 3.0 + */ + @Override + public Collection getParts() throws IOException, ServletException { + return this._getHttpServletRequest().getParts(); + } + + /** + * The default behavior of this method is to call getPart on the wrapped + * request object. + * + * @since Servlet 3.0 + */ + @Override + public Part getPart(String name) throws IOException, ServletException { + return this._getHttpServletRequest().getPart(name); + + } + + /** + * Create an instance of HttpUpgradeHandler for an given + * class and uses it for the http protocol upgrade processing. + * + * @since Servlet 3.1 + */ + @Override + public T upgrade(Class handlerClass) + throws IOException, ServletException { + return this._getHttpServletRequest().upgrade(handlerClass); + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletResponse.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletResponse.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletResponse.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,720 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.io.IOException; +import java.util.Collection; +import javax.servlet.ServletResponse; + +/** + * + * Extends the {@link ServletResponse} interface to provide HTTP-specific + * functionality in sending a response. For example, it has methods + * to access HTTP headers and cookies. + * + *

The servlet container creates an HttpServletResponse object + * and passes it as an argument to the servlet's service methods + * (doGet, doPost, etc). + * + * + * @author Various + * + * @see javax.servlet.ServletResponse + * + */ +public interface HttpServletResponse extends ServletResponse { + + /** + * Adds the specified cookie to the response. This method can be called + * multiple times to set more than one cookie. + * + * @param cookie the Cookie to return to the client + * + */ + public void addCookie(Cookie cookie); + + /** + * Returns a boolean indicating whether the named response header + * has already been set. + * + * @param name the header name + * @return true if the named response header + * has already been set; + * false otherwise + */ + public boolean containsHeader(String name); + + /** + * Encodes the specified URL by including the session ID, + * or, if encoding is not needed, returns the URL unchanged. + * The implementation of this method includes the logic to + * determine whether the session ID needs to be encoded in the URL. + * For example, if the browser supports cookies, or session + * tracking is turned off, URL encoding is unnecessary. + * + *

For robust session tracking, all URLs emitted by a servlet + * should be run through this + * method. Otherwise, URL rewriting cannot be used with browsers + * which do not support cookies. + * + *

If the URL is relative, it is always relative to the current + * HttpServletRequest. + * + * @param url the url to be encoded. + * @return the encoded URL if encoding is needed; + * the unchanged URL otherwise. + * @exception IllegalArgumentException if the url is not valid + */ + public String encodeURL(String url); + + /** + * Encodes the specified URL for use in the + * sendRedirect method or, if encoding is not needed, + * returns the URL unchanged. The implementation of this method + * includes the logic to determine whether the session ID + * needs to be encoded in the URL. For example, if the browser supports + * cookies, or session tracking is turned off, URL encoding is + * unnecessary. Because the rules for making this determination can + * differ from those used to decide whether to + * encode a normal link, this method is separated from the + * encodeURL method. + * + *

All URLs sent to the HttpServletResponse.sendRedirect + * method should be run through this method. Otherwise, URL + * rewriting cannot be used with browsers which do not support + * cookies. + * + *

If the URL is relative, it is always relative to the current + * HttpServletRequest. + * + * @param url the url to be encoded. + * @return the encoded URL if encoding is needed; + * the unchanged URL otherwise. + * @exception IllegalArgumentException if the url is not valid + * + * @see #sendRedirect + * @see #encodeUrl + */ + public String encodeRedirectURL(String url); + + /** + * @deprecated As of version 2.1, use encodeURL(String url) instead + * + * @param url the url to be encoded. + * @return the encoded URL if encoding is needed; + * the unchanged URL otherwise. + * @exception IllegalArgumentException if the url is not valid + */ + public String encodeUrl(String url); + + /** + * @deprecated As of version 2.1, use + * encodeRedirectURL(String url) instead + * + * @param url the url to be encoded. + * @return the encoded URL if encoding is needed; + * the unchanged URL otherwise. + * @exception IllegalArgumentException if the url is not valid + */ + public String encodeRedirectUrl(String url); + + /** + * Sends an error response to the client using the specified + * status and clears the buffer. The server defaults to creating the + * response to look like an HTML-formatted server error page + * containing the specified message, setting the content type + * to "text/html". The server will preserve cookies and may clear or + * update any headers needed to serve the error page as a valid response. + * + * If an error-page declaration has been made for the web application + * corresponding to the status code passed in, it will be served back in + * preference to the suggested msg parameter and the msg parameter will + * be ignored. + * + *

If the response has already been committed, this method throws + * an IllegalStateException. + * After using this method, the response should be considered + * to be committed and should not be written to. + * + * @param sc the error status code + * @param msg the descriptive message + * @exception IOException If an input or output exception occurs + * @exception IllegalStateException If the response was committed + */ + public void sendError(int sc, String msg) throws IOException; + + /** + * Sends an error response to the client using the specified status + * code and clears the buffer. + * + * The server will preserve cookies and may clear or + * update any headers needed to serve the error page as a valid response. + * + * If an error-page declaration has been made for the web application + * corresponding to the status code passed in, it will be served back + * the error page + * + *

If the response has already been committed, this method throws + * an IllegalStateException. + * After using this method, the response should be considered + * to be committed and should not be written to. + * + * @param sc the error status code + * @exception IOException If an input or output exception occurs + * @exception IllegalStateException If the response was committed + * before this method call + */ + public void sendError(int sc) throws IOException; + + /** + * Sends a temporary redirect response to the client using the + * specified redirect location URL and clears the buffer. The buffer will + * be replaced with the data set by this method. Calling this method sets the + * status code to {@link #SC_FOUND} 302 (Found). + * This method can accept relative URLs;the servlet container must convert + * the relative URL to an absolute URL + * before sending the response to the client. If the location is relative + * without a leading '/' the container interprets it as relative to + * the current request URI. If the location is relative with a leading + * '/' the container interprets it as relative to the servlet container root. + * If the location is relative with two leading '/' the container interprets + * it as a network-path reference (see + * + * RFC 3986: Uniform Resource Identifier (URI): Generic Syntax, section 4.2 + * "Relative Reference"). + * + *

If the response has already been committed, this method throws + * an IllegalStateException. + * After using this method, the response should be considered + * to be committed and should not be written to. + * + * @param location the redirect location URL + * @exception IOException If an input or output exception occurs + * @exception IllegalStateException If the response was committed or + * if a partial URL is given and cannot be converted into a valid URL + */ + public void sendRedirect(String location) throws IOException; + + /** + * + * Sets a response header with the given name and + * date-value. The date is specified in terms of + * milliseconds since the epoch. If the header had already + * been set, the new value overwrites the previous one. The + * containsHeader method can be used to test for the + * presence of a header before setting its value. + * + * @param name the name of the header to set + * @param date the assigned date value + * + * @see #containsHeader + * @see #addDateHeader + */ + public void setDateHeader(String name, long date); + + /** + * + * Adds a response header with the given name and + * date-value. The date is specified in terms of + * milliseconds since the epoch. This method allows response headers + * to have multiple values. + * + * @param name the name of the header to set + * @param date the additional date value + * + * @see #setDateHeader + */ + public void addDateHeader(String name, long date); + + /** + * + * Sets a response header with the given name and value. + * If the header had already been set, the new value overwrites the + * previous one. The containsHeader method can be + * used to test for the presence of a header before setting its + * value. + * + * @param name the name of the header + * @param value the header value If it contains octet string, + * it should be encoded according to RFC 2047 + * (http://www.ietf.org/rfc/rfc2047.txt) + * + * @see #containsHeader + * @see #addHeader + */ + public void setHeader(String name, String value); + + /** + * Adds a response header with the given name and value. + * This method allows response headers to have multiple values. + * + * @param name the name of the header + * @param value the additional header value If it contains + * octet string, it should be encoded + * according to RFC 2047 + * (http://www.ietf.org/rfc/rfc2047.txt) + * + * @see #setHeader + */ + public void addHeader(String name, String value); + + /** + * Sets a response header with the given name and + * integer value. If the header had already been set, the new value + * overwrites the previous one. The containsHeader + * method can be used to test for the presence of a header before + * setting its value. + * + * @param name the name of the header + * @param value the assigned integer value + * + * @see #containsHeader + * @see #addIntHeader + */ + public void setIntHeader(String name, int value); + + /** + * Adds a response header with the given name and + * integer value. This method allows response headers to have multiple + * values. + * + * @param name the name of the header + * @param value the assigned integer value + * + * @see #setIntHeader + */ + public void addIntHeader(String name, int value); + + /** + * Sets the status code for this response. + * + *

This method is used to set the return status code when there is + * no error (for example, for the SC_OK or SC_MOVED_TEMPORARILY status + * codes). + * + *

If this method is used to set an error code, then the container's + * error page mechanism will not be triggered. If there is an error and + * the caller wishes to invoke an error page defined in the web + * application, then {@link #sendError} must be used instead. + * + *

This method preserves any cookies and other response headers. + * + *

Valid status codes are those in the 2XX, 3XX, 4XX, and 5XX ranges. + * Other status codes are treated as container specific. + * + * @param sc the status code + * + * @see #sendError + */ + public void setStatus(int sc); + + + /** + * @deprecated As of version 2.1, due to ambiguous meaning of the + * message parameter. To set a status code + * use setStatus(int), to send an error with a description + * use sendError(int, String). + * + * Sets the status code and message for this response. + * + * @param sc the status code + * @param sm the status message + */ + public void setStatus(int sc, String sm); + + /** + * Gets the current status code of this response. + * + * @return the current status code of this response + * + * @since Servlet 3.0 + */ + public int getStatus(); + + /** + * Gets the value of the response header with the given name. + * + *

If a response header with the given name exists and contains + * multiple values, the value that was added first will be returned. + * + *

This method considers only response headers set or added via + * {@link #setHeader}, {@link #addHeader}, {@link #setDateHeader}, + * {@link #addDateHeader}, {@link #setIntHeader}, or + * {@link #addIntHeader}, respectively. + * + * @param name the name of the response header whose value to return + * + * @return the value of the response header with the given name, + * or null if no header with the given name has been set + * on this response + * + * @since Servlet 3.0 + */ + public String getHeader(String name); + + /** + * Gets the values of the response header with the given name. + * + *

This method considers only response headers set or added via + * {@link #setHeader}, {@link #addHeader}, {@link #setDateHeader}, + * {@link #addDateHeader}, {@link #setIntHeader}, or + * {@link #addIntHeader}, respectively. + * + *

Any changes to the returned Collection must not + * affect this HttpServletResponse. + * + * @param name the name of the response header whose values to return + * + * @return a (possibly empty) Collection of the values + * of the response header with the given name + * + * @since Servlet 3.0 + */ + public Collection getHeaders(String name); + + /** + * Gets the names of the headers of this response. + * + *

This method considers only response headers set or added via + * {@link #setHeader}, {@link #addHeader}, {@link #setDateHeader}, + * {@link #addDateHeader}, {@link #setIntHeader}, or + * {@link #addIntHeader}, respectively. + * + *

Any changes to the returned Collection must not + * affect this HttpServletResponse. + * + * @return a (possibly empty) Collection of the names + * of the headers of this response + * + * @since Servlet 3.0 + */ + public Collection getHeaderNames(); + + + /* + * Server status codes; see RFC 2068. + */ + + /** + * Status code (100) indicating the client can continue. + */ + public static final int SC_CONTINUE = 100; + + /** + * Status code (101) indicating the server is switching protocols + * according to Upgrade header. + */ + public static final int SC_SWITCHING_PROTOCOLS = 101; + + /** + * Status code (200) indicating the request succeeded normally. + */ + public static final int SC_OK = 200; + + /** + * Status code (201) indicating the request succeeded and created + * a new resource on the server. + */ + public static final int SC_CREATED = 201; + + /** + * Status code (202) indicating that a request was accepted for + * processing, but was not completed. + */ + public static final int SC_ACCEPTED = 202; + + /** + * Status code (203) indicating that the meta information presented + * by the client did not originate from the server. + */ + public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203; + + /** + * Status code (204) indicating that the request succeeded but that + * there was no new information to return. + */ + public static final int SC_NO_CONTENT = 204; + + /** + * Status code (205) indicating that the agent SHOULD reset + * the document view which caused the request to be sent. + */ + public static final int SC_RESET_CONTENT = 205; + + /** + * Status code (206) indicating that the server has fulfilled + * the partial GET request for the resource. + */ + public static final int SC_PARTIAL_CONTENT = 206; + + /** + * Status code (300) indicating that the requested resource + * corresponds to any one of a set of representations, each with + * its own specific location. + */ + public static final int SC_MULTIPLE_CHOICES = 300; + + /** + * Status code (301) indicating that the resource has permanently + * moved to a new location, and that future references should use a + * new URI with their requests. + */ + public static final int SC_MOVED_PERMANENTLY = 301; + + /** + * Status code (302) indicating that the resource has temporarily + * moved to another location, but that future references should + * still use the original URI to access the resource. + * + * This definition is being retained for backwards compatibility. + * SC_FOUND is now the preferred definition. + */ + public static final int SC_MOVED_TEMPORARILY = 302; + + /** + * Status code (302) indicating that the resource reside + * temporarily under a different URI. Since the redirection might + * be altered on occasion, the client should continue to use the + * Request-URI for future requests.(HTTP/1.1) To represent the + * status code (302), it is recommended to use this variable. + */ + public static final int SC_FOUND = 302; + + /** + * Status code (303) indicating that the response to the request + * can be found under a different URI. + */ + public static final int SC_SEE_OTHER = 303; + + /** + * Status code (304) indicating that a conditional GET operation + * found that the resource was available and not modified. + */ + public static final int SC_NOT_MODIFIED = 304; + + /** + * Status code (305) indicating that the requested resource + * MUST be accessed through the proxy given by the + * Location field. + */ + public static final int SC_USE_PROXY = 305; + + /** + * Status code (307) indicating that the requested resource + * resides temporarily under a different URI. The temporary URI + * SHOULD be given by the Location + * field in the response. + */ + public static final int SC_TEMPORARY_REDIRECT = 307; + + /** + * Status code (400) indicating the request sent by the client was + * syntactically incorrect. + */ + public static final int SC_BAD_REQUEST = 400; + + /** + * Status code (401) indicating that the request requires HTTP + * authentication. + */ + public static final int SC_UNAUTHORIZED = 401; + + /** + * Status code (402) reserved for future use. + */ + public static final int SC_PAYMENT_REQUIRED = 402; + + /** + * Status code (403) indicating the server understood the request + * but refused to fulfill it. + */ + public static final int SC_FORBIDDEN = 403; + + /** + * Status code (404) indicating that the requested resource is not + * available. + */ + public static final int SC_NOT_FOUND = 404; + + /** + * Status code (405) indicating that the method specified in the + * Request-Line is not allowed for the resource + * identified by the Request-URI. + */ + public static final int SC_METHOD_NOT_ALLOWED = 405; + + /** + * Status code (406) indicating that the resource identified by the + * request is only capable of generating response entities which have + * content characteristics not acceptable according to the accept + * headers sent in the request. + */ + public static final int SC_NOT_ACCEPTABLE = 406; + + /** + * Status code (407) indicating that the client MUST first + * authenticate itself with the proxy. + */ + public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407; + + /** + * Status code (408) indicating that the client did not produce a + * request within the time that the server was prepared to wait. + */ + public static final int SC_REQUEST_TIMEOUT = 408; + + /** + * Status code (409) indicating that the request could not be + * completed due to a conflict with the current state of the + * resource. + */ + public static final int SC_CONFLICT = 409; + + /** + * Status code (410) indicating that the resource is no longer + * available at the server and no forwarding address is known. + * This condition SHOULD be considered permanent. + */ + public static final int SC_GONE = 410; + + /** + * Status code (411) indicating that the request cannot be handled + * without a defined Content-Length. + */ + public static final int SC_LENGTH_REQUIRED = 411; + + /** + * Status code (412) indicating that the precondition given in one + * or more of the request-header fields evaluated to false when it + * was tested on the server. + */ + public static final int SC_PRECONDITION_FAILED = 412; + + /** + * Status code (413) indicating that the server is refusing to process + * the request because the request entity is larger than the server is + * willing or able to process. + */ + public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413; + + /** + * Status code (414) indicating that the server is refusing to service + * the request because the Request-URI is longer + * than the server is willing to interpret. + */ + public static final int SC_REQUEST_URI_TOO_LONG = 414; + + /** + * Status code (415) indicating that the server is refusing to service + * the request because the entity of the request is in a format not + * supported by the requested resource for the requested method. + */ + public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415; + + /** + * Status code (416) indicating that the server cannot serve the + * requested byte range. + */ + public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416; + + /** + * Status code (417) indicating that the server could not meet the + * expectation given in the Expect request header. + */ + public static final int SC_EXPECTATION_FAILED = 417; + + /** + * Status code (500) indicating an error inside the HTTP server + * which prevented it from fulfilling the request. + */ + public static final int SC_INTERNAL_SERVER_ERROR = 500; + + /** + * Status code (501) indicating the HTTP server does not support + * the functionality needed to fulfill the request. + */ + public static final int SC_NOT_IMPLEMENTED = 501; + + /** + * Status code (502) indicating that the HTTP server received an + * invalid response from a server it consulted when acting as a + * proxy or gateway. + */ + public static final int SC_BAD_GATEWAY = 502; + + /** + * Status code (503) indicating that the HTTP server is + * temporarily overloaded, and unable to handle the request. + */ + public static final int SC_SERVICE_UNAVAILABLE = 503; + + /** + * Status code (504) indicating that the server did not receive + * a timely response from the upstream server while acting as + * a gateway or proxy. + */ + public static final int SC_GATEWAY_TIMEOUT = 504; + + /** + * Status code (505) indicating that the server does not support + * or refuses to support the HTTP protocol version that was used + * in the request message. + */ + public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505; +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletResponseWrapper.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletResponseWrapper.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpServletResponseWrapper.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,323 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.io.IOException; +import java.util.Collection; +import javax.servlet.ServletResponseWrapper; + +/** + * + * Provides a convenient implementation of the HttpServletResponse interface that + * can be subclassed by developers wishing to adapt the response from a Servlet. + * This class implements the Wrapper or Decorator pattern. Methods default to + * calling through to the wrapped response object. + * + * @author Various + * @since Servlet 2.3 + * + * @see javax.servlet.http.HttpServletResponse + */ + +public class HttpServletResponseWrapper extends ServletResponseWrapper implements HttpServletResponse { + + /** + * Constructs a response adaptor wrapping the given response. + * @throws java.lang.IllegalArgumentException if the response is null + */ + public HttpServletResponseWrapper(HttpServletResponse response) { + super(response); + } + + private HttpServletResponse _getHttpServletResponse() { + return (HttpServletResponse) super.getResponse(); + } + + /** + * The default behavior of this method is to call addCookie(Cookie cookie) + * on the wrapped response object. + */ + @Override + public void addCookie(Cookie cookie) { + this._getHttpServletResponse().addCookie(cookie); + } + + /** + * The default behavior of this method is to call containsHeader(String name) + * on the wrapped response object. + */ + @Override + public boolean containsHeader(String name) { + return this._getHttpServletResponse().containsHeader(name); + } + + /** + * The default behavior of this method is to call encodeURL(String url) + * on the wrapped response object. + */ + @Override + public String encodeURL(String url) { + return this._getHttpServletResponse().encodeURL(url); + } + + /** + * The default behavior of this method is to return encodeRedirectURL(String url) + * on the wrapped response object. + */ + @Override + public String encodeRedirectURL(String url) { + return this._getHttpServletResponse().encodeRedirectURL(url); + } + + /** + * The default behavior of this method is to call encodeUrl(String url) + * on the wrapped response object. + * + * @deprecated As of version 2.1, use {@link #encodeURL(String url)} + * instead + */ + @Override + public String encodeUrl(String url) { + return this._getHttpServletResponse().encodeUrl(url); + } + + /** + * The default behavior of this method is to return + * encodeRedirectUrl(String url) on the wrapped response object. + * + * @deprecated As of version 2.1, use + * {@link #encodeRedirectURL(String url)} instead + */ + @Override + public String encodeRedirectUrl(String url) { + return this._getHttpServletResponse().encodeRedirectUrl(url); + } + + /** + * The default behavior of this method is to call sendError(int sc, String msg) + * on the wrapped response object. + */ + @Override + public void sendError(int sc, String msg) throws IOException { + this._getHttpServletResponse().sendError(sc, msg); + } + + /** + * The default behavior of this method is to call sendError(int sc) + * on the wrapped response object. + */ + @Override + public void sendError(int sc) throws IOException { + this._getHttpServletResponse().sendError(sc); + } + + /** + * The default behavior of this method is to return sendRedirect(String location) + * on the wrapped response object. + */ + @Override + public void sendRedirect(String location) throws IOException { + this._getHttpServletResponse().sendRedirect(location); + } + + /** + * The default behavior of this method is to call setDateHeader(String name, long date) + * on the wrapped response object. + */ + @Override + public void setDateHeader(String name, long date) { + this._getHttpServletResponse().setDateHeader(name, date); + } + + /** + * The default behavior of this method is to call addDateHeader(String name, long date) + * on the wrapped response object. + */ + @Override + public void addDateHeader(String name, long date) { + this._getHttpServletResponse().addDateHeader(name, date); + } + + /** + * The default behavior of this method is to return setHeader(String name, String value) + * on the wrapped response object. + */ + @Override + public void setHeader(String name, String value) { + this._getHttpServletResponse().setHeader(name, value); + } + + /** + * The default behavior of this method is to return addHeader(String name, String value) + * on the wrapped response object. + */ + @Override + public void addHeader(String name, String value) { + this._getHttpServletResponse().addHeader(name, value); + } + + /** + * The default behavior of this method is to call setIntHeader(String name, int value) + * on the wrapped response object. + */ + @Override + public void setIntHeader(String name, int value) { + this._getHttpServletResponse().setIntHeader(name, value); + } + + /** + * The default behavior of this method is to call addIntHeader(String name, int value) + * on the wrapped response object. + */ + @Override + public void addIntHeader(String name, int value) { + this._getHttpServletResponse().addIntHeader(name, value); + } + + /** + * The default behavior of this method is to call setStatus(int sc) + * on the wrapped response object. + */ + @Override + public void setStatus(int sc) { + this._getHttpServletResponse().setStatus(sc); + } + + /** + * The default behavior of this method is to call + * setStatus(int sc, String sm) on the wrapped response object. + * + * @deprecated As of version 2.1, due to ambiguous meaning of the + * message parameter. To set a status code + * use {@link #setStatus(int)}, to send an error with a description + * use {@link #sendError(int, String)} + */ + @Override + public void setStatus(int sc, String sm) { + this._getHttpServletResponse().setStatus(sc, sm); + } + + /** + * The default behaviour of this method is to call + * {@link HttpServletResponse#getStatus} on the wrapped response + * object. + * + * @return the current status code of the wrapped response + */ + @Override + public int getStatus() { + return _getHttpServletResponse().getStatus(); + } + + /** + * The default behaviour of this method is to call + * {@link HttpServletResponse#getHeader} on the wrapped response + * object. + * + * @param name the name of the response header whose value to return + * + * @return the value of the response header with the given name, + * or null if no header with the given name has been set + * on the wrapped response + * + * @since Servlet 3.0 + */ + @Override + public String getHeader(String name) { + return _getHttpServletResponse().getHeader(name); + } + + /** + * The default behaviour of this method is to call + * {@link HttpServletResponse#getHeaders} on the wrapped response + * object. + * + *

Any changes to the returned Collection must not + * affect this HttpServletResponseWrapper. + * + * @param name the name of the response header whose values to return + * + * @return a (possibly empty) Collection of the values + * of the response header with the given name + * + * @since Servlet 3.0 + */ + @Override + public Collection getHeaders(String name) { + return _getHttpServletResponse().getHeaders(name); + } + + /** + * The default behaviour of this method is to call + * {@link HttpServletResponse#getHeaderNames} on the wrapped response + * object. + * + *

Any changes to the returned Collection must not + * affect this HttpServletResponseWrapper. + * + * @return a (possibly empty) Collection of the names + * of the response headers + * + * @since Servlet 3.0 + */ + @Override + public Collection getHeaderNames() { + return _getHttpServletResponse().getHeaderNames(); + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSession.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSession.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSession.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,384 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.util.Enumeration; +import javax.servlet.ServletContext; + +/** + * + * Provides a way to identify a user across more than one page + * request or visit to a Web site and to store information about that user. + * + *

The servlet container uses this interface to create a session + * between an HTTP client and an HTTP server. The session persists + * for a specified time period, across more than one connection or + * page request from the user. A session usually corresponds to one + * user, who may visit a site many times. The server can maintain a + * session in many ways such as using cookies or rewriting URLs. + * + *

This interface allows servlets to + *

    + *
  • View and manipulate information about a session, such as + * the session identifier, creation time, and last accessed time + *
  • Bind objects to sessions, allowing user information to persist + * across multiple user connections + *
+ * + *

When an application stores an object in or removes an object from a + * session, the session checks whether the object implements + * {@link HttpSessionBindingListener}. If it does, + * the servlet notifies the object that it has been bound to or unbound + * from the session. Notifications are sent after the binding methods complete. + * For session that are invalidated or expire, notifications are sent after + * the session has been invalidated or expired. + * + *

When container migrates a session between VMs in a distributed container + * setting, all session attributes implementing the {@link HttpSessionActivationListener} + * interface are notified. + * + *

A servlet should be able to handle cases in which + * the client does not choose to join a session, such as when cookies are + * intentionally turned off. Until the client joins the session, + * isNew returns true. If the client chooses + * not to join + * the session, getSession will return a different session + * on each request, and isNew will always return + * true. + * + *

Session information is scoped only to the current web application + * (ServletContext), so information stored in one context + * will not be directly visible in another. + * + * @author Various + * + * @see HttpSessionBindingListener + * @see HttpSessionContext + */ + +public interface HttpSession { + + /** + * + * Returns the time when this session was created, measured + * in milliseconds since midnight January 1, 1970 GMT. + * + * @return a long specifying + * when this session was created, + * expressed in + * milliseconds since 1/1/1970 GMT + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public long getCreationTime(); + + + /** + * Returns a string containing the unique identifier assigned + * to this session. The identifier is assigned + * by the servlet container and is implementation dependent. + * + * @return a string specifying the identifier + * assigned to this session + */ + public String getId(); + + + /** + * + * Returns the last time the client sent a request associated with + * this session, as the number of milliseconds since midnight + * January 1, 1970 GMT, and marked by the time the container received the + * request. + * + *

Actions that your application takes, such as getting or setting + * a value associated with the session, do not affect the access + * time. + * + * @return a long + * representing the last time + * the client sent a request associated + * with this session, expressed in + * milliseconds since 1/1/1970 GMT + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public long getLastAccessedTime(); + + + /** + * Returns the ServletContext to which this session belongs. + * + * @return The ServletContext object for the web application + * @since Servlet 2.3 + */ + public ServletContext getServletContext(); + + + /** + * Specifies the time, in seconds, between client requests before the + * servlet container will invalidate this session. + * + *

An interval value of zero or less indicates that the + * session should never timeout. + * + * @param interval An integer specifying the number + * of seconds + */ + public void setMaxInactiveInterval(int interval); + + + /** + * Returns the maximum time interval, in seconds, that + * the servlet container will keep this session open between + * client accesses. After this interval, the servlet container + * will invalidate the session. The maximum time interval can be set + * with the setMaxInactiveInterval method. + * + *

A return value of zero or less indicates that the + * session will never timeout. + * + * @return an integer specifying the number of + * seconds this session remains open + * between client requests + * + * @see #setMaxInactiveInterval + */ + public int getMaxInactiveInterval(); + + + /** + * + * @deprecated As of Version 2.1, this method is + * deprecated and has no replacement. + * It will be removed in a future + * version of the Java Servlet API. + * + */ + public HttpSessionContext getSessionContext(); + + + /** + * Returns the object bound with the specified name in this session, or + * null if no object is bound under the name. + * + * @param name a string specifying the name of the object + * + * @return the object with the specified name + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public Object getAttribute(String name); + + + /** + * @deprecated As of Version 2.2, this method is + * replaced by {@link #getAttribute}. + * + * @param name a string specifying the name of the object + * + * @return the object with the specified name + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public Object getValue(String name); + + + /** + * Returns an Enumeration of String objects + * containing the names of all the objects bound to this session. + * + * @return an Enumeration of + * String objects specifying the + * names of all the objects bound to + * this session + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public Enumeration getAttributeNames(); + + + /** + * @deprecated As of Version 2.2, this method is + * replaced by {@link #getAttributeNames} + * + * @return an array of String + * objects specifying the + * names of all the objects bound to + * this session + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public String[] getValueNames(); + + + /** + * Binds an object to this session, using the name specified. + * If an object of the same name is already bound to the session, + * the object is replaced. + * + *

After this method executes, and if the new object + * implements HttpSessionBindingListener, + * the container calls + * HttpSessionBindingListener.valueBound. The container then + * notifies any HttpSessionAttributeListeners in the web + * application. + + *

If an object was already bound to this session of this name + * that implements HttpSessionBindingListener, its + * HttpSessionBindingListener.valueUnbound method is called. + * + *

If the value passed in is null, this has the same effect as calling + * removeAttribute(). + * + * + * @param name the name to which the object is bound; + * cannot be null + * + * @param value the object to be bound + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public void setAttribute(String name, Object value); + + + /** + * @deprecated As of Version 2.2, this method is + * replaced by {@link #setAttribute} + * + * @param name the name to which the object is bound; + * cannot be null + * + * @param value the object to be bound; cannot be null + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public void putValue(String name, Object value); + + + /** + * Removes the object bound with the specified name from + * this session. If the session does not have an object + * bound with the specified name, this method does nothing. + * + *

After this method executes, and if the object + * implements HttpSessionBindingListener, + * the container calls + * HttpSessionBindingListener.valueUnbound. The container + * then notifies any HttpSessionAttributeListeners in the web + * application. + * + * @param name the name of the object to + * remove from this session + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public void removeAttribute(String name); + + + /** + * @deprecated As of Version 2.2, this method is + * replaced by {@link #removeAttribute} + * + * @param name the name of the object to + * remove from this session + * + * @exception IllegalStateException if this method is called on an + * invalidated session + */ + public void removeValue(String name); + + + /** + * Invalidates this session then unbinds any objects bound + * to it. + * + * @exception IllegalStateException if this method is called on an + * already invalidated session + */ + public void invalidate(); + + + /** + * Returns true if the client does not yet know about the + * session or if the client chooses not to join the session. For + * example, if the server used only cookie-based sessions, and + * the client had disabled the use of cookies, then a session would + * be new on each request. + * + * @return true if the + * server has created a session, + * but the client has not yet joined + * + * @exception IllegalStateException if this method is called on an + * already invalidated session + */ + public boolean isNew(); + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionActivationListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionActivationListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionActivationListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,79 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.util.EventListener; + + /** Objects that are bound to a session may listen to container + ** events notifying them that sessions will be passivated and that + ** session will be activated. A container that migrates session between VMs + ** or persists sessions is required to notify all attributes bound to sessions + ** implementing HttpSessionActivationListener. + ** + * @since Servlet 2.3 + */ + +public interface HttpSessionActivationListener extends EventListener { + + /** Notification that the session is about to be passivated.*/ + public void sessionWillPassivate(HttpSessionEvent se); + /** Notification that the session has just been activated.*/ + public void sessionDidActivate(HttpSessionEvent se); +} + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionAttributeListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionAttributeListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionAttributeListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,109 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.util.EventListener; + +/** + * Interface for receiving notification events about HttpSession + * attribute changes. + * + *

In order to receive these notification events, the implementation + * class must be either declared in the deployment descriptor of the web + * application, annotated with {@link javax.servlet.annotation.WebListener}, + * or registered via one of the addListener methods defined on + * {@link javax.servlet.ServletContext}. + * + *

The order in which implementations of this interface are invoked is + * unspecified. + * + * @since Servlet 2.3 + */ + +public interface HttpSessionAttributeListener extends EventListener { + + /** + * Receives notification that an attribute has been added to a + * session. + * + * @param event the HttpSessionBindingEvent containing the session + * and the name and value of the attribute that was added + */ + public void attributeAdded(HttpSessionBindingEvent event); + + /** + * Receives notification that an attribute has been removed from a + * session. + * + * @param event the HttpSessionBindingEvent containing the session + * and the name and value of the attribute that was removed + */ + public void attributeRemoved(HttpSessionBindingEvent event); + + /** + * Receives notification that an attribute has been replaced in a + * session. + * + * @param event the HttpSessionBindingEvent containing the session + * and the name and (old) value of the attribute that was replaced + */ + public void attributeReplaced(HttpSessionBindingEvent event); + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionBindingEvent.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionBindingEvent.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionBindingEvent.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,156 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +/** + * + * Events of this type are either sent to an object that implements + * {@link HttpSessionBindingListener} when it is bound or unbound from a + * session, or to a {@link HttpSessionAttributeListener} that has been + * configured in the deployment descriptor when any attribute is bound, unbound + * or replaced in a session. + * + *

The session binds the object by a call to + * HttpSession.setAttribute and unbinds the object + * by a call to HttpSession.removeAttribute. + * + * @author Various + * + * @see HttpSession + * @see HttpSessionBindingListener + * @see HttpSessionAttributeListener + */ + +public class HttpSessionBindingEvent extends HttpSessionEvent { + + private static final long serialVersionUID = 7308000419984825907L; + + /* The name to which the object is being bound or unbound */ + private String name; + + /* The object is being bound or unbound */ + private Object value; + + /** + * + * Constructs an event that notifies an object that it + * has been bound to or unbound from a session. + * To receive the event, the object must implement + * {@link HttpSessionBindingListener}. + * + * @param session the session to which the object is bound or unbound + * @param name the name with which the object is bound or unbound + * + * @see #getName + * @see #getSession + */ + public HttpSessionBindingEvent(HttpSession session, String name) { + super(session); + this.name = name; + } + + /** + * + * Constructs an event that notifies an object that it + * has been bound to or unbound from a session. + * To receive the event, the object must implement + * {@link HttpSessionBindingListener}. + * + * @param session the session to which the object is bound or unbound + * @param name the name with which the object is bound or unbound + * + * @see #getName + * @see #getSession + */ + public HttpSessionBindingEvent(HttpSession session, String name, Object value) { + super(session); + this.name = name; + this.value = value; + } + + /** Return the session that changed. */ + @Override + public HttpSession getSession () { + return super.getSession(); + } + + /** + * Returns the name with which the attribute is bound to or + * unbound from the session. + * + * @return a string specifying the name with which + * the object is bound to or unbound from the session + */ + public String getName() { + return name; + } + + /** + * Returns the value of the attribute that has been added, removed or + * replaced. If the attribute was added (or bound), this is the value of the + * attribute. If the attribute was removed (or unbound), this is the value + * of the removed attribute. If the attribute was replaced, this is the old + * value of the attribute. + * + * @since Servlet 2.3 + */ + public Object getValue() { + return this.value; + } +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionBindingListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionBindingListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionBindingListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,118 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.util.EventListener; + + + + + +/** + * Causes an object to be notified when it is bound to + * or unbound from a session. The object is notified + * by an {@link HttpSessionBindingEvent} object. This may be as a result + * of a servlet programmer explicitly unbinding an attribute from a session, + * due to a session being invalidated, or due to a session timing out. + * + * + * @author Various + * + * @see HttpSession + * @see HttpSessionBindingEvent + * + */ + +public interface HttpSessionBindingListener extends EventListener { + + + + /** + * + * Notifies the object that it is being bound to + * a session and identifies the session. + * + * @param event the event that identifies the + * session + * + * @see #valueUnbound + * + */ + + public void valueBound(HttpSessionBindingEvent event); + + + + /** + * + * Notifies the object that it is being unbound + * from a session and identifies the session. + * + * @param event the event that identifies + * the session + * + * @see #valueBound + * + */ + + public void valueUnbound(HttpSessionBindingEvent event); + + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionContext.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionContext.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionContext.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,110 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.util.Enumeration; + +/** + * + * @author Various + * + * @deprecated As of Java(tm) Servlet API 2.1 + * for security reasons, with no replacement. + * This interface will be removed in a future + * version of this API. + * + * @see HttpSession + * @see HttpSessionBindingEvent + * @see HttpSessionBindingListener + * + */ + + +public interface HttpSessionContext { + + /** + * + * @deprecated As of Java Servlet API 2.1 with + * no replacement. This method must + * return null and will be removed in + * a future version of this API. + * + */ + + public HttpSession getSession(String sessionId); + + + + + /** + * + * @deprecated As of Java Servlet API 2.1 with + * no replacement. This method must return + * an empty Enumeration and will be removed + * in a future version of this API. + * + */ + + public Enumeration getIds(); +} + + + + + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionEvent.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionEvent.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionEvent.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,85 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +/** + * This is the class representing event notifications for changes to + * sessions within a web application. + * + * @since Servlet 2.3 + */ +public class HttpSessionEvent extends java.util.EventObject { + + private static final long serialVersionUID = -7622791603672342895L; + + /** + * Construct a session event from the given source. + */ + public HttpSessionEvent(HttpSession source) { + super(source); + } + + /** + * Return the session that changed. + */ + public HttpSession getSession () { + return (HttpSession) super.getSource(); + } +} + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionIdListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionIdListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionIdListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,75 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + */ + +package javax.servlet.http; + +import java.util.EventListener; + +/** + * Interface for receiving notification events about HttpSession + * id changes. + * + *

In order to receive these notification events, the implementation + * class must be either declared in the deployment descriptor of the web + * application, annotated with {@link javax.servlet.annotation.WebListener}, + * or registered via one of the addListener methods defined on + * {@link javax.servlet.ServletContext}. + * + *

The order in which implementations of this interface are invoked is + * unspecified. + * + * @since Servlet 3.1 + */ + +public interface HttpSessionIdListener extends EventListener { + + /** + * Receives notification that session id has been changed in a + * session. + * + * @param event the HttpSessionBindingEvent containing the session + * and the name and (old) value of the attribute that was replaced + * + * @param oldSessionId the old session id + */ + public void sessionIdChanged(HttpSessionEvent event, String oldSessionId); + +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionListener.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionListener.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpSessionListener.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,99 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import java.util.EventListener; + +/** + * Interface for receiving notification events about HttpSession + * lifecycle changes. + * + *

In order to receive these notification events, the implementation + * class must be either declared in the deployment descriptor of the web + * application, annotated with {@link javax.servlet.annotation.WebListener}, + * or registered via one of the addListener methods defined on + * {@link javax.servlet.ServletContext}. + * + *

Implementations of this interface are invoked at their + * {@link #sessionCreated} method in the order in which they have been + * declared, and at their {@link #sessionDestroyed} method in reverse + * order. + * + * @see HttpSessionEvent + * + * @since Servlet 2.3 + */ +public interface HttpSessionListener extends EventListener { + + /** + * Receives notification that a session has been created. + * + * @param se the HttpSessionEvent containing the session + */ + public void sessionCreated(HttpSessionEvent se); + + /** + * Receives notification that a session is about to be invalidated. + * + * @param se the HttpSessionEvent containing the session + */ + public void sessionDestroyed(HttpSessionEvent se); + +} + Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpUpgradeHandler.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpUpgradeHandler.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpUpgradeHandler.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,64 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.http; + +/** + * This interface encapsulates the upgrade protocol processing. + * A HttpUpgradeHandler implementation would allow the servlet container + * to communicate with it. + * + * @since Servlet 3.1 + */ + +public interface HttpUpgradeHandler { + /** + * It is called once the HTTP Upgrade process has been completed and + * the upgraded connection is ready to start using the new protocol. + * + * @param wc the WebConnection object associated to this upgrade request + */ + public void init(WebConnection wc); + + /** + * It is called when the client is disconnected. + */ + public void destroy(); +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/HttpUtils.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/HttpUtils.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/HttpUtils.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,327 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2004 The Apache Software Foundation + * + * 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 javax.servlet.http; + +import javax.servlet.ServletInputStream; +import java.util.Hashtable; +import java.util.ResourceBundle; +import java.util.StringTokenizer; +import java.io.IOException; + +/** + * @deprecated As of Java(tm) Servlet API 2.3. + * These methods were only useful + * with the default encoding and have been moved + * to the request interfaces. + * + */ +public class HttpUtils { + + private static final String LSTRING_FILE = + "javax.servlet.http.LocalStrings"; + private static ResourceBundle lStrings = + ResourceBundle.getBundle(LSTRING_FILE); + + + /** + * Constructs an empty HttpUtils object. + */ + public HttpUtils() {} + + + /** + * Parses a query string passed from the client to the + * server and builds a HashTable object + * with key-value pairs. + * The query string should be in the form of a string + * packaged by the GET or POST method, that is, it + * should have key-value pairs in the form key=value, + * with each pair separated from the next by a & character. + * + *

A key can appear more than once in the query string + * with different values. However, the key appears only once in + * the hashtable, with its value being + * an array of strings containing the multiple values sent + * by the query string. + * + *

The keys and values in the hashtable are stored in their + * decoded form, so + * any + characters are converted to spaces, and characters + * sent in hexadecimal notation (like %xx) are + * converted to ASCII characters. + * + * @param s a string containing the query to be parsed + * + * @return a HashTable object built + * from the parsed key-value pairs + * + * @exception IllegalArgumentException if the query string is invalid + */ + public static Hashtable parseQueryString(String s) { + + String valArray[] = null; + + if (s == null) { + throw new IllegalArgumentException(); + } + + Hashtable ht = new Hashtable(); + StringBuilder sb = new StringBuilder(); + StringTokenizer st = new StringTokenizer(s, "&"); + while (st.hasMoreTokens()) { + String pair = st.nextToken(); + int pos = pair.indexOf('='); + if (pos == -1) { + // XXX + // should give more detail about the illegal argument + throw new IllegalArgumentException(); + } + String key = parseName(pair.substring(0, pos), sb); + String val = parseName(pair.substring(pos+1, pair.length()), sb); + if (ht.containsKey(key)) { + String oldVals[] = ht.get(key); + valArray = new String[oldVals.length + 1]; + for (int i = 0; i < oldVals.length; i++) { + valArray[i] = oldVals[i]; + } + valArray[oldVals.length] = val; + } else { + valArray = new String[1]; + valArray[0] = val; + } + ht.put(key, valArray); + } + + return ht; + } + + + /** + * + * Parses data from an HTML form that the client sends to + * the server using the HTTP POST method and the + * application/x-www-form-urlencoded MIME type. + * + *

The data sent by the POST method contains key-value + * pairs. A key can appear more than once in the POST data + * with different values. However, the key appears only once in + * the hashtable, with its value being + * an array of strings containing the multiple values sent + * by the POST method. + * + *

The keys and values in the hashtable are stored in their + * decoded form, so + * any + characters are converted to spaces, and characters + * sent in hexadecimal notation (like %xx) are + * converted to ASCII characters. + * + * @param len an integer specifying the length, + * in characters, of the + * ServletInputStream + * object that is also passed to this + * method + * + * @param in the ServletInputStream + * object that contains the data sent + * from the client + * + * @return a HashTable object built + * from the parsed key-value pairs + * + * @exception IllegalArgumentException if the data + * sent by the POST method is invalid + */ + public static Hashtable parsePostData(int len, + ServletInputStream in) { + // XXX + // should a length of 0 be an IllegalArgumentException + + if (len <=0) { + // cheap hack to return an empty hash + return new Hashtable(); + } + + if (in == null) { + throw new IllegalArgumentException(); + } + + // + // Make sure we read the entire POSTed body. + // + byte[] postedBytes = new byte [len]; + try { + int offset = 0; + + do { + int inputLen = in.read (postedBytes, offset, len - offset); + if (inputLen <= 0) { + String msg = lStrings.getString("err.io.short_read"); + throw new IllegalArgumentException (msg); + } + offset += inputLen; + } while ((len - offset) > 0); + + } catch (IOException e) { + throw new IllegalArgumentException(e.getMessage()); + } + + // XXX we shouldn't assume that the only kind of POST body + // is FORM data encoded using ASCII or ISO Latin/1 ... or + // that the body should always be treated as FORM data. + // + + try { + String postedBody = new String(postedBytes, 0, len, "8859_1"); + return parseQueryString(postedBody); + } catch (java.io.UnsupportedEncodingException e) { + // XXX function should accept an encoding parameter & throw this + // exception. Otherwise throw something expected. + throw new IllegalArgumentException(e.getMessage()); + } + } + + + /* + * Parse a name in the query string. + */ + private static String parseName(String s, StringBuilder sb) { + sb.setLength(0); + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + switch (c) { + case '+': + sb.append(' '); + break; + case '%': + try { + sb.append((char) Integer.parseInt(s.substring(i+1, i+3), + 16)); + i += 2; + } catch (NumberFormatException e) { + // XXX + // need to be more specific about illegal arg + throw new IllegalArgumentException(); + } catch (StringIndexOutOfBoundsException e) { + String rest = s.substring(i); + sb.append(rest); + if (rest.length()==2) + i++; + } + + break; + default: + sb.append(c); + break; + } + } + + return sb.toString(); + } + + + /** + * + * Reconstructs the URL the client used to make the request, + * using information in the HttpServletRequest object. + * The returned URL contains a protocol, server name, port + * number, and server path, but it does not include query + * string parameters. + * + *

Because this method returns a StringBuffer, + * not a string, you can modify the URL easily, for example, + * to append query parameters. + * + *

This method is useful for creating redirect messages + * and for reporting errors. + * + * @param req a HttpServletRequest object + * containing the client's request + * + * @return a StringBuffer object containing + * the reconstructed URL + */ + public static StringBuffer getRequestURL (HttpServletRequest req) { + StringBuffer url = new StringBuffer(); + String scheme = req.getScheme (); + int port = req.getServerPort (); + String urlPath = req.getRequestURI(); + + //String servletPath = req.getServletPath (); + //String pathInfo = req.getPathInfo (); + + url.append (scheme); // http, https + url.append ("://"); + url.append (req.getServerName ()); + if ((scheme.equals ("http") && port != 80) + || (scheme.equals ("https") && port != 443)) { + url.append (':'); + url.append (req.getServerPort ()); + } + //if (servletPath != null) + // url.append (servletPath); + //if (pathInfo != null) + // url.append (pathInfo); + url.append(urlPath); + + return url; + } +} + + + Index: 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings.properties =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings.properties (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings.properties (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,75 @@ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common Development +# and Distribution License("CDDL") (collectively, the "License"). You +# may not use this file except in compliance with the License. You can +# obtain a copy of the License at +# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html +# or packager/legal/LICENSE.txt. See the License for the specific +# language governing permissions and limitations under the License. +# +# When distributing the software, include this License Header Notice in each +# file and include the License file at packager/legal/LICENSE.txt. +# +# GPL Classpath Exception: +# Oracle designates this particular file as subject to the "Classpath" +# exception as provided by Oracle in the GPL Version 2 section of the License +# file that accompanied this code. +# +# Modifications: +# If applicable, add the following below the License Header, with the fields +# enclosed by brackets [] replaced by your own identifying information: +# "Portions Copyright [year] [name of copyright owner]" +# +# Contributor(s): +# If you wish your version of this file to be governed by only the CDDL or +# only the GPL Version 2, indicate your decision by adding "[Contributor] +# elects to include this software in this distribution under the [CDDL or GPL +# Version 2] license." If you don't indicate a single choice of license, a +# recipient has the option to distribute your version of this file under +# either the CDDL, the GPL Version 2 or to extend the choice of license to +# its licensees as provided above. However, if you add GPL Version 2 code +# and therefore, elected the GPL Version 2 license, then the option applies +# only if the new code is made subject to such option by the copyright +# holder. +# +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright 2004 The Apache Software Foundation +# +# 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. +# + +# Default localized string information +# Localized for Locale en_US + +err.cookie_name_is_token=Cookie name \"{0}\" is a reserved token +err.cookie_name_blank=Cookie name must not be null or empty +err.io.nullArray=Null passed for byte array in write method +err.io.indexOutOfBounds=Invalid offset [{0}] and / or length [{1}] specified for array of size [{2}] +err.io.short_read=Short Read +err.ise.getWriter=Illegal to call getWriter() after getOutputStream() has been called +err.ise.getOutputStream=Illegal to call getOutputStream() after getWriter() has been called + +http.method_not_implemented=Method {0} is not defined in RFC 2068 and is not supported by the Servlet API + +http.method_get_not_supported=HTTP method GET is not supported by this URL +http.method_post_not_supported=HTTP method POST is not supported by this URL +http.method_put_not_supported=HTTP method PUT is not supported by this URL +http.method_delete_not_supported=Http method DELETE is not supported by this URL Index: 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_es.properties =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_es.properties (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_es.properties (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,73 @@ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common Development +# and Distribution License("CDDL") (collectively, the "License"). You +# may not use this file except in compliance with the License. You can +# obtain a copy of the License at +# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html +# or packager/legal/LICENSE.txt. See the License for the specific +# language governing permissions and limitations under the License. +# +# When distributing the software, include this License Header Notice in each +# file and include the License file at packager/legal/LICENSE.txt. +# +# GPL Classpath Exception: +# Oracle designates this particular file as subject to the "Classpath" +# exception as provided by Oracle in the GPL Version 2 section of the License +# file that accompanied this code. +# +# Modifications: +# If applicable, add the following below the License Header, with the fields +# enclosed by brackets [] replaced by your own identifying information: +# "Portions Copyright [year] [name of copyright owner]" +# +# Contributor(s): +# If you wish your version of this file to be governed by only the CDDL or +# only the GPL Version 2, indicate your decision by adding "[Contributor] +# elects to include this software in this distribution under the [CDDL or GPL +# Version 2] license." If you don't indicate a single choice of license, a +# recipient has the option to distribute your version of this file under +# either the CDDL, the GPL Version 2 or to extend the choice of license to +# its licensees as provided above. However, if you add GPL Version 2 code +# and therefore, elected the GPL Version 2 license, then the option applies +# only if the new code is made subject to such option by the copyright +# holder. +# +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright 2004 The Apache Software Foundation +# +# 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. +# + +# $Id$ +# +# Default localized string information +# Localized para Locale es_ES + +err.cookie_name_is_token=El Nombre de Cookie {0} es una palabra reservada +err.io.negativelength=Longitud Negativa en el metodo write +err.io.short_read=Lectura Corta + +http.method_not_implemented=El Metodo {0} no esta definido en la especificacion RFC 2068 y no es soportado por la API Servlet + +http.method_get_not_supported=El Metodo HTTP GET no es soportado por esta URL +http.method_post_not_supported=El Metodo HTTP POST no es soportado por esta URL +http.method_put_not_supported=El Metodo HTTP PUT no es soportado por esta URL +http.method_delete_not_supported=El Metodo HTTP DELETE no es soportado por esta URL Index: 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_fr.properties =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_fr.properties (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_fr.properties (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,71 @@ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common Development +# and Distribution License("CDDL") (collectively, the "License"). You +# may not use this file except in compliance with the License. You can +# obtain a copy of the License at +# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html +# or packager/legal/LICENSE.txt. See the License for the specific +# language governing permissions and limitations under the License. +# +# When distributing the software, include this License Header Notice in each +# file and include the License file at packager/legal/LICENSE.txt. +# +# GPL Classpath Exception: +# Oracle designates this particular file as subject to the "Classpath" +# exception as provided by Oracle in the GPL Version 2 section of the License +# file that accompanied this code. +# +# Modifications: +# If applicable, add the following below the License Header, with the fields +# enclosed by brackets [] replaced by your own identifying information: +# "Portions Copyright [year] [name of copyright owner]" +# +# Contributor(s): +# If you wish your version of this file to be governed by only the CDDL or +# only the GPL Version 2, indicate your decision by adding "[Contributor] +# elects to include this software in this distribution under the [CDDL or GPL +# Version 2] license." If you don't indicate a single choice of license, a +# recipient has the option to distribute your version of this file under +# either the CDDL, the GPL Version 2 or to extend the choice of license to +# its licensees as provided above. However, if you add GPL Version 2 code +# and therefore, elected the GPL Version 2 license, then the option applies +# only if the new code is made subject to such option by the copyright +# holder. +# +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright 2004 The Apache Software Foundation +# +# 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. +# + +# Default localized string information +# Localized for Locale fr_FR + +err.cookie_name_is_token=Le nom de cookie \"{0}\" est un \"token\" r�serv� +err.io.negativelength=Taille n�gative donn�e dans la m�thode \"write\" +err.io.short_read=Lecture partielle + +http.method_not_implemented=Le m�thode {0} n''est pas d�finie dans la RFC 2068 et n''est pas support�e par l''API Servlet + +http.method_get_not_supported=La m�thode HTTP GET n''est pas support�e par cette URL +http.method_post_not_supported=La m�thode HTTP POST n''est pas support�e par cette URL +http.method_put_not_supported=La m�thode HTTP PUT n''est pas support�e par cette URL +http.method_delete_not_supported=La m�thode HTTP DELETE n''est pas support�e par cette URL Index: 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_ja.properties =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_ja.properties (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/LocalStrings_ja.properties (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,71 @@ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common Development +# and Distribution License("CDDL") (collectively, the "License"). You +# may not use this file except in compliance with the License. You can +# obtain a copy of the License at +# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html +# or packager/legal/LICENSE.txt. See the License for the specific +# language governing permissions and limitations under the License. +# +# When distributing the software, include this License Header Notice in each +# file and include the License file at packager/legal/LICENSE.txt. +# +# GPL Classpath Exception: +# Oracle designates this particular file as subject to the "Classpath" +# exception as provided by Oracle in the GPL Version 2 section of the License +# file that accompanied this code. +# +# Modifications: +# If applicable, add the following below the License Header, with the fields +# enclosed by brackets [] replaced by your own identifying information: +# "Portions Copyright [year] [name of copyright owner]" +# +# Contributor(s): +# If you wish your version of this file to be governed by only the CDDL or +# only the GPL Version 2, indicate your decision by adding "[Contributor] +# elects to include this software in this distribution under the [CDDL or GPL +# Version 2] license." If you don't indicate a single choice of license, a +# recipient has the option to distribute your version of this file under +# either the CDDL, the GPL Version 2 or to extend the choice of license to +# its licensees as provided above. However, if you add GPL Version 2 code +# and therefore, elected the GPL Version 2 license, then the option applies +# only if the new code is made subject to such option by the copyright +# holder. +# +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright 2004 The Apache Software Foundation +# +# 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. +# + +# Default localized string information +# Localized for Locale ja_JP + +err.cookie_name_is_token=\u30af\u30c3\u30ad\u30fc\u540d \"{0}\" \u306f\u4e88\u7d04\u6e08\u306e\u30c8\u30fc\u30af\u30f3\u3067\u3059\u3002 +err.io.negativelength=write\u30e1\u30bd\u30c3\u30c9\u306b\u8ca0\u306e\u9577\u3055\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 +err.io.short_read=\u8aad\u307f\u8fbc\u307f\u304c\u3059\u3050\u306b\u7d42\u308f\u308a\u307e\u3057\u305f\u3002 + +http.method_not_implemented=\u30e1\u30bd\u30c3\u30c9 {0} \u306fRFC 2068\u306b\u306f\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8API\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002 + +http.method_get_not_supported=HTTP\u306eGET\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +http.method_post_not_supported=HTTP\u306ePOST\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +http.method_put_not_supported=HTTP\u306ePUT\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +http.method_delete_not_supported=HTTP\u306eDELETE\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 Index: 3rdParty_sources/servlet-api/javax/servlet/http/Part.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/Part.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/Part.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,168 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.http; + +import java.io.*; +import java.util.*; + +/** + *

This class represents a part or form item that was received within a + * multipart/form-data POST request. + * + * @since Servlet 3.0 + */ +public interface Part { + + /** + * Gets the content of this part as an InputStream + * + * @return The content of this part as an InputStream + * @throws IOException If an error occurs in retrieving the contet + * as an InputStream + */ + public InputStream getInputStream() throws IOException; + + /** + * Gets the content type of this part. + * + * @return The content type of this part. + */ + public String getContentType(); + + /** + * Gets the name of this part + * + * @return The name of this part as a String + */ + public String getName(); + + /** + * Gets the file name specified by the client + * + * @return the submitted file name + * + * @since Servlet 3.1 + */ + public String getSubmittedFileName(); + + /** + * Returns the size of this fille. + * + * @return a long specifying the size of this part, in bytes. + */ + public long getSize(); + + /** + * A convenience method to write this uploaded item to disk. + * + *

This method is not guaranteed to succeed if called more than once for + * the same part. This allows a particular implementation to use, for + * example, file renaming, where possible, rather than copying all of the + * underlying data, thus gaining a significant performance benefit. + * + * @param fileName the name of the file to which the stream will be + * written. The file is created relative to the location as + * specified in the MultipartConfig + * + * @throws IOException if an error occurs. + */ + public void write(String fileName) throws IOException; + + /** + * Deletes the underlying storage for a file item, including deleting any + * associated temporary disk file. + * + * @throws IOException if an error occurs. + */ + public void delete() throws IOException; + + /** + * + * Returns the value of the specified mime header + * as a String. If the Part did not include a header + * of the specified name, this method returns null. + * If there are multiple headers with the same name, this method + * returns the first header in the part. + * The header name is case insensitive. You can use + * this method with any request header. + * + * @param name a String specifying the + * header name + * + * @return a String containing the + * value of the requested + * header, or null + * if the part does not + * have a header of that name + */ + public String getHeader(String name); + + /** + * Gets the values of the Part header with the given name. + * + *

Any changes to the returned Collection must not + * affect this Part. + * + *

Part header names are case insensitive. + * + * @param name the header name whose values to return + * + * @return a (possibly empty) Collection of the values of + * the header with the given name + */ + public Collection getHeaders(String name); + + /** + * Gets the header names of this Part. + * + *

Some servlet containers do not allow + * servlets to access headers using this method, in + * which case this method returns null + * + *

Any changes to the returned Collection must not + * affect this Part. + * + * @return a (possibly empty) Collection of the header + * names of this Part + */ + public Collection getHeaderNames(); + +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/WebConnection.java =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/WebConnection.java (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/WebConnection.java (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,73 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2012-2013 Oracle and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html + * or packager/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at packager/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * Oracle designates this particular file as subject to the "Classpath" + * exception as provided by Oracle in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package javax.servlet.http; + +import java.io.IOException; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletOutputStream; + +/** + * This interface encapsulates the connection for an upgrade request. + * It allows the protocol handler to send service requests and status + * queries to the container. + * + * @since Servlet 3.1 + */ + +public interface WebConnection extends AutoCloseable { + /** + * Returns an input stream for this web connection. + * + * @return a ServletInputStream for reading binary data + * + * @exception IOException if an I/O error occurs + */ + public ServletInputStream getInputStream() throws IOException; + + /** + * Returns an output stream for this web connection. + * + * @return a ServletOutputStream for writing binary data + * + * @exception IOException if an I/O error occurs + */ + public ServletOutputStream getOutputStream() throws IOException; +} Index: 3rdParty_sources/servlet-api/javax/servlet/http/package.html =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/http/package.html (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/http/package.html (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,76 @@ + + + + + + + + + + +The javax.servlet.http package contains a number of classes and interfaces +that describe and define the contracts between a servlet class +running under the HTTP protocol and the runtime environment provided +for an instance of such a class by a conforming servlet container. + + + + Index: 3rdParty_sources/servlet-api/javax/servlet/package.html =================================================================== diff -u --- 3rdParty_sources/servlet-api/javax/servlet/package.html (revision 0) +++ 3rdParty_sources/servlet-api/javax/servlet/package.html (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -0,0 +1,76 @@ + + + + + + + + + + +The javax.servlet package contains a number of classes and interfaces that +describe and define the contracts between a servlet class and the +runtime environment provided for an instance of such a class by a +conforming servlet container. + + + + Index: lams_admin/.classpath =================================================================== diff -u -rfa6afd964298993776d896a70e45792bedf575b2 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_admin/.classpath (.../.classpath) (revision fa6afd964298993776d896a70e45792bedf575b2) +++ lams_admin/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -5,9 +5,9 @@ - + - + Index: lams_central/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_central/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_central/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -7,9 +7,9 @@ - + - + Index: lams_common/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_common/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_common/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -6,9 +6,9 @@ - + - + Index: lams_contentrepository/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_contentrepository/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_contentrepository/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -4,9 +4,9 @@ - + - + Index: lams_gradebook/.classpath =================================================================== diff -u -rfa6afd964298993776d896a70e45792bedf575b2 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_gradebook/.classpath (.../.classpath) (revision fa6afd964298993776d896a70e45792bedf575b2) +++ lams_gradebook/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -5,9 +5,9 @@ - + - + Index: lams_learning/.classpath =================================================================== diff -u -rfa6afd964298993776d896a70e45792bedf575b2 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_learning/.classpath (.../.classpath) (revision fa6afd964298993776d896a70e45792bedf575b2) +++ lams_learning/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -5,9 +5,9 @@ - + - + Index: lams_monitoring/.classpath =================================================================== diff -u -rfa6afd964298993776d896a70e45792bedf575b2 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_monitoring/.classpath (.../.classpath) (revision fa6afd964298993776d896a70e45792bedf575b2) +++ lams_monitoring/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -6,9 +6,9 @@ - + - + Index: lams_tool_assessment/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_assessment/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_assessment/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -7,9 +7,9 @@ - + - + Index: lams_tool_bbb/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_bbb/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_bbb/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -14,9 +14,9 @@ - + - + Index: lams_tool_chat/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_chat/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_chat/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_daco/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_daco/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_daco/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -8,9 +8,9 @@ - + - + Index: lams_tool_eadventure/.classpath =================================================================== diff -u -re959a6010940f0227b1eda3fa980fd6717422f01 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_eadventure/.classpath (.../.classpath) (revision e959a6010940f0227b1eda3fa980fd6717422f01) +++ lams_tool_eadventure/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -10,9 +10,9 @@ - + - + Index: lams_tool_forum/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_forum/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_forum/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -3,9 +3,9 @@ - + - + Index: lams_tool_gmap/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_gmap/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_gmap/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_images/.classpath =================================================================== diff -u -re959a6010940f0227b1eda3fa980fd6717422f01 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_images/.classpath (.../.classpath) (revision e959a6010940f0227b1eda3fa980fd6717422f01) +++ lams_tool_images/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -15,9 +15,9 @@ - + - + Index: lams_tool_imscc/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_imscc/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_imscc/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -8,9 +8,9 @@ - + - + Index: lams_tool_kaltura/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_kaltura/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_kaltura/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_lamc/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_lamc/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_lamc/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_laqa/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_laqa/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_laqa/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_larsrc/.classpath =================================================================== diff -u -re959a6010940f0227b1eda3fa980fd6717422f01 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_larsrc/.classpath (.../.classpath) (revision e959a6010940f0227b1eda3fa980fd6717422f01) +++ lams_tool_larsrc/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -8,9 +8,9 @@ - + - + Index: lams_tool_leader/.classpath =================================================================== diff -u -re959a6010940f0227b1eda3fa980fd6717422f01 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_leader/.classpath (.../.classpath) (revision e959a6010940f0227b1eda3fa980fd6717422f01) +++ lams_tool_leader/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_mindmap/.classpath =================================================================== diff -u -re959a6010940f0227b1eda3fa980fd6717422f01 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_mindmap/.classpath (.../.classpath) (revision e959a6010940f0227b1eda3fa980fd6717422f01) +++ lams_tool_mindmap/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -7,9 +7,9 @@ - + - + Index: lams_tool_nb/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_nb/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_nb/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_notebook/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_notebook/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_notebook/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_pixlr/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_pixlr/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_pixlr/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_sbmt/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_sbmt/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_sbmt/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -8,9 +8,9 @@ - + - + Index: lams_tool_scratchie/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_scratchie/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_scratchie/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -13,7 +13,7 @@ - + Index: lams_tool_scribe/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_scribe/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_scribe/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_spreadsheet/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_spreadsheet/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_spreadsheet/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_survey/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_survey/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_survey/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_task/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_task/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_task/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_videorecorder/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_videorecorder/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_videorecorder/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_vote/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_vote/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_vote/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - + Index: lams_tool_wiki/.classpath =================================================================== diff -u -r5b4307e77743c078a26bb2b953b6f5245b697e26 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_wiki/.classpath (.../.classpath) (revision 5b4307e77743c078a26bb2b953b6f5245b697e26) +++ lams_tool_wiki/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -3,9 +3,9 @@ - + - + Index: lams_tool_wookie/.classpath =================================================================== diff -u -re959a6010940f0227b1eda3fa980fd6717422f01 -r2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131 --- lams_tool_wookie/.classpath (.../.classpath) (revision e959a6010940f0227b1eda3fa980fd6717422f01) +++ lams_tool_wookie/.classpath (.../.classpath) (revision 2ecc0f53ca8cf6bcb51c51ef297c46b7b0791131) @@ -9,9 +9,9 @@ - + - +