diff options
author | Eike Stepper | 2020-06-30 04:55:41 +0000 |
---|---|---|
committer | Eike Stepper | 2020-06-30 04:55:41 +0000 |
commit | b7168050123f98e1cff83f4a5cb4f81902122581 (patch) | |
tree | 2c77412832747b5ba760e9ad6f4b95788a2eda78 /plugins | |
parent | 0982e582384c56c10f291ab96649f12290f9db31 (diff) | |
download | cdo-b7168050123f98e1cff83f4a5cb4f81902122581.tar.gz cdo-b7168050123f98e1cff83f4a5cb4f81902122581.tar.xz cdo-b7168050123f98e1cff83f4a5cb4f81902122581.zip |
[564754] Provide a RunnableWithException interface
https://bugs.eclipse.org/bugs/show_bug.cgi?id=564754
Diffstat (limited to 'plugins')
4 files changed, 83 insertions, 34 deletions
diff --git a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF index 519798df43..9c967ad64a 100644 --- a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.net4j.util;singleton:=true -Bundle-Version: 3.11.0.qualifier +Bundle-Version: 3.12.0.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -15,35 +15,35 @@ Import-Package: org.eclipse.osgi.service.debug;version="[1.0.0,2.0.0)";resolutio org.osgi.framework;version="[1.3.0,2.0.0)";resolution:=optional, org.osgi.service.log;version="[1.3.0,2.0.0)";resolution:=optional, org.osgi.util.tracker;version="[1.3.0,2.0.0)";resolution:=optional -Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.11.0";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests", - org.eclipse.net4j.internal.util.container;version="3.11.0";x-internal:=true, - org.eclipse.net4j.internal.util.factory;version="3.11.0";x-internal:=true, - org.eclipse.net4j.internal.util.om;version="3.11.0";x-internal:=true, - org.eclipse.net4j.internal.util.om.pref;version="3.11.0";x-internal:=true, - org.eclipse.net4j.internal.util.table;version="3.11.0";x-internal:=true, - org.eclipse.net4j.internal.util.test;version="3.11.0";x-friends:="org.eclipse.net4j.tests", - org.eclipse.net4j.util;version="3.11.0", - org.eclipse.net4j.util.cache;version="3.11.0", - org.eclipse.net4j.util.collection;version="3.11.0", - org.eclipse.net4j.util.concurrent;version="3.11.0", - org.eclipse.net4j.util.confirmation;version="3.11.0", - org.eclipse.net4j.util.container;version="3.11.0", - org.eclipse.net4j.util.container.delegate;version="3.11.0", - org.eclipse.net4j.util.event;version="3.11.0", - org.eclipse.net4j.util.factory;version="3.11.0", - org.eclipse.net4j.util.fsm;version="3.11.0", - org.eclipse.net4j.util.io;version="3.11.0", - org.eclipse.net4j.util.lifecycle;version="3.11.0", - org.eclipse.net4j.util.om;version="3.11.0", - org.eclipse.net4j.util.om.log;version="3.11.0", - org.eclipse.net4j.util.om.monitor;version="3.11.0", - org.eclipse.net4j.util.om.pref;version="3.11.0", - org.eclipse.net4j.util.om.trace;version="3.11.0", - org.eclipse.net4j.util.options;version="3.11.0", - org.eclipse.net4j.util.properties;version="3.11.0", - org.eclipse.net4j.util.ref;version="3.11.0", - org.eclipse.net4j.util.registry;version="3.11.0", - org.eclipse.net4j.util.security;version="3.11.0", - org.eclipse.net4j.util.transaction;version="3.11.0" +Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.12.0";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests", + org.eclipse.net4j.internal.util.container;version="3.12.0";x-internal:=true, + org.eclipse.net4j.internal.util.factory;version="3.12.0";x-internal:=true, + org.eclipse.net4j.internal.util.om;version="3.12.0";x-internal:=true, + org.eclipse.net4j.internal.util.om.pref;version="3.12.0";x-internal:=true, + org.eclipse.net4j.internal.util.table;version="3.12.0";x-internal:=true, + org.eclipse.net4j.internal.util.test;version="3.12.0";x-friends:="org.eclipse.net4j.tests", + org.eclipse.net4j.util;version="3.12.0", + org.eclipse.net4j.util.cache;version="3.12.0", + org.eclipse.net4j.util.collection;version="3.12.0", + org.eclipse.net4j.util.concurrent;version="3.12.0", + org.eclipse.net4j.util.confirmation;version="3.12.0", + org.eclipse.net4j.util.container;version="3.12.0", + org.eclipse.net4j.util.container.delegate;version="3.12.0", + org.eclipse.net4j.util.event;version="3.12.0", + org.eclipse.net4j.util.factory;version="3.12.0", + org.eclipse.net4j.util.fsm;version="3.12.0", + org.eclipse.net4j.util.io;version="3.12.0", + org.eclipse.net4j.util.lifecycle;version="3.12.0", + org.eclipse.net4j.util.om;version="3.12.0", + org.eclipse.net4j.util.om.log;version="3.12.0", + org.eclipse.net4j.util.om.monitor;version="3.12.0", + org.eclipse.net4j.util.om.pref;version="3.12.0", + org.eclipse.net4j.util.om.trace;version="3.12.0", + org.eclipse.net4j.util.options;version="3.12.0", + org.eclipse.net4j.util.properties;version="3.12.0", + org.eclipse.net4j.util.ref;version="3.12.0", + org.eclipse.net4j.util.registry;version="3.12.0", + org.eclipse.net4j.util.security;version="3.12.0", + org.eclipse.net4j.util.transaction;version="3.12.0" Eclipse-BuddyPolicy: registered Automatic-Module-Name: org.eclipse.net4j.util diff --git a/plugins/org.eclipse.net4j.util/pom.xml b/plugins/org.eclipse.net4j.util/pom.xml index 379473e572..eb3fd46375 100644 --- a/plugins/org.eclipse.net4j.util/pom.xml +++ b/plugins/org.eclipse.net4j.util/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo</groupId> <artifactId>org.eclipse.net4j.util</artifactId> - <version>3.11.0-SNAPSHOT</version> + <version>3.12.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/RunnableWithException.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/RunnableWithException.java new file mode 100644 index 0000000000..50a5c9ad6a --- /dev/null +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/RunnableWithException.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020 Eike Stepper (Loehne, Germany) and others. + * 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: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.net4j.util; + +/** + * An interface with a {@link #run()} method that can propagate checked exceptions. + * + * @author Eike Stepper + * @since 3.12 + */ +@FunctionalInterface +public interface RunnableWithException +{ + public void run() throws Exception; + + public static void forkAndWait(RunnableWithException runnable) throws Exception + { + Exception[] exception = { null }; + Thread thread = new Thread(runnable.getClass().getName()) + { + @Override + public void run() + { + try + { + runnable.run(); + } + catch (Exception ex) + { + exception[0] = ex; + } + } + }; + + thread.start(); + thread.join(); + + if (exception[0] != null) + { + throw exception[0]; + } + } +} diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerPersistence.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerPersistence.java index 66bb62c7f3..ad1523c67b 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerPersistence.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/ContainerPersistence.java @@ -38,7 +38,6 @@ public abstract class ContainerPersistence<E> implements Persistence<E> { out = openInputStream(); - @SuppressWarnings("resource") ObjectInputStream oos = new ObjectInputStream(new BufferedInputStream(out)); @SuppressWarnings("unchecked") @@ -68,7 +67,6 @@ public abstract class ContainerPersistence<E> implements Persistence<E> { out = openOutputStream(); - @SuppressWarnings("resource") ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(out)); oos.writeObject(elements); oos.flush(); |