⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 placeaccesspermission.java

📁 一个agent 工具包,可以开发移动设备应用,考虑了安全措施
💻 JAVA
字号:
package SOMA.agent.mobility;

import java.security.*;
import SOMA.naming.*;

/** Permesso di accesso a un place.
 *
 * @author Livio Profiri
 */

public class PlaceAccessPermission extends Permission
{
  /** Costruttore.
  *
  * <P> Per rispettare la sintassi di una normale <code>BasicPermission</code>
  * e' stato utilizzato uno stratagemma: il nome del permesso si ottiene
  * separando con un punto il nome di dominio dal il nome di place.
  * <BR><BR> <B>    Esempio:<B> <code>PlaceAccessPermission( Italia.Roma )</code>
  *
  * <P> Questo permette di specificare molto facilmente permessi di vario tipo:
  * <UL>
  * <LI> Accesso a tutti i place di tutti i domini: <code>PlaceAccessPermission( "*" );
  * <LI> Accesso a tutti i place di un dominio: <code>PlaceAccessPermission( "Dominio.*" );
  * <LI> Accesso a un place di un dominio: <code>PlaceAccessPermission( "Dominio.Place" );
  * <LI> Accesso al default place di un dominio: <code>PlaceAccessPermission( "Dominio" );
  * </UL>
  *
  * @author Livio Profiri
  */
  PlaceID placeID;

  public PlaceAccessPermission(String name, String actions )
  {
    this( name );
  }

  /** Costruttore. */
  public PlaceAccessPermission(String name) //throws NameException
  {
    super( name );

    try
    {
      if( "*".equals( name.trim() ) )
        placeID = new PlaceID( "*", "*" );
      else
        placeID = new PlaceID( name );
    }
    catch( NameException e )
    {
      placeID = new PlaceID( "ERROR", "ERROR" );
    }
  }

  /** Costruttore. */
  public PlaceAccessPermission( PlaceID placeID )
  {
    super( placeID.toString() );

    this.placeID = placeID;
  }

  /** Aggiunto un side effect: stampo il risultato a video. */
  public boolean implies(Permission permission)
  {
    boolean answer = false;

    if( permission instanceof PlaceAccessPermission )
    {
      PlaceAccessPermission other = (PlaceAccessPermission)permission;

      boolean answerDomain = placeID.domain.equals( "*" ) ||
                             placeID.domain.equals( other.placeID.domain );

      boolean answerPlace = placeID.place.equals( "*" ) ||
                            placeID.place.equals( other.placeID.place );

      answer = answerDomain && answerPlace;
    }

    //System.out.println( this + " ===> " + permission + "  is  " + answer );

    return answer;
  }

  /** Aggiunto un side effect: stampo il risultato a video. */
  public boolean equals( Object obj )
  {
    boolean answer = false;

    if( obj instanceof PlaceAccessPermission )
      answer = placeID.equals( ((PlaceAccessPermission)obj).placeID );

    //System.out.println( this + " equals " + obj + "  is  " + answer );

    return answer;
  }

  /** Vuoto. */
  public String getActions()
  {
    return "";
  }

  public String toString()
  {
    return "[PlaceAccessPermission " + placeID + "]";
  }

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

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -