Package anvil.core.net

Source Code of anvil.core.net.AnySessionContainer$SessionEnumeration

/*
* $Id: AnySessionContainer.java,v 1.11 2002/09/16 08:05:03 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.core.net;

import java.util.Enumeration;
import anvil.core.Any;
import anvil.core.AnyAbstractClass;
import anvil.core.AnyString;
import anvil.core.AnyTuple;
import anvil.core.Array;
import anvil.session.Session;
import anvil.session.SessionContainer;
import anvil.script.Context;
import anvil.java.util.BindingEnumeration;
import anvil.server.Server;
import anvil.server.Domain;
import anvil.server.Zone;

/// @class SessionContainer
///

/**
* class AnySessionContainer
*
* @author: Jani Lehtim�ki
*/
public class AnySessionContainer extends AnyAbstractClass
{


  public static anvil.core.RuntimePermission CAN_READ  = new anvil.core.RuntimePermission("anvil.net.SessionContainer", false);
  public static anvil.core.RuntimePermission CAN_WRITE = new anvil.core.RuntimePermission("anvil.net.SessionContainer", true);


  protected SessionContainer _container;
 
 
  public AnySessionContainer(SessionContainer container)
  {
    _container = container;
  }


  public anvil.script.ClassType classOf()
  {
    return __class__;
  }


  public String toString()
  {
    return "SessionContainer(" + _container + ")";
  }


  public Object toObject()
  {
    return _container;
  }


  public int hashCode()
  {
    return _container.hashCode();
  }


  public Any getAttribute(Context context, String attribute)
  {
    Session session = _container.getSession(attribute.toString());
    return (session != null) ? new AnySession(session) : UNDEFINED;
  }


  public Any checkAttribute(Context context, String attribute)
  {
    return getAttribute(context, attribute);
  }


  public boolean deleteAttribute(Context context, String attribute)
  {
    context.checkAccess(CAN_WRITE);
    Session session = _container.getSession(attribute.toString());
    if (session != null) {
      _container.removeSession(session);
      return true;
    }
    return false;   
  }
 

  public Any getReference(Context context, Any index)
  {
    return getAttribute(context, index.toString());
  }


  public Any checkReference(Context context, Any index)
  {
    return getAttribute(context, index.toString());
  }


  public boolean deleteReference(Context context, Any index)
  {
    return deleteAttribute(context, index.toString());
  }


  public BindingEnumeration enumeration()
  {
    Session[] sessions = _container.getSessions();
    return new SessionEnumeration(sessions);
  }
 
  
  /********* Exposed methods ************/

  
  /// @method invalidateSessions
  /// Invalidates (removes) all session from this container.
  /// @synopsis SessionContainer invalidateSessions()
  /// @throws AccessDenied If security policy denies this operation

  public Any m_invalidateSessions(Context context)
  {
    context.checkAccess(CAN_WRITE);
    _container.invalidateSessions();
    return this;
  }


  /// @method createSession
  /// @synopsis Session createSession(int lifetime, int timeout)
  /// @throws AccessDenied If security policy denies this operation
  public static final Object[] p_createSession = { null, "lifetime", "timeout" };
  public Any m_createSession(Context context, int lifetime, int timeout)
  {
    context.checkAccess(CAN_WRITE);
    return new AnySession(_container.createSession(lifetime, timeout));
  }

  /// @method getSessions
  /// @synopsis array getSessions()
  public Any m_getSessions()
  {
    Session[] sessions = _container.getSessions();
    int n = sessions.length;
    Array array = new Array(n+1);
    for(int i=0; i<n ;i++) {
      Session session = sessions[i];
      array.append(Any.create(session.getId()), new AnySession(session));
    }
    return array;
  }
 
  public class SessionEnumeration implements BindingEnumeration
  {

    private Session[] _list;
    private int _index = 0;


    public SessionEnumeration(Session[] list)
    {
      _list = list;
    }


    public boolean hasMoreElements()
    {
      return (_index < _list.length);
    }


    public Object nextKey()
    {
      return Any.create(_index);
    }


    public Object nextElement()
    {
      if (_index < _list.length) {
        return new anvil.core.net.AnySession(_list[_index++]);
      } else {
        return Any.NULL;
      }
    }

  }


  transient public static final anvil.script.compiler.NativeClass __class__ =
    new anvil.script.compiler.NativeClass("SessionContainer", AnySessionContainer.class,
    //DOC{{
    ""+
      " @class SessionContainer\n" +
      "\n" +
      " @method invalidateSessions\n" +
      " Invalidates (removes) all session from this container.\n" +
      " @synopsis SessionContainer invalidateSessions()\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method createSession\n" +
      " @synopsis Session createSession(int lifetime, int timeout)\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method getSessions\n" +
      " @synopsis array getSessions()\n"
    //}}DOC
    );
  static {
    NetModule.class.getName();
  }
 
}
TOP

Related Classes of anvil.core.net.AnySessionContainer$SessionEnumeration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.