Package anvil.core.runtime

Source Code of anvil.core.runtime.AnyPermission

/*
* $Id: AnyPermission.java,v 1.6 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.runtime;

import java.io.IOException;
import java.util.Enumeration;
import anvil.java.util.BindingEnumeration;
import anvil.core.Serializer;
import anvil.core.Unserializer;
import anvil.core.UnserializationException;
import anvil.core.Any;
import anvil.core.AnyString;
import anvil.core.Array;
import anvil.core.AnyTuple;
import anvil.core.AnyList;
import anvil.core.AnyAbstractClass;
import java.security.Permission;
import anvil.script.Context;
import anvil.script.Type;

/// @class Permission
/// Class for representing access to a system resource.

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

  /// @constructor Permission
  /// @synopsis Permission(string type, ..parameters)
  public static final Object[] newInstance = { null, "parameters" };
  public static final Any newInstance(Context context, Any[] args)
  {
    int n = args.length;
    if (n == 0) {
      throw context.NotEnoughParameters("Permission");
    }
    String[] s = new String[n];
    for(int i=0; i<n; i++) {
      s[i] = args[i].toString();
    }
    try {
      Permission p = anvil.server.PolicyPreferences.createPermission(s);
      if (p == null) {
        throw context.BadParameter("Permission");
      }
      return new AnyPermission(p);
    } catch (Throwable t) {
      throw context.BadParameter("Permission: "+t.getMessage());
    }
  }


  private Permission _permission;
  private Any        _type = null;


  public AnyPermission(Permission perm)
  {
    _permission = perm;
  }
 
 
  public final anvil.script.ClassType classOf()
  {
    return __class__;
  }


  public Object toObject()
  {
    return _permission;
  }

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


  public boolean equals(Object o)
  {
    if (o instanceof AnyPermission) {
      return _permission.equals(((AnyPermission)o)._permission);
    }
    return false;
  }


  public String toString()
  {
    return _permission.toString();
  }

 
  public final void serialize(Serializer serializer) throws IOException
  {
    if (serializer.register(this)) {
      return;
    }
    Permission perm = _permission;
    serializer.write('P');
    serializer.write(perm.getClass().getName());
    serializer.write(perm.getName());
    serializer.write(perm.getActions());
  }
 

  public static final Any unserialize(Unserializer unserializer) throws UnserializationException
  {
    String[] args = new String[3];
    unserializer.consume('s');
    args[0] = unserializer.getUTF16String();
    unserializer.consume('s');
    args[1] = unserializer.getUTF16String();
    unserializer.consume('s');
    args[2] = unserializer.getUTF16String();
    try {
      AnyPermission perm = new AnyPermission(anvil.server.PolicyPreferences.createPermission(args));
      unserializer.register(perm);
      return perm;
    } catch (Throwable t) {
      throw new UnserializationException(t.toString());
    }
  }


  /// @method getType
  /// Returns this permission's type.
  /// @synopsis string getType()
  public Any m_getType()
  {
    if (_type == null) {
      _type = Any.create(_permission.getClass().getName());
    }
    return _type;
  }



  /// @method getName
  /// Returns this permission's name.
  /// @synopsis string getName()
  public Any m_getName()
  {
    return Any.create(_permission.getName());
  }


  /// @method getActions
  /// Returns this permissions actions.
  /// @synopsis string getActions()
  public Any m_getActions()
  {
    return Any.create(_permission.getActions());
  }


  /// @method implies
  /// Checks if the specified permission's actions are "implied by"
  /// this permissions's actions.
  /// @synopsis boolean implies(Permission permission)
  public static final Object[] p_implies = { null, "permission" };
  public Any m_implies(Context context, Any perm)
  {
    if (!(perm instanceof AnyPermission)) {
      throw context.BadParameter("Permission expected");
    }
    return _permission.implies((Permission)perm.toObject()) ? TRUE : FALSE;
  }


  public static final anvil.script.compiler.NativeClass __class__ =
    new anvil.script.compiler.NativeClass("Permission", AnyPermission.class,
    //DOC{{
    ""+
      " @class Permission\n" +
      " Class for representing access to a system resource. \n" +
      " @constructor Permission\n" +
      " @synopsis Permission(string type, ..parameters)\n" +
      " @method getType\n" +
      " Returns this permission's type.\n" +
      " @synopsis string getType()\n" +
      " @method getName\n" +
      " Returns this permission's name.\n" +
      " @synopsis string getName()\n" +
      " @method getActions\n" +
      " Returns this permissions actions.\n" +
      " @synopsis string getActions()\n" +
      " @method implies\n" +
      " Checks if the specified permission's actions are \"implied by\" \n" +
      " this permissions's actions.\n" +
      " @synopsis boolean implies(Permission permission)\n"
    //}}DOC
    );
  static {
    RuntimeModule.class.getName();
 
 
}
TOP

Related Classes of anvil.core.runtime.AnyPermission

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.