agentoutputstream.java

来自「一个agent 工具包,可以开发移动设备应用,考虑了安全措施」· Java 代码 · 共 47 行

JAVA
47
字号
package SOMA.agent.classLoading;

/**  Con questo stream scongelo gli agenti che viaggiano congelati ossia
  *  sottoforma di array di byte
  *  viaggiano in quella forma poiche' altrimenti non potrei caricarli
  *  con il classloader che dico io
  */

import java.io.*;
import java.util.*;
import SOMA.agent.Agent;

public class AgentOutputStream extends ObjectOutputStream
{
  // Attenzione: richiedo che il classloader sia un AgentClassLoader:
  //   non accetto che gli agenti siano caricati da un classloader diverso.

  private AgentClassLoader loader = null;
  private Set classToLoadSet = new TreeSet();

  public AgentOutputStream( OutputStream out, Agent agent )
                                           throws IOException
  {
    super(out);

    // Salvo tutte le classi caricate dal classloader dell'agente
    this.loader = (AgentClassLoader)agent.getClass().getClassLoader();
  }

  // Attenzione: prevedo il loading delle sole classi caricate dal classloader dell'agente.
  //   Non voglio che l'agente faccia uso di classi fornite da altri.
  protected void annotateClass( Class cl ) throws IOException
  {
    //System.out.println( "Annotate Class: " + cl.getName() );

    if( loader != null && loader.equals( cl.getClassLoader() ) )
    {
      classToLoadSet.add( cl.getName() );
    }
  }

  public Set getClassToLoadSet()
  {
    return classToLoadSet;
  }
}

⌨️ 快捷键说明

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