/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
* @bug 4155894
*
* @summary remote references can't be downloaded
* @author Ann Wollrath
*
* test currently needs RMISecurityManager because of
* 4180392
*
* @library ../../testlibrary
* @build TestLibrary Ping UseCustomRef_Stub UseCustomRef_Skel
* @run main/othervm/policy=security.policy/secure=java.rmi.RMISecurityManager/timeout=120 UseCustomRef
*
* This test was failing to run because the synthetic access
* control context used by the application class loader to find and define
* CustomServerRef does not have accessClassInPackage.sun.rmi.server runtime
* permission necessary to load its superclass sun.rmi.server.UnicastServerRef,
* even though this test's code is granted that permission in its policy file.
* That bug number is 4256530
*/
public class UseCustomRef
extends RemoteServer
implements Ping
{
exportObject();
}
}
public void ping() {}
p.ping();
}
try {
/*
* create registry
*/
/*
* create object with custom ref and bind in registry
*/
if (!(ref instanceof CustomServerRef)) {
"instanceof CustomServerRef");
}
// String name = "UseCustomRef";
/*
* look up object and invoke its ping method
*/
/*
* pass object with custom ref in remote call
*/
/*
* write remote object with custom ref to output stream
*/
/*
* read back remote object from output stream
*/
/*
* re-export object and ping
*/
cr.exportObject();
} catch (Exception e) {
} finally {
}
}
public static class CustomServerRef
{
public CustomServerRef() {}
super(ref);
}
/*****
public CustomServerRef(int port,
RMIClientSocketFactory csf,
RMIServerSocketFactory ssf)
{
super (new LiveRef(port, csf, ssf));
}
*****/
return "";
}
throws IOException, ClassNotFoundException
{
}
}
}
public CustomRef() {
}
super(ref);
}
throws IOException
{
// this custom data ensures that a custom server
// ref has written the relevant information.
}
return "";
}
}
}