Author: koen.aers(a)jboss.com
Date: 2012-02-13 11:35:27 -0500 (Mon, 13 Feb 2012)
New Revision: 38663
Modified:
trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/CtrlCAction.java
Log:
JBIDE-10840: Consumption of sun.misc.Signal makes Tycho 0.14 fails because of non-OSGi
conformance
Modified:
trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/CtrlCAction.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/CtrlCAction.java 2012-02-13
16:28:08 UTC (rev 38662)
+++
trunk/forge/plugins/org.jboss.tools.forge.runtime.ext/src/org/jboss/tools/forge/runtime/ext/CtrlCAction.java 2012-02-13
16:35:27 UTC (rev 38663)
@@ -2,20 +2,38 @@
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import org.jboss.forge.shell.spi.TriggeredAction;
-import sun.misc.Signal;
-
-@SuppressWarnings("restriction")
public class CtrlCAction implements TriggeredAction {
-
+
@Override
public ActionListener getListener() {
return new ActionListener() {
@Override
- public void actionPerformed(ActionEvent e) {
- Signal.raise(new Signal("INT"));
+ public void actionPerformed(ActionEvent event) {
+ try {
+ Class<?> signalClass =
getClass().getClassLoader().loadClass("sun.misc.Signal");
+ Method raiseMethod = signalClass.getMethod("raise", signalClass);
+ Object newSignal =
signalClass.getConstructor(String.class).newInstance("INT");
+ raiseMethod.invoke(null, newSignal);
+ } catch (ClassNotFoundException e) {
+ // ignored, trapping is not supported, switch to sun vm if you want this
+ } catch (SecurityException e) {
+ // should never happen;
+ } catch (NoSuchMethodException e) {
+ // should never happen;
+ } catch (IllegalArgumentException e) {
+ // should never happen;
+ } catch (InstantiationException e) {
+ // should never happen;
+ } catch (IllegalAccessException e) {
+ // should never happen;
+ } catch (InvocationTargetException e) {
+ // should never happen;
+ }
}
};
}
Show replies by date