/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.rmi; import java.rmi.Remote; import java.rmi.server.Unreferenced; /** * Base class for all rmi objects * * @author Evgen Vidolob */ public class RmiObject implements Remote, Unreferenced { /** * Wraps all non "java.*" exceptions into {@link RuntimeException} * * @param t * exception which need wrap * @return wrapped exception */ public Throwable wrapException(Throwable t) { boolean isJavaException = false; Throwable ex = t; while (ex != null) { if (!ex.getClass().getName().startsWith("java.") && !isWellKnownException(ex)) { isJavaException = true; } ex = ex.getCause(); } if (isJavaException) { RuntimeException runtimeException = new RuntimeException(t.getMessage()); runtimeException.setStackTrace(t.getStackTrace()); runtimeException.initCause(wrapException(t.getCause())); ex = runtimeException; } return ex; } protected boolean isWellKnownException(Throwable t) { return false; } @Override public void unreferenced() { } }