Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-1743-refactor-maven-plugin-redux
Signed-off-by: Jan Bartel <janb@webtide.com>
This commit is contained in:
commit
60d20c8808
|
@ -11,7 +11,7 @@ pipeline {
|
|||
agent { node { label 'linux' } }
|
||||
options { timeout(time: 120, unit: 'MINUTES') }
|
||||
steps {
|
||||
mavenBuild("jdk11", "-Pautobahn -Pmongodb install", "maven3", false)
|
||||
mavenBuild("jdk11", "-Pmongodb install", "maven3", true) // -Pautobahn
|
||||
// Collect up the jacoco execution results (only on main build)
|
||||
jacoco inclusionPattern: '**/org/eclipse/jetty/**/*.class',
|
||||
exclusionPattern: '' +
|
||||
|
@ -35,16 +35,7 @@ pipeline {
|
|||
execPattern: '**/target/jacoco.exec',
|
||||
classPattern: '**/target/classes',
|
||||
sourcePattern: '**/src/main/java'
|
||||
warnings consoleParsers: [[parserName: 'Maven'], [parserName: 'Java']]
|
||||
maven_invoker reportsFilenamePattern: "**/target/invoker-reports/BUILD*.xml", invokerBuildDir: "**/target/it"
|
||||
}
|
||||
}
|
||||
|
||||
stage("Build / Test - JDK11") {
|
||||
agent { node { label 'linux' } }
|
||||
options { timeout(time: 120, unit: 'MINUTES') }
|
||||
steps {
|
||||
mavenBuild("jdk11", "-Pmongodb install", "maven3", false)
|
||||
junit testResults: '**/target/surefire-reports/*.xml,**/target/autobahntestsuite-reports/*.xml'
|
||||
warnings consoleParsers: [[parserName: 'Maven'], [parserName: 'Java']]
|
||||
maven_invoker reportsFilenamePattern: "**/target/invoker-reports/BUILD*.xml", invokerBuildDir: "**/target/it"
|
||||
}
|
||||
|
@ -54,7 +45,7 @@ pipeline {
|
|||
agent { node { label 'linux' } }
|
||||
options { timeout(time: 120, unit: 'MINUTES') }
|
||||
steps {
|
||||
mavenBuild("jdk12", "-Pmongodb install", "maven3", false)
|
||||
mavenBuild("jdk12", "-Pmongodb install", "maven3", true)
|
||||
warnings consoleParsers: [[parserName: 'Maven'], [parserName: 'Java']]
|
||||
maven_invoker reportsFilenamePattern: "**/target/invoker-reports/BUILD*.xml", invokerBuildDir: "**/target/it"
|
||||
}
|
||||
|
@ -68,10 +59,55 @@ pipeline {
|
|||
warnings consoleParsers: [[parserName: 'Maven'], [parserName: 'JavaDoc'], [parserName: 'Java']]
|
||||
}
|
||||
}
|
||||
|
||||
stage("Checkstyle ") {
|
||||
agent { node { label 'linux' } }
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
mavenBuild("jdk11", "install checkstyle:check -DskipTests", "maven3", true)
|
||||
recordIssues(
|
||||
enabledForFailure: true, aggregatingResults: true,
|
||||
tools: [java(), checkStyle(pattern: '**/target/checkstyle-result.xml', reportEncoding: 'UTF-8')]
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
post {
|
||||
failure {
|
||||
slackNotif()
|
||||
}
|
||||
unstable {
|
||||
slackNotif()
|
||||
}
|
||||
fixed {
|
||||
slackNotif()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def slackNotif() {
|
||||
script {
|
||||
try
|
||||
{
|
||||
if ( env.BRANCH_NAME == 'jetty-10.0.x' || env.BRANCH_NAME == 'jetty-9.4.x' )
|
||||
{
|
||||
//BUILD_USER = currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId()
|
||||
// by ${BUILD_USER}
|
||||
COLOR_MAP = ['SUCCESS': 'good', 'FAILURE': 'danger', 'UNSTABLE': 'danger', 'ABORTED': 'danger']
|
||||
slackSend channel: '#jenkins',
|
||||
color: COLOR_MAP[currentBuild.currentResult],
|
||||
message: "*${currentBuild.currentResult}:* Job ${env.JOB_NAME} build ${env.BUILD_NUMBER} - ${env.BUILD_URL}"
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace()
|
||||
echo "skip failure slack notification: " + e.getMessage()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* To other developers, if you are using this method above, please use the following syntax.
|
||||
|
|
|
@ -38,12 +38,12 @@ node("linux") {
|
|||
// jmh run
|
||||
node( 'jmh-build-node' ) {
|
||||
stage("jmh-run") {
|
||||
timeout( time: 180, unit: 'MINUTES' ) {
|
||||
timeout( time: 210, unit: 'MINUTES' ) {
|
||||
withEnv( ["JAVA_HOME=${tool "$jdk"}"] ) {
|
||||
unstash name: 'perf-tests'
|
||||
sh "rm -rf jmh_results"
|
||||
sh "mkdir jmh_results"
|
||||
sh "${env.JAVA_HOME}/bin/java -jar $jmhJarPath -rff jmh_results/jmh_result.json -rf json -foe true"
|
||||
sh "${env.JAVA_HOME}/bin/java -jar $jmhJarPath -rff jmh_results/jmh_result.json -rf json -foe true -i 3 -t 3 -wi 3"
|
||||
jmhReport 'jmh_results/jmh_result.json'
|
||||
}
|
||||
}
|
||||
|
|
44
VERSION.txt
44
VERSION.txt
|
@ -1,10 +1,52 @@
|
|||
jetty-10.0.0-SNAPSHOT
|
||||
|
||||
jetty-9.4.19.v20190610 - 10 June 2019
|
||||
+ 2909 Remove B64Code
|
||||
+ 3332 jetty-maven-plugin - transitive dependencies not loaded from
|
||||
"target/classes"
|
||||
+ 3498 WebSocket Session.suspend() now suspends incoming frames instead of
|
||||
reads
|
||||
+ 3534 Use System nanoTime, not currentTimeMillis for IdleTimeout
|
||||
+ 3550 Server becomes unresponsive after sitting idle from a load spike
|
||||
+ 3562 InetAccessHandler should be able to apply to a certain port or
|
||||
connector
|
||||
+ 3568 Make UserStore able to be started/stopped with its LoginService
|
||||
+ 3583 jetty-maven plugin in multi-module-project does not use files from
|
||||
/target/test-classes folder of dependent projects
|
||||
+ 3605 IdleTimeout with Jetty HTTP/2 and InputStreamResponseListener
|
||||
+ 3608 Reply with 400 Bad request to malformed WebSocket handshake
|
||||
+ 3616 Backport WebSocket SessionTracker from Jetty 10
|
||||
+ 3620 Use of `throwUnavailableOnStartupException=true` does not stop Server
|
||||
in jetty-home
|
||||
+ 3627 Only renew session id when spnego authentication is fully complete
|
||||
+ 3628 NPE in QueuedThreadPool.getReservedThreads()
|
||||
+ 3630 X-Forwarded-For missing last hextet for ipv6
|
||||
+ 3633 endpointIdentificationAlgorithm enabled by default
|
||||
jetty-ssl-context.xml
|
||||
+ 3653 access control exception if programmatic security manager is used
|
||||
+ 3655 Spaces missing on Cookies generated via RFC6265
|
||||
+ 3663 Remove deprecation of HttpClient replacement methods in WebSocketClient
|
||||
+ 3680 Bom manages non-existent infinispan-remote and infinispan-embedded
|
||||
dependencies due to config classifier
|
||||
+ 3683 Multipart file not deleted when client aborts upload
|
||||
+ 3690 Upgrade to asm 7.1
|
||||
+ 3713 Emit warning when invoking deprecated method in Jetty XML
|
||||
+ 3715 Improve Log.condensePackage performance
|
||||
+ 3722 HttpSessionListener.sessionDestroyed should be able to access webapp
|
||||
classes
|
||||
+ 3726 Remove OSGi export uses of servlet-api from jetty-util
|
||||
+ 3729 Make creation of java:comp/env threadsafe
|
||||
+ 3743 Update XmlConfiguration usage in Jetty to always use Constructors that
|
||||
provide Location information
|
||||
+ 3748 @Resource field not injected in Jetty Demo
|
||||
+ 3750 NPE in WebSocketClient.toString()
|
||||
+ 3751 Modern Configure DTD / FPI is used inconsistently
|
||||
|
||||
jetty-9.4.18.v20190429 - 29 April 2019
|
||||
+ 3476 IllegalStateException in WebSocket ConnectionState
|
||||
+ 3550 Server becomes unresponsive after sitting idle from a load spike
|
||||
+ 3563 Update to apache jasper 8.5.40
|
||||
+ 3573 Update jetty-bom for new infinispan artifacts.
|
||||
+ 3573 Update jetty-bom for new infinispan artifacts
|
||||
+ 3582 HeapByteBuffer cleared unexpected
|
||||
+ 3597 Session persistence broken from 9.4.13+
|
||||
+ 3609 Fix infinispan start module dependencies
|
||||
|
|
|
@ -188,7 +188,7 @@
|
|||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty.websocket</groupId>
|
||||
<artifactId>websocket-client</artifactId>
|
||||
<artifactId>jetty-websocket-client</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- http/2 support -->
|
||||
|
|
|
@ -63,8 +63,7 @@
|
|||
</goals>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
</manifest>
|
||||
<manifest></manifest>
|
||||
<manifestEntries>
|
||||
<mode>development</mode>
|
||||
<url>http://eclipse.org/jetty</url>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-project</artifactId>
|
||||
|
@ -24,11 +23,9 @@
|
|||
<instructions>
|
||||
<Bundle-Description>Jetty-specific ServletContainerInitializer for Jasper</Bundle-Description>
|
||||
<Export-Package>
|
||||
org.eclipse.jetty.apache.jsp.*;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}",
|
||||
org.eclipse.jetty.jsp.*;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}"
|
||||
org.eclipse.jetty.apache.jsp.*;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}", org.eclipse.jetty.jsp.*;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}"
|
||||
</Export-Package>
|
||||
<Require-Capability>osgi.extender;
|
||||
filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional
|
||||
<Require-Capability>osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional
|
||||
</Require-Capability>
|
||||
<Provide-Capability>
|
||||
osgi.serviceloader;osgi.serviceloader=javax.servlet.ServletContainerInitializer,osgi.serviceloader;osgi.serviceloader=org.apache.juli.logging.Log
|
||||
|
|
|
@ -23,7 +23,6 @@ import java.net.URL;
|
|||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import org.apache.jasper.servlet.JasperInitializer;
|
||||
|
@ -38,6 +37,7 @@ import org.xml.sax.SAXException;
|
|||
public class JettyJasperInitializer extends JasperInitializer
|
||||
{
|
||||
private static final Log LOG = LogFactory.getLog(JasperInitializer.class);
|
||||
|
||||
/**
|
||||
* NullTldScanner
|
||||
*
|
||||
|
@ -47,10 +47,7 @@ public class JettyJasperInitializer extends JasperInitializer
|
|||
private final class NullTldScanner extends TldScanner
|
||||
{
|
||||
/**
|
||||
* @param context
|
||||
* @param namespaceAware
|
||||
* @param validation
|
||||
* @param blockExternal
|
||||
*
|
||||
*/
|
||||
private NullTldScanner(ServletContext context, boolean namespaceAware, boolean validation, boolean blockExternal)
|
||||
{
|
||||
|
@ -95,18 +92,21 @@ public class JettyJasperInitializer extends JasperInitializer
|
|||
String tmp = context.getInitParameter("org.eclipse.jetty.jsp.precompiled");
|
||||
if (tmp != null && !tmp.equals("") && Boolean.valueOf(tmp))
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Jsp precompilation detected");
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Jsp precompilation detected");
|
||||
return new NullTldScanner(context, namespaceAware, validate, blockExternal);
|
||||
}
|
||||
|
||||
Collection<URL> tldUrls = (Collection<URL>)context.getAttribute("org.eclipse.jetty.tlds");
|
||||
if (tldUrls != null)
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Tld pre-scan detected");
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Tld pre-scan detected");
|
||||
return new JettyTldPreScanned(context, namespaceAware, validate, blockExternal, tldUrls);
|
||||
}
|
||||
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Defaulting to jasper tld scanning");
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Defaulting to jasper tld scanning");
|
||||
return super.newTldScanner(context, namespaceAware, validate, blockExternal);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,12 +16,10 @@
|
|||
// ========================================================================
|
||||
//
|
||||
|
||||
|
||||
package org.eclipse.jetty.apache.jsp;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import org.apache.jasper.servlet.TldPreScanned;
|
||||
|
@ -39,7 +37,6 @@ import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
|
|||
* may be in the reactor at the same time as a webapp being run with the
|
||||
* plugin. That means that the tlds will be used from their location in
|
||||
* the file system, rather than from their assembled jar.
|
||||
*
|
||||
*/
|
||||
public class JettyTldPreScanned extends TldPreScanned
|
||||
{
|
||||
|
@ -95,5 +92,4 @@ public class JettyTldPreScanned extends TldPreScanned
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@ import java.io.IOException;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -30,7 +29,6 @@ import javax.servlet.http.HttpServletResponse;
|
|||
|
||||
import org.apache.jasper.servlet.JspServlet;
|
||||
|
||||
|
||||
/**
|
||||
* JettyJspServlet
|
||||
*
|
||||
|
@ -46,10 +44,6 @@ public class JettyJspServlet extends JspServlet
|
|||
*/
|
||||
private static final long serialVersionUID = -5387857473125086791L;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
|
||||
{
|
||||
|
|
|
@ -22,7 +22,6 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -72,7 +71,6 @@ public class TestJettyJspServlet
|
|||
resp.setContentType("html/text");
|
||||
resp.getOutputStream().println("This.Is.The.Default.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
|
@ -105,7 +103,7 @@ public class TestJettyJspServlet
|
|||
public void testWithJsp() throws Exception
|
||||
{
|
||||
//test that an ordinary jsp is served by jsp servlet
|
||||
String request = "" +
|
||||
String request =
|
||||
"GET /context/foo.jsp HTTP/1.1\r\n" +
|
||||
"Host: localhost\r\n" +
|
||||
"Connection: close\r\n" +
|
||||
|
@ -116,12 +114,11 @@ public class TestJettyJspServlet
|
|||
assertThat(response.toString(), response.getContent(), not(containsString("This.Is.The.Default.")));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testWithDirectory() throws Exception
|
||||
{
|
||||
//test that a dir is served by the default servlet
|
||||
String request = "" +
|
||||
String request =
|
||||
"GET /context/dir HTTP/1.1\r\n" +
|
||||
"Host: localhost\r\n" +
|
||||
"Connection: close\r\n" +
|
||||
|
|
|
@ -16,11 +16,8 @@
|
|||
// ========================================================================
|
||||
//
|
||||
|
||||
|
||||
package org.eclipse.jetty.jsp;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
|
@ -34,10 +31,12 @@ import org.eclipse.jetty.servlet.ServletContextHandler;
|
|||
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
/**
|
||||
* TestJettyTldPreScanned
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class TestJettyTldPreScanned
|
||||
{
|
||||
|
@ -70,5 +69,4 @@ public class TestJettyTldPreScanned
|
|||
fail("unknown tag");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,12 +18,11 @@
|
|||
|
||||
package org.eclipse.jetty.jsp;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class TestJspFileNameToClass
|
||||
{
|
||||
|
||||
|
@ -33,7 +32,6 @@ public class TestJspFileNameToClass
|
|||
ServletHolder h = new ServletHolder();
|
||||
h.setName("test");
|
||||
|
||||
|
||||
assertEquals(null, h.getClassNameForJsp(null));
|
||||
|
||||
assertEquals(null, h.getClassNameForJsp(""));
|
||||
|
@ -56,5 +54,4 @@ public class TestJspFileNameToClass
|
|||
|
||||
assertEquals("org.apache.jsp.a.b.c.blah_jsp", h.getClassNameForJsp("a/b/c/blah.jsp"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,10 +18,6 @@
|
|||
|
||||
package org.eclipse.jetty.jstl;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
@ -37,7 +33,6 @@ import org.eclipse.jetty.toolchain.test.FS;
|
|||
import org.eclipse.jetty.toolchain.test.IO;
|
||||
import org.eclipse.jetty.toolchain.test.JAR;
|
||||
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
||||
import org.eclipse.jetty.webapp.Configuration;
|
||||
import org.eclipse.jetty.webapp.Configurations;
|
||||
import org.eclipse.jetty.webapp.JettyWebXmlConfiguration;
|
||||
import org.eclipse.jetty.webapp.WebAppContext;
|
||||
|
@ -45,6 +40,10 @@ import org.junit.jupiter.api.AfterAll;
|
|||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
|
||||
public class JspIncludeTest
|
||||
{
|
||||
private static Server server;
|
||||
|
|
|
@ -18,18 +18,12 @@
|
|||
|
||||
package org.eclipse.jetty.jstl;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import javax.servlet.jsp.JspException;
|
||||
|
||||
import org.eclipse.jetty.annotations.AnnotationConfiguration;
|
||||
|
@ -39,12 +33,16 @@ import org.eclipse.jetty.toolchain.test.FS;
|
|||
import org.eclipse.jetty.toolchain.test.JAR;
|
||||
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
||||
import org.eclipse.jetty.util.IO;
|
||||
import org.eclipse.jetty.webapp.Configuration;
|
||||
import org.eclipse.jetty.webapp.WebAppContext;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
|
||||
public class JstlTest
|
||||
{
|
||||
private static Server server;
|
||||
|
@ -78,7 +76,6 @@ public class JstlTest
|
|||
|
||||
context.addConfiguration(new AnnotationConfiguration());
|
||||
|
||||
|
||||
server.setHandler(context);
|
||||
|
||||
// Start Server
|
||||
|
|
|
@ -0,0 +1,354 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<profiles version="16">
|
||||
<profile kind="CodeFormatterProfile" name="Jetty" version="16">
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="128"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="18"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="32"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="80"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="48"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="83"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="18"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="next_line_on_wrap"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_never"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="false"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="128"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
|
||||
</profile>
|
||||
</profiles>
|
|
@ -0,0 +1,531 @@
|
|||
<code_scheme name="Jetty-StyleChecked" version="173">
|
||||
<option name="AUTODETECT_INDENTS" value="false" />
|
||||
<option name="LINE_SEPARATOR" value="
" />
|
||||
<option name="RIGHT_MARGIN" value="128" />
|
||||
<AndroidXmlCodeStyleSettings>
|
||||
<option name="USE_CUSTOM_SETTINGS" value="true" />
|
||||
</AndroidXmlCodeStyleSettings>
|
||||
<HTMLCodeStyleSettings>
|
||||
<option name="HTML_ATTRIBUTE_WRAP" value="0" />
|
||||
</HTMLCodeStyleSettings>
|
||||
<JavaCodeStyleSettings>
|
||||
<option name="FIELD_NAME_PREFIX" value="_" />
|
||||
<option name="USE_EXTERNAL_ANNOTATIONS" value="true" />
|
||||
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
|
||||
<value />
|
||||
</option>
|
||||
<option name="IMPORT_LAYOUT_TABLE">
|
||||
<value>
|
||||
<package name="java" withSubpackages="true" static="false" />
|
||||
<package name="javax" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="" withSubpackages="true" static="true" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="JD_ALIGN_PARAM_COMMENTS" value="false" />
|
||||
<option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" />
|
||||
<option name="JD_P_AT_EMPTY_LINES" value="false" />
|
||||
<option name="JD_KEEP_EMPTY_PARAMETER" value="false" />
|
||||
<option name="JD_KEEP_EMPTY_EXCEPTION" value="false" />
|
||||
<option name="JD_KEEP_EMPTY_RETURN" value="false" />
|
||||
<option name="JD_PRESERVE_LINE_FEEDS" value="true" />
|
||||
</JavaCodeStyleSettings>
|
||||
<MarkdownNavigatorCodeStyleSettings>
|
||||
<option name="RIGHT_MARGIN" value="72" />
|
||||
</MarkdownNavigatorCodeStyleSettings>
|
||||
<XML>
|
||||
<option name="XML_ATTRIBUTE_WRAP" value="0" />
|
||||
<option name="XML_TEXT_WRAP" value="0" />
|
||||
<option name="XML_KEEP_LINE_BREAKS" value="false" />
|
||||
<option name="XML_KEEP_LINE_BREAKS_IN_TEXT" value="false" />
|
||||
<option name="XML_KEEP_BLANK_LINES" value="1" />
|
||||
<option name="XML_ALIGN_ATTRIBUTES" value="false" />
|
||||
<option name="XML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
||||
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
|
||||
</XML>
|
||||
<codeStyleSettings language="Groovy">
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="JAVA">
|
||||
<option name="RIGHT_MARGIN" value="128" />
|
||||
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
|
||||
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
|
||||
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
||||
<option name="KEEP_BLANK_LINES_BETWEEN_PACKAGE_DECLARATION_AND_HEADER" value="1" />
|
||||
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
|
||||
<option name="BRACE_STYLE" value="2" />
|
||||
<option name="CLASS_BRACE_STYLE" value="2" />
|
||||
<option name="METHOD_BRACE_STYLE" value="2" />
|
||||
<option name="LAMBDA_BRACE_STYLE" value="2" />
|
||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||
<option name="WHILE_ON_NEW_LINE" value="true" />
|
||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||
<option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" />
|
||||
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
|
||||
<option name="RESOURCE_LIST_WRAP" value="2" />
|
||||
<option name="KEEP_SIMPLE_LAMBDAS_IN_ONE_LINE" value="true" />
|
||||
<option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="true" />
|
||||
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||
<option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
|
||||
<option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
|
||||
<option name="DOWHILE_BRACE_FORCE" value="3" />
|
||||
<option name="WHILE_BRACE_FORCE" value="3" />
|
||||
<option name="FOR_BRACE_FORCE" value="3" />
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
<arrangement>
|
||||
<rules>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<ENUM>true</ENUM>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PUBLIC>true</PUBLIC>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PROTECTED>true</PROTECTED>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PRIVATE>true</PRIVATE>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PUBLIC>true</PUBLIC>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PROTECTED>true</PROTECTED>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PRIVATE>true</PRIVATE>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<INITIALIZER_BLOCK>true</INITIALIZER_BLOCK>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PUBLIC>true</PUBLIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PROTECTED>true</PROTECTED>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<FINAL>true</FINAL>
|
||||
<PRIVATE>true</PRIVATE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PUBLIC>true</PUBLIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PROTECTED>true</PROTECTED>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<FIELD>true</FIELD>
|
||||
<PRIVATE>true</PRIVATE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<FIELD>true</FIELD>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<INITIALIZER_BLOCK>true</INITIALIZER_BLOCK>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<CONSTRUCTOR>true</CONSTRUCTOR>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<METHOD>true</METHOD>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<METHOD>true</METHOD>
|
||||
<PUBLIC>true</PUBLIC>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<METHOD>true</METHOD>
|
||||
<PROTECTED>true</PROTECTED>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<METHOD>true</METHOD>
|
||||
<PRIVATE>true</PRIVATE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<INTERFACE>true</INTERFACE>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<CLASS>true</CLASS>
|
||||
<STATIC>true</STATIC>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<CLASS>true</CLASS>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
</rules>
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="XML">
|
||||
<option name="RIGHT_MARGIN" value="256" />
|
||||
<option name="FORCE_REARRANGE_MODE" value="1" />
|
||||
<indentOptions>
|
||||
<option name="INDENT_SIZE" value="2" />
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||
<option name="TAB_SIZE" value="2" />
|
||||
</indentOptions>
|
||||
<arrangement>
|
||||
<rules>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:android</NAME>
|
||||
<XML_NAMESPACE>Namespace:</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:.*</NAME>
|
||||
<XML_NAMESPACE>Namespace:</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:id</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:name</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>name</NAME>
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>style</NAME>
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:layout_width</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:layout_height</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:layout_.*</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:width</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:height</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
</rules>
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
|
@ -0,0 +1,28 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-project</artifactId>
|
||||
<version>10.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>build-resources</artifactId>
|
||||
<version>10.0.0-SNAPSHOT</version>
|
||||
<name>Jetty :: Build Resources</name>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.2</version>
|
||||
<configuration>
|
||||
<!-- we would prefer not deploy it but we need as it's not discovered as part of reactor
|
||||
as it's a dependency of a plugin
|
||||
<skip>true</skip>
|
||||
-->
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,291 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
|
||||
<!--
|
||||
Checkstyle configuration that checks the Jetty coding conventions.
|
||||
-->
|
||||
|
||||
<module name = "Checker">
|
||||
<property name="charset" value="UTF-8"/>
|
||||
|
||||
<property name="severity" value="warning"/>
|
||||
|
||||
<property name="fileExtensions" value="java"/>
|
||||
|
||||
<!-- reference to suppressions filter for both eclipse and intellij checkstyle plugins -->
|
||||
<module name="SuppressionFilter">
|
||||
<property name="file" value="${checkstyle.suppressions.file}"/>
|
||||
<property name="optional" value="true"/>
|
||||
</module>
|
||||
|
||||
<!-- Excludes all 'module-info.java' files -->
|
||||
<!-- See https://checkstyle.org/config_filefilters.html -->
|
||||
<module name="BeforeExecutionExclusionFileFilter">
|
||||
<property name="fileNamePattern" value="module\-info\.java$"/>
|
||||
</module>
|
||||
|
||||
<!-- Checks for whitespace -->
|
||||
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
|
||||
<module name="FileTabCharacter">
|
||||
<property name="eachLine" value="true"/>
|
||||
</module>
|
||||
|
||||
<module name="TreeWalker">
|
||||
<!--
|
||||
Eclipse Jetty Specific.
|
||||
===========================================================================================
|
||||
-->
|
||||
|
||||
<module name="SuppressionCommentFilter">
|
||||
<property name="offCommentFormat" value="@checkstyle-disable-check : ([\w\|]+)"/>
|
||||
<property name="onCommentFormat" value="@checkstyle-enable-check : ([\w\|]+)"/>
|
||||
<property name="checkFormat" value="$1"/>
|
||||
</module>
|
||||
|
||||
<!-- Check abbreviations(consecutive capital letters) length in identifier name -->
|
||||
<module name="AbbreviationAsWordInName">
|
||||
<property name="ignoreFinal" value="true"/>
|
||||
<property name="allowedAbbreviations" value="ALPN, ASCII, AWT, CRLDP, CRLF, FCGI, GZIP, HTTP, HTTPS, ID, IP, ISO8859, JAAS, JDBC, JMXRMI, JNDI, JPMS, JSON, JSTL, LDAP, PROXY, RFC, SPNEGO, URI, URL, UTF8, XML"/>
|
||||
</module>
|
||||
|
||||
<!-- Location of Annotations -->
|
||||
<module name="AnnotationLocation">
|
||||
<property name="allowSamelineSingleParameterlessAnnotation" value="false"/>
|
||||
</module>
|
||||
|
||||
<!-- Catch Parameter Name Format -->
|
||||
<module name="CatchParameterName">
|
||||
<property name="format" value="^(e|t|x|ex|th|e2|[a-z][a-z][a-zA-Z0-9]+)$"/>
|
||||
</module>
|
||||
|
||||
<!-- Class Type Parameter Name Format -->
|
||||
<module name="ClassTypeParameterName">
|
||||
<property name="format" value="^[A-Z][A-Z0-9]*$"/>
|
||||
</module>
|
||||
|
||||
<!-- Import Line Ordering -->
|
||||
<module name="CustomImportOrder">
|
||||
<property name="sortImportsInGroupAlphabetically" value="true"/>
|
||||
<property name="separateLineBetweenGroups" value="true"/>
|
||||
<property name="customImportOrderRules" value="STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE###STATIC"/>
|
||||
</module>
|
||||
|
||||
<!-- do not allow empty blocks in: try, finally, if, else, or switch -->
|
||||
<module name="EmptyBlock">
|
||||
<property name="option" value="TEXT"/>
|
||||
<property name="tokens"
|
||||
value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
|
||||
</module>
|
||||
|
||||
<!-- enforce empty line after specified tokens -->
|
||||
<module name="EmptyLineSeparator">
|
||||
<property name="allowNoEmptyLineBetweenFields" value="true"/>
|
||||
<property name="allowMultipleEmptyLines" value="false"/>
|
||||
<property name="tokens"
|
||||
value="PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF,
|
||||
STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
|
||||
</module>
|
||||
|
||||
<!-- Indentation Rules -->
|
||||
<module name="Indentation">
|
||||
<property name="throwsIndent" value="0"/>
|
||||
</module>
|
||||
|
||||
<!-- Interface Type Parameter Name -->
|
||||
<module name="InterfaceTypeParameterName">
|
||||
<property name="format" value="^[A-Z][A-Z0-9]*$"/>
|
||||
</module>
|
||||
|
||||
<!-- left curly brace must be on new line -->
|
||||
<module name="LeftCurly">
|
||||
<property name="option" value="nl"/>
|
||||
</module>
|
||||
|
||||
<!-- Method Type Parameter Name -->
|
||||
<module name="MethodTypeParameterName">
|
||||
<property name="format" value="^[A-Z][A-Z0-9]*$"/>
|
||||
</module>
|
||||
|
||||
<!-- Member Name Format -->
|
||||
<module name="MemberName">
|
||||
<property name="format" value="^[_a-z][a-zA-Z0-9]*$"/>
|
||||
</module>
|
||||
|
||||
<!-- require braces is disabled - we don't enforce that in Jetty
|
||||
<module name="NeedBraces">
|
||||
<property name="allowSingleLineStatement" value="true"/>
|
||||
</module>
|
||||
-->
|
||||
|
||||
<!-- No Whitespace After specific tokens -->
|
||||
<module name="NoWhitespaceAfter">
|
||||
<property name="tokens" value="ARRAY_INIT, AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, BNOT, LNOT, DOT, ARRAY_DECLARATOR, INDEX_OP, TYPECAST"/>
|
||||
<property name="allowLineBreaks" value="true"/>
|
||||
</module>
|
||||
|
||||
<!-- No Whitespace Before specific tokens -->
|
||||
<module name="NoWhitespaceBefore">
|
||||
<property name="tokens"
|
||||
value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
|
||||
<property name="allowLineBreaks" value="true"/>
|
||||
</module>
|
||||
|
||||
<!-- allowed wrapping for operators -->
|
||||
<module name="OperatorWrap">
|
||||
<property name="id" value="OperatorWrapNextLine"/>
|
||||
<property name="tokens" value="QUESTION, COLON"/>
|
||||
<property name="option" value="nl"/>
|
||||
</module>
|
||||
<module name="OperatorWrap">
|
||||
<property name="id" value="OperatorWrapSameLine"/>
|
||||
<property name="tokens" value="EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR, GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, TYPE_EXTENSION_AND, LITERAL_INSTANCEOF"/>
|
||||
<property name="option" value="eol"/>
|
||||
</module>
|
||||
|
||||
<!-- ensure we don't have legacy comments that confuse javadoc tooling -->
|
||||
<module name="Regexp">
|
||||
<property name="id" value="LegacyMethodSeparators"/>
|
||||
<property name="format" value="/\*\s*[=*-]*\s*\*/"/>
|
||||
<property name="illegalPattern" value="true"/>
|
||||
<property name="ignoreComments" value="false"/>
|
||||
<property name="message" value="Legacy Method Separators"/>
|
||||
</module>
|
||||
|
||||
<!-- right curly brace must be on new line -->
|
||||
<module name="RightCurly">
|
||||
<property name="option" value="alone_or_singleline"/>
|
||||
</module>
|
||||
|
||||
<!-- Various Wrapping of ".", ",", "...", "[]", and method ref New Lines -->
|
||||
<module name="SeparatorWrap">
|
||||
<property name="id" value="SeparatorWrapNextLine"/>
|
||||
<property name="tokens" value="DOT"/>
|
||||
<property name="option" value="nl"/>
|
||||
</module>
|
||||
<module name="SeparatorWrap">
|
||||
<property name="id" value="SeparatorWrapSameLine"/>
|
||||
<property name="tokens" value="COMMA, ELLIPSIS, ARRAY_DECLARATOR, METHOD_REF"/>
|
||||
<property name="option" value="eol"/>
|
||||
</module>
|
||||
|
||||
<!-- checks that a token is followed by whitespace -->
|
||||
<module name="WhitespaceAround">
|
||||
<property name="allowEmptyConstructors" value="true"/>
|
||||
<property name="allowEmptyLambdas" value="true"/>
|
||||
<property name="allowEmptyMethods" value="true"/>
|
||||
<property name="allowEmptyTypes" value="true"/>
|
||||
<property name="allowEmptyLoops" value="true"/>
|
||||
</module>
|
||||
|
||||
<!--
|
||||
Checks based on common Open Source specific recommendations.
|
||||
===========================================================================================
|
||||
-->
|
||||
|
||||
<!-- limit use of unicode escape sequences (eg "\u20ac") in mainline code. -->
|
||||
<module name="AvoidEscapedUnicodeCharacters">
|
||||
<!-- allow control characters to use unicode escape sequences -->
|
||||
<property name="allowEscapesForControlCharacters" value="true"/>
|
||||
<!-- allow unicode escape sequences if also followed by tail comments -->
|
||||
<property name="allowByTailComment" value="true"/>
|
||||
<!-- allow use of non-printable escape sequences -->
|
||||
<property name="allowNonPrintableEscapes" value="true"/>
|
||||
</module>
|
||||
|
||||
<!-- not allowing star import lines -->
|
||||
<module name="AvoidStarImport"/>
|
||||
|
||||
<!-- if you have an empty catch block, name the caught exception "ignored" -->
|
||||
<module name="EmptyCatchBlock">
|
||||
<property name="exceptionVariableName" value="ignored"/>
|
||||
</module>
|
||||
|
||||
<!-- if a switch statement contains java code, but lacks fall through comment its an error -->
|
||||
<module name="FallThrough"/>
|
||||
|
||||
<!-- reject unicode or octal values in mainline code -->
|
||||
<module name="IllegalTokenText">
|
||||
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
|
||||
<property name="format"
|
||||
value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
|
||||
<property name="message"
|
||||
value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
|
||||
</module>
|
||||
|
||||
<!-- all switch statements should have "default" label declared -->
|
||||
<module name="MissingSwitchDefault"/>
|
||||
|
||||
<!-- prevent line wrapping of import / package statements -->
|
||||
<module name="NoLineWrap"/>
|
||||
|
||||
<!-- only 1 top level class defined per java file -->
|
||||
<module name="OneTopLevelClass"/>
|
||||
|
||||
<!-- Filename and Classname match -->
|
||||
<module name="OuterTypeFilename"/>
|
||||
|
||||
<!-- Checks that overload methods are grouped together -->
|
||||
<module name="OverloadMethodsDeclarationOrder"/>
|
||||
|
||||
<!--
|
||||
Checks based on the Java Language Specification recommendations.
|
||||
https://docs.oracle.com/javase/specs/jls/se8/html/index.html
|
||||
===========================================================================================
|
||||
-->
|
||||
|
||||
<!-- array type style -->
|
||||
<!-- int[] foo; // OK
|
||||
int foo[]; // BAD -->
|
||||
<module name="ArrayTypeStyle" />
|
||||
|
||||
<!-- Whitespace around Generics (angle brackets) follow convention -->
|
||||
<module name="GenericWhitespace" />
|
||||
|
||||
<!-- Lambda Parameter Name Format -->
|
||||
<module name="LambdaParameterName" />
|
||||
|
||||
<!-- Local Parameter Name Format -->
|
||||
<module name="LocalVariableName" />
|
||||
|
||||
<!-- Method Name Format -->
|
||||
<module name="MethodName" />
|
||||
|
||||
<!-- Checks the padding between the identifier of a method definition, constructor definition,
|
||||
method call, or constructor invocation: nospace -->
|
||||
<module name="MethodParamPad"/>
|
||||
|
||||
<!-- ensure that modifiers follow suggested order -->
|
||||
<module name="ModifierOrder"/>
|
||||
|
||||
<!-- only 1 variable declaration per line -->
|
||||
<module name="MultipleVariableDeclarations"/>
|
||||
|
||||
<!-- No Object.finalize() use -->
|
||||
<module name="NoFinalizer"/>
|
||||
|
||||
<!-- checks that there is only one statement per line -->
|
||||
<module name="OneStatementPerLine"/>
|
||||
|
||||
<!-- package name JLS rules -->
|
||||
<module name="PackageName" />
|
||||
|
||||
<!-- Parameter Name Format -->
|
||||
<module name="ParameterName" />
|
||||
|
||||
<!-- the policy on the padding of parentheses: nospace -->
|
||||
<module name="ParenPad"/>
|
||||
|
||||
<!-- Type Name format -->
|
||||
<module name="TypeName" />
|
||||
|
||||
<!-- checks that long constants are defined with an upper ell. That is 'L' and not 'l' -->
|
||||
<module name="UpperEll"/>
|
||||
<!-- TODO: look for float / double version of above -->
|
||||
|
||||
<!-- Checks the distance between declaration of variable and its first usage -->
|
||||
<module name="VariableDeclarationUsageDistance"/>
|
||||
|
||||
</module>
|
||||
</module>
|
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!DOCTYPE suppressions PUBLIC
|
||||
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
|
||||
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
|
||||
|
||||
<suppressions>
|
||||
<!-- all /target/ directories -->
|
||||
<suppress checks=".*" files="[/\\]target[/\\]generated-sources[/\\]" />
|
||||
|
||||
<!-- General JUnit Test Cases -->
|
||||
<suppress checks="AbbreviationAsWordInNameCheck"
|
||||
files="[/\\]src[/\\]test[/\\]java[/\\]" />
|
||||
<suppress checks="AvoidEscapedUnicodeCharactersCheck"
|
||||
files="[/\\]src[/\\]test[/\\]java[/\\]" />
|
||||
<suppress checks="LocalVariableNameCheck"
|
||||
files="[/\\]src[/\\]test[/\\]java[/\\]" />
|
||||
<suppress checks="MethodNameCheck"
|
||||
files="[/\\]src[/\\]test[/\\]java[/\\]" />
|
||||
<suppress checks="TypeNameCheck"
|
||||
files="[/\\]src[/\\]test[/\\]java[/\\]" />
|
||||
|
||||
<!-- jetty-jmh specific -->
|
||||
<suppress checks="AbbreviationAsWordInNameCheck"
|
||||
files="[/\\]jetty-jmh[/\\]src[/\\]main[/\\]java[/\\]" />
|
||||
<suppress checks="AvoidEscapedUnicodeCharactersCheck"
|
||||
files="[/\\]jetty-jmh[/\\]src[/\\]main[/\\]java[/\\]" />
|
||||
<suppress checks="LocalVariableNameCheck"
|
||||
files="[/\\]jetty-jmh[/\\]src[/\\]main[/\\]java[/\\]" />
|
||||
<suppress checks="MethodNameCheck"
|
||||
files="[/\\]jetty-jmh[/\\]src[/\\]main[/\\]java[/\\]" />
|
||||
<suppress checks="TypeNameCheck"
|
||||
files="[/\\]jetty-jmh[/\\]src[/\\]main[/\\]java[/\\]" />
|
||||
|
||||
</suppressions>
|
|
@ -1,5 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>example-async-rest</artifactId>
|
||||
|
|
|
@ -24,7 +24,6 @@ import java.math.RoundingMode;
|
|||
import java.net.URLEncoder;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import javax.servlet.ServletConfig;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
|
@ -43,8 +42,8 @@ import javax.servlet.http.HttpServletResponse;
|
|||
*/
|
||||
public class AbstractRestServlet extends HttpServlet
|
||||
{
|
||||
protected final static String __DEFAULT_APPID = "Webtide81-adf4-4f0a-ad58-d91e41bbe85";
|
||||
protected final static String STYLE =
|
||||
protected static final String __DEFAULT_APPID = "Webtide81-adf4-4f0a-ad58-d91e41bbe85";
|
||||
protected static final String STYLE =
|
||||
"<style type='text/css'>" +
|
||||
" img.thumb:hover {height:50px}" +
|
||||
" img.thumb {vertical-align:text-top}" +
|
||||
|
@ -53,8 +52,8 @@ public class AbstractRestServlet extends HttpServlet
|
|||
" iframe {border: 0px}" +
|
||||
"</style>";
|
||||
|
||||
protected final static String ITEMS_PARAM = "items";
|
||||
protected final static String APPID_PARAM = "appid";
|
||||
protected static final String ITEMS_PARAM = "items";
|
||||
protected static final String APPID_PARAM = "appid";
|
||||
|
||||
protected String _appid;
|
||||
|
||||
|
@ -67,12 +66,25 @@ public class AbstractRestServlet extends HttpServlet
|
|||
_appid = servletConfig.getInitParameter(APPID_PARAM);
|
||||
}
|
||||
|
||||
|
||||
public static String sanitize(String s)
|
||||
// TODO: consider using StringUtil.sanitizeFileSystemName instead of this?
|
||||
// might introduce jetty-util dependency though
|
||||
public static String sanitize(String str)
|
||||
{
|
||||
if (s==null)
|
||||
if (str == null)
|
||||
return null;
|
||||
return s.replace("<","?").replace("&","?").replace("\n","?");
|
||||
|
||||
char[] chars = str.toCharArray();
|
||||
int len = chars.length;
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
char c = chars[i];
|
||||
if ((c <= 0x1F) || // control characters
|
||||
(c == '<') || (c == '&'))
|
||||
{
|
||||
chars[i] = '?';
|
||||
}
|
||||
}
|
||||
return String.valueOf(chars);
|
||||
}
|
||||
|
||||
protected String restURL(String item)
|
||||
|
@ -126,5 +138,4 @@ public class AbstractRestServlet extends HttpServlet
|
|||
{
|
||||
doGet(request, response);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,6 @@ import java.util.Map;
|
|||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import javax.servlet.AsyncContext;
|
||||
import javax.servlet.ServletConfig;
|
||||
import javax.servlet.ServletException;
|
||||
|
@ -52,9 +51,9 @@ import org.eclipse.jetty.util.ajax.JSON;
|
|||
*/
|
||||
public class AsyncRestServlet extends AbstractRestServlet
|
||||
{
|
||||
final static String RESULTS_ATTR = "org.eclipse.jetty.demo.client";
|
||||
final static String DURATION_ATTR = "org.eclipse.jetty.demo.duration";
|
||||
final static String START_ATTR = "org.eclispe.jetty.demo.start";
|
||||
static final String RESULTS_ATTR = "org.eclipse.jetty.demo.client";
|
||||
static final String DURATION_ATTR = "org.eclipse.jetty.demo.duration";
|
||||
static final String START_ATTR = "org.eclispe.jetty.demo.start";
|
||||
|
||||
HttpClient _client;
|
||||
|
||||
|
@ -111,6 +110,7 @@ public class AsyncRestServlet extends AbstractRestServlet
|
|||
{
|
||||
resultsQueue.add(auction);
|
||||
}
|
||||
|
||||
@Override
|
||||
void onComplete()
|
||||
{
|
||||
|
@ -130,7 +130,7 @@ public class AsyncRestServlet extends AbstractRestServlet
|
|||
// We have results!
|
||||
|
||||
// Generate the response
|
||||
String thumbs = generateThumbs(results);
|
||||
final String thumbs = generateThumbs(results);
|
||||
|
||||
response.setContentType("text/html");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
@ -187,15 +187,17 @@ public class AsyncRestServlet extends AbstractRestServlet
|
|||
if (auctions != null)
|
||||
{
|
||||
for (Object o : auctions)
|
||||
{
|
||||
onAuctionFound((Map<String, String>)o);
|
||||
}
|
||||
}
|
||||
onComplete();
|
||||
|
||||
}
|
||||
|
||||
abstract void onAuctionFound(Map<String,String> details);
|
||||
abstract void onComplete();
|
||||
|
||||
abstract void onAuctionFound(Map<String, String> details);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -27,7 +27,6 @@ import java.net.URL;
|
|||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -43,8 +42,7 @@ public class SerialRestServlet extends AbstractRestServlet
|
|||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
|
||||
{
|
||||
long start = System.nanoTime();
|
||||
|
||||
final long start = System.nanoTime();
|
||||
|
||||
String[] keywords = sanitize(request.getParameter(ITEMS_PARAM)).split(",");
|
||||
Queue<Map<String, String>> results = new LinkedList<Map<String, String>>();
|
||||
|
@ -62,13 +60,14 @@ public class SerialRestServlet extends AbstractRestServlet
|
|||
if (auctions != null)
|
||||
{
|
||||
for (Object o : auctions)
|
||||
{
|
||||
results.add((Map)o);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Generate the response
|
||||
String thumbs=generateThumbs(results);
|
||||
final String thumbs = generateThumbs(results);
|
||||
|
||||
response.setContentType("text/html");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
@ -90,9 +89,6 @@ public class SerialRestServlet extends AbstractRestServlet
|
|||
out.println("</small>");
|
||||
out.println("</body></html>");
|
||||
out.close();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -104,5 +100,4 @@ public class SerialRestServlet extends AbstractRestServlet
|
|||
{
|
||||
doGet(request, response);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>example-async-rest</artifactId>
|
||||
|
|
|
@ -18,15 +18,13 @@
|
|||
|
||||
package org.eclipse.jetty.example.asyncrest;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.webapp.ClassMatcher;
|
||||
import org.eclipse.jetty.webapp.WebAppContext;
|
||||
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.webapp.WebAppContext;
|
||||
|
||||
public class AsyncRestServer
|
||||
{
|
||||
public static void main(String[] args)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>example-async-rest</artifactId>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
|
||||
<!--
|
||||
This is the jetty specific web application configuration file. When starting
|
||||
|
@ -9,7 +9,7 @@ org.eclipse.jetty.servlet.WebApplicationContext object
|
|||
-->
|
||||
|
||||
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
|
||||
<Get class="org.eclipse.jetty.util.log.Log" name="rootLogger">
|
||||
<Call name="warn"><Arg>async-rest webapp is deployed. DO NOT USE IN PRODUCTION!</Arg></Call>
|
||||
<Get name="servletContext">
|
||||
<Call name="log"><Arg>The async-rest webapp is deployed. DO NOT USE IN PRODUCTION!</Arg><Arg></Arg></Call>
|
||||
</Get>
|
||||
</Configure>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty.examples</groupId>
|
||||
<artifactId>examples-parent</artifactId>
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.embedded;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import javax.servlet.AsyncContext;
|
||||
import javax.servlet.ReadListener;
|
||||
import javax.servlet.ServletException;
|
||||
|
@ -31,7 +30,6 @@ import javax.servlet.http.HttpServlet;
|
|||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
||||
public class AsyncEchoServlet extends HttpServlet
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
@ -20,8 +20,6 @@ package org.eclipse.jetty.embedded;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
@ -31,8 +29,7 @@ public class DumpServlet extends HttpServlet
|
|||
{
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request,
|
||||
HttpServletResponse response ) throws ServletException,
|
||||
IOException
|
||||
HttpServletResponse response) throws IOException
|
||||
{
|
||||
response.setContentType("text/html");
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
|
@ -51,8 +48,7 @@ public class DumpServlet extends HttpServlet
|
|||
String r = request.getParameter("resource");
|
||||
if (r != null)
|
||||
{
|
||||
out.println("resource(" + r + ")="
|
||||
+ getServletContext().getResource(r));
|
||||
out.println("resource(" + r + ")=" + getServletContext().getResource(r));
|
||||
}
|
||||
|
||||
out.println("</pre>");
|
||||
|
|
|
@ -65,7 +65,8 @@ public class FastFileServer
|
|||
HandlerList handlers = new HandlerList();
|
||||
handlers.setHandlers(new Handler[]{
|
||||
new FastFileHandler(new File(System.getProperty("user.dir"))),
|
||||
new DefaultHandler() });
|
||||
new DefaultHandler()
|
||||
});
|
||||
server.setHandler(handlers);
|
||||
|
||||
server.start();
|
||||
|
|
|
@ -35,21 +35,21 @@ public class FileServer
|
|||
// Create a basic Jetty server object that will listen on port 8080. Note that if you set this to port 0
|
||||
// then a randomly available port will be assigned that you can either look in the logs for the port,
|
||||
// or programmatically obtain it for use in test cases.
|
||||
Server server = new Server(8080);
|
||||
final Server server = new Server(8080);
|
||||
|
||||
// Create the ResourceHandler. It is the object that will actually handle the request for a given file. It is
|
||||
// a Jetty Handler object so it is suitable for chaining with other handlers as you will see in other examples.
|
||||
ResourceHandler resource_handler = new ResourceHandler();
|
||||
ResourceHandler resourceHandler = new ResourceHandler();
|
||||
|
||||
// Configure the ResourceHandler. Setting the resource base indicates where the files should be served out of.
|
||||
// In this example it is the current directory but it can be configured to anything that the jvm has access to.
|
||||
resource_handler.setDirectoriesListed(true);
|
||||
resource_handler.setWelcomeFiles(new String[]{ "index.html" });
|
||||
resource_handler.setResourceBase(".");
|
||||
resourceHandler.setDirectoriesListed(true);
|
||||
resourceHandler.setWelcomeFiles(new String[]{"index.html"});
|
||||
resourceHandler.setResourceBase(".");
|
||||
|
||||
// Add the ResourceHandler to the server.
|
||||
HandlerList handlers = new HandlerList();
|
||||
handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() });
|
||||
handlers.setHandlers(new Handler[]{resourceHandler, new DefaultHandler()});
|
||||
server.setHandler(handlers);
|
||||
|
||||
// Start things up! By using the server.join() the server thread will join with the current thread.
|
||||
|
|
|
@ -36,9 +36,8 @@ public class FileServerXml
|
|||
{
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
Resource fileserverXml = Resource.newSystemResource("fileserver.xml");
|
||||
XmlConfiguration configuration = new XmlConfiguration(
|
||||
fileserverXml.getInputStream());
|
||||
Resource fileServerXml = Resource.newSystemResource("fileserver.xml");
|
||||
XmlConfiguration configuration = new XmlConfiguration(fileServerXml);
|
||||
Server server = (Server)configuration.configure();
|
||||
server.start();
|
||||
server.join();
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.embedded;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.embedded;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -30,7 +29,9 @@ import javax.servlet.http.HttpSession;
|
|||
@SuppressWarnings("serial")
|
||||
public class HelloSessionServlet extends HttpServlet
|
||||
{
|
||||
public HelloSessionServlet() {}
|
||||
public HelloSessionServlet()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request,
|
||||
|
@ -77,8 +78,6 @@ public class HelloSessionServlet extends HttpServlet
|
|||
out.println("session.isNew() = " + session.isNew());
|
||||
out.println("</pre>");
|
||||
out.println("<p>" + link + "</p>");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
// ========================================================================
|
||||
//
|
||||
|
||||
|
||||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -27,7 +26,6 @@ import java.util.Date;
|
|||
import java.util.EnumSet;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.servlet.DispatcherType;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
|
@ -83,34 +81,34 @@ public class Http2Server
|
|||
server.setHandler(context);
|
||||
|
||||
// HTTP Configuration
|
||||
HttpConfiguration http_config = new HttpConfiguration();
|
||||
http_config.setSecureScheme("https");
|
||||
http_config.setSecurePort(8443);
|
||||
http_config.setSendXPoweredBy(true);
|
||||
http_config.setSendServerVersion(true);
|
||||
HttpConfiguration httpConfig = new HttpConfiguration();
|
||||
httpConfig.setSecureScheme("https");
|
||||
httpConfig.setSecurePort(8443);
|
||||
httpConfig.setSendXPoweredBy(true);
|
||||
httpConfig.setSendServerVersion(true);
|
||||
|
||||
// HTTP Connector
|
||||
ServerConnector http = new ServerConnector(server,new HttpConnectionFactory(http_config), new HTTP2CServerConnectionFactory(http_config));
|
||||
ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(httpConfig), new HTTP2CServerConnectionFactory(httpConfig));
|
||||
http.setPort(8080);
|
||||
server.addConnector(http);
|
||||
|
||||
// SSL Context Factory for HTTPS and HTTP/2
|
||||
String jetty_distro = System.getProperty("jetty.distro","../../jetty-distribution/target/distribution");
|
||||
if (!new File(jetty_distro).exists())
|
||||
jetty_distro = "jetty-distribution/target/distribution";
|
||||
String jettyDistro = System.getProperty("jetty.distro", "../../jetty-distribution/target/distribution");
|
||||
if (!new File(jettyDistro).exists())
|
||||
jettyDistro = "jetty-distribution/target/distribution";
|
||||
SslContextFactory.Server sslContextFactory = new SslContextFactory.Server();
|
||||
sslContextFactory.setKeyStorePath(jetty_distro + "/demo-base/etc/keystore");
|
||||
sslContextFactory.setKeyStorePath(jettyDistro + "/demo-base/etc/keystore");
|
||||
sslContextFactory.setKeyStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
|
||||
sslContextFactory.setKeyManagerPassword("OBF:1u2u1wml1z7s1z7a1wnl1u2g");
|
||||
sslContextFactory.setCipherComparator(HTTP2Cipher.COMPARATOR);
|
||||
// sslContextFactory.setProvider("Conscrypt");
|
||||
|
||||
// HTTPS Configuration
|
||||
HttpConfiguration https_config = new HttpConfiguration(http_config);
|
||||
https_config.addCustomizer(new SecureRequestCustomizer());
|
||||
HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);
|
||||
httpsConfig.addCustomizer(new SecureRequestCustomizer());
|
||||
|
||||
// HTTP/2 Connection Factory
|
||||
HTTP2ServerConnectionFactory h2 = new HTTP2ServerConnectionFactory(https_config);
|
||||
HTTP2ServerConnectionFactory h2 = new HTTP2ServerConnectionFactory(httpsConfig);
|
||||
|
||||
ALPNServerConnectionFactory alpn = new ALPNServerConnectionFactory();
|
||||
alpn.setDefaultProtocol(http.getDefaultProtocol());
|
||||
|
@ -120,7 +118,7 @@ public class Http2Server
|
|||
|
||||
// HTTP/2 Connector
|
||||
ServerConnector http2Connector =
|
||||
new ServerConnector(server,ssl,alpn,h2,new HttpConnectionFactory(https_config));
|
||||
new ServerConnector(server, ssl, alpn, h2, new HttpConnectionFactory(httpsConfig));
|
||||
http2Connector.setPort(8443);
|
||||
server.addConnector(http2Connector);
|
||||
|
||||
|
|
|
@ -28,12 +28,13 @@ import org.eclipse.jetty.servlet.ServletHolder;
|
|||
import org.eclipse.jetty.util.resource.Resource;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class JarServer
|
||||
{
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
Server server = new Server(8080);
|
||||
final Server server = new Server(8080);
|
||||
|
||||
ServletContextHandler context = new ServletContextHandler();
|
||||
Resource.setDefaultUseCaches(true);
|
||||
|
|
|
@ -0,0 +1,109 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd.
|
||||
// ------------------------------------------------------------------------
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are made available under the terms of the Eclipse Public License v1.0
|
||||
// and Apache License v2.0 which accompanies this distribution.
|
||||
//
|
||||
// The Eclipse Public License is available at
|
||||
// http://www.eclipse.org/legal/epl-v10.html
|
||||
//
|
||||
// The Apache License v2.0 is available at
|
||||
// http://www.opensource.org/licenses/apache2.0.php
|
||||
//
|
||||
// You may elect to redistribute this code under either of these licenses.
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import org.eclipse.jetty.util.StringUtil;
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
import org.eclipse.jetty.util.log.Logger;
|
||||
|
||||
/**
|
||||
* A utility test class to locate a Jetty Distribution for testing purposes by searching:
|
||||
* <ul>
|
||||
* <li>The <code>jetty.home</code> system property</li>
|
||||
* <li>The <code>JETTY_HOME</code> environment variable</li>
|
||||
* <li>The working directory hierarchy with subdirectory <code>jetty-distribution/target/home</code></li>
|
||||
* </ul>
|
||||
*/
|
||||
public class JettyDistribution
|
||||
{
|
||||
private static final Logger LOG = Log.getLogger(JettyDistribution.class);
|
||||
public static final Path DISTRIBUTION;
|
||||
|
||||
static
|
||||
{
|
||||
Path distro = asJettyDistribution(System.getProperty("jetty.home"));
|
||||
if (distro == null)
|
||||
distro = asJettyDistribution(System.getenv().get("JETTY_HOME"));
|
||||
|
||||
if (distro == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Path working = new File(".").getAbsoluteFile().getCanonicalFile().toPath();
|
||||
while (distro == null && working != null)
|
||||
{
|
||||
distro = asJettyDistribution(working.resolve("jetty-distribution/target/distribution").toString());
|
||||
working = working.getParent();
|
||||
}
|
||||
}
|
||||
catch (Throwable th)
|
||||
{
|
||||
LOG.warn(th);
|
||||
}
|
||||
}
|
||||
DISTRIBUTION = distro;
|
||||
}
|
||||
|
||||
private static Path asJettyDistribution(String test)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (StringUtil.isBlank(test))
|
||||
{
|
||||
LOG.info("asJettyDistribution {} is blank", test);
|
||||
return null;
|
||||
}
|
||||
|
||||
File dir = new File(test);
|
||||
if (!dir.exists() || !dir.isDirectory())
|
||||
{
|
||||
LOG.info("asJettyDistribution {} is not a directory", test);
|
||||
return null;
|
||||
}
|
||||
|
||||
File demoBase = new File(dir, "demo-base");
|
||||
if (!demoBase.exists() || !demoBase.isDirectory())
|
||||
{
|
||||
LOG.info("asJettyDistribution {} has no demo-base", test);
|
||||
return null;
|
||||
}
|
||||
|
||||
LOG.info("asJettyDistribution {}", dir);
|
||||
return dir.getAbsoluteFile().getCanonicalFile().toPath();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOG.ignore(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Path resolve(String path)
|
||||
{
|
||||
return DISTRIBUTION.resolve(path);
|
||||
}
|
||||
|
||||
public static void main(String... arg)
|
||||
{
|
||||
System.err.println("Jetty Distribution is " + DISTRIBUTION);
|
||||
}
|
||||
}
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
|
||||
import org.eclipse.jetty.annotations.AnnotationConfiguration;
|
||||
|
@ -30,7 +29,9 @@ import org.eclipse.jetty.http.HttpVersion;
|
|||
import org.eclipse.jetty.jmx.MBeanContainer;
|
||||
import org.eclipse.jetty.plus.webapp.EnvConfiguration;
|
||||
import org.eclipse.jetty.plus.webapp.PlusConfiguration;
|
||||
import org.eclipse.jetty.rewrite.handler.MsieSslRule;
|
||||
import org.eclipse.jetty.rewrite.handler.RewriteHandler;
|
||||
import org.eclipse.jetty.rewrite.handler.ValidUrlRule;
|
||||
import org.eclipse.jetty.security.HashLoginService;
|
||||
import org.eclipse.jetty.server.AsyncRequestLogWriter;
|
||||
import org.eclipse.jetty.server.CustomRequestLog;
|
||||
|
@ -61,34 +62,20 @@ public class LikeJettyXml
|
|||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
// Path to as-built jetty-distribution directory
|
||||
String jettyHomeBuild = "jetty-distribution/target/distribution";
|
||||
String jettyHomeBuild = JettyDistribution.DISTRIBUTION.toString();
|
||||
|
||||
// Find jetty home and base directories
|
||||
String homePath = System.getProperty("jetty.home", jettyHomeBuild);
|
||||
File start_jar = new File(homePath,"start.jar");
|
||||
if (!start_jar.exists())
|
||||
{
|
||||
homePath = jettyHomeBuild = "jetty-distribution/target/distribution";
|
||||
start_jar = new File(homePath,"start.jar");
|
||||
if (!start_jar.exists())
|
||||
throw new FileNotFoundException(start_jar.toString());
|
||||
}
|
||||
|
||||
File homeDir = new File(homePath);
|
||||
|
||||
String basePath = System.getProperty("jetty.base", homeDir + "/demo-base");
|
||||
File baseDir = new File(basePath);
|
||||
if(!baseDir.exists())
|
||||
{
|
||||
throw new FileNotFoundException(baseDir.getAbsolutePath());
|
||||
}
|
||||
|
||||
// Configure jetty.home and jetty.base system properties
|
||||
String jetty_home = homeDir.getAbsolutePath();
|
||||
String jetty_base = baseDir.getAbsolutePath();
|
||||
System.setProperty("jetty.home", jetty_home);
|
||||
System.setProperty("jetty.base", jetty_base);
|
||||
|
||||
String jettyHome = homeDir.getAbsolutePath();
|
||||
String jettyBase = baseDir.getAbsolutePath();
|
||||
System.setProperty("jetty.home", jettyHome);
|
||||
System.setProperty("jetty.base", jettyBase);
|
||||
|
||||
// === jetty.xml ===
|
||||
// Setup Threadpool
|
||||
|
@ -102,14 +89,14 @@ public class LikeJettyXml
|
|||
server.addBean(new ScheduledExecutorScheduler(null, false));
|
||||
|
||||
// HTTP Configuration
|
||||
HttpConfiguration http_config = new HttpConfiguration();
|
||||
http_config.setSecureScheme("https");
|
||||
http_config.setSecurePort(8443);
|
||||
http_config.setOutputBufferSize(32768);
|
||||
http_config.setRequestHeaderSize(8192);
|
||||
http_config.setResponseHeaderSize(8192);
|
||||
http_config.setSendServerVersion(true);
|
||||
http_config.setSendDateHeader(false);
|
||||
HttpConfiguration httpConfig = new HttpConfiguration();
|
||||
httpConfig.setSecureScheme("https");
|
||||
httpConfig.setSecurePort(8443);
|
||||
httpConfig.setOutputBufferSize(32768);
|
||||
httpConfig.setRequestHeaderSize(8192);
|
||||
httpConfig.setResponseHeaderSize(8192);
|
||||
httpConfig.setSendServerVersion(true);
|
||||
httpConfig.setSendDateHeader(false);
|
||||
// httpConfig.addCustomizer(new ForwardedRequestCustomizer());
|
||||
|
||||
// Handler Structure
|
||||
|
@ -119,7 +106,7 @@ public class LikeJettyXml
|
|||
server.setHandler(handlers);
|
||||
|
||||
// Extra options
|
||||
server.setDumpAfterStart(false);
|
||||
server.setDumpAfterStart(true);
|
||||
server.setDumpBeforeStop(false);
|
||||
server.setStopAtShutdown(true);
|
||||
|
||||
|
@ -128,22 +115,20 @@ public class LikeJettyXml
|
|||
ManagementFactory.getPlatformMBeanServer());
|
||||
server.addBean(mbContainer);
|
||||
|
||||
|
||||
// === jetty-http.xml ===
|
||||
ServerConnector http = new ServerConnector(server,
|
||||
new HttpConnectionFactory(http_config));
|
||||
new HttpConnectionFactory(httpConfig));
|
||||
http.setPort(8080);
|
||||
http.setIdleTimeout(30000);
|
||||
server.addConnector(http);
|
||||
|
||||
|
||||
// === jetty-https.xml ===
|
||||
// SSL Context Factory
|
||||
SslContextFactory.Server sslContextFactory = new SslContextFactory.Server();
|
||||
sslContextFactory.setKeyStorePath(jetty_home + "/../../../jetty-server/src/test/config/etc/keystore");
|
||||
sslContextFactory.setKeyStorePath(jettyHome + "/../../../jetty-server/src/test/config/etc/keystore");
|
||||
sslContextFactory.setKeyStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
|
||||
sslContextFactory.setKeyManagerPassword("OBF:1u2u1wml1z7s1z7a1wnl1u2g");
|
||||
sslContextFactory.setTrustStorePath(jetty_home + "/../../../jetty-server/src/test/config/etc/keystore");
|
||||
sslContextFactory.setTrustStorePath(jettyHome + "/../../../jetty-server/src/test/config/etc/keystore");
|
||||
sslContextFactory.setTrustStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
|
||||
sslContextFactory.setExcludeCipherSuites("SSL_RSA_WITH_DES_CBC_SHA",
|
||||
"SSL_DHE_RSA_WITH_DES_CBC_SHA", "SSL_DHE_DSS_WITH_DES_CBC_SHA",
|
||||
|
@ -153,17 +138,16 @@ public class LikeJettyXml
|
|||
"SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA");
|
||||
|
||||
// SSL HTTP Configuration
|
||||
HttpConfiguration https_config = new HttpConfiguration(http_config);
|
||||
https_config.addCustomizer(new SecureRequestCustomizer());
|
||||
HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);
|
||||
httpsConfig.addCustomizer(new SecureRequestCustomizer());
|
||||
|
||||
// SSL Connector
|
||||
ServerConnector sslConnector = new ServerConnector(server,
|
||||
new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
|
||||
new HttpConnectionFactory(https_config));
|
||||
new HttpConnectionFactory(httpsConfig));
|
||||
sslConnector.setPort(8443);
|
||||
server.addConnector(sslConnector);
|
||||
|
||||
|
||||
// === jetty-deploy.xml ===
|
||||
DeploymentManager deployer = new DeploymentManager();
|
||||
//DebugListener debug = new DebugListener(System.out,true,true,true);
|
||||
|
@ -174,14 +158,14 @@ public class LikeJettyXml
|
|||
"org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
|
||||
".*/jetty-servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$");
|
||||
|
||||
WebAppProvider webapp_provider = new WebAppProvider();
|
||||
webapp_provider.setMonitoredDirName(jetty_base + "/webapps");
|
||||
webapp_provider.setDefaultsDescriptor(jetty_home + "/etc/webdefault.xml");
|
||||
webapp_provider.setScanInterval(1);
|
||||
webapp_provider.setExtractWars(true);
|
||||
webapp_provider.setConfigurationManager(new PropertiesConfigurationManager());
|
||||
WebAppProvider webAppProvider = new WebAppProvider();
|
||||
webAppProvider.setMonitoredDirName(jettyBase + "/webapps");
|
||||
webAppProvider.setDefaultsDescriptor(jettyHome + "/etc/webdefault.xml");
|
||||
webAppProvider.setScanInterval(1);
|
||||
webAppProvider.setExtractWars(true);
|
||||
webAppProvider.setConfigurationManager(new PropertiesConfigurationManager());
|
||||
|
||||
deployer.addAppProvider(webapp_provider);
|
||||
deployer.addAppProvider(webAppProvider);
|
||||
server.addBean(deployer);
|
||||
|
||||
// === setup jetty plus ==
|
||||
|
@ -197,16 +181,17 @@ public class LikeJettyXml
|
|||
RewriteHandler rewrite = new RewriteHandler();
|
||||
rewrite.setHandler(server.getHandler());
|
||||
server.setHandler(rewrite);
|
||||
rewrite.addRule(new MsieSslRule());
|
||||
rewrite.addRule(new ValidUrlRule());
|
||||
|
||||
// === jetty-requestlog.xml ===
|
||||
AsyncRequestLogWriter logWriter = new AsyncRequestLogWriter(jetty_home + "/logs/yyyy_mm_dd.request.log");
|
||||
CustomRequestLog requestLog = new CustomRequestLog(logWriter, CustomRequestLog.EXTENDED_NCSA_FORMAT + " \"%C\"");
|
||||
AsyncRequestLogWriter logWriter = new AsyncRequestLogWriter(jettyHome + "/logs/yyyy_mm_dd.request.log");
|
||||
logWriter.setFilenameDateFormat("yyyy_MM_dd");
|
||||
logWriter.setRetainDays(90);
|
||||
logWriter.setTimeZone("GMT");
|
||||
CustomRequestLog requestLog = new CustomRequestLog(logWriter, CustomRequestLog.EXTENDED_NCSA_FORMAT + " \"%C\"");
|
||||
server.setRequestLog(requestLog);
|
||||
|
||||
|
||||
// === jetty-lowresources.xml ===
|
||||
LowResourceMonitor lowResourcesMonitor = new LowResourceMonitor(server);
|
||||
lowResourcesMonitor.setPeriod(1000);
|
||||
|
@ -216,17 +201,15 @@ public class LikeJettyXml
|
|||
lowResourcesMonitor.setMaxLowResourcesTime(5000);
|
||||
server.addBean(lowResourcesMonitor);
|
||||
|
||||
|
||||
// === test-realm.xml ===
|
||||
HashLoginService login = new HashLoginService();
|
||||
login.setName("Test Realm");
|
||||
login.setConfig(jetty_base + "/etc/realm.properties");
|
||||
login.setConfig(jettyBase + "/etc/realm.properties");
|
||||
login.setHotReload(false);
|
||||
server.addBean(login);
|
||||
|
||||
// Start the server
|
||||
server.start();
|
||||
server.dumpStdErr();
|
||||
server.join();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,10 +65,10 @@ public class ManyConnectors
|
|||
// <code>http</code> of course, as the default for secured http is
|
||||
// <code>https</code> but we show setting the scheme to show it can be
|
||||
// done. The port for secured communication is also set here.
|
||||
HttpConfiguration http_config = new HttpConfiguration();
|
||||
http_config.setSecureScheme("https");
|
||||
http_config.setSecurePort(8443);
|
||||
http_config.setOutputBufferSize(32768);
|
||||
HttpConfiguration httpConfig = new HttpConfiguration();
|
||||
httpConfig.setSecureScheme("https");
|
||||
httpConfig.setSecurePort(8443);
|
||||
httpConfig.setOutputBufferSize(32768);
|
||||
|
||||
// HTTP connector
|
||||
// The first server connector we create is the one for http, passing in
|
||||
|
@ -76,7 +76,7 @@ public class ManyConnectors
|
|||
// the output buffer size, etc. We also set the port (8080) and
|
||||
// configure an idle timeout.
|
||||
ServerConnector http = new ServerConnector(server,
|
||||
new HttpConnectionFactory(http_config));
|
||||
new HttpConnectionFactory(httpConfig));
|
||||
http.setPort(8080);
|
||||
http.setIdleTimeout(30000);
|
||||
|
||||
|
@ -105,11 +105,11 @@ public class ManyConnectors
|
|||
// SecureRequestCustomizer which is how a new connector is able to
|
||||
// resolve the https connection before handing control over to the Jetty
|
||||
// Server.
|
||||
HttpConfiguration https_config = new HttpConfiguration(http_config);
|
||||
HttpConfiguration httpsConfig = new HttpConfiguration(httpConfig);
|
||||
SecureRequestCustomizer src = new SecureRequestCustomizer();
|
||||
src.setStsMaxAge(2000);
|
||||
src.setStsIncludeSubDomains(true);
|
||||
https_config.addCustomizer(src);
|
||||
httpsConfig.addCustomizer(src);
|
||||
|
||||
// HTTPS connector
|
||||
// We create a second ServerConnector, passing in the http configuration
|
||||
|
@ -117,7 +117,7 @@ public class ManyConnectors
|
|||
// Next we set the port and a longer idle timeout.
|
||||
ServerConnector https = new ServerConnector(server,
|
||||
new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
|
||||
new HttpConnectionFactory(https_config));
|
||||
new HttpConnectionFactory(httpsConfig));
|
||||
https.setPort(8443);
|
||||
https.setIdleTimeout(500000);
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ public class ManyContexts
|
|||
{
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
Server server = new Server(8080);
|
||||
final Server server = new Server(8080);
|
||||
|
||||
ContextHandler context = new ContextHandler("/");
|
||||
context.setContextPath("/");
|
||||
|
@ -44,8 +44,10 @@ public class ManyContexts
|
|||
contextV.setHandler(new HelloHandler("Virtual Hello"));
|
||||
|
||||
ContextHandlerCollection contexts = new ContextHandlerCollection();
|
||||
contexts.setHandlers(new Handler[] { context, contextFR, contextIT,
|
||||
contextV });
|
||||
contexts.setHandlers(new Handler[]{
|
||||
context, contextFR, contextIT,
|
||||
contextV
|
||||
});
|
||||
|
||||
server.setHandler(contexts);
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.eclipse.jetty.embedded;
|
|||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
@ -107,13 +106,13 @@ public class ManyHandlers
|
|||
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
Server server = new Server(8080);
|
||||
final Server server = new Server(8080);
|
||||
|
||||
// create the handlers
|
||||
Handler param = new ParamHandler();
|
||||
HandlerWrapper wrapper = new WelcomeWrapHandler();
|
||||
Handler hello = new HelloHandler();
|
||||
Handler dft = new DefaultHandler();
|
||||
final Handler param = new ParamHandler();
|
||||
final HandlerWrapper wrapper = new WelcomeWrapHandler();
|
||||
final Handler hello = new HelloHandler();
|
||||
final Handler dft = new DefaultHandler();
|
||||
|
||||
// configure request logging
|
||||
File requestLogFile = File.createTempFile("demo", "log");
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
|
|
@ -18,11 +18,8 @@
|
|||
|
||||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.servlet.DefaultServlet;
|
||||
import org.eclipse.jetty.servlet.ListenerHolder;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.EnumSet;
|
||||
import javax.servlet.DispatcherType;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
|
@ -34,8 +31,11 @@ import javax.servlet.ServletRequest;
|
|||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.ServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.EnumSet;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.servlet.DefaultServlet;
|
||||
import org.eclipse.jetty.servlet.ListenerHolder;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
|
||||
public class OneServletContext
|
||||
{
|
||||
|
@ -68,7 +68,6 @@ public class OneServletContext
|
|||
server.join();
|
||||
}
|
||||
|
||||
|
||||
public static class TestFilter implements Filter
|
||||
{
|
||||
@Override
|
||||
|
@ -103,7 +102,6 @@ public class OneServletContext
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static class RequestListener implements ServletRequestListener
|
||||
{
|
||||
@Override
|
||||
|
|
|
@ -25,7 +25,6 @@ import org.eclipse.jetty.server.session.SessionCache;
|
|||
import org.eclipse.jetty.server.session.SessionHandler;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
|
||||
|
||||
public class OneServletContextWithSession
|
||||
{
|
||||
public static void main(String[] args) throws Exception
|
||||
|
|
|
@ -50,12 +50,7 @@ public class OneWebApp
|
|||
// PlusConfiguration) to choosing where the webapp will unpack itself.
|
||||
WebAppContext webapp = new WebAppContext();
|
||||
webapp.setContextPath("/");
|
||||
File warFile = new File("../../tests/test-jmx/jmx-webapp/target/jmx-webapp");
|
||||
if (!warFile.exists())
|
||||
warFile = new File("tests/test-jmx/jmx-webapp/target/jmx-webapp");
|
||||
if (!warFile.exists())
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
File warFile = JettyDistribution.resolve("demo-base/webapps/async-rest.war").toFile();
|
||||
webapp.setWar(warFile.getAbsolutePath());
|
||||
|
||||
// A WebAppContext is a ContextHandler as well so it needs to be set to
|
||||
|
|
|
@ -58,13 +58,11 @@ public class OneWebAppWithJsp
|
|||
"jetty-distribution/target/distribution/demo-base/webapps/test.war");
|
||||
if (!warFile.exists())
|
||||
{
|
||||
throw new RuntimeException( "Unable to find WAR File: "
|
||||
+ warFile.getAbsolutePath() );
|
||||
throw new RuntimeException("Unable to find WAR File: " + warFile.getAbsolutePath());
|
||||
}
|
||||
webapp.setWar(warFile.getAbsolutePath());
|
||||
webapp.setExtractWAR(true);
|
||||
|
||||
|
||||
// This webapp will use jsps and jstl. We need to enable the
|
||||
// AnnotationConfiguration in order to correctly
|
||||
// set up the jsp container
|
||||
|
|
|
@ -47,5 +47,4 @@ public class ProxyServer
|
|||
|
||||
server.start();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.io.File;
|
|||
|
||||
import org.eclipse.jetty.annotations.AnnotationConfiguration;
|
||||
import org.eclipse.jetty.plus.jndi.EnvEntry;
|
||||
import org.eclipse.jetty.plus.jndi.NamingDump;
|
||||
import org.eclipse.jetty.plus.jndi.Resource;
|
||||
import org.eclipse.jetty.plus.jndi.Transaction;
|
||||
import org.eclipse.jetty.plus.webapp.EnvConfiguration;
|
||||
|
@ -35,11 +36,10 @@ import org.eclipse.jetty.webapp.WebAppContext;
|
|||
*/
|
||||
public class ServerWithAnnotations
|
||||
{
|
||||
public static final void main( String args[] ) throws Exception
|
||||
public static final void main(String[] args) throws Exception
|
||||
{
|
||||
// Create the server
|
||||
Server server = new Server(8080);
|
||||
|
||||
final Server server = new Server(8080);
|
||||
|
||||
// Create a WebApp
|
||||
WebAppContext webapp = new WebAppContext();
|
||||
|
@ -48,8 +48,7 @@ public class ServerWithAnnotations
|
|||
webapp.addConfiguration(new EnvConfiguration(), new PlusConfiguration(), new AnnotationConfiguration());
|
||||
|
||||
webapp.setContextPath("/");
|
||||
File warFile = new File(
|
||||
"jetty-distribution/target/distribution/demo-base/webapps/test.war");
|
||||
File warFile = JettyDistribution.resolve("demo-base/webapps/test-spec.war").toFile();
|
||||
webapp.setWar(warFile.getAbsolutePath());
|
||||
webapp.setAttribute(
|
||||
"org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
|
||||
|
@ -61,10 +60,14 @@ public class ServerWithAnnotations
|
|||
new Transaction(new com.acme.MockUserTransaction());
|
||||
|
||||
// Define an env entry with webapp scope.
|
||||
new EnvEntry(webapp, "maxAmount", 100D, true);
|
||||
// THIS ENTRY IS OVERRIDEN BY THE ENTRY IN jetty-env.xml
|
||||
new EnvEntry(webapp, "maxAmount", 100d, true);
|
||||
|
||||
// Register a mock DataSource scoped to the webapp
|
||||
new Resource(webapp, "jdbc/mydatasource", new com.acme.MockDataSource());
|
||||
new Resource(server, "jdbc/mydatasource", new com.acme.MockDataSource());
|
||||
|
||||
// Add JNDI context to server for dump
|
||||
server.addBean(new NamingDump());
|
||||
|
||||
// Configure a LoginService
|
||||
HashLoginService loginService = new HashLoginService();
|
||||
|
@ -76,5 +79,4 @@ public class ServerWithAnnotations
|
|||
server.dumpStdErr();
|
||||
server.join();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.embedded;
|
||||
|
||||
import java.lang.management.ManagementFactory;
|
||||
|
||||
import javax.management.remote.JMXServiceURL;
|
||||
|
||||
import org.eclipse.jetty.jmx.ConnectorServer;
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.embedded;
|
|||
|
||||
import javax.websocket.OnMessage;
|
||||
import javax.websocket.Session;
|
||||
import javax.websocket.server.ServerContainer;
|
||||
import javax.websocket.server.ServerEndpoint;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
|
@ -49,26 +48,23 @@ public class WebSocketJsrServer
|
|||
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
Server server = new Server(8080);
|
||||
final Server server = new Server(8080);
|
||||
|
||||
HandlerList handlers = new HandlerList();
|
||||
|
||||
ServletContextHandler context = new ServletContextHandler(
|
||||
ServletContextHandler contextHandler = new ServletContextHandler(
|
||||
ServletContextHandler.SESSIONS);
|
||||
context.setContextPath("/");
|
||||
handlers.addHandler(context);
|
||||
contextHandler.setContextPath("/");
|
||||
handlers.addHandler(contextHandler);
|
||||
handlers.addHandler(new DefaultHandler());
|
||||
server.setHandler(handlers);
|
||||
|
||||
// Enable javax.websocket configuration for the context
|
||||
ServerContainer wsContainer = JavaxWebSocketServletContainerInitializer
|
||||
.configureContext(context);
|
||||
|
||||
// Add your websockets to the container
|
||||
wsContainer.addEndpoint(EchoJsrSocket.class);
|
||||
JavaxWebSocketServletContainerInitializer.configure(contextHandler, (context, container) ->
|
||||
container.addEndpoint(EchoJsrSocket.class));
|
||||
|
||||
server.start();
|
||||
context.dumpStdErr();
|
||||
contextHandler.dumpStdErr();
|
||||
server.join();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.eclipse.jetty.server.Server;
|
|||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
import org.eclipse.jetty.websocket.api.Session;
|
||||
import org.eclipse.jetty.websocket.api.WriteCallback;
|
||||
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
|
||||
import org.eclipse.jetty.websocket.api.annotations.WebSocket;
|
||||
import org.eclipse.jetty.websocket.server.JettyWebSocketServlet;
|
||||
|
@ -43,7 +44,7 @@ public class WebSocketServer
|
|||
@OnWebSocketMessage
|
||||
public void onMessage(Session session, String message)
|
||||
{
|
||||
session.getRemote().sendStringByFuture(message);
|
||||
session.getRemote().sendString(message, WriteCallback.NOOP);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,7 +57,7 @@ public class WebSocketServer
|
|||
@Override
|
||||
public void configure(JettyWebSocketServletFactory factory)
|
||||
{
|
||||
factory.addMapping(factory.parsePathSpec("/"), (req,res)->new EchoSocket());
|
||||
factory.addMapping("/", (req, res) -> new EchoSocket());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
|
||||
<Configure id="ExampleServer" class="org.eclipse.jetty.server.Server">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
|
||||
<Configure id="FileServer" class="org.eclipse.jetty.server.Server">
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
|
||||
<Configure id="OtherServer" class="org.eclipse.jetty.server.Server">
|
||||
<Set name="handler">
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-project</artifactId>
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.eclipse.jetty.alpn.client;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.net.ssl.SSLEngine;
|
||||
|
||||
import org.eclipse.jetty.io.ClientConnectionFactory;
|
||||
|
|
|
@ -24,7 +24,6 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.net.ssl.SSLEngine;
|
||||
|
||||
import org.eclipse.jetty.io.ClientConnectionFactory;
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-alpn-parent</artifactId>
|
||||
|
@ -84,8 +83,7 @@
|
|||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<argLine>
|
||||
@{argLine} ${jetty.surefire.argLine}
|
||||
--add-reads org.eclipse.jetty.alpn.conscrypt.server=org.eclipse.jetty.server
|
||||
@{argLine} ${jetty.surefire.argLine} --add-reads org.eclipse.jetty.alpn.conscrypt.server=org.eclipse.jetty.server
|
||||
</argLine>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
|
|
@ -76,7 +76,6 @@ public class ConscryptServerALPNProcessor implements ALPNProcessor.Server
|
|||
{
|
||||
private final ALPNServerConnection alpnConnection;
|
||||
|
||||
|
||||
private ALPNCallback(ALPNServerConnection connection)
|
||||
{
|
||||
alpnConnection = connection;
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.alpn.java.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.net.ssl.SSLEngine;
|
||||
import javax.net.ssl.SSLParameters;
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-alpn-parent</artifactId>
|
||||
|
@ -22,8 +20,7 @@
|
|||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<argLine>
|
||||
@{argLine} ${jetty.surefire.argLine}
|
||||
--add-reads org.eclipse.jetty.alpn.java.server=org.eclipse.jetty.server
|
||||
@{argLine} ${jetty.surefire.argLine} --add-reads org.eclipse.jetty.alpn.java.server=org.eclipse.jetty.server
|
||||
</argLine>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.alpn.java.server;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
import javax.net.ssl.SSLEngine;
|
||||
|
||||
import org.eclipse.jetty.alpn.server.ALPNServerConnection;
|
||||
|
|
|
@ -23,7 +23,6 @@ import java.io.InputStream;
|
|||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLParameters;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
|
@ -105,7 +104,7 @@ public class JDK9ALPNTest
|
|||
client.startHandshake();
|
||||
|
||||
OutputStream output = client.getOutputStream();
|
||||
output.write(("" +
|
||||
output.write((
|
||||
"GET / HTTP/1.1\r\n" +
|
||||
"Host: localhost\r\n" +
|
||||
"Connection: close\r\n" +
|
||||
|
@ -150,7 +149,7 @@ public class JDK9ALPNTest
|
|||
client.startHandshake();
|
||||
|
||||
OutputStream output = client.getOutputStream();
|
||||
output.write(("" +
|
||||
output.write((
|
||||
"GET / HTTP/1.1\r\n" +
|
||||
"Host: localhost\r\n" +
|
||||
"Connection: close\r\n" +
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_10_0.dtd">
|
||||
|
||||
<Configure id="sslConnector" class="org.eclipse.jetty.server.ServerConnector">
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
|||
<Arg>
|
||||
<New id="alpn" class="org.eclipse.jetty.alpn.server.ALPNServerConnectionFactory">
|
||||
<Arg name="protocols" type="String"><Property name="jetty.alpn.protocols" default="" /></Arg>
|
||||
<Set name="defaultProtocol"><Property name="jetty.alpn.defaultProtocol" /></Set>
|
||||
<Set name="defaultProtocol" property="jetty.alpn.defaultProtocol"/>
|
||||
</New>
|
||||
</Arg>
|
||||
</Call>
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html
|
||||
|
||||
[depend]
|
||||
alpn-impl/alpn-9
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.alpn.server;
|
|||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.net.ssl.SSLEngine;
|
||||
import javax.net.ssl.SSLSession;
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ import java.util.Arrays;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.ServiceLoader;
|
||||
|
||||
import javax.net.ssl.SSLEngine;
|
||||
|
||||
import org.eclipse.jetty.io.AbstractConnection;
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-project</artifactId>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-project</artifactId>
|
||||
|
@ -21,8 +20,7 @@
|
|||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<argLine>
|
||||
@{argLine} ${jetty.surefire.argLine}
|
||||
--add-opens org.eclipse.jetty.annotations/org.eclipse.jetty.annotations.resources=org.eclipse.jetty.plus
|
||||
@{argLine} ${jetty.surefire.argLine} --add-opens org.eclipse.jetty.annotations/org.eclipse.jetty.annotations.resources=org.eclipse.jetty.plus
|
||||
</argLine>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
@ -33,9 +31,7 @@
|
|||
<configuration>
|
||||
<instructions>
|
||||
<Import-Package>org.objectweb.asm;version="5",*</Import-Package>
|
||||
<Require-Capability>osgi.serviceloader;
|
||||
filter:="(osgi.serviceloader=javax.servlet.ServletContainerInitializer)";resolution:=optional;cardinality:=multiple,
|
||||
osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional
|
||||
<Require-Capability>osgi.serviceloader; filter:="(osgi.serviceloader=javax.servlet.ServletContainerInitializer)";resolution:=optional;cardinality:=multiple, osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional
|
||||
</Require-Capability>
|
||||
</instructions>
|
||||
</configuration>
|
||||
|
|
|
@ -26,22 +26,18 @@ import org.eclipse.jetty.webapp.WebAppContext;
|
|||
* DiscoverableAnnotationHandler
|
||||
*
|
||||
* Base class for handling the discovery of an annotation.
|
||||
*
|
||||
*/
|
||||
public abstract class AbstractDiscoverableAnnotationHandler extends AbstractHandler
|
||||
{
|
||||
protected WebAppContext _context;
|
||||
|
||||
|
||||
public AbstractDiscoverableAnnotationHandler(WebAppContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
|
||||
public void addAnnotation(DiscoveredAnnotation a)
|
||||
{
|
||||
_context.getMetaData().addDiscoveredAnnotation(a);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -79,7 +79,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
public static final String MULTI_THREADED = "org.eclipse.jetty.annotations.multiThreaded";
|
||||
public static final String MAX_SCAN_WAIT = "org.eclipse.jetty.annotations.maxWait";
|
||||
|
||||
|
||||
public static final int DEFAULT_MAX_SCAN_WAIT = 60; /* time in sec */
|
||||
public static final boolean DEFAULT_MULTI_THREADED = true;
|
||||
|
||||
|
@ -107,7 +106,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
* TimeStatistic
|
||||
*
|
||||
* Simple class to capture elapsed time of an operation.
|
||||
*
|
||||
*/
|
||||
public class TimeStatistic
|
||||
{
|
||||
|
@ -140,12 +138,10 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ParserTask
|
||||
*
|
||||
* Task to executing scanning of a resource for annotations.
|
||||
*
|
||||
*/
|
||||
public class ParserTask implements Callable<Void>
|
||||
{
|
||||
|
@ -190,7 +186,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ServletContainerInitializerOrdering
|
||||
*
|
||||
|
@ -223,7 +218,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
throw new IllegalArgumentException("Duplicate wildcards in ServletContainerInitializer ordering " + ordering);
|
||||
_star = i;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -256,6 +250,7 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
|
||||
/**
|
||||
* Get the order index of the given classname
|
||||
*
|
||||
* @param name the classname to look up
|
||||
* @return the index of the class name (or -1 if not found)
|
||||
*/
|
||||
|
@ -269,6 +264,7 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
|
||||
/**
|
||||
* Get the number of elements of the ordering
|
||||
*
|
||||
* @return the size of the index
|
||||
*/
|
||||
public int getSize()
|
||||
|
@ -285,21 +281,19 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* ServletContainerInitializerComparator
|
||||
*
|
||||
* Comparator impl that orders a set of ServletContainerInitializers according to the
|
||||
* list of classnames (optionally containing a "*" wildcard character) established in a
|
||||
* ServletContainerInitializerOrdering.
|
||||
*
|
||||
* @see ServletContainerInitializerOrdering
|
||||
*/
|
||||
public class ServletContainerInitializerComparator implements Comparator<ServletContainerInitializer>
|
||||
{
|
||||
private ServletContainerInitializerOrdering _ordering;
|
||||
|
||||
|
||||
public ServletContainerInitializerComparator(ServletContainerInitializerOrdering ordering)
|
||||
{
|
||||
_ordering = ordering;
|
||||
|
@ -370,10 +364,11 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
{
|
||||
Map<String, Set<String>> map = (Map<String, Set<String>>)context.getAttribute(AnnotationConfiguration.CLASS_INHERITANCE_MAP);
|
||||
for (ContainerInitializer i : initializers)
|
||||
{
|
||||
i.resolveClasses(context, map);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jetty.webapp.AbstractConfiguration#postConfigure(org.eclipse.jetty.webapp.WebAppContext)
|
||||
|
@ -417,8 +412,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
super.postConfigure(context);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Perform scanning of classes for annotations
|
||||
*
|
||||
|
@ -435,9 +428,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
AnnotationParser parser = createAnnotationParser(javaPlatform);
|
||||
_parserTasks = new ArrayList<ParserTask>();
|
||||
|
||||
long start = 0;
|
||||
|
||||
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Annotation scanning commencing: webxml={}, metadatacomplete={}, configurationDiscovered={}, multiThreaded={}, maxScanWait={}",
|
||||
context.getServletContext().getEffectiveMajorVersion(),
|
||||
|
@ -446,7 +436,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
isUseMultiThreading(context),
|
||||
getMaxScanWait(context));
|
||||
|
||||
|
||||
parseContainerPath(context, parser);
|
||||
//email from Rajiv Mordani jsrs 315 7 April 2010
|
||||
// If there is a <others/> then the ordering should be
|
||||
|
@ -456,7 +445,7 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
parseWebInfClasses(context, parser);
|
||||
parseWebInfLib(context, parser);
|
||||
|
||||
start = System.nanoTime();
|
||||
long start = System.nanoTime();
|
||||
|
||||
//execute scan, either effectively synchronously (1 thread only), or asynchronously (limited by number of processors available)
|
||||
final Semaphore task_limit = (isUseMultiThreading(context) ? new Semaphore(ProcessorUtils.availableProcessors()) : new Semaphore(1));
|
||||
|
@ -496,7 +485,9 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
if (LOG.isDebugEnabled())
|
||||
{
|
||||
for (ParserTask p : _parserTasks)
|
||||
{
|
||||
LOG.debug("Scanned {} in {}ms", p.getResource(), TimeUnit.MILLISECONDS.convert(p.getStatistic().getElapsed(), TimeUnit.NANOSECONDS));
|
||||
}
|
||||
|
||||
LOG.debug("Scanned {} container path jars, {} WEB-INF/lib jars, {} WEB-INF/classes dirs in {}ms for context {}",
|
||||
(_containerPathStats == null ? -1 : _containerPathStats.getTotal()),
|
||||
|
@ -511,8 +502,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
me.ifExceptionThrow();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param javaPlatform The java platform to scan for.
|
||||
* @return a new AnnotationParser. This method can be overridden to use a different implementation of
|
||||
|
@ -525,6 +514,7 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
|
||||
/**
|
||||
* Check if we should use multiple threads to scan for annotations or not
|
||||
*
|
||||
* @param context the context of the multi threaded setting
|
||||
* @return true if multi threading is enabled on the context, server, or via a System property.
|
||||
* @see #MULTI_THREADED
|
||||
|
@ -547,8 +537,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
return Boolean.parseBoolean(System.getProperty(MULTI_THREADED, Boolean.toString(DEFAULT_MULTI_THREADED)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Work out how long we should wait for the async scanning to occur.
|
||||
*
|
||||
|
@ -603,7 +591,10 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
if (classes != null)
|
||||
{
|
||||
|
||||
if (LOG.isDebugEnabled()){LOG.debug("HandlesTypes {} on initializer {}",Arrays.asList(classes),service.getClass());}
|
||||
if (LOG.isDebugEnabled())
|
||||
{
|
||||
LOG.debug("HandlesTypes {} on initializer {}", Arrays.asList(classes), service.getClass());
|
||||
}
|
||||
|
||||
initializer = new ContainerInitializer(service, classes);
|
||||
|
||||
|
@ -623,7 +614,8 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
//register a handler for it
|
||||
if (c.isAnnotation())
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Registering annotation handler for "+c.getName());
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Registering annotation handler for " + c.getName());
|
||||
_containerInitializerAnnotationHandlers.add(new ContainerInitializerAnnotationHandler(initializer, c));
|
||||
}
|
||||
}
|
||||
|
@ -631,19 +623,20 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
else
|
||||
{
|
||||
initializer = new ContainerInitializer(service, null);
|
||||
if (LOG.isDebugEnabled()) LOG.debug("No classes in HandlesTypes on initializer "+service.getClass());
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("No classes in HandlesTypes on initializer " + service.getClass());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
initializer = new ContainerInitializer(service, null);
|
||||
if (LOG.isDebugEnabled()) LOG.debug("No HandlesTypes annotation on initializer "+service.getClass());
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("No HandlesTypes annotation on initializer " + service.getClass());
|
||||
}
|
||||
|
||||
initializers.add(initializer);
|
||||
}
|
||||
|
||||
|
||||
//add a bean to the context which will call the servletcontainerinitializers when appropriate
|
||||
ServletContainerInitializersStarter starter = (ServletContainerInitializersStarter)context.getAttribute(CONTAINER_INITIALIZER_STARTER);
|
||||
if (starter != null)
|
||||
|
@ -757,7 +750,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
return _sciExcludePattern.matcher(sci.getClass().getName()).matches();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test if the ServletContainerInitializer is from the container classpath
|
||||
*
|
||||
|
@ -813,6 +805,7 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
|
||||
/**
|
||||
* Get SCIs that are not excluded from consideration
|
||||
*
|
||||
* @param context the web app context
|
||||
* @return the list of non-excluded servlet container initializers
|
||||
* @throws Exception if unable to get list
|
||||
|
@ -868,8 +861,7 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
|
||||
//check containerInitializerOrdering doesn't exclude it
|
||||
String name = sci.getClass().getName();
|
||||
if (initializerOrdering != null
|
||||
&& (!initializerOrdering.hasWildcard() && initializerOrdering.getIndexOf(name) < 0))
|
||||
if (initializerOrdering != null && (!initializerOrdering.hasWildcard() && initializerOrdering.getIndexOf(name) < 0))
|
||||
{
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("{} is excluded by ordering", sci);
|
||||
|
@ -922,7 +914,9 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
|
||||
//throw out the ones we've already accounted for
|
||||
for (ServletContainerInitializer s : nonExcludedInitializers)
|
||||
{
|
||||
sciResourceMap.remove(s);
|
||||
}
|
||||
|
||||
if (context.getMetaData().getOrdering() == null)
|
||||
{
|
||||
|
@ -971,13 +965,14 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
{
|
||||
int i = 0;
|
||||
for (ServletContainerInitializer sci : nonExcludedInitializers)
|
||||
{
|
||||
LOG.debug("ServletContainerInitializer: {} {} from {}", (++i), sci.getClass().getName(), sciResourceMap.get(sci));
|
||||
}
|
||||
}
|
||||
|
||||
return nonExcludedInitializers;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Jetty-specific extension that allows an ordering to be applied across ALL ServletContainerInitializers.
|
||||
*
|
||||
|
@ -996,7 +991,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
return new ServletContainerInitializerOrdering(tmp);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Scan jars on container path.
|
||||
*
|
||||
|
@ -1032,7 +1026,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Scan jars in WEB-INF/lib
|
||||
*
|
||||
|
@ -1101,7 +1094,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Scan classes in WEB-INF/classes
|
||||
*
|
||||
|
@ -1136,8 +1128,6 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the web-fragment.xml from a jar
|
||||
*
|
||||
|
@ -1178,5 +1168,3 @@ public class AnnotationConfiguration extends AbstractConfiguration
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ public class AnnotationDecorator implements Decorator
|
|||
* <li> PreDestroy </li>
|
||||
* <li> ServletSecurity? </li>
|
||||
* </ul>
|
||||
*
|
||||
* @param o the object ot introspect
|
||||
*/
|
||||
protected void introspect(Object o)
|
||||
|
|
|
@ -19,17 +19,19 @@
|
|||
package org.eclipse.jetty.annotations;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* AnnotationIntrospector
|
||||
*
|
||||
*
|
||||
* Introspects a class to find various types of
|
||||
* annotations as defined by the servlet specification.
|
||||
*/
|
||||
public class AnnotationIntrospector
|
||||
{
|
||||
protected List<IntrospectableAnnotationHandler> _handlers = new ArrayList<IntrospectableAnnotationHandler>();
|
||||
|
||||
private final Set<Class<?>> _introspectedClasses = new HashSet<>();
|
||||
private final List<IntrospectableAnnotationHandler> _handlers = new ArrayList<IntrospectableAnnotationHandler>();
|
||||
|
||||
/**
|
||||
* IntrospectableAnnotationHandler
|
||||
|
@ -41,21 +43,18 @@ public class AnnotationIntrospector
|
|||
public void handle(Class<?> clazz);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* AbstractIntrospectableAnnotationHandler
|
||||
*
|
||||
* Base class for handlers that introspect a class to find a particular annotation.
|
||||
* A handler can optionally introspect the parent hierarchy of a class.
|
||||
*/
|
||||
public static abstract class AbstractIntrospectableAnnotationHandler implements IntrospectableAnnotationHandler
|
||||
public abstract static class AbstractIntrospectableAnnotationHandler implements IntrospectableAnnotationHandler
|
||||
{
|
||||
private boolean _introspectAncestors;
|
||||
|
||||
public abstract void doHandle(Class<?> clazz);
|
||||
|
||||
|
||||
public AbstractIntrospectableAnnotationHandler(boolean introspectAncestors)
|
||||
{
|
||||
_introspectAncestors = introspectAncestors;
|
||||
|
@ -90,6 +89,16 @@ public class AnnotationIntrospector
|
|||
if (clazz == null)
|
||||
return;
|
||||
|
||||
synchronized (_introspectedClasses)
|
||||
{
|
||||
//Synchronize on the set of already introspected classes.
|
||||
//This ensures that only 1 thread can be introspecting, and that
|
||||
//thread must have fully finished generating the products of
|
||||
//introspection before another thread is allowed in.
|
||||
//We remember the classes that we have introspected to avoid
|
||||
//reprocessing the same class.
|
||||
if (_introspectedClasses.add(clazz))
|
||||
{
|
||||
for (IntrospectableAnnotationHandler handler : _handlers)
|
||||
{
|
||||
try
|
||||
|
@ -105,6 +114,7 @@ public class AnnotationIntrospector
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,8 @@ import org.eclipse.jetty.util.Loader;
|
|||
import org.eclipse.jetty.util.ManifestUtils;
|
||||
import org.eclipse.jetty.util.MultiException;
|
||||
import org.eclipse.jetty.util.MultiReleaseJarFile;
|
||||
import org.eclipse.jetty.util.StringUtil;
|
||||
import org.eclipse.jetty.util.TypeUtil;
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
import org.eclipse.jetty.util.log.Logger;
|
||||
import org.eclipse.jetty.util.resource.Resource;
|
||||
|
@ -80,6 +82,7 @@ public class AnnotationParser
|
|||
|
||||
/**
|
||||
* Determine the runtime version of asm.
|
||||
*
|
||||
* @return the org.objectweb.asm.Opcode matching the runtime version of asm.
|
||||
*/
|
||||
public static int asmVersion()
|
||||
|
@ -150,7 +153,7 @@ public class AnnotationParser
|
|||
if (name.endsWith(".class"))
|
||||
name = name.substring(0, name.length() - ".class".length());
|
||||
|
||||
return name.replace('/', '.');
|
||||
return StringUtil.replace(name, '/', '.');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -166,7 +169,9 @@ public class AnnotationParser
|
|||
String[] normalList = new String[list.length];
|
||||
int i = 0;
|
||||
for (String s : list)
|
||||
{
|
||||
normalList[i++] = normalize(s);
|
||||
}
|
||||
return normalList;
|
||||
}
|
||||
|
||||
|
@ -345,17 +350,22 @@ public class AnnotationParser
|
|||
public static interface Handler
|
||||
{
|
||||
public void handle(ClassInfo classInfo);
|
||||
|
||||
public void handle(MethodInfo methodInfo);
|
||||
|
||||
public void handle(FieldInfo fieldInfo);
|
||||
|
||||
public void handle(ClassInfo info, String annotationName);
|
||||
|
||||
public void handle(MethodInfo info, String annotationName);
|
||||
|
||||
public void handle(FieldInfo info, String annotationName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience base class to provide no-ops for all Handler methods.
|
||||
*/
|
||||
public static abstract class AbstractHandler implements Handler
|
||||
public abstract static class AbstractHandler implements Handler
|
||||
{
|
||||
@Override
|
||||
public void handle(ClassInfo classInfo)
|
||||
|
@ -418,7 +428,9 @@ public class AnnotationParser
|
|||
{
|
||||
String annotationName = normalize(desc);
|
||||
for (Handler h : _handlers)
|
||||
{
|
||||
h.handle(_mi, annotationName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -454,7 +466,9 @@ public class AnnotationParser
|
|||
{
|
||||
String annotationName = normalize(desc);
|
||||
for (Handler h : _handlers)
|
||||
{
|
||||
h.handle(_fieldInfo, annotationName);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@ -488,8 +502,10 @@ public class AnnotationParser
|
|||
{
|
||||
_ci = new ClassInfo(_containingResource, normalize(name), version, access, signature, normalize(superName), normalize(interfaces));
|
||||
for (Handler h : _handlers)
|
||||
{
|
||||
h.handle(_ci);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Visit an annotation on a Class
|
||||
|
@ -499,7 +515,9 @@ public class AnnotationParser
|
|||
{
|
||||
String annotationName = normalize(desc);
|
||||
for (Handler h : _handlers)
|
||||
{
|
||||
h.handle(_ci, annotationName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -546,7 +564,6 @@ public class AnnotationParser
|
|||
_javaPlatform = javaPlatform;
|
||||
}
|
||||
|
||||
|
||||
public AnnotationParser(int javaPlatform, int asmVersion)
|
||||
{
|
||||
if (javaPlatform == 0)
|
||||
|
@ -582,13 +599,12 @@ public class AnnotationParser
|
|||
if (className == null)
|
||||
return;
|
||||
|
||||
String tmp = className;
|
||||
className = className.replace('.', '/')+".class";
|
||||
URL resource = Loader.getResource(className);
|
||||
String classRef = TypeUtil.toClassReference(className);
|
||||
URL resource = Loader.getResource(classRef);
|
||||
if (resource != null)
|
||||
{
|
||||
Resource r = Resource.newResource(resource);
|
||||
addParsedClass(tmp, r);
|
||||
addParsedClass(className, r);
|
||||
try (InputStream is = r.getInputStream())
|
||||
{
|
||||
scanClass(handlers, null, is);
|
||||
|
@ -609,7 +625,7 @@ public class AnnotationParser
|
|||
Class<?> cz = clazz;
|
||||
while (cz != Object.class)
|
||||
{
|
||||
String nameAsResource = cz.getName().replace('.', '/')+".class";
|
||||
String nameAsResource = TypeUtil.toClassReference(cz);
|
||||
URL resource = Loader.getResource(nameAsResource);
|
||||
if (resource != null)
|
||||
{
|
||||
|
@ -654,17 +670,16 @@ public class AnnotationParser
|
|||
{
|
||||
MultiException me = new MultiException();
|
||||
|
||||
for (String s:classNames)
|
||||
for (String className : classNames)
|
||||
{
|
||||
try
|
||||
{
|
||||
String name = s;
|
||||
s = s.replace('.', '/')+".class";
|
||||
URL resource = Loader.getResource(s);
|
||||
String classRef = TypeUtil.toClassReference(className);
|
||||
URL resource = Loader.getResource(classRef);
|
||||
if (resource != null)
|
||||
{
|
||||
Resource r = Resource.newResource(resource);
|
||||
addParsedClass(name, r);
|
||||
addParsedClass(className, r);
|
||||
try (InputStream is = r.getInputStream())
|
||||
{
|
||||
scanClass(handlers, null, is);
|
||||
|
@ -673,71 +688,12 @@ public class AnnotationParser
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
me.add(new RuntimeException("Error scanning class "+s, e));
|
||||
me.add(new RuntimeException("Error scanning class " + className, e));
|
||||
}
|
||||
}
|
||||
me.ifExceptionThrow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse all classes in a directory
|
||||
*
|
||||
* @param handlers the set of handlers to look for classes in
|
||||
* @param root the resource directory to look for classes
|
||||
* @throws Exception if unable to parse
|
||||
*/
|
||||
protected void parseDir (Set<? extends Handler> handlers, Resource root) throws Exception
|
||||
{
|
||||
if (!root.isDirectory() || !root.exists() || root.getName().startsWith("."))
|
||||
return;
|
||||
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Scanning dir {}", root);
|
||||
|
||||
File rootFile = root.getFile();
|
||||
|
||||
MultiException me = new MultiException();
|
||||
Collection<Resource> resources = root.getAllResources();
|
||||
if (resources != null)
|
||||
{
|
||||
for (Resource r:resources)
|
||||
{
|
||||
if (r.isDirectory())
|
||||
continue;
|
||||
|
||||
File file = r.getFile();
|
||||
if (isValidClassFileName((file==null?null:file.getName())))
|
||||
{
|
||||
Path classpath = rootFile.toPath().relativize(file.toPath());
|
||||
String str = classpath.toString();
|
||||
str = str.substring(0, str.lastIndexOf(".class")).replace('/', '.').replace('\\', '.');
|
||||
|
||||
try
|
||||
{
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Scanning class {}", r);
|
||||
addParsedClass(str, r);
|
||||
try (InputStream is=r.getInputStream())
|
||||
{
|
||||
scanClass(handlers, Resource.newResource(file.getParentFile()), is);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Error scanning file "+file, ex);
|
||||
me.add(new RuntimeException("Error scanning file "+file,ex));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Skipping scan on invalid file {}", file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
me.ifExceptionThrow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse classes in the supplied uris.
|
||||
*
|
||||
|
@ -815,7 +771,70 @@ public class AnnotationParser
|
|||
}
|
||||
}
|
||||
|
||||
if (LOG.isDebugEnabled()) LOG.warn("Resource not scannable for classes: {}", r);
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.warn("Resource not scannable for classes: {}", r);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse all classes in a directory
|
||||
*
|
||||
* @param handlers the set of handlers to look for classes in
|
||||
* @param root the resource directory to look for classes
|
||||
* @throws Exception if unable to parse
|
||||
*/
|
||||
protected void parseDir(Set<? extends Handler> handlers, Resource root) throws Exception
|
||||
{
|
||||
if (!root.isDirectory() || !root.exists() || root.getName().startsWith("."))
|
||||
return;
|
||||
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Scanning dir {}", root);
|
||||
|
||||
File rootFile = root.getFile();
|
||||
|
||||
MultiException me = new MultiException();
|
||||
Collection<Resource> resources = root.getAllResources();
|
||||
if (resources != null)
|
||||
{
|
||||
for (Resource r : resources)
|
||||
{
|
||||
if (r.isDirectory())
|
||||
continue;
|
||||
|
||||
File file = r.getFile();
|
||||
if (isValidClassFileName((file == null ? null : file.getName())))
|
||||
{
|
||||
Path classpath = rootFile.toPath().relativize(file.toPath());
|
||||
String str = classpath.toString();
|
||||
str = str.substring(0, str.lastIndexOf(".class"));
|
||||
str = StringUtil.replace(str, File.separatorChar, '.');
|
||||
|
||||
try
|
||||
{
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Scanning class {}", r);
|
||||
addParsedClass(str, r);
|
||||
try (InputStream is = r.getInputStream())
|
||||
{
|
||||
scanClass(handlers, Resource.newResource(file.getParentFile()), is);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Error scanning file " + file, ex);
|
||||
me.add(new RuntimeException("Error scanning file " + file, ex));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Skipping scan on invalid file {}", file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
me.ifExceptionThrow();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -877,7 +896,7 @@ public class AnnotationParser
|
|||
//check file is a valid class file name
|
||||
if (isValidClassFileName(name) && isValidClassFilePath(name))
|
||||
{
|
||||
String shortName = name.replace('/', '.').substring(0,name.length()-6);
|
||||
String shortName = StringUtil.replace(name, '/', '.').substring(0, name.length() - 6);
|
||||
addParsedClass(shortName, Resource.newResource("jar:" + jar.getURI() + "!/" + entry.getNameInJar()));
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Scanning class from jar {}!/{}", jar, entry);
|
||||
|
@ -918,6 +937,7 @@ public class AnnotationParser
|
|||
* <li> it isn't a dot file or in a hidden directory </li>
|
||||
* <li> the name of the class at least begins with a valid identifier for a class name </li>
|
||||
* </ul>
|
||||
*
|
||||
* @param name the class file name
|
||||
* @return whether the class file name is valid
|
||||
*/
|
||||
|
@ -931,13 +951,15 @@ public class AnnotationParser
|
|||
String lc = name.toLowerCase(Locale.ENGLISH);
|
||||
if (!lc.endsWith(".class"))
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Not a class: {}",name);
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Not a class: {}", name);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (lc.equals("module-info.class"))
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Skipping module-info.class");
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Skipping module-info.class");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -947,7 +969,8 @@ public class AnnotationParser
|
|||
c0 = (ldir > -1 ? ldir + 1 : c0);
|
||||
if (!Character.isJavaIdentifierStart(name.charAt(c0)))
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Not a java identifier: {}",name);
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Not a java identifier: {}", name);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -969,7 +992,8 @@ public class AnnotationParser
|
|||
// skip any classfiles that are in a hidden directory
|
||||
if (path.startsWith(".") || path.contains("/."))
|
||||
{
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Contains hidden dirs: " + path);
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Contains hidden dirs: " + path);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ public class ClassInheritanceHandler extends AbstractHandler
|
|||
|
||||
Map<String, Set<String>> _inheritanceMap;
|
||||
|
||||
|
||||
public ClassInheritanceHandler(Map<String, Set<String>> map)
|
||||
{
|
||||
_inheritanceMap = map;
|
||||
|
|
|
@ -16,10 +16,8 @@
|
|||
// ========================================================================
|
||||
//
|
||||
|
||||
|
||||
package org.eclipse.jetty.annotations;
|
||||
|
||||
|
||||
import org.eclipse.jetty.annotations.AnnotationParser.AbstractHandler;
|
||||
import org.eclipse.jetty.annotations.AnnotationParser.ClassInfo;
|
||||
import org.eclipse.jetty.annotations.AnnotationParser.FieldInfo;
|
||||
|
@ -84,7 +82,6 @@ public class ContainerInitializerAnnotationHandler extends AbstractHandler
|
|||
_initializer.addAnnotatedTypeName(info.getClassInfo().getClassName());
|
||||
}
|
||||
|
||||
|
||||
public ContainerInitializer getContainerInitializer()
|
||||
{
|
||||
return _initializer;
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
package org.eclipse.jetty.annotations;
|
||||
|
||||
|
||||
import javax.annotation.security.DeclareRoles;
|
||||
import javax.servlet.Servlet;
|
||||
|
||||
|
@ -44,7 +43,6 @@ public class DeclareRolesAnnotationHandler extends AbstractIntrospectableAnnotat
|
|||
_context = context;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jetty.annotations.AnnotationIntrospector.AbstractIntrospectableAnnotationHandler#doHandle(java.lang.Class)
|
||||
*/
|
||||
|
@ -69,8 +67,9 @@ public class DeclareRolesAnnotationHandler extends AbstractIntrospectableAnnotat
|
|||
if (roles != null && roles.length > 0)
|
||||
{
|
||||
for (String r : roles)
|
||||
{
|
||||
((ConstraintSecurityHandler)_context.getSecurityHandler()).addRole(r);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,8 +30,6 @@ import org.eclipse.jetty.webapp.WebAppContext;
|
|||
|
||||
/**
|
||||
* MultiPartConfigAnnotationHandler
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class MultiPartConfigAnnotationHandler extends AbstractIntrospectableAnnotationHandler
|
||||
{
|
||||
|
@ -43,6 +41,7 @@ public class MultiPartConfigAnnotationHandler extends AbstractIntrospectableAnno
|
|||
super(false);
|
||||
_context = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jetty.annotations.AnnotationIntrospector.AbstractIntrospectableAnnotationHandler#doHandle(java.lang.Class)
|
||||
*/
|
||||
|
@ -62,9 +61,7 @@ public class MultiPartConfigAnnotationHandler extends AbstractIntrospectableAnno
|
|||
//How to identify the correct Servlet? If the Servlet has no WebServlet annotation on it, does it mean that this MultipartConfig
|
||||
//annotation applies to all declared instances in web.xml/programmatically?
|
||||
//Assuming TRUE for now.
|
||||
|
||||
ServletHolder holder = getServletHolderForClass(clazz);
|
||||
if (holder != null)
|
||||
for (ServletHolder holder : _context.getServletHandler().getServlets(clazz))
|
||||
{
|
||||
Descriptor d = metaData.getOriginDescriptor(holder.getName() + ".servlet.multipart-config");
|
||||
//if a descriptor has already set the value for multipart config, do not
|
||||
|
@ -76,21 +73,4 @@ public class MultiPartConfigAnnotationHandler extends AbstractIntrospectableAnno
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private ServletHolder getServletHolderForClass (Class clazz)
|
||||
{
|
||||
ServletHolder holder = null;
|
||||
ServletHolder[] holders = _context.getServletHandler().getServlets();
|
||||
if (holders != null)
|
||||
{
|
||||
for (ServletHolder h : holders)
|
||||
{
|
||||
if (h.getClassName() != null && h.getClassName().equals(clazz.getName()))
|
||||
{
|
||||
holder = h;
|
||||
}
|
||||
}
|
||||
}
|
||||
return holder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.annotations;
|
|||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
import org.eclipse.jetty.annotations.AnnotationIntrospector.AbstractIntrospectableAnnotationHandler;
|
||||
|
@ -40,7 +39,6 @@ public class PostConstructAnnotationHandler extends AbstractIntrospectableAnnota
|
|||
_context = wac;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void doHandle(Class clazz)
|
||||
{
|
||||
|
@ -72,8 +70,7 @@ public class PostConstructAnnotationHandler extends AbstractIntrospectableAnnota
|
|||
origin == Origin.WebOverride))
|
||||
return;
|
||||
|
||||
PostConstructCallback callback = new PostConstructCallback();
|
||||
callback.setTarget(clazz.getName(), m.getName());
|
||||
PostConstructCallback callback = new PostConstructCallback(clazz, m.getName());
|
||||
LifeCycleCallbackCollection lifecycles = (LifeCycleCallbackCollection)_context.getAttribute(LifeCycleCallbackCollection.LIFECYCLE_CALLBACK_COLLECTION);
|
||||
if (lifecycles == null)
|
||||
{
|
||||
|
@ -88,6 +85,7 @@ public class PostConstructAnnotationHandler extends AbstractIntrospectableAnnota
|
|||
|
||||
/**
|
||||
* Check if the given class is permitted to have PostConstruct annotation.
|
||||
*
|
||||
* @param c the class
|
||||
* @return true if the spec permits the class to have PostConstruct, false otherwise
|
||||
*/
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.annotations;
|
|||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
import org.eclipse.jetty.annotations.AnnotationIntrospector.AbstractIntrospectableAnnotationHandler;
|
||||
|
@ -71,8 +70,7 @@ public class PreDestroyAnnotationHandler extends AbstractIntrospectableAnnotatio
|
|||
origin == Origin.WebOverride))
|
||||
return;
|
||||
|
||||
PreDestroyCallback callback = new PreDestroyCallback();
|
||||
callback.setTarget(clazz.getName(), m.getName());
|
||||
PreDestroyCallback callback = new PreDestroyCallback(clazz, m.getName());
|
||||
|
||||
LifeCycleCallbackCollection lifecycles = (LifeCycleCallbackCollection)_context.getAttribute(LifeCycleCallbackCollection.LIFECYCLE_CALLBACK_COLLECTION);
|
||||
if (lifecycles == null)
|
||||
|
@ -89,6 +87,7 @@ public class PreDestroyAnnotationHandler extends AbstractIntrospectableAnnotatio
|
|||
|
||||
/**
|
||||
* Check if the spec permits the given class to use the PreDestroy annotation.
|
||||
*
|
||||
* @param c the class
|
||||
* @return true if permitted, false otherwise
|
||||
*/
|
||||
|
|
|
@ -24,7 +24,6 @@ import java.lang.reflect.Modifier;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.naming.InitialContext;
|
||||
import javax.naming.NameNotFoundException;
|
||||
|
@ -43,19 +42,20 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
private static final Logger LOG = Log.getLogger(ResourceAnnotationHandler.class);
|
||||
|
||||
protected static final List<Class<?>> ENV_ENTRY_TYPES =
|
||||
Arrays.asList(new Class[] {String.class, Character.class, Integer.class, Boolean.class, Double.class, Byte.class, Short.class, Long.class, Float.class});
|
||||
|
||||
Arrays.asList(new Class[]
|
||||
{
|
||||
String.class, Character.class, Integer.class, Boolean.class, Double.class, Byte.class, Short.class, Long.class,
|
||||
Float.class
|
||||
});
|
||||
|
||||
protected WebAppContext _context;
|
||||
|
||||
|
||||
public ResourceAnnotationHandler(WebAppContext wac)
|
||||
{
|
||||
super(true);
|
||||
_context = wac;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Class level Resource annotations declare a name in the
|
||||
* environment that will be looked up at runtime. They do
|
||||
|
@ -70,13 +70,17 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
|
||||
Method[] methods = clazz.getDeclaredMethods();
|
||||
for (int i = 0; i < methods.length; i++)
|
||||
{
|
||||
handleMethod(clazz, methods[i]);
|
||||
}
|
||||
Field[] fields = clazz.getDeclaredFields();
|
||||
//For each field, get all of it's annotations
|
||||
for (int i = 0; i < fields.length; i++)
|
||||
{
|
||||
handleField(clazz, fields[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void handleClass(Class<?> clazz)
|
||||
{
|
||||
|
@ -122,7 +126,7 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
}
|
||||
|
||||
//work out default name
|
||||
String name = clazz.getCanonicalName()+"/"+field.getName();
|
||||
String name = clazz.getName() + "/" + field.getName();
|
||||
|
||||
//allow @Resource name= to override the field name
|
||||
name = (resource.name() != null && !resource.name().trim().equals("") ? resource.name() : name);
|
||||
|
@ -180,10 +184,7 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
{
|
||||
LOG.debug("Bound " + (mappedName == null ? name : mappedName) + " as " + name);
|
||||
// Make the Injection for it if the binding succeeded
|
||||
injection = new Injection();
|
||||
injection.setTarget(clazz, field, type);
|
||||
injection.setJndiName(name);
|
||||
injection.setMappingName(mappedName);
|
||||
injection = new Injection(clazz, field, type, name, mappedName);
|
||||
injections.add(injection);
|
||||
|
||||
//TODO - an @Resource is equivalent to a resource-ref, resource-env-ref, message-destination
|
||||
|
@ -210,7 +211,6 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a Resource annotation on a Method.
|
||||
* <p>
|
||||
|
@ -270,11 +270,10 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
//default name is the javabean property name
|
||||
String name = method.getName().substring(3);
|
||||
name = name.substring(0, 1).toLowerCase(Locale.ENGLISH) + name.substring(1);
|
||||
name = clazz.getCanonicalName()+"/"+name;
|
||||
name = clazz.getName() + "/" + name;
|
||||
|
||||
name = (resource.name() != null && !resource.name().trim().equals("") ? resource.name() : name);
|
||||
String mappedName = (resource.mappedName() != null && !resource.mappedName().trim().equals("") ? resource.mappedName() : null);
|
||||
|
@ -338,10 +337,7 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
{
|
||||
LOG.debug("Bound " + (mappedName == null ? name : mappedName) + " as " + name);
|
||||
// Make the Injection for it
|
||||
injection = new Injection();
|
||||
injection.setTarget(clazz, method,paramType,resourceType);
|
||||
injection.setJndiName(name);
|
||||
injection.setMappingName(mappedName);
|
||||
injection = new Injection(clazz, method, paramType, resourceType, name, mappedName);
|
||||
injections.add(injection);
|
||||
//TODO - an @Resource is equivalent to a resource-ref, resource-env-ref, message-destination
|
||||
metaData.setOrigin("resource-ref." + name + ".injection", resource, clazz);
|
||||
|
@ -364,7 +360,6 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -392,10 +387,10 @@ public class ResourceAnnotationHandler extends AbstractIntrospectableAnnotationH
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the class is one of the basic java types permitted as
|
||||
* env-entries.
|
||||
*
|
||||
* @param clazz the class to check
|
||||
* @return true if class is permitted by the spec to be an env-entry value
|
||||
*/
|
||||
|
|
|
@ -31,7 +31,6 @@ public class ResourcesAnnotationHandler extends AbstractIntrospectableAnnotation
|
|||
{
|
||||
private static final Logger LOG = Log.getLogger(ResourcesAnnotationHandler.class);
|
||||
|
||||
|
||||
protected WebAppContext _wac;
|
||||
|
||||
public ResourcesAnnotationHandler(WebAppContext wac)
|
||||
|
@ -76,5 +75,4 @@ public class ResourcesAnnotationHandler extends AbstractIntrospectableAnnotation
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,7 +29,6 @@ import org.eclipse.jetty.webapp.Descriptor;
|
|||
import org.eclipse.jetty.webapp.MetaData;
|
||||
import org.eclipse.jetty.webapp.WebAppContext;
|
||||
|
||||
|
||||
public class RunAsAnnotationHandler extends AbstractIntrospectableAnnotationHandler
|
||||
{
|
||||
private static final Logger LOG = Log.getLogger(RunAsAnnotationHandler.class);
|
||||
|
@ -56,8 +55,7 @@ public class RunAsAnnotationHandler extends AbstractIntrospectableAnnotationHand
|
|||
String role = runAs.value();
|
||||
if (role != null)
|
||||
{
|
||||
ServletHolder holder = getServletHolderForClass(clazz);
|
||||
if (holder != null)
|
||||
for (ServletHolder holder : _context.getServletHandler().getServlets(clazz))
|
||||
{
|
||||
MetaData metaData = _context.getMetaData();
|
||||
Descriptor d = metaData.getOriginDescriptor(holder.getName() + ".servlet.run-as");
|
||||
|
@ -66,9 +64,7 @@ public class RunAsAnnotationHandler extends AbstractIntrospectableAnnotationHand
|
|||
if (d == null)
|
||||
{
|
||||
metaData.setOrigin(holder.getName() + ".servlet.run-as", runAs, clazz);
|
||||
org.eclipse.jetty.plus.annotation.RunAs ra = new org.eclipse.jetty.plus.annotation.RunAs();
|
||||
ra.setTargetClassName(clazz.getCanonicalName());
|
||||
ra.setRoleName(role);
|
||||
org.eclipse.jetty.plus.annotation.RunAs ra = new org.eclipse.jetty.plus.annotation.RunAs(clazz.getName(), role);
|
||||
RunAsCollection raCollection = (RunAsCollection)_context.getAttribute(RunAsCollection.RUNAS_COLLECTION);
|
||||
if (raCollection == null)
|
||||
{
|
||||
|
@ -82,7 +78,6 @@ public class RunAsAnnotationHandler extends AbstractIntrospectableAnnotationHand
|
|||
else
|
||||
LOG.warn("Bad value for @RunAs annotation on class " + clazz.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void handleField(String className, String fieldName, int access, String fieldType, String signature, Object value, String annotation)
|
||||
|
@ -94,21 +89,4 @@ public class RunAsAnnotationHandler extends AbstractIntrospectableAnnotationHand
|
|||
{
|
||||
LOG.warn("@RunAs annotation ignored on method: " + className + "." + methodName + " " + signature);
|
||||
}
|
||||
|
||||
private ServletHolder getServletHolderForClass (Class clazz)
|
||||
{
|
||||
ServletHolder holder = null;
|
||||
ServletHolder[] holders = _context.getServletHandler().getServlets();
|
||||
if (holders != null)
|
||||
{
|
||||
for (ServletHolder h : holders)
|
||||
{
|
||||
if (h.getClassName() != null && h.getClassName().equals(clazz.getName()))
|
||||
{
|
||||
holder = h;
|
||||
}
|
||||
}
|
||||
}
|
||||
return holder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.eclipse.jetty.util.log.Log;
|
|||
import org.eclipse.jetty.util.log.Logger;
|
||||
import org.eclipse.jetty.webapp.WebAppContext;
|
||||
|
||||
|
||||
/**
|
||||
* ServletContainerInitializersStarter
|
||||
*
|
||||
|
@ -46,6 +45,7 @@ public class ServletContainerInitializersStarter extends AbstractLifeCycle imple
|
|||
|
||||
/**
|
||||
* Call the doStart method of the ServletContainerInitializers
|
||||
*
|
||||
* @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStart()
|
||||
*/
|
||||
@Override
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.annotations;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.ServletSecurityElement;
|
||||
import javax.servlet.annotation.ServletSecurity;
|
||||
import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
|
||||
|
@ -111,14 +110,14 @@ public class ServletSecurityAnnotationHandler extends AbstractIntrospectableAnno
|
|||
ConstraintAware securityHandler = (ConstraintAware)_context.getSecurityHandler();
|
||||
|
||||
for (ConstraintMapping m : constraintMappings)
|
||||
{
|
||||
securityHandler.addConstraintMapping(m);
|
||||
}
|
||||
|
||||
//Servlet Spec 3.1 requires paths with uncovered http methods to be reported
|
||||
securityHandler.checkPathsWithUncoveredHttpMethods();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Make a jetty Constraint object, which represents the <code><auth-constraint></code> and
|
||||
* <code><user-data-constraint></code> elements, based on the security annotation.
|
||||
|
@ -134,10 +133,9 @@ public class ServletSecurityAnnotationHandler extends AbstractIntrospectableAnno
|
|||
return ConstraintSecurityHandler.createConstraint(servlet.getName(), rolesAllowed, permitOrDeny, transport);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the ServletMappings for the servlet's class.
|
||||
*
|
||||
* @param className the class name
|
||||
* @return the servlet mappings for the class
|
||||
*/
|
||||
|
@ -155,8 +153,6 @@ public class ServletSecurityAnnotationHandler extends AbstractIntrospectableAnno
|
|||
return results;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Check if there are already <code><security-constraint></code> elements defined that match the url-patterns for
|
||||
* the servlet.
|
||||
|
@ -196,5 +192,4 @@ public class ServletSecurityAnnotationHandler extends AbstractIntrospectableAnno
|
|||
}
|
||||
return exists;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.annotations;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.servlet.DispatcherType;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.annotation.WebFilter;
|
||||
|
@ -70,7 +69,6 @@ public class WebFilterAnnotation extends DiscoveredAnnotation
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
//Servlet Spec 8.1.2
|
||||
if (!Filter.class.isAssignableFrom(clazz))
|
||||
{
|
||||
|
@ -215,5 +213,4 @@ public class WebFilterAnnotation extends DiscoveredAnnotation
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,8 +27,6 @@ import org.eclipse.jetty.webapp.WebAppContext;
|
|||
|
||||
/**
|
||||
* WebFilterAnnotationHandler
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class WebFilterAnnotationHandler extends AbstractDiscoverableAnnotationHandler
|
||||
{
|
||||
|
@ -39,7 +37,6 @@ public class WebFilterAnnotationHandler extends AbstractDiscoverableAnnotationHa
|
|||
super(context);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(ClassInfo info, String annotationName)
|
||||
{
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.annotations;
|
||||
|
||||
import java.util.EventListener;
|
||||
|
||||
import javax.servlet.ServletContextAttributeListener;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import javax.servlet.ServletRequestAttributeListener;
|
||||
|
|
|
@ -21,14 +21,12 @@ package org.eclipse.jetty.annotations;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.Servlet;
|
||||
import javax.servlet.annotation.WebInitParam;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
|
||||
import org.eclipse.jetty.http.pathmap.ServletPathSpec;
|
||||
import org.eclipse.jetty.servlet.Holder;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
import org.eclipse.jetty.servlet.ServletMapping;
|
||||
import org.eclipse.jetty.servlet.Source;
|
||||
|
@ -44,8 +42,6 @@ import org.eclipse.jetty.webapp.WebAppContext;
|
|||
|
||||
/**
|
||||
* WebServletAnnotation
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class WebServletAnnotation extends DiscoveredAnnotation
|
||||
{
|
||||
|
@ -56,7 +52,6 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
super(context, className);
|
||||
}
|
||||
|
||||
|
||||
public WebServletAnnotation(WebAppContext context, String className, Resource resource)
|
||||
{
|
||||
super(context, className, resource);
|
||||
|
@ -105,7 +100,9 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
//canonicalize the patterns
|
||||
ArrayList<String> urlPatternList = new ArrayList<String>();
|
||||
for (String p : urlPatterns)
|
||||
{
|
||||
urlPatternList.add(ServletPathSpec.normalize(p));
|
||||
}
|
||||
|
||||
String servletName = (annotation.name().equals("") ? clazz.getName() : annotation.name());
|
||||
|
||||
|
@ -157,7 +154,6 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
|
||||
_context.getServletHandler().addServlet(holder);
|
||||
|
||||
|
||||
mapping = new ServletMapping(source);
|
||||
mapping.setServletName(holder.getName());
|
||||
mapping.setPathSpecs(LazyList.toStringArray(urlPatternList));
|
||||
|
@ -184,7 +180,6 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//check the url-patterns
|
||||
//ServletSpec 3.0 p81 If a servlet already has url mappings from a
|
||||
//webxml or fragment descriptor the annotation is ignored.
|
||||
|
@ -201,7 +196,6 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//We also want to be able to replace mappings that were defined in webdefault.xml
|
||||
//that were for a different servlet eg a mapping in webdefault.xml for / to the jetty
|
||||
//default servlet should be able to be replaced by an annotation for / to a different
|
||||
|
@ -227,12 +221,14 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
if (updatedPaths == null || updatedPaths.length == 0)
|
||||
{
|
||||
boolean success = allMappings.remove(existingMapping);
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Removed empty mapping {} from defaults descriptor success:{}",existingMapping, success);
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Removed empty mapping {} from defaults descriptor success:{}", existingMapping, success);
|
||||
}
|
||||
else
|
||||
{
|
||||
existingMapping.setPathSpecs(updatedPaths);
|
||||
if (LOG.isDebugEnabled()) LOG.debug("Removed path {} from mapping {} from defaults descriptor ", p,existingMapping);
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug("Removed path {} from mapping {} from defaults descriptor ", p, existingMapping);
|
||||
}
|
||||
}
|
||||
_context.getMetaData().setOrigin(servletName + ".servlet.mapping." + p, annotation, clazz);
|
||||
|
@ -242,12 +238,8 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
private List<ServletMapping> getServletMappingsForServlet(String name)
|
||||
{
|
||||
|
@ -266,10 +258,8 @@ public class WebServletAnnotation extends DiscoveredAnnotation
|
|||
return mappings;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param mappings
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
private boolean containsNonDefaultMappings(List<ServletMapping> mappings)
|
||||
{
|
||||
|
|
|
@ -39,7 +39,6 @@ public class WebServletAnnotationHandler extends AbstractDiscoverableAnnotationH
|
|||
super(context);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle discovering a WebServlet annotation.
|
||||
*/
|
||||
|
|
|
@ -20,4 +20,3 @@
|
|||
* Jetty Annotations : Support for Servlet Annotations
|
||||
*/
|
||||
package org.eclipse.jetty.annotations;
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
package org.acme;
|
||||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd.
|
||||
|
@ -17,13 +16,10 @@ package org.acme;
|
|||
// ========================================================================
|
||||
//
|
||||
|
||||
|
||||
|
||||
package org.acme;
|
||||
|
||||
/**
|
||||
* ClassOne
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class ClassOne
|
||||
{
|
||||
|
@ -31,5 +27,4 @@ public class ClassOne
|
|||
public void one()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,11 +18,8 @@
|
|||
|
||||
package org.eclipse.jetty.annotations;
|
||||
|
||||
|
||||
/**
|
||||
* ClassA
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Sample(1)
|
||||
public class ClassA
|
||||
|
@ -34,7 +31,6 @@ public class ClassA
|
|||
private Integer j;
|
||||
private Integer k;
|
||||
|
||||
|
||||
public static class Foo
|
||||
{
|
||||
|
||||
|
|
|
@ -18,12 +18,8 @@
|
|||
|
||||
package org.eclipse.jetty.annotations;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* ClassB
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Sample(value = 50)
|
||||
@Multi({"do", "re", "mi"})
|
||||
|
@ -51,11 +47,9 @@ public class ClassB extends ClassA implements InterfaceD
|
|||
System.err.println("Overridden method l has no annotation");
|
||||
}
|
||||
|
||||
|
||||
//test no annotation
|
||||
public void z()
|
||||
{
|
||||
System.err.println("ClassB.z");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package org.eclipse.jetty.annotations;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
import javax.annotation.Resource;
|
||||
|
@ -37,7 +36,9 @@ import javax.servlet.http.HttpServletRequest;
|
|||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
@WebFilter(filterName="CFilter", dispatcherTypes={DispatcherType.REQUEST}, urlPatterns = {"/*"}, initParams={@WebInitParam(name="a", value="99")}, asyncSupported=false)
|
||||
@WebFilter(filterName = "CFilter", dispatcherTypes = {DispatcherType.REQUEST}, urlPatterns = {"/*"}, initParams = {
|
||||
@WebInitParam(name = "a", value = "99")
|
||||
}, asyncSupported = false)
|
||||
@RunAs("admin")
|
||||
public class FilterC implements Filter
|
||||
{
|
||||
|
@ -56,7 +57,6 @@ public class FilterC implements Filter
|
|||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
|
||||
throws IOException, ServletException
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue