class JakartaServletWebSession implements IServletWebSession {

    private final HttpServletRequest request;
    private HttpSession session;


    JakartaServletWebSession(final HttpServletRequest request) {
        super();
        Validate.notNull(request, "Request cannot be null");
        this.request = request;
        this.session = this.request.getSession(false); // Might initialize property as null
    }


    @Override
    public boolean exists() {
        return this.session != null;
    }

    @Override
    public Enumeration<String> getAttributeNames() {
        if (this.session == null) {
            return Collections.emptyEnumeration();
        }
        return this.session.getAttributeNames();
    }

    @Override
    public Object getAttributeValue(final String name) {<FILL_FUNCTION_BODY>}

    @Override
    public void setAttributeValue(final String name, final Object value) {
        Validate.notNull(name, "Name cannot be null");
        if (this.session == null) {
            // Setting an attribute will actually create a new session
            this.session = this.request.getSession(true);
        }
        this.session.setAttribute(name, value);
    }


    @Override
    public Object getNativeSessionObject() {
        return this.session;
    }

}

        Validate.notNull(name, "Name cannot be null");
        if (this.session == null) {
            return null;
        }
        return this.session.getAttribute(name);
    
<no_super_class>