diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_40.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_40.mod
index bee4693e8ac..45bbad75c9f 100644
--- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_40.mod
+++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_40.mod
@@ -2,7 +2,7 @@
protonego-boot
[files]
-http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar:lib/alpn/alpn-boot-7.0.0.v20140317.jar
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar|lib/alpn/alpn-boot-7.0.0.v20140317.jar
[exec]
-Xbootclasspath/p:lib/alpn/alpn-boot-7.0.0.v20140317.jar
diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_45.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_45.mod
index bee4693e8ac..45bbad75c9f 100644
--- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_45.mod
+++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_45.mod
@@ -2,7 +2,7 @@
protonego-boot
[files]
-http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar:lib/alpn/alpn-boot-7.0.0.v20140317.jar
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar|lib/alpn/alpn-boot-7.0.0.v20140317.jar
[exec]
-Xbootclasspath/p:lib/alpn/alpn-boot-7.0.0.v20140317.jar
diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_51.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_51.mod
index bee4693e8ac..45bbad75c9f 100644
--- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_51.mod
+++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_51.mod
@@ -2,7 +2,7 @@
protonego-boot
[files]
-http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar:lib/alpn/alpn-boot-7.0.0.v20140317.jar
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar|lib/alpn/alpn-boot-7.0.0.v20140317.jar
[exec]
-Xbootclasspath/p:lib/alpn/alpn-boot-7.0.0.v20140317.jar
diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_55.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_55.mod
index bee4693e8ac..45bbad75c9f 100644
--- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_55.mod
+++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.7.0_55.mod
@@ -2,7 +2,7 @@
protonego-boot
[files]
-http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar:lib/alpn/alpn-boot-7.0.0.v20140317.jar
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.0.0.v20140317/alpn-boot-7.0.0.v20140317.jar|lib/alpn/alpn-boot-7.0.0.v20140317.jar
[exec]
-Xbootclasspath/p:lib/alpn/alpn-boot-7.0.0.v20140317.jar
diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0.mod
index 4089153ac14..65e6cb3c4db 100644
--- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0.mod
+++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0.mod
@@ -2,7 +2,7 @@
protonego-boot
[files]
-http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.0.0.v20140317/alpn-boot-8.0.0.v20140317.jar:lib/alpn/alpn-boot-8.0.0.v20140317.jar
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.0.0.v20140317/alpn-boot-8.0.0.v20140317.jar|lib/alpn/alpn-boot-8.0.0.v20140317.jar
[exec]
-Xbootclasspath/p:lib/alpn/alpn-boot-8.0.0.v20140317.jar
diff --git a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_05.mod b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_05.mod
index 4089153ac14..65e6cb3c4db 100644
--- a/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_05.mod
+++ b/jetty-alpn/jetty-alpn-server/src/main/config/modules/protonego-impl/alpn-1.8.0_05.mod
@@ -2,7 +2,7 @@
protonego-boot
[files]
-http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.0.0.v20140317/alpn-boot-8.0.0.v20140317.jar:lib/alpn/alpn-boot-8.0.0.v20140317.jar
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.0.0.v20140317/alpn-boot-8.0.0.v20140317.jar|lib/alpn/alpn-boot-8.0.0.v20140317.jar
[exec]
-Xbootclasspath/p:lib/alpn/alpn-boot-8.0.0.v20140317.jar
diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationDecorator.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationDecorator.java
index c6b9cd5d3ed..e87ce1fd885 100644
--- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationDecorator.java
+++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationDecorator.java
@@ -28,12 +28,17 @@ import org.eclipse.jetty.webapp.WebAppContext;
*/
public class AnnotationDecorator implements Decorator
{
- AnnotationIntrospector _introspector = new AnnotationIntrospector();
+ protected AnnotationIntrospector _introspector = new AnnotationIntrospector();
/**
* @param context
*/
public AnnotationDecorator(WebAppContext context)
+ {
+ registerHandlers(context);
+ }
+
+ public void registerHandlers (WebAppContext context)
{
_introspector.registerHandler(new ResourceAnnotationHandler(context));
_introspector.registerHandler(new ResourcesAnnotationHandler(context));
diff --git a/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/NoSqlSession.java b/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/NoSqlSession.java
index 1a1459a45a0..8b732d4d2b3 100644
--- a/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/NoSqlSession.java
+++ b/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/NoSqlSession.java
@@ -24,13 +24,13 @@ import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.http.HttpServletRequest;
-import org.eclipse.jetty.server.session.AbstractSession;
+import org.eclipse.jetty.server.session.MemSession;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
/* ------------------------------------------------------------ */
-public class NoSqlSession extends AbstractSession
+public class NoSqlSession extends MemSession
{
private final static Logger __log = Log.getLogger("org.eclipse.jetty.server.session");
diff --git a/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/PlusDescriptorProcessor.java b/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/PlusDescriptorProcessor.java
index 424a98869e8..09bb4ccdbd0 100644
--- a/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/PlusDescriptorProcessor.java
+++ b/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/PlusDescriptorProcessor.java
@@ -60,12 +60,12 @@ public class PlusDescriptorProcessor extends IterativeDescriptorProcessor
{
try
{
- registerVisitor("env-entry", getClass().getDeclaredMethod("visitEnvEntry", __signature));
- registerVisitor("resource-ref", getClass().getDeclaredMethod("visitResourceRef", __signature));
- registerVisitor("resource-env-ref", getClass().getDeclaredMethod("visitResourceEnvRef", __signature));
- registerVisitor("message-destination-ref", getClass().getDeclaredMethod("visitMessageDestinationRef", __signature));
- registerVisitor("post-construct", getClass().getDeclaredMethod("visitPostConstruct", __signature));
- registerVisitor("pre-destroy", getClass().getDeclaredMethod("visitPreDestroy", __signature));
+ registerVisitor("env-entry", getClass().getMethod("visitEnvEntry", __signature));
+ registerVisitor("resource-ref", getClass().getMethod("visitResourceRef", __signature));
+ registerVisitor("resource-env-ref", getClass().getMethod("visitResourceEnvRef", __signature));
+ registerVisitor("message-destination-ref", getClass().getMethod("visitMessageDestinationRef", __signature));
+ registerVisitor("post-construct", getClass().getMethod("visitPostConstruct", __signature));
+ registerVisitor("pre-destroy", getClass().getMethod("visitPreDestroy", __signature));
}
catch (Exception e)
{
diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml
index 94f7a1d7a9e..2a08a0b9a12 100644
--- a/jetty-quickstart/pom.xml
+++ b/jetty-quickstart/pom.xml
@@ -41,11 +41,13 @@
org.eclipse.jetty.tests
test-mock-resources
${project.version}
+ test
org.eclipse.jetty.orbit
javax.mail.glassfish
1.4.1.v201005082020
+ test
org.eclipse.jetty
diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureDescriptorProcessor.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureDescriptorProcessor.java
index 627277e2ebf..d49bc0c3c29 100644
--- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureDescriptorProcessor.java
+++ b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureDescriptorProcessor.java
@@ -45,11 +45,11 @@ public class PreconfigureDescriptorProcessor extends IterativeDescriptorProcesso
_showOrigin=LOG.isDebugEnabled();
try
{
- registerVisitor("env-entry", getClass().getDeclaredMethod("saveSnippet", __signature));
- registerVisitor("resource-ref", getClass().getDeclaredMethod("saveSnippet", __signature));
- registerVisitor("resource-env-ref", getClass().getDeclaredMethod("saveSnippet", __signature));
- registerVisitor("message-destination-ref", getClass().getDeclaredMethod("saveSnippet", __signature));
- registerVisitor("data-source", getClass().getDeclaredMethod("saveSnippet", __signature));
+ registerVisitor("env-entry", getClass().getMethod("saveSnippet", __signature));
+ registerVisitor("resource-ref", getClass().getMethod("saveSnippet", __signature));
+ registerVisitor("resource-env-ref", getClass().getMethod("saveSnippet", __signature));
+ registerVisitor("message-destination-ref", getClass().getMethod("saveSnippet", __signature));
+ registerVisitor("data-source", getClass().getMethod("saveSnippet", __signature));
}
catch (Exception e)
{
diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorProcessor.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorProcessor.java
index 7e5a6c849b9..f63d2381a3f 100644
--- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorProcessor.java
+++ b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorProcessor.java
@@ -51,7 +51,7 @@ public class QuickStartDescriptorProcessor extends IterativeDescriptorProcessor
{
try
{
- registerVisitor("context-param", this.getClass().getDeclaredMethod("visitContextParam", __signature));
+ registerVisitor("context-param", this.getClass().getMethod("visitContextParam", __signature));
}
catch (Exception e)
{
diff --git a/jetty-server/src/main/config/modules/resources.mod b/jetty-server/src/main/config/modules/resources.mod
index b3a4d2d74f6..8647d81325b 100644
--- a/jetty-server/src/main/config/modules/resources.mod
+++ b/jetty-server/src/main/config/modules/resources.mod
@@ -3,7 +3,7 @@
#
[lib]
-resources
+resources/
[files]
resources/
diff --git a/jetty-server/src/main/config/modules/ssl.mod b/jetty-server/src/main/config/modules/ssl.mod
index c8270951a68..449f58104fb 100644
--- a/jetty-server/src/main/config/modules/ssl.mod
+++ b/jetty-server/src/main/config/modules/ssl.mod
@@ -9,7 +9,7 @@ server
etc/jetty-ssl.xml
[files]
-http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/src/main/config/etc/keystore:etc/keystore
+http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/src/main/config/etc/keystore|etc/keystore
[ini-template]
## SSL Keystore Configuration
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSession.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSession.java
index cb1479f54a0..809d9d98923 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSession.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSession.java
@@ -21,8 +21,6 @@ package org.eclipse.jetty.server.session;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -54,7 +52,6 @@ public abstract class AbstractSession implements AbstractSessionManager.SessionI
private String _clusterId; // ID without any node (ie "worker") id appended
private String _nodeId; // ID of session with node(ie "worker") id appended
private final AbstractSessionManager _manager;
- private final Map _attributes=new HashMap();
private boolean _idChanged;
private final long _created;
private long _cookieSet;
@@ -139,53 +136,21 @@ public abstract class AbstractSession implements AbstractSessionManager.SessionI
}
/* ------------------------------------------------------------- */
- public Map getAttributeMap()
- {
- return _attributes;
- }
+ public abstract Map getAttributeMap();
+
+
+
+
/* ------------------------------------------------------------ */
- @Override
- public Object getAttribute(String name)
- {
- synchronized (this)
- {
- checkValid();
- return _attributes.get(name);
- }
- }
+ public abstract int getAttributes();
+
+
+
/* ------------------------------------------------------------ */
- public int getAttributes()
- {
- synchronized (this)
- {
- checkValid();
- return _attributes.size();
- }
- }
-
- /* ------------------------------------------------------------ */
- @SuppressWarnings({ "unchecked" })
- @Override
- public Enumeration getAttributeNames()
- {
- synchronized (this)
- {
- checkValid();
- List names=_attributes==null?Collections.EMPTY_LIST:new ArrayList(_attributes.keySet());
- return Collections.enumeration(names);
- }
- }
-
- /* ------------------------------------------------------------ */
- public Set getNames()
- {
- synchronized (this)
- {
- return new HashSet(_attributes.keySet());
- }
- }
+ public abstract Set getNames();
+
/* ------------------------------------------------------------- */
public long getCookieSetTime()
@@ -272,25 +237,7 @@ public abstract class AbstractSession implements AbstractSessionManager.SessionI
return getAttribute(name);
}
- /* ------------------------------------------------------------- */
- /**
- * @deprecated As of Version 2.2, this method is replaced by
- * {@link #getAttributeNames}
- */
- @Deprecated
- @Override
- public String[] getValueNames() throws IllegalStateException
- {
- synchronized(this)
- {
- checkValid();
- if (_attributes==null)
- return new String[0];
- String[] a=new String[_attributes.size()];
- return (String[])_attributes.keySet().toArray(a);
- }
- }
-
+
/* ------------------------------------------------------------ */
public void renewId(HttpServletRequest request)
@@ -403,34 +350,8 @@ public abstract class AbstractSession implements AbstractSessionManager.SessionI
}
/* ------------------------------------------------------------- */
- public void clearAttributes()
- {
- while (_attributes!=null && _attributes.size()>0)
- {
- ArrayList keys;
- synchronized(this)
- {
- keys=new ArrayList(_attributes.keySet());
- }
-
- Iterator iter=keys.iterator();
- while (iter.hasNext())
- {
- String key=(String)iter.next();
-
- Object value;
- synchronized(this)
- {
- value=doPutOrRemove(key,null);
- }
- unbindValue(key,value);
-
- _manager.doSessionAttributeListeners(this,key,value,null);
- }
- }
- if (_attributes!=null)
- _attributes.clear();
- }
+ public abstract void clearAttributes();
+
/* ------------------------------------------------------------- */
public boolean isIdChanged()
@@ -476,18 +397,65 @@ public abstract class AbstractSession implements AbstractSessionManager.SessionI
{
removeAttribute(name);
}
+
+ /* ------------------------------------------------------------ */
+ @SuppressWarnings({ "unchecked" })
+ @Override
+ public Enumeration getAttributeNames()
+ {
+ synchronized (this)
+ {
+ checkValid();
+ return doGetAttributeNames();
+ }
+ }
+
+ /* ------------------------------------------------------------- */
+ /**
+ * @deprecated As of Version 2.2, this method is replaced by
+ * {@link #getAttributeNames}
+ */
+ @Deprecated
+ @Override
+ public String[] getValueNames() throws IllegalStateException
+ {
+ synchronized(this)
+ {
+ checkValid();
+ Enumeration anames = doGetAttributeNames();
+ if (anames == null)
+ return new String[0];
+ ArrayList names = new ArrayList();
+ while (anames.hasMoreElements())
+ names.add(anames.nextElement());
+ return names.toArray(new String[names.size()]);
+ }
+ }
+
/* ------------------------------------------------------------ */
- protected Object doPutOrRemove(String name, Object value)
- {
- return value==null?_attributes.remove(name):_attributes.put(name,value);
- }
+ public abstract Object doPutOrRemove(String name, Object value);
+
/* ------------------------------------------------------------ */
- protected Object doGet(String name)
+ public abstract Object doGet(String name);
+
+
+ /* ------------------------------------------------------------ */
+ public abstract Enumeration doGetAttributeNames();
+
+
+ /* ------------------------------------------------------------ */
+ @Override
+ public Object getAttribute(String name)
{
- return _attributes.get(name);
+ synchronized (this)
+ {
+ checkValid();
+ return doGet(name);
+ }
}
+
/* ------------------------------------------------------------ */
@Override
@@ -571,12 +539,7 @@ public abstract class AbstractSession implements AbstractSessionManager.SessionI
_manager.doSessionAttributeListeners(this,name,oldValue,newValue);
}
}
-
- /* ------------------------------------------------------------ */
- protected void addAttributes(Map map)
- {
- _attributes.putAll(map);
- }
+
/* ------------------------------------------------------------- */
public void setIdChanged(boolean changed)
@@ -653,7 +616,7 @@ public abstract class AbstractSession implements AbstractSessionManager.SessionI
synchronized(this)
{
HttpSessionEvent event = new HttpSessionEvent(this);
- for (Iterator