Package anvil.core.net

Source Code of anvil.core.net.AnyCitizen

/*
* $Id: AnyCitizen.java,v 1.21 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 anvil.Log;
import anvil.core.Any;
import anvil.core.AnyTuple;
import anvil.core.AnyAbstractClass;
import anvil.core.AnyBindingEnumeration;
import anvil.core.runtime.AnyPermission;
import anvil.script.Context;
import anvil.server.Citizen;
import anvil.server.Tribe;
import anvil.server.Tribe;
import anvil.server.Citizen;
import anvil.server.OperationFailedException;
import anvil.java.util.BindingEnumeration;

import java.util.ArrayList;
import java.util.Enumeration;
import java.security.Permission;


///
/// @class Citizen
/**
* class AnyCitizen
*/
public class AnyCitizen extends AnyAbstractClass
{

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


  private Citizen _citizen;
 
 
  public AnyCitizen(Citizen citizen)
  {
    _citizen = citizen;
  }
 
 
  public final anvil.script.ClassType classOf()
  {
    return __class__;
  }


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

  public boolean equals(Object obj)
  {
    if (this == obj) {
      return true;
    }
    if (obj instanceof AnyCitizen) {
      return _citizen.equals(((AnyCitizen)obj)._citizen);
    }
    return false;
  }


  public Object toObject()
  {
    return _citizen;
  }


  public Any getAttribute(anvil.script.Context context, String attribute)
  {
    Any value = _citizen.getVariable(attribute);
    if (value != null) {
      return value;
    } else {
      return Any.UNDEFINED;
    }
  }

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


  public Any setAttribute(anvil.script.Context context, String attribute, Any value)
  {
    context.checkAccess(CAN_WRITE);
    return _citizen.setVariable(attribute, value);
  }


  public boolean deleteAttribute(anvil.script.Context context, String attribute)
  {
    context.checkAccess(CAN_WRITE);
    return _citizen.deleteVariable(attribute);
  }
 

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


  public Any checkReference(anvil.script.Context context, Any index)
  {
    return checkAttribute(context, index.toString());
  }


  public Any setReference(anvil.script.Context context, Any index, Any value)
  { 
    return setAttribute(context, index.toString(), value);
  }


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

  public BindingEnumeration enumeration()
  {
    return _citizen.getVariables();
  }


  /// @method getName
  /// Returns the name of citizen.
  /// @synopsis string getName()
  public Any m_getName()
  {
    return Any.create(_citizen.getName());
  }


  /// @method verifyCredentials
  /// Checks if given crendentials matches this citizen's crendentials.
  /// @synopsis boolean verifyCredentials(string password)
  public static final Object[] p_verifyCredentials = new Object[] { "credentials" };
  public Any m_verifyCredentials(String credentials)
  {
    return Any.create(_citizen.verifyCredentials(credentials));
  }


  /// @method setCredentials
  /// Sets this citizens crendentials.
  /// @synopsis boolean setCredentials(string newCredentials)
  /// @throws AccessDenied If security policy denies this operation
  public static final Object[] p_setCredentials = new Object[] { null, "newCredentials" };
  public Any m_setCredentials(Context context, String newc)
  {
    context.checkAccess(CAN_WRITE);
    try {
      _citizen.setCredentials(newc);
      return this;
    } catch (OperationFailedException e) {
      throw context.exception(e);
    }
  }


  /// @method commit
  /// Commits changes made to this citizen.
  /// @synopsis citizen commit()
  /// @throws OperationFailed If operation failed
  /// @throws AccessDenied If security policy denies this operation
  public Any m_commit(Context context)
  {
    context.checkAccess(CAN_WRITE);
    try {
      _citizen.commit();
      return this;
    } catch (OperationFailedException e) {
      throw context.exception(e);
    }
  }


  /// @method getTribes
  /// Returns list of tribe into which this citizen belongs to.
  /// @synopsis list getTribes()
  /// @throws AccessDenied If security policy denies this operation
  public Any m_getTribes(Context context)
  {
    context.checkAccess(AnyTribe.CAN_READ);
    Tribe[] tribes = _citizen.getParents();
    int n = tribes.length;
    Any[] list = new Any[n];
    for(int i=0; i<n; i++) {
      list[i] = new AnyTribe(tribes[i]);
    }
    return new AnyTuple(list);
  }



  /// @method getParents
  /// Returns list of tribe into which this citizen belongs to.
  /// @synopsis list getParents()
  /// @throws AccessDenied If security policy denies this operation
  public Any m_getParents(Context context)
  {
    return m_getTribes(context);
  }


  /// @method remove
  /// Removes this citizen
  /// @synopsis void remove()
  /// @throws OperationFailed If operation failed
  /// @throws AccessDenied If security policy denies this operation
  public Any m_remove(Context context)
  {
    context.checkAccess(CAN_WRITE);
    try {
      _citizen.remove();
      return this;
    } catch (OperationFailedException e) {
      throw context.exception(e);
    }
  }


  /// @method getPermissions
  /// Returns permissions that this user has.
  /// @synopsis enumeration getPermissions()
  /// @throws AccessDenied If security policy denies this operation
  public Any m_getPermissions(Context context)
  {
    context.checkAccess(AnyRealm.CAN_READ);
    Enumeration enu = _citizen.getPermissions().elements();
    ArrayList list = new ArrayList();
    while (enu.hasMoreElements()) {
      list.add( new AnyPermission((Permission)enu.nextElement()) );
    }
    return new AnyTuple( (Any[])list.toArray(new Any[list.size()]) );
  }


