414635 Modular start.d and jetty.base property
+ More mod cleanup + Adding cyclic module reference detection and reporting
This commit is contained in:
parent
5b2d9bc825
commit
b8e1f42b37
|
@ -3,10 +3,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
DEPEND=server
|
DEPEND=server
|
||||||
DEPEND=plus
|
|
||||||
|
|
||||||
LIB=lib/jetty-jndi-${jetty.version}.jar
|
LIB=lib/jetty-jndi-${jetty.version}.jar
|
||||||
LIB=lib/jndi/*.jar
|
LIB=lib/jndi/*.jar
|
||||||
|
|
||||||
# Annotations needs annotations configuration
|
|
||||||
etc/jetty-server.xml
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
DEPEND=server
|
DEPEND=server
|
||||||
|
DEPEND=security
|
||||||
|
DEPEND=jndi
|
||||||
|
|
||||||
LIB=lib/jetty-plus-${jetty.version}.jar
|
LIB=lib/jetty-plus-${jetty.version}.jar
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,23 @@
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>config</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.codehaus.mojo</groupId>
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
<artifactId>findbugs-maven-plugin</artifactId>
|
<artifactId>findbugs-maven-plugin</artifactId>
|
||||||
|
|
|
@ -29,6 +29,7 @@ import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Access for all modules declared, as well as what is enabled.
|
* Access for all modules declared, as well as what is enabled.
|
||||||
|
@ -59,8 +60,6 @@ public class Modules implements Iterable<Module>
|
||||||
*/
|
*/
|
||||||
public void buildGraph()
|
public void buildGraph()
|
||||||
{
|
{
|
||||||
// TODO: Validate / Enforce Directed Acyclic Graph
|
|
||||||
|
|
||||||
// Connect edges
|
// Connect edges
|
||||||
for (Module module : modules.values())
|
for (Module module : modules.values())
|
||||||
{
|
{
|
||||||
|
@ -75,6 +74,15 @@ public class Modules implements Iterable<Module>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verify there is no cyclic references
|
||||||
|
Stack<String> refs = new Stack<>();
|
||||||
|
for (Module module : modules.values())
|
||||||
|
{
|
||||||
|
refs.push(module.getName());
|
||||||
|
assertNoCycle(module,refs);
|
||||||
|
refs.pop();
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate depth of all modules for sorting later
|
// Calculate depth of all modules for sorting later
|
||||||
for (Module module : modules.values())
|
for (Module module : modules.values())
|
||||||
{
|
{
|
||||||
|
@ -85,6 +93,33 @@ public class Modules implements Iterable<Module>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void assertNoCycle(Module module, Stack<String> refs)
|
||||||
|
{
|
||||||
|
for (Module parent : module.getParentEdges())
|
||||||
|
{
|
||||||
|
if (refs.contains(parent.getName()))
|
||||||
|
{
|
||||||
|
// Cycle detected.
|
||||||
|
StringBuilder err = new StringBuilder();
|
||||||
|
err.append("A cyclic reference in the modules has been detected: ");
|
||||||
|
for (int i = 0; i < refs.size(); i++)
|
||||||
|
{
|
||||||
|
if (i > 0)
|
||||||
|
{
|
||||||
|
err.append(" -> ");
|
||||||
|
}
|
||||||
|
err.append(refs.get(i));
|
||||||
|
}
|
||||||
|
err.append(" -> ").append(parent.getName());
|
||||||
|
throw new IllegalStateException(err.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
refs.push(parent.getName());
|
||||||
|
assertNoCycle(parent,refs);
|
||||||
|
refs.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Integer count()
|
public Integer count()
|
||||||
{
|
{
|
||||||
return modules.size();
|
return modules.size();
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class ModulesTest
|
||||||
|
|
||||||
Modules modules = new Modules();
|
Modules modules = new Modules();
|
||||||
modules.registerAll(basehome);
|
modules.registerAll(basehome);
|
||||||
Assert.assertThat("Module count",modules.count(),is(24));
|
Assert.assertThat("Module count",modules.count(),is(26));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -63,6 +63,7 @@ public class ModulesTest
|
||||||
// Assert names are correct, and in the right order
|
// Assert names are correct, and in the right order
|
||||||
List<String> expectedNames = new ArrayList<>();
|
List<String> expectedNames = new ArrayList<>();
|
||||||
expectedNames.add("base");
|
expectedNames.add("base");
|
||||||
|
expectedNames.add("xml");
|
||||||
expectedNames.add("server");
|
expectedNames.add("server");
|
||||||
expectedNames.add("http");
|
expectedNames.add("http");
|
||||||
|
|
||||||
|
@ -78,6 +79,7 @@ public class ModulesTest
|
||||||
List<String> expectedLibs = new ArrayList<>();
|
List<String> expectedLibs = new ArrayList<>();
|
||||||
expectedLibs.add("lib/jetty-util-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-util-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/jetty-io-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-io-${jetty.version}.jar");
|
||||||
|
expectedLibs.add("lib/jetty-xml-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/servlet-api-3.1.jar");
|
expectedLibs.add("lib/servlet-api-3.1.jar");
|
||||||
expectedLibs.add("lib/jetty-schemas-3.1.jar");
|
expectedLibs.add("lib/jetty-schemas-3.1.jar");
|
||||||
expectedLibs.add("lib/jetty-http-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-http-${jetty.version}.jar");
|
||||||
|
@ -118,8 +120,11 @@ public class ModulesTest
|
||||||
// Assert names are correct, and in the right order
|
// Assert names are correct, and in the right order
|
||||||
List<String> expectedNames = new ArrayList<>();
|
List<String> expectedNames = new ArrayList<>();
|
||||||
expectedNames.add("base");
|
expectedNames.add("base");
|
||||||
|
expectedNames.add("xml");
|
||||||
expectedNames.add("server");
|
expectedNames.add("server");
|
||||||
expectedNames.add("http");
|
expectedNames.add("http");
|
||||||
|
expectedNames.add("jndi");
|
||||||
|
expectedNames.add("security");
|
||||||
expectedNames.add("plus");
|
expectedNames.add("plus");
|
||||||
expectedNames.add("annotations");
|
expectedNames.add("annotations");
|
||||||
expectedNames.add("websocket");
|
expectedNames.add("websocket");
|
||||||
|
@ -136,11 +141,15 @@ public class ModulesTest
|
||||||
List<String> expectedLibs = new ArrayList<>();
|
List<String> expectedLibs = new ArrayList<>();
|
||||||
expectedLibs.add("lib/jetty-util-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-util-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/jetty-io-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-io-${jetty.version}.jar");
|
||||||
|
expectedLibs.add("lib/jetty-xml-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/servlet-api-3.1.jar");
|
expectedLibs.add("lib/servlet-api-3.1.jar");
|
||||||
expectedLibs.add("lib/jetty-schemas-3.1.jar");
|
expectedLibs.add("lib/jetty-schemas-3.1.jar");
|
||||||
expectedLibs.add("lib/jetty-http-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-http-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/jetty-continuation-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-continuation-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/jetty-server-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-server-${jetty.version}.jar");
|
||||||
|
expectedLibs.add("lib/jetty-jndi-${jetty.version}.jar");
|
||||||
|
expectedLibs.add("lib/jndi/*.jar");
|
||||||
|
expectedLibs.add("lib/jetty-security-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/jetty-plus-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-plus-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/jetty-annotations-${jetty.version}.jar");
|
expectedLibs.add("lib/jetty-annotations-${jetty.version}.jar");
|
||||||
expectedLibs.add("lib/annotations/*.jar");
|
expectedLibs.add("lib/annotations/*.jar");
|
||||||
|
|
|
@ -8,18 +8,23 @@ XML|${jetty.home}/etc/jetty-websockets.xml
|
||||||
XML|${jetty.home}/etc/jetty-logging.xml
|
XML|${jetty.home}/etc/jetty-logging.xml
|
||||||
|
|
||||||
# The LIBs we expect (order is irrelevant)
|
# The LIBs we expect (order is irrelevant)
|
||||||
LIB|${jetty.home}/lib/jetty-http-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-util-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-schemas-3.1.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-jmx-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/annotations/javax.annotation-api-1.2.jar
|
LIB|${jetty.home}/lib/annotations/javax.annotation-api-1.2.jar
|
||||||
LIB|${jetty.home}/lib/servlet-api-3.1.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-annotations-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-plus-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-io-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-continuation-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/annotations/org.objectweb.asm-TEST.jar
|
LIB|${jetty.home}/lib/annotations/org.objectweb.asm-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-annotations-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-continuation-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-http-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-io-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-jmx-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-jndi-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-plus-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-schemas-3.1.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-security-TEST.jar
|
||||||
LIB|${jetty.home}/lib/jetty-server-TEST.jar
|
LIB|${jetty.home}/lib/jetty-server-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-util-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-xml-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jndi/javax.activation-1.1.jar
|
||||||
|
LIB|${jetty.home}/lib/jndi/javax.transaction-api-1.2.jar
|
||||||
|
LIB|${jetty.home}/lib/servlet-api-3.1.jar
|
||||||
|
|
||||||
# The Properties we expect (order is irrelevant)
|
# The Properties we expect (order is irrelevant)
|
||||||
# PROP|jetty.port=9090
|
# PROP|jetty.port=9090
|
||||||
|
|
|
@ -7,18 +7,23 @@ XML|${jetty.home}/etc/jetty-annotations.xml
|
||||||
XML|${jetty.home}/etc/jetty-websockets.xml
|
XML|${jetty.home}/etc/jetty-websockets.xml
|
||||||
|
|
||||||
# The LIBs we expect (order is irrelevant)
|
# The LIBs we expect (order is irrelevant)
|
||||||
LIB|${jetty.home}/lib/jetty-http-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-util-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-schemas-3.1.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-jmx-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/annotations/javax.annotation-api-1.2.jar
|
LIB|${jetty.home}/lib/annotations/javax.annotation-api-1.2.jar
|
||||||
LIB|${jetty.home}/lib/servlet-api-3.1.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-annotations-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-plus-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-io-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/jetty-continuation-TEST.jar
|
|
||||||
LIB|${jetty.home}/lib/annotations/org.objectweb.asm-TEST.jar
|
LIB|${jetty.home}/lib/annotations/org.objectweb.asm-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-annotations-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-continuation-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-http-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-io-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-jmx-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-jndi-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-plus-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-schemas-3.1.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-security-TEST.jar
|
||||||
LIB|${jetty.home}/lib/jetty-server-TEST.jar
|
LIB|${jetty.home}/lib/jetty-server-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-util-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jetty-xml-TEST.jar
|
||||||
|
LIB|${jetty.home}/lib/jndi/javax.activation-1.1.jar
|
||||||
|
LIB|${jetty.home}/lib/jndi/javax.transaction-api-1.2.jar
|
||||||
|
LIB|${jetty.home}/lib/servlet-api-3.1.jar
|
||||||
|
|
||||||
# The Properties we expect (order is irrelevant)
|
# The Properties we expect (order is irrelevant)
|
||||||
PROP|jetty.port=9090
|
PROP|jetty.port=9090
|
||||||
|
|
|
@ -3,10 +3,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
DEPEND=server
|
DEPEND=server
|
||||||
DEPEND=plus
|
|
||||||
|
|
||||||
LIB=lib/jetty-jndi-${jetty.version}.jar
|
LIB=lib/jetty-jndi-${jetty.version}.jar
|
||||||
LIB=lib/jndi/*.jar
|
LIB=lib/jndi/*.jar
|
||||||
|
|
||||||
# Annotations needs annotations configuration
|
|
||||||
etc/jetty-server.xml
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
DEPEND=server
|
DEPEND=server
|
||||||
|
DEPEND=security
|
||||||
|
DEPEND=jndi
|
||||||
|
|
||||||
LIB=lib/jetty-plus-${jetty.version}.jar
|
LIB=lib/jetty-plus-${jetty.version}.jar
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
DEPEND=server
|
DEPEND=server
|
||||||
|
DEPEND=client
|
||||||
|
|
||||||
LIB=lib/jetty-proxy-${jetty.version}.jar
|
LIB=lib/jetty-proxy-${jetty.version}.jar
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#
|
||||||
|
# Jetty Security Module
|
||||||
|
#
|
||||||
|
|
||||||
|
DEPEND=server
|
||||||
|
|
||||||
|
LIB=lib/jetty-security-${jetty.version}.jar
|
|
@ -3,6 +3,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
DEPEND=base
|
DEPEND=base
|
||||||
|
DEPEND=xml
|
||||||
|
|
||||||
LIB=lib/servlet-api-3.1.jar
|
LIB=lib/servlet-api-3.1.jar
|
||||||
LIB=lib/jetty-schemas-3.1.jar
|
LIB=lib/jetty-schemas-3.1.jar
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#
|
||||||
|
# Jetty Servlet Module
|
||||||
|
#
|
||||||
|
|
||||||
|
DEPEND=server
|
||||||
|
|
||||||
|
LIB=lib/jetty-servlet-${jetty.version}.jar
|
|
@ -1,5 +1,7 @@
|
||||||
|
|
||||||
DEPEND=server
|
DEPEND=server
|
||||||
|
|
||||||
|
LIB=lib/spdy/*.jar
|
||||||
|
|
||||||
etc/jetty-ssl.xml
|
etc/jetty-ssl.xml
|
||||||
etc/jetty-spdy.xml
|
etc/jetty-spdy.xml
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
# Base server
|
# Base server
|
||||||
#
|
#
|
||||||
|
|
||||||
DEPEND=deploy
|
DEPEND=servlet
|
||||||
|
|
||||||
LIB=lib/jetty-webapp-${jetty.version}.jar
|
LIB=lib/jetty-webapp-${jetty.version}.jar
|
||||||
|
|
|
@ -11,3 +11,4 @@ LIB=lib/websockets/*.jar
|
||||||
|
|
||||||
# WebSocket needs websocket configuration
|
# WebSocket needs websocket configuration
|
||||||
etc/jetty-websockets.xml
|
etc/jetty-websockets.xml
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue