Skip to content
Permalink
Browse files

Enumerate Undertow's internal immutable session attributes.

  • Loading branch information
pferraro committed Apr 16, 2019
1 parent 58da59e commit 5880cd36a11e5115a852e9dac82b4ba8c685d356
@@ -171,7 +171,7 @@ public Object setAttribute(String name, Object value) {
try (BatchContext context = this.resumeBatch()) {
if (CachedAuthenticatedSessionHandler.ATTRIBUTE_NAME.equals(name)) {
AuthenticatedSession auth = (AuthenticatedSession) value;
return AUTO_REAUTHENTICATING_MECHANISMS.contains(auth.getMechanism()) ? this.setLocalContext(auth) : session.getAttributes().setAttribute(name, new ImmutableAuthenticatedSession(auth));
return AUTO_REAUTHENTICATING_MECHANISMS.contains(auth.getMechanism()) ? this.setLocalContext(auth) : session.getAttributes().setAttribute(name, auth);
}
Object old = session.getAttributes().setAttribute(name, value);
if (old == null) {
@@ -59,7 +59,7 @@ public SessionManagerFactoryConfigurationAdapter(SessionManagerFactoryConfigurat
this.context = new SimpleMarshallingContextFactory().createMarshallingContext(new SimpleMarshallingConfigurationRepository(MarshallingVersion.class, MarshallingVersion.CURRENT, module), module.getClassLoader());
this.marshalledValueFactory = new SimpleMarshalledValueFactory(this.context);
ServiceLoader<Immutability> loadedImmutability = ServiceLoader.load(Immutability.class, Immutability.class.getClassLoader());
this.immutability = new CompositeImmutability(new CompositeIterable<>(EnumSet.allOf(DefaultImmutability.class), EnumSet.allOf(SessionAttributeImmutability.class), loadedImmutability, Collections.singleton(immutability)));
this.immutability = new CompositeImmutability(new CompositeIterable<>(EnumSet.allOf(DefaultImmutability.class), EnumSet.allOf(SessionAttributeImmutability.class), EnumSet.allOf(UndertowSessionAttributeImmutability.class), loadedImmutability, Collections.singleton(immutability)));
}

@Override
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source.
* Copyright 2015, Red Hat, Inc., and individual contributors
* Copyright 2019, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
@@ -22,19 +22,28 @@

package org.wildfly.clustering.web.undertow.session;

import org.wildfly.clustering.web.annotation.Immutable;
import java.util.Arrays;

import org.wildfly.clustering.ee.Immutability;
import org.wildfly.clustering.ee.immutable.SimpleImmutability;

import io.undertow.security.api.AuthenticatedSessionManager.AuthenticatedSession;
import io.undertow.servlet.util.SavedRequest;

/**
* An explicitly immutable {@link AuthenticatedSession}.
* @author Paul Ferraro
*/
@Immutable
public class ImmutableAuthenticatedSession extends AuthenticatedSession {
private static final long serialVersionUID = -7327798938719610266L;
public enum UndertowSessionAttributeImmutability implements Immutability {
CLASSES(new SimpleImmutability(Arrays.asList(AuthenticatedSession.class, SavedRequest.class))),
;
private final Immutability immutability;

UndertowSessionAttributeImmutability(Immutability immutability) {
this.immutability = immutability;
}

public ImmutableAuthenticatedSession(AuthenticatedSession auth) {
super(auth.getAccount(), auth.getMechanism());
@Override
public boolean test(Object object) {
return this.immutability.test(object);
}
}

0 comments on commit 5880cd3

Please sign in to comment.
You can’t perform that action at this time.