  /// @method getCombinedPermissions
  /// Returns permissions that this user has (including permissions inherited from groups).
  /// @synopsis enumeration getCombinedPermissions()
  /// @throws AccessDenied If security policy denies this operation
  public Any m_getCombinedPermissions(Context context)
  {
    context.checkAccess(AnyRealm.CAN_READ);
    Enumeration enu = _citizen.getCombinedPermissions().elements();
    ArrayList list = new ArrayList();
    while (enu.hasMoreElements()) {
      list.add( new AnyPermission((Permission)enu.nextElement()) );
    }
    return new AnyTuple( (Any[])list.toArray(new Any[list.size()]) );
  }


  /// @method addPermission
  /// Adds permission to citizen's security policy. You may have to call
  /// commit() for the citizen to save modification to persistent store
  /// (depenging on realm implementation)
  /// @synopsis void addPermission(permission)
  /// @throws OperationFailed If error occured file saving to persistent
  public static final Object[] p_addPermission = { null, "permission" };
  public Any m_addPermission(Context context, Any permission)
  {
    context.checkAccess(CAN_WRITE);
    if (!(permission instanceof AnyPermission)) {
      throw context.BadParameter("Permission expected");
    }
    try {
      _citizen.addPermission((Permission)permission.toObject());
    } catch (OperationFailedException e) {
      throw context.exception(e);
    }
    return this;
  }

 
  /// @method removePermission
  /// Removes permission from citizen's security policy. You may have to call
  /// commit() for the citizen to save modification to persistent store
  /// (depenging on realm implementation)
  /// @synopsis void removePermission(permission)
  /// @throws OperationFailed If error occured file removing from persistent
  public static final Object[] p_removePermission = { null, "permission" };
  public Any m_removePermission(Context context, Any permission)
  {
    context.checkAccess(CAN_WRITE);
    if (!(permission instanceof AnyPermission)) {
      throw context.BadParameter("Permission expected");
    }
    try {
      _citizen.removePermission( (Permission)permission.toObject() );
    } catch (OperationFailedException e) {
      throw context.exception(e);
    }
    return this;
  }


  /// @method listPermissions
  /// Returns enumeration of permissions held by this citizen.
  /// @synopsis enumeration listPermissions()
  public Any m_listPermissions()
  {
    return new AnyBindingEnumeration(_citizen.listPermissions());
  }

 
  /// @method getRealm
  /// Returns the realm into which this citizen belongs to.
  /// @synopsis Realm getRealm()
  /// @throws AccessDenied If security policy denies this operation
  public Any m_getRealm(Context context)
  {
    context.checkAccess(AnyRealm.CAN_READ);
    return new AnyRealm(_citizen.getRealm());
  }



  public static final anvil.script.compiler.NativeClass __class__ =
    new anvil.script.compiler.NativeClass("Citizen", AnyCitizen.class,
    //DOC{{
    ""+
      "\n" +
      " @class Citizen\n" +
      " @method getName\n" +
      " Returns the name of citizen.\n" +
      " @synopsis string getName()\n" +
      " @method verifyCredentials\n" +
      " Checks if given crendentials matches this citizen's crendentials.\n" +
      " @synopsis boolean verifyCredentials(string password)\n" +
      " @method setCredentials\n" +
      " Sets this citizens crendentials.\n" +
      " @synopsis boolean setCredentials(string newCredentials)\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method commit\n" +
      " Commits changes made to this citizen.\n" +
      " @synopsis citizen commit()\n" +
      " @throws OperationFailed If operation failed\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method getTribes\n" +
      " Returns list of tribe into which this citizen belongs to.\n" +
      " @synopsis list getTribes()\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method getParents\n" +
      " Returns list of tribe into which this citizen belongs to.\n" +
      " @synopsis list getParents()\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method remove\n" +
      " Removes this citizen\n" +
      " @synopsis void remove()\n" +
      " @throws OperationFailed If operation failed\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method getPermissions\n" +
      " Returns permissions that this user has.\n" +
      " @synopsis enumeration getPermissions()\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method getCombinedPermissions\n" +
      " Returns permissions that this user has (including permissions inherited from groups).\n" +
      " @synopsis enumeration getCombinedPermissions()\n" +
      " @throws AccessDenied If security policy denies this operation\n" +
      " @method addPermission\n" +
      " Adds permission to citizen's security policy. You may have to call\n" +
      " commit() for the citizen to save modification to persistent store\n" +
      " (depenging on realm implementation)\n" +
      " @synopsis void addPermission(permission)\n" +
      " @throws OperationFailed If error occured file saving to persistent\n" +
      " @method removePermission\n" +
      " Removes permission from citizen's security policy. You may have to call\n" +
      " commit() for the citizen to save modification to persistent store\n" +
      " (depenging on realm implementation)\n" +
      " @synopsis void removePermission(permission)\n" +
      " @throws OperationFailed If error occured file removing from persistent\n" +
      " @method listPermissions\n" +
      " Returns enumeration of permissions held by this citizen.\n" +
      " @synopsis enumeration listPermissions()\n" +
      " @method getRealm\n" +
      " Returns the realm into which this citizen belongs to.\n" +
      " @synopsis Realm getRealm()\n" +
      " @throws AccessDenied If security policy denies this operation\n"
    //}}DOC
    );
  static {
    NetModule.class.getName();
  }


}
TOP

Related Classes of anvil.core.net.AnyCitizen

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.