org/objectweb/proactive/ext/security/SecurityOutputStream.java

00001 /* 
00002  * ################################################################
00003  * 
00004  * ProActive: The Java(TM) library for Parallel, Distributed, 
00005  *            Concurrent computing with Security and Mobility
00006  * 
00007  * Copyright (C) 1997-2007 INRIA/University of Nice-Sophia Antipolis
00008  * Contact: proactive@objectweb.org
00009  * 
00010  * This library is free software; you can redistribute it and/or
00011  * modify it under the terms of the GNU Lesser General Public
00012  * License as published by the Free Software Foundation; either
00013  * version 2.1 of the License, or any later version.
00014  *  
00015  * This library is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018  * Lesser General Public License for more details.
00019  * 
00020  * You should have received a copy of the GNU Lesser General Public
00021  * License along with this library; if not, write to the Free Software
00022  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
00023  * USA
00024  *  
00025  *  Initial developer(s):               The ProActive Team
00026  *                        http://www.inria.fr/oasis/ProActive/contacts.html
00027  *  Contributor(s): 
00028  * 
00029  * ################################################################
00030  */ 
00031 package org.objectweb.proactive.ext.security;
00032 
00033 import java.io.IOException;
00034 import java.io.ObjectOutputStream;
00035 import java.io.OutputStream;
00036 import java.rmi.Remote;
00037 import java.rmi.server.RemoteObject;
00038 import java.rmi.server.RemoteStub;
00039 
00040 
00047 public class SecurityOutputStream extends ObjectOutputStream {
00048 
00053     public SecurityOutputStream(OutputStream out) throws IOException {
00054         super(out);
00055         System.out.println(
00056             "-*-**-*--*-*-*-**--**-*--*-**- instanciating securtityoutpoutstream");
00057         java.security.AccessController.doPrivileged(new java.security.PrivilegedAction<Object>() {
00058                 public Object run() {
00059                     enableReplaceObject(true);
00060                     return null;
00061                 }
00062             });
00063     }
00064 
00069     public SecurityOutputStream() throws IOException, SecurityException {
00070         super();
00071     }
00072 
00078     protected Object replaceObject(Object obj) throws IOException {
00079         System.out.println(
00080             " */*/*/*/*/*/*/* /*/*/**//**/ Inside replaceObject /*/**/*//*/**//*/*/**//*/*");
00081         if ((obj instanceof Remote) && !(obj instanceof RemoteStub)) {
00082             System.out.println(
00083                 " */*/*/*/*/*/*/* /*/*/**//**/ found a Remote object " + obj +
00084                 " /*/**/*//*/**//*/*/**//*/*");
00085             Remote target = RemoteObject.toStub((Remote) obj);
00086             if (target != null) {
00087                 return target;
00088             }
00089         }
00090         System.out.println(" */*/*/*/*/*/*/* /*/*/**//**/ Normal obj : " + obj +
00091             "/*/**/*//*/**//*/*/**//*/*");
00092         return obj;
00093     }
00094 }

Generated on Mon Jan 22 15:16:11 2007 for ProActive by  doxygen 1.5.1