[jinput] Require java-headless instead of java (bz 1068289). Add 005_jinput_leak.patch and 006_jinput_java5.p
Jerry James
jjames at fedoraproject.org
Mon Feb 24 19:37:10 UTC 2014
commit b78ad2df55b9a88b58df893a1c719387b1ed9256
Author: Jerry James <jamesjer at betterlinux.com>
Date: Mon Feb 24 12:36:55 2014 -0700
Require java-headless instead of java (bz 1068289).
Add 005_jinput_leak.patch and 006_jinput_java5.patch.
Link the plugin with Fedora LDFLAGS.
Preserve timestamp when updating the POMs.
Prevent jutils.jar from being included in jinput.jar.
001_jinput_build.patch | 2 +-
003_jinput_usesystemload.patch | 2 +-
005_jinput_leak.patch | 12 +
006_jinput_java5.patch | 1123 ++++++++++++++++++++++++++++++++++++++++
jinput.spec | 43 ++-
5 files changed, 1170 insertions(+), 12 deletions(-)
---
diff --git a/001_jinput_build.patch b/001_jinput_build.patch
index 18d3edb..771041b 100644
--- a/001_jinput_build.patch
+++ b/001_jinput_build.patch
@@ -1,4 +1,4 @@
---- build.xml.orig 2011-03-23 12:33:26.374177000 -0600
+--- build.xml.orig 2011-03-23 12:33:26.000000000 -0600
+++ build.xml 2012-02-02 11:46:43.419456439 -0700
@@ -3,7 +3,7 @@
<project name="Sun Games Initiative Client Technologies" basedir="." default="all" xmlns:artifact="urn:maven-artifact-ant">
diff --git a/003_jinput_usesystemload.patch b/003_jinput_usesystemload.patch
index 8d91796..efc26ba 100644
--- a/003_jinput_usesystemload.patch
+++ b/003_jinput_usesystemload.patch
@@ -1,4 +1,4 @@
---- plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java.orig 2011-02-20 15:11:41.234377000 +0100
+--- plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java.orig 2011-02-20 15:11:41.000000000 +0100
+++ plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java 2011-07-20 08:20:17.725039445 +0200
@@ -42,7 +42,7 @@
* @author Jeremy Booth (jeremy at newdawnsoftware.com)
diff --git a/005_jinput_leak.patch b/005_jinput_leak.patch
new file mode 100644
index 0000000..c6176c9
--- /dev/null
+++ b/005_jinput_leak.patch
@@ -0,0 +1,12 @@
+Index: coreAPI/src/java/net/java/games/input/PluginClassLoader.java
+===================================================================
+--- coreAPI/src/java/net/java/games/input/PluginClassLoader.java (revision 252)
++++ coreAPI/src/java/net/java/games/input/PluginClassLoader.java (working copy)
+@@ -128,6 +128,7 @@
+ int length = (int)file.length();
+ byte[] bytes = new byte[length];
+ int length2 = fileInputStream.read(bytes);
++ fileInputStream.close();
+ assert length == length2;
+ return bytes;
+ }
diff --git a/006_jinput_java5.patch b/006_jinput_java5.patch
new file mode 100644
index 0000000..bd22e27
--- /dev/null
+++ b/006_jinput_java5.patch
@@ -0,0 +1,1123 @@
+--- ./applet/build.xml.orig 2009-03-22 15:27:59.000000000 -0600
++++ ./applet/build.xml 2014-02-22 14:00:00.000000000 -0700
+@@ -12,7 +12,7 @@
+ </target>
+
+ <target name="compile" depends="init">
+- <javac srcdir="src" destdir="classes" debug="true" deprecation="true" source="1.4" target="1.4">
++ <javac srcdir="src" destdir="classes" debug="true" deprecation="true" source="1.5" target="1.5">
+ <classpath>
+ <pathelement location="../dist/jinput.jar"/>
+ <pathelement location="../dist/jinput-test.jar"/>
+--- ./applet/src/net/java/games/input/applet/JInputAppletResourceLoader.java.orig 2008-11-14 15:09:05.000000000 -0700
++++ ./applet/src/net/java/games/input/applet/JInputAppletResourceLoader.java 2014-02-22 14:00:00.000000000 -0700
+@@ -50,16 +50,16 @@ public class JInputAppletResourceLoader
+ private int percentageDone = 0;
+
+ private String getPrivilegedProperty(final String property) {
+- return (String) AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
++ public String run() {
+ return System.getProperty(property);
+ }
+ });
+ }
+
+ private String setPrivilegedProperty(final String property, final String value) {
+- return (String) AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
++ public String run() {
+ return System.setProperty(property, value);
+ }
+ });
+@@ -94,13 +94,13 @@ public class JInputAppletResourceLoader
+
+ JarFile localJarFile = new JarFile(new File(tempDir, nativeJar), true);
+
+- Enumeration jarEntries = localJarFile.entries();
++ Enumeration<JarEntry> jarEntries = localJarFile.entries();
+ int totalUncompressedBytes = 0;
+ int totalUncompressedBytesWritten = 0;
+- List entriesToUse = new ArrayList();
++ List<JarEntry> entriesToUse = new ArrayList<JarEntry>();
+
+ while(jarEntries.hasMoreElements()) {
+- JarEntry jarEntry = (JarEntry)jarEntries.nextElement();
++ JarEntry jarEntry = jarEntries.nextElement();
+ String entryName = jarEntry.getName();
+ if(!entryName.startsWith("META-INF")) {
+ totalUncompressedBytes+=jarEntry.getSize();
+@@ -116,7 +116,7 @@ public class JInputAppletResourceLoader
+ }
+
+ for(int i=0;i<entriesToUse.size();i++) {
+- JarEntry jarEntry = (JarEntry) entriesToUse.get(i);
++ JarEntry jarEntry = entriesToUse.get(i);
+ InputStream inStream = localJarFile.getInputStream(localJarFile.getEntry(jarEntry.getName()));
+ File nativeFile = new File(tempNativesDir, jarEntry.getName());
+ FileOutputStream fos = new FileOutputStream(nativeFile);
+@@ -190,7 +190,6 @@ public class JInputAppletResourceLoader
+ byte[] dataBuffer = new byte[65535];
+ int bytesRead = 0;
+ int totalRead = 0;
+- int totalWritten = 0;
+
+ // Read the first block
+ bytesRead = inStream.read(dataBuffer, 0, dataBuffer.length);
+@@ -200,8 +199,6 @@ public class JInputAppletResourceLoader
+
+ outStream.write(dataBuffer, 0, bytesRead);
+
+- totalWritten+=bytesRead;
+-
+ int thisFilePercent = (int)((((float)totalRead)/contentLength)*100);
+ percentageDone = thisFilePercent/2; //Reading the file is only 1/2 the job
+ diagnosticLog.log(Level.INFO, "Written " + totalRead + " out of " + contentLength + " " + thisFilePercent + "%, (" + percentageDone + "% total)");
+--- ./coreAPI/build.xml.orig 2011-03-23 12:11:22.000000000 -0600
++++ ./coreAPI/build.xml 2014-02-22 14:00:00.000000000 -0700
+@@ -10,7 +10,7 @@
+ </target>
+
+ <target name="compile" depends="init">
+- <javac srcdir="src/java" destdir="classes" debug="true" deprecation="true" source="1.4" target="1.4">
++ <javac srcdir="src/java" destdir="classes" debug="true" deprecation="true" source="1.5" target="1.5">
+ <include name="net/**"/>
+ <exclude name="**/Version.java"/>
+ <!-- To add something to the classpath: -->
+@@ -26,7 +26,7 @@
+ <filter token="API_VERSION" value="${api.version}"/>
+ </filterset>
+ </copy>
+- <javac srcdir="build/src/java" destdir="classes" debug="true" deprecation="true" source="1.4" target="1.4">
++ <javac srcdir="build/src/java" destdir="classes" debug="true" deprecation="true" source="1.5" target="1.5">
+ <include name="net/**" />
+ </javac>
+ <echo message="Build version class for ${api.version} build ${build.number}"/>
+@@ -44,7 +44,7 @@
+ <target name="javadoc" depends="init" description="Javadoc for my API.">
+ <javadoc packagenames="net.java.games.input.*"
+ destdir="apidocs"
+- additionalparam="-source 1.4"
++ additionalparam="-source 1.5"
+ excludepackagenames="net.java.games.input.example.*,net.java.games.input.test.*">
+ <sourcepath>
+ <pathelement location="src/java"/>
+--- ./coreAPI/src/java/net/java/games/input/AbstractController.java.orig 2007-04-19 05:59:23.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/AbstractController.java 2014-02-22 14:00:00.000000000 -0700
+@@ -39,9 +39,7 @@
+ package net.java.games.input;
+
+ import java.util.Map;
+-import java.util.List;
+ import java.util.HashMap;
+-import java.util.ArrayList;
+
+ import java.io.IOException;
+
+@@ -77,7 +75,7 @@ public abstract class AbstractController
+ /**
+ * Map from Component.Identifiers to Components
+ */
+- private final Map id_to_components = new HashMap();
++ private final Map<Component.Identifier, Component> id_to_components = new HashMap<Component.Identifier, Component>();
+
+ private EventQueue event_queue = new EventQueue(EVENT_QUEUE_DEPTH);
+
+@@ -128,7 +126,7 @@ public abstract class AbstractController
+ * if no component with the specified type could be found.
+ */
+ public final Component getComponent(Component.Identifier id) {
+- return (Component)id_to_components.get(id);
++ return id_to_components.get(id);
+ }
+
+ /**
+--- ./coreAPI/src/java/net/java/games/input/ControllerEnvironment.java.orig 2009-10-31 05:06:12.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/ControllerEnvironment.java 2014-02-22 14:00:00.000000000 -0700
+@@ -38,9 +38,6 @@
+ *****************************************************************************/
+ package net.java.games.input;
+
+-import java.io.File;
+-import java.security.AccessController;
+-import java.security.PrivilegedAction;
+ import java.util.ArrayList;
+ import java.util.Iterator;
+ import java.util.logging.Logger;
+@@ -87,7 +84,7 @@ public abstract class ControllerEnvironm
+ /**
+ * List of controller listeners
+ */
+- protected final ArrayList controllerListeners = new ArrayList();
++ protected final ArrayList<ControllerListener> controllerListeners = new ArrayList<ControllerListener>();
+
+ /**
+ * Protected constructor for subclassing.
+@@ -130,9 +127,9 @@ public abstract class ControllerEnvironm
+ */
+ protected void fireControllerAdded(Controller c) {
+ ControllerEvent ev = new ControllerEvent(c);
+- Iterator it = controllerListeners.iterator();
++ Iterator<ControllerListener> it = controllerListeners.iterator();
+ while (it.hasNext()) {
+- ((ControllerListener)it.next()).controllerAdded(ev);
++ it.next().controllerAdded(ev);
+ }
+ }
+
+@@ -142,9 +139,9 @@ public abstract class ControllerEnvironm
+ */
+ protected void fireControllerRemoved(Controller c) {
+ ControllerEvent ev = new ControllerEvent(c);
+- Iterator it = controllerListeners.iterator();
++ Iterator<ControllerListener> it = controllerListeners.iterator();
+ while (it.hasNext()) {
+- ((ControllerListener)it.next()).controllerRemoved(ev);
++ it.next().controllerRemoved(ev);
+ }
+ }
+
+--- ./coreAPI/src/java/net/java/games/input/DefaultControllerEnvironment.java.orig 2011-03-23 12:54:48.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/DefaultControllerEnvironment.java 2014-02-22 14:00:00.000000000 -0700
+@@ -39,15 +39,10 @@
+ package net.java.games.input;
+
+ import java.io.File;
+-import java.io.FileInputStream;
+-import java.io.IOException;
+-import java.lang.reflect.Method;
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
+ import java.util.ArrayList;
+ import java.util.Collection;
+-import java.util.Iterator;
+-import java.util.Properties;
+ import java.util.StringTokenizer;
+ import java.util.logging.Logger;
+
+@@ -73,7 +68,7 @@ class DefaultControllerEnvironment exten
+ */
+ static void loadLibrary(final String lib_name) {
+ AccessController.doPrivileged(
+- new PrivilegedAction() {
++ new PrivilegedAction<Object>() {
+ public final Object run() {
+ String lib_path = System.getProperty("net.java.games.input.librarypath");
+ if (lib_path != null)
+@@ -86,8 +81,8 @@ class DefaultControllerEnvironment exten
+ }
+
+ static String getPrivilegedProperty(final String property) {
+- return (String)AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
++ public String run() {
+ return System.getProperty(property);
+ }
+ });
+@@ -95,8 +90,8 @@ class DefaultControllerEnvironment exten
+
+
+ static String getPrivilegedProperty(final String property, final String default_value) {
+- return (String)AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
++ public String run() {
+ return System.getProperty(property, default_value);
+ }
+ });
+@@ -105,9 +100,9 @@ class DefaultControllerEnvironment exten
+ /**
+ * List of all controllers in this environment
+ */
+- private ArrayList controllers;
++ private ArrayList<Controller> controllers;
+
+- private Collection loadedPlugins = new ArrayList();
++ private Collection<String> loadedPlugins = new ArrayList<String>();
+
+ /**
+ * Public no-arg constructor.
+@@ -122,8 +117,8 @@ class DefaultControllerEnvironment exten
+ public Controller[] getControllers() {
+ if (controllers == null) {
+ // Controller list has not been scanned.
+- controllers = new ArrayList();
+- AccessController.doPrivileged(new PrivilegedAction() {
++ controllers = new ArrayList<Controller>();
++ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ scanControllers();
+ return null;
+@@ -156,8 +151,8 @@ class DefaultControllerEnvironment exten
+ try {
+ if(!loadedPlugins.contains(className)) {
+ log.fine("Loading: " + className);
+- Class ceClass = Class.forName(className);
+- ControllerEnvironment ce = (ControllerEnvironment) ceClass.newInstance();
++ Class<?> ceClass = Class.forName(className);
++ ControllerEnvironment ce = ControllerEnvironment.class.cast(ceClass.newInstance());
+ if(ce.isSupported()) {
+ addControllers(ce.getControllers());
+ loadedPlugins.add(ce.getClass().getName());
+@@ -171,13 +166,7 @@ class DefaultControllerEnvironment exten
+ }
+ }
+ Controller[] ret = new Controller[controllers.size()];
+- Iterator it = controllers.iterator();
+- int i = 0;
+- while (it.hasNext()) {
+- ret[i] = (Controller)it.next();
+- i++;
+- }
+- return ret;
++ return controllers.toArray(ret);
+ }
+
+ /* This is jeff's new plugin code using Jeff's Plugin manager */
+@@ -200,14 +189,14 @@ class DefaultControllerEnvironment exten
+ }
+ try {
+ Plugins plugins = new Plugins(file);
+- Class[] envClasses = plugins.getExtends(ControllerEnvironment.class);
++ Class<?>[] envClasses = plugins.getExtends(ControllerEnvironment.class);
+ for(int i=0;i<envClasses.length;i++){
+ try {
+ ControllerEnvironment.logln("ControllerEnvironment "+
+ envClasses[i].getName()
+ +" loaded by "+envClasses[i].getClassLoader());
+- ControllerEnvironment ce = (ControllerEnvironment)
+- envClasses[i].newInstance();
++ ControllerEnvironment ce =
++ ControllerEnvironment.class.cast(envClasses[i].newInstance());
+ if(ce.isSupported()) {
+ addControllers(ce.getControllers());
+ loadedPlugins.add(ce.getClass().getName());
+--- ./coreAPI/src/java/net/java/games/input/example/ReadFirstMouse.java.orig 2007-06-10 04:51:31.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/example/ReadFirstMouse.java 2014-02-22 14:00:00.000000000 -0700
+@@ -3,7 +3,6 @@ package net.java.games.input.example;
+ import net.java.games.input.Component;
+ import net.java.games.input.Controller;
+ import net.java.games.input.ControllerEnvironment;
+-import net.java.games.input.test.ControllerTextTest;
+
+ /**
+ * This class shows how to read the values in a polling loop for the first mouse
+--- ./coreAPI/src/java/net/java/games/input/Mouse.java.orig 2007-06-28 14:37:24.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/Mouse.java 2014-02-22 14:00:00.000000000 -0700
+@@ -38,9 +38,6 @@
+ *****************************************************************************/
+ package net.java.games.input;
+
+-import java.util.List;
+-import java.util.ArrayList;
+-
+ /**
+ * A Mouse is a type of controller consisting of two child controllers,
+ * a ball and a button pad. This includes devices such as touch pads,
+--- ./coreAPI/src/java/net/java/games/input/PluginClassLoader.java.orig 2014-02-24 12:07:29.915047993 -0700
++++ ./coreAPI/src/java/net/java/games/input/PluginClassLoader.java 2014-02-24 12:07:33.990044413 -0700
+@@ -77,7 +77,7 @@ class PluginClassLoader extends ClassLoa
+ * Overrides findClass to first look in the parent class loader,
+ * then try loading the class from the plugin file system.
+ */
+- protected Class findClass(String name)
++ protected Class<?> findClass(String name)
+ throws ClassNotFoundException {
+ // Try loading the class from the file system.
+ byte[] b = loadClassData(name);
+--- ./coreAPI/src/java/net/java/games/input/test/ControllerEventTest.java.orig 2011-03-25 17:09:25.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/test/ControllerEventTest.java 2014-02-22 14:00:00.000000000 -0700
+@@ -165,7 +165,7 @@ public class ControllerEventTest extends
+
+ private static class ControllerWindow extends JFrame {
+ Controller ca;
+- Map axes_to_panels = new HashMap();
++ Map<Component, AxisPanel> axes_to_panels = new HashMap<Component, AxisPanel>();
+ boolean disabled = false;
+
+ public ControllerWindow(JFrame frame,Controller ca){
+@@ -207,7 +207,7 @@ public class ControllerEventTest extends
+ }
+
+ private void addAxis(JPanel p, Component ax){
+- JPanel p2;
++ AxisPanel p2;
+ if (ax.isAnalog()) {
+ p2 = new AnalogAxisPanel(ax);
+ } else {
+@@ -234,14 +234,14 @@ public class ControllerEventTest extends
+ EventQueue event_queue = ca.getEventQueue();
+ Event event = new Event();
+ while (event_queue.getNextEvent(event)) {
+- AxisPanel panel = (AxisPanel)axes_to_panels.get(event.getComponent());
++ AxisPanel panel = axes_to_panels.get(event.getComponent());
+ panel.setPollData(event.getValue());
+ }
+ }
+ }
+
+ static final long HEARTBEATMS =100; // 10th of a second
+- List controllers = new ArrayList();
++ List<ControllerWindow> controllers = new ArrayList<ControllerWindow>();
+
+ public ControllerEventTest() {
+ super("Controller Event Test. Version: " + Version.getVersion());
+@@ -255,9 +255,9 @@ public class ControllerEventTest extends
+ public void run(){
+ try {
+ while(true){
+- for(Iterator i=controllers.iterator();i.hasNext();){
++ for(Iterator<ControllerWindow> i=controllers.iterator();i.hasNext();){
+ try {
+- ControllerWindow cw = (ControllerWindow)i.next();
++ ControllerWindow cw = i.next();
+ cw.poll();
+ } catch (Exception e) {
+ e.printStackTrace();
+--- ./coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java.orig 2011-03-25 17:09:25.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java 2014-02-22 14:00:00.000000000 -0700
+@@ -166,7 +166,7 @@ public class ControllerReadTest extends
+
+ private static class ControllerWindow extends JFrame {
+ Controller ca;
+- List axisList = new ArrayList();
++ List<AxisPanel> axisList = new ArrayList<AxisPanel>();
+ boolean disabled = false;
+
+ public ControllerWindow(JFrame frame,Controller ca){
+@@ -208,7 +208,7 @@ public class ControllerReadTest extends
+ }
+
+ private void addAxis(JPanel p, Component ax){
+- JPanel p2;
++ AxisPanel p2;
+ if (ax.isAnalog()) {
+ p2 = new AnalogAxisPanel(ax);
+ } else {
+@@ -234,9 +234,9 @@ public class ControllerReadTest extends
+ setDisabled(false);
+ }
+ //System.out.println("Polled "+ca.getName());
+- for(Iterator i =axisList.iterator();i.hasNext();){
++ for(Iterator<AxisPanel> i =axisList.iterator();i.hasNext();){
+ try {
+- ((AxisPanel)i.next()).poll();
++ i.next().poll();
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+@@ -245,7 +245,7 @@ public class ControllerReadTest extends
+ }
+
+ static final long HEARTBEATMS =100; // 10th of a second
+- List controllers = new ArrayList();
++ List<ControllerWindow> controllers = new ArrayList<ControllerWindow>();
+
+ public ControllerReadTest() {
+ super("Controller Read Test. Version: " + Version.getVersion());
+@@ -259,9 +259,9 @@ public class ControllerReadTest extends
+ public void run(){
+ try {
+ while(true){
+- for(Iterator i=controllers.iterator();i.hasNext();){
++ for(Iterator<ControllerWindow> i=controllers.iterator();i.hasNext();){
+ try {
+- ControllerWindow cw = (ControllerWindow)i.next();
++ ControllerWindow cw = i.next();
+ cw.poll();
+ } catch (Exception e) {
+ e.printStackTrace();
+--- ./coreAPI/src/java/net/java/games/input/test/RumbleTest.java.orig 2011-03-25 17:09:25.000000000 -0600
++++ ./coreAPI/src/java/net/java/games/input/test/RumbleTest.java 2014-02-22 14:00:00.000000000 -0700
+@@ -47,7 +47,7 @@ public class RumbleTest {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ }
+- k-=((float)(System.currentTimeMillis() - startTime))/1000f;
++ k-=(System.currentTimeMillis() - startTime)/1000f;
+ }
+ try {
+ Thread.sleep(1000);
+--- ./plugins/awt/build.xml.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/awt/build.xml 2014-02-22 14:00:00.000000000 -0700
+@@ -7,7 +7,7 @@
+ </target>
+
+ <target depends="init" name="compile">
+- <javac debug="true" deprecation="true" destdir="classes" source="1.4" target="1.4" srcdir="src">
++ <javac debug="true" deprecation="true" destdir="classes" source="1.5" target="1.5" srcdir="src">
+ <classpath>
+ <pathelement location="../../coreAPI/bin/jinput-core.jar"/>
+ <pathelement location="../../lib/jutils.jar"/>
+@@ -28,7 +28,7 @@
+ <mkdir dir="apidocs"/>
+ <javadoc packagenames="net.java.games.input.*"
+ destdir="apidocs"
+- additionalparam="-source 1.4"
++ additionalparam="-source 1.5"
+ link="../../../coreAPI/apidocs">
+ <sourcepath>
+ <pathelement location="src"/>
+--- ./plugins/awt/src/net/java/games/input/AWTKeyboard.java.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/awt/src/net/java/games/input/AWTKeyboard.java 2014-02-22 14:00:00.000000000 -0700
+@@ -43,7 +43,7 @@ import java.lang.reflect.Modifier;
+ * @author elias
+ */
+ final class AWTKeyboard extends Keyboard implements AWTEventListener {
+- private final List awt_events = new ArrayList();
++ private final List<KeyEvent> awt_events = new ArrayList<KeyEvent>();
+ private Event[] processed_events;
+ private int processed_events_index;
+
+@@ -54,7 +54,7 @@ final class AWTKeyboard extends Keyboard
+ }
+
+ private final static Component[] createComponents() {
+- List components = new ArrayList();
++ List<Component> components = new ArrayList<Component>();
+ Field[] vkey_fields = KeyEvent.class.getFields();
+ for (int i = 0; i < vkey_fields.length; i++) {
+ Field vkey_field = vkey_fields[i];
+@@ -80,7 +80,7 @@ final class AWTKeyboard extends Keyboard
+ components.add(new Key(Component.Identifier.Key.RETURN));
+ components.add(new Key(Component.Identifier.Key.NUMPADCOMMA));
+ components.add(new Key(Component.Identifier.Key.COMMA));
+- return (Component[])components.toArray(new Component[]{});
++ return components.toArray(new Component[]{});
+ }
+
+ private final void resizeEventQueue(int size) {
+@@ -96,12 +96,12 @@ final class AWTKeyboard extends Keyboard
+
+ public final synchronized void eventDispatched(AWTEvent event) {
+ if (event instanceof KeyEvent)
+- awt_events.add(event);
++ awt_events.add((KeyEvent)event);
+ }
+
+ public final synchronized void pollDevice() throws IOException {
+ for (int i = 0; i < awt_events.size(); i++) {
+- KeyEvent event = (KeyEvent)awt_events.get(i);
++ KeyEvent event = awt_events.get(i);
+ processEvent(event);
+ }
+ awt_events.clear();
+--- ./plugins/awt/src/net/java/games/input/AWTMouse.java.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/awt/src/net/java/games/input/AWTMouse.java 2014-02-22 14:00:00.000000000 -0700
+@@ -27,7 +27,6 @@
+ package net.java.games.input;
+
+ import java.awt.AWTEvent;
+-import java.awt.Point;
+ import java.awt.Toolkit;
+ import java.awt.event.AWTEventListener;
+ import java.awt.event.MouseEvent;
+@@ -47,8 +46,8 @@ final class AWTMouse extends Mouse imple
+ private final static int EVENT_Y = 2;
+ private final static int EVENT_BUTTON = 4;
+
+- private final List awt_events = new ArrayList();
+- private final List processed_awt_events = new ArrayList();
++ private final List<AWTEvent> awt_events = new ArrayList<AWTEvent>();
++ private final List<AWTEvent> processed_awt_events = new ArrayList<AWTEvent>();
+
+ private int event_state = EVENT_X;
+
+@@ -115,7 +114,7 @@ final class AWTMouse extends Mouse imple
+ Axis wheel = (Axis)getWheel();
+ wheel.setValue(0);
+ for (int i = 0; i < awt_events.size(); i++) {
+- AWTEvent event = (AWTEvent)awt_events.get(i);
++ AWTEvent event = awt_events.get(i);
+ processEvent(event);
+ processed_awt_events.add(event);
+ }
+@@ -126,7 +125,7 @@ final class AWTMouse extends Mouse imple
+ while (true) {
+ if (processed_awt_events.isEmpty())
+ return false;
+- AWTEvent awt_event = (AWTEvent)processed_awt_events.get(0);
++ AWTEvent awt_event = processed_awt_events.get(0);
+ if (awt_event instanceof MouseWheelEvent) {
+ MouseWheelEvent awt_wheel_event = (MouseWheelEvent)awt_event;
+ long nanos = awt_wheel_event.getWhen()*1000000L;
+--- ./plugins/linux/build.xml.orig 2012-02-02 08:57:51.545209862 -0700
++++ ./plugins/linux/build.xml 2014-02-22 14:00:00.000000000 -0700
+@@ -12,7 +12,7 @@
+
+ <target depends="init" name="compile">
+ <!-- <ant dir="src/native" target="createNativeDefinitions.java"/>-->
+- <javac debug="true" deprecation="true" destdir="classes" source="1.4" target="1.4" srcdir="src/java">
++ <javac debug="true" deprecation="true" destdir="classes" source="1.5" target="1.5" srcdir="src/java">
+ <classpath>
+ <pathelement location="../../coreAPI/bin/jinput-core.jar"/>
+ <pathelement location="../../lib/jutils.jar"/>
+@@ -33,7 +33,7 @@
+ <mkdir dir="apidocs"/>
+ <javadoc packagenames="net.java.games.input.*"
+ destdir="apidocs"
+- additionalparam="-source 1.4"
++ additionalparam="-source 1.5"
+ link="../../../coreAPI/apidocs">
+ <sourcepath>
+ <pathelement location="src/java"/>
+--- ./plugins/linux/src/java/net/java/games/input/LinuxAbstractController.java.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxAbstractController.java 2014-02-22 14:00:00.000000000 -0700
+@@ -49,7 +49,7 @@ final class LinuxAbstractController exte
+ private final LinuxEventDevice device;
+ private final Type type;
+
+- protected LinuxAbstractController(LinuxEventDevice device, Component[] components, Controller[] children, Rumbler[] rumblers, Type type) throws IOException {
++ protected LinuxAbstractController(LinuxEventDevice device, Component[] components, Controller[] children, Rumbler[] rumblers, Type type) {
+ super(device.getName(), components, children, rumblers);
+ this.device = device;
+ this.port = device.getPortType();
+--- ./plugins/linux/src/java/net/java/games/input/LinuxDevice.java.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxDevice.java 2014-02-22 14:00:00.000000000 -0700
+@@ -26,10 +26,6 @@
+ package net.java.games.input;
+
+ import java.io.IOException;
+-import java.util.Map;
+-import java.util.HashMap;
+-import java.util.List;
+-import java.util.ArrayList;
+
+ /**
+ * @author elias
+--- ./plugins/linux/src/java/net/java/games/input/LinuxDeviceThread.java.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxDeviceThread.java 2014-02-22 14:00:00.000000000 -0700
+@@ -40,7 +40,7 @@ import java.util.ArrayList;
+ * is run on a single thread.
+ */
+ final class LinuxDeviceThread extends Thread {
+- private final List tasks = new ArrayList();
++ private final List<LinuxDeviceTask> tasks = new ArrayList<LinuxDeviceTask>();
+
+ public LinuxDeviceThread() {
+ setDaemon(true);
+@@ -50,7 +50,7 @@ final class LinuxDeviceThread extends Th
+ public synchronized final void run() {
+ while (true) {
+ if (!tasks.isEmpty()) {
+- LinuxDeviceTask task = (LinuxDeviceTask)tasks.remove(0);
++ LinuxDeviceTask task = tasks.remove(0);
+ task.doExecute();
+ synchronized (task) {
+ task.notify();
+--- ./plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java.orig 2011-07-20 00:20:17.725039445 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxEnvironmentPlugin.java 2014-02-22 14:00:00.000000000 -0700
+@@ -43,11 +43,10 @@ import java.security.PrivilegedAction;
+ */
+ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implements Plugin {
+ private final static String LIBNAME = "jinput";
+- private final static String POSTFIX64BIT = "64";
+ private static boolean supported = false;
+
+ private final Controller[] controllers;
+- private final List devices = new ArrayList();
++ private final List<LinuxDevice> devices = new ArrayList<LinuxDevice>();
+ private final static LinuxDeviceThread device_thread = new LinuxDeviceThread();
+
+ /**
+@@ -59,7 +58,7 @@ public final class LinuxEnvironmentPlugi
+ */
+ static void loadLibrary(final String lib_name) {
+ AccessController.doPrivileged(
+- new PrivilegedAction() {
++ new PrivilegedAction<Object>() {
+ public final Object run() {
+ String lib_path = System.getProperty("java.library.path");
+ try {
+@@ -78,8 +77,8 @@ public final class LinuxEnvironmentPlugi
+ }
+
+ static String getPrivilegedProperty(final String property) {
+- return (String)AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
++ public String run() {
+ return System.getProperty(property);
+ }
+ });
+@@ -87,8 +86,8 @@ public final class LinuxEnvironmentPlugi
+
+
+ static String getPrivilegedProperty(final String property, final String default_value) {
+- return (String)AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
++ public String run() {
+ return System.getProperty(property, default_value);
+ }
+ });
+@@ -111,7 +110,7 @@ public final class LinuxEnvironmentPlugi
+ this.controllers = enumerateControllers();
+ logln("Linux plugin claims to have found " + controllers.length + " controllers");
+ AccessController.doPrivileged(
+- new PrivilegedAction() {
++ new PrivilegedAction<Object>() {
+ public final Object run() {
+ Runtime.getRuntime().addShutdownHook(new ShutdownHook());
+ return null;
+@@ -131,11 +130,11 @@ public final class LinuxEnvironmentPlugi
+ return controllers;
+ }
+
+- private final static Component[] createComponents(List event_components, LinuxEventDevice device) {
++ private final static Component[] createComponents(List<LinuxEventComponent> event_components, LinuxEventDevice device) {
+ LinuxEventComponent[][] povs = new LinuxEventComponent[4][2];
+- List components = new ArrayList();
++ List<LinuxComponent> components = new ArrayList<LinuxComponent>();
+ for (int i = 0; i < event_components.size(); i++) {
+- LinuxEventComponent event_component = (LinuxEventComponent)event_components.get(i);
++ LinuxEventComponent event_component = event_components.get(i);
+ Component.Identifier identifier = event_component.getIdentifier();
+
+ if (identifier == Component.Identifier.Axis.POV) {
+@@ -190,7 +189,7 @@ public final class LinuxEnvironmentPlugi
+ return components_array;
+ }
+
+- private final static Mouse createMouseFromDevice(LinuxEventDevice device, Component[] components) throws IOException {
++ private final static Mouse createMouseFromDevice(LinuxEventDevice device, Component[] components) {
+ Mouse mouse = new LinuxMouse(device, components, new Controller[]{}, device.getRumblers());
+ if (mouse.getX() != null && mouse.getY() != null && mouse.getPrimaryButton() != null)
+ return mouse;
+@@ -198,18 +197,18 @@ public final class LinuxEnvironmentPlugi
+ return null;
+ }
+
+- private final static Keyboard createKeyboardFromDevice(LinuxEventDevice device, Component[] components) throws IOException {
++ private final static Keyboard createKeyboardFromDevice(LinuxEventDevice device, Component[] components) {
+ Keyboard keyboard = new LinuxKeyboard(device, components, new Controller[]{}, device.getRumblers());
+ return keyboard;
+ }
+
+- private final static Controller createJoystickFromDevice(LinuxEventDevice device, Component[] components, Controller.Type type) throws IOException {
++ private final static Controller createJoystickFromDevice(LinuxEventDevice device, Component[] components, Controller.Type type) {
+ Controller joystick = new LinuxAbstractController(device, components, new Controller[]{}, device.getRumblers(), type);
+ return joystick;
+ }
+
+- private final static Controller createControllerFromDevice(LinuxEventDevice device) throws IOException {
+- List event_components = device.getComponents();
++ private final static Controller createControllerFromDevice(LinuxEventDevice device) {
++ List<LinuxEventComponent> event_components = device.getComponents();
+ Component[] components = createComponents(event_components, device);
+ Controller.Type type = device.getType();
+
+@@ -224,16 +223,16 @@ public final class LinuxEnvironmentPlugi
+ }
+
+ private final Controller[] enumerateControllers() {
+- List controllers = new ArrayList();
+- List eventControllers = new ArrayList();
+- List jsControllers = new ArrayList();
++ List<Controller> controllers = new ArrayList<Controller>();
++ List<Controller> eventControllers = new ArrayList<Controller>();
++ List<Controller> jsControllers = new ArrayList<Controller>();
+ enumerateEventControllers(eventControllers);
+ enumerateJoystickControllers(jsControllers);
+
+ for(int i=0;i<eventControllers.size();i++) {
+ for(int j=0;j<jsControllers.size();j++) {
+- Controller evController = (Controller) eventControllers.get(i);
+- Controller jsController = (Controller) jsControllers.get(j);
++ Controller evController = eventControllers.get(i);
++ Controller jsController = jsControllers.get(j);
+
+ // compare
+ // Check if the nodes have the same name
+@@ -269,85 +268,14 @@ public final class LinuxEnvironmentPlugi
+ return controllers_array;
+ }
+
+- private final static Component.Identifier.Button getButtonIdentifier(int index) {
+- switch (index) {
+- case 0:
+- return Component.Identifier.Button._0;
+- case 1:
+- return Component.Identifier.Button._1;
+- case 2:
+- return Component.Identifier.Button._2;
+- case 3:
+- return Component.Identifier.Button._3;
+- case 4:
+- return Component.Identifier.Button._4;
+- case 5:
+- return Component.Identifier.Button._5;
+- case 6:
+- return Component.Identifier.Button._6;
+- case 7:
+- return Component.Identifier.Button._7;
+- case 8:
+- return Component.Identifier.Button._8;
+- case 9:
+- return Component.Identifier.Button._9;
+- case 10:
+- return Component.Identifier.Button._10;
+- case 11:
+- return Component.Identifier.Button._11;
+- case 12:
+- return Component.Identifier.Button._12;
+- case 13:
+- return Component.Identifier.Button._13;
+- case 14:
+- return Component.Identifier.Button._14;
+- case 15:
+- return Component.Identifier.Button._15;
+- case 16:
+- return Component.Identifier.Button._16;
+- case 17:
+- return Component.Identifier.Button._17;
+- case 18:
+- return Component.Identifier.Button._18;
+- case 19:
+- return Component.Identifier.Button._19;
+- case 20:
+- return Component.Identifier.Button._20;
+- case 21:
+- return Component.Identifier.Button._21;
+- case 22:
+- return Component.Identifier.Button._22;
+- case 23:
+- return Component.Identifier.Button._23;
+- case 24:
+- return Component.Identifier.Button._24;
+- case 25:
+- return Component.Identifier.Button._25;
+- case 26:
+- return Component.Identifier.Button._26;
+- case 27:
+- return Component.Identifier.Button._27;
+- case 28:
+- return Component.Identifier.Button._28;
+- case 29:
+- return Component.Identifier.Button._29;
+- case 30:
+- return Component.Identifier.Button._30;
+- case 31:
+- return Component.Identifier.Button._31;
+- default:
+- return null;
+- }
+- }
+-
+ private final static Controller createJoystickFromJoystickDevice(LinuxJoystickDevice device) {
+- List components = new ArrayList();
++ List<Component> components = new ArrayList<Component>();
+ byte[] axisMap = device.getAxisMap();
+ char[] buttonMap = device.getButtonMap();
+ LinuxJoystickAxis[] hatBits = new LinuxJoystickAxis[6];
+
+ for (int i = 0; i < device.getNumButtons(); i++) {
+- Component.Identifier button_id = (Component.Identifier)LinuxNativeTypesMap.getButtonID(buttonMap[i]);
++ Component.Identifier button_id = LinuxNativeTypesMap.getButtonID(buttonMap[i]);
+ if (button_id != null) {
+ LinuxJoystickButton button = new LinuxJoystickButton(button_id);
+ device.registerButton(i, button);
+@@ -387,10 +315,10 @@ public final class LinuxEnvironmentPlugi
+ }
+ }
+
+- return new LinuxJoystickAbstractController(device, (Component[])components.toArray(new Component[]{}), new Controller[]{}, new Rumbler[]{});
++ return new LinuxJoystickAbstractController(device, components.toArray(new Component[]{}), new Controller[]{}, new Rumbler[]{});
+ }
+
+- private final void enumerateJoystickControllers(List controllers) {
++ private final void enumerateJoystickControllers(List<Controller> controllers) {
+ File[] joystick_device_files = enumerateJoystickDeviceFiles("/dev/input");
+ if (joystick_device_files == null || joystick_device_files.length == 0) {
+ joystick_device_files = enumerateJoystickDeviceFiles("/dev");
+@@ -424,20 +352,20 @@ public final class LinuxEnvironmentPlugi
+ }
+
+ private static String getAbsolutePathPrivileged(final File file) {
+- return (String)AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<String>() {
++ public String run() {
+ return file.getAbsolutePath();
+ }
+ });
+ }
+
+ private static File[] listFilesPrivileged(final File dir, final FilenameFilter filter) {
+- return (File[])AccessController.doPrivileged(new PrivilegedAction() {
+- public Object run() {
++ return AccessController.doPrivileged(new PrivilegedAction<File[]>() {
++ public File[] run() {
+ File[] files = dir.listFiles(filter);
+- Arrays.sort(files, new Comparator(){
+- public int compare(Object f1, Object f2) {
+- return ((File)f1).getName().compareTo(((File)f2).getName());
++ Arrays.sort(files, new Comparator<File>(){
++ public int compare(File f1, File f2) {
++ return f1.getName().compareTo(f2.getName());
+ }
+ });
+ return files;
+@@ -445,7 +373,7 @@ public final class LinuxEnvironmentPlugi
+ });
+ }
+
+- private final void enumerateEventControllers(List controllers) {
++ private final void enumerateEventControllers(List<Controller> controllers) {
+ final File dev = new File("/dev/input");
+ File[] event_device_files = listFilesPrivileged(dev, new FilenameFilter() {
+ public final boolean accept(File dir, String name) {
+@@ -480,7 +408,7 @@ public final class LinuxEnvironmentPlugi
+ public final void run() {
+ for (int i = 0; i < devices.size(); i++) {
+ try {
+- LinuxDevice device = (LinuxDevice)devices.get(i);
++ LinuxDevice device = devices.get(i);
+ device.close();
+ } catch (IOException e) {
+ logln("Failed to close device: " + e.getMessage());
+--- ./plugins/linux/src/java/net/java/games/input/LinuxEventDevice.java.orig 2012-02-02 09:08:54.380920130 -0700
++++ ./plugins/linux/src/java/net/java/games/input/LinuxEventDevice.java 2014-02-22 14:00:00.000000000 -0700
+@@ -35,12 +35,12 @@ import java.util.ArrayList;
+ * @author elias
+ */
+ final class LinuxEventDevice implements LinuxDevice {
+- private final Map component_map = new HashMap();
++ private final Map<LinuxAxisDescriptor, LinuxComponent> component_map = new HashMap<LinuxAxisDescriptor, LinuxComponent>();
+ private final Rumbler[] rumblers;
+ private final long fd;
+ private final String name;
+ private final LinuxInputID input_id;
+- private final List components;
++ private final List<LinuxEventComponent> components;
+ private final Controller.Type type;
+
+ /* Closed state variable that protects the validity of the file descriptor.
+@@ -83,23 +83,22 @@ final class LinuxEventDevice implements
+ return type;
+ }
+
+- private final static int countComponents(List components, Class id_type, boolean relative) {
++ private final static int countComponents(List<LinuxEventComponent> components, Class<?> id_type, boolean relative) {
+ int count = 0;
+ for (int i = 0; i < components.size(); i++) {
+- LinuxEventComponent component = (LinuxEventComponent)components.get(i);
++ LinuxEventComponent component = components.get(i);
+ if (id_type.isInstance(component.getIdentifier()) && relative == component.isRelative())
+ count++;
+ }
+ return count;
+ }
+
+- private final Controller.Type guessType() throws IOException {
+- List components = getComponents();
++ private final Controller.Type guessType() {
++ List<LinuxEventComponent> components = getComponents();
+ if (components.size() == 0)
+ return Controller.Type.UNKNOWN;
+ int num_rel_axes = countComponents(components, Component.Identifier.Axis.class, true);
+ int num_abs_axes = countComponents(components, Component.Identifier.Axis.class, false);
+- int num_keys = countComponents(components, Component.Identifier.Key.class, false);
+ int mouse_traits = 0;
+ int keyboard_traits = 0;
+ int joystick_traits = 0;
+@@ -118,7 +117,7 @@ final class LinuxEventDevice implements
+ int num_gamepad_button_traits = 0;
+ // count button traits
+ for (int i = 0; i < components.size(); i++) {
+- LinuxEventComponent component = (LinuxEventComponent)components.get(i);
++ LinuxEventComponent component = components.get(i);
+ if (component.getButtonTrait() == Controller.Type.MOUSE)
+ num_mouse_button_traits++;
+ else if (component.getButtonTrait() == Controller.Type.KEYBOARD)
+@@ -158,19 +157,19 @@ final class LinuxEventDevice implements
+ }
+
+ private final Rumbler[] enumerateRumblers() {
+- List rumblers = new ArrayList();
++ List<Rumbler> rumblers = new ArrayList<Rumbler>();
+ try {
+ int num_effects = getNumEffects();
+ if (num_effects <= 0)
+- return (Rumbler[])rumblers.toArray(new Rumbler[]{});
++ return rumblers.toArray(new Rumbler[]{});
+ byte[] ff_bits = getForceFeedbackBits();
+ if (isBitSet(ff_bits, NativeDefinitions.FF_RUMBLE) && num_effects > rumblers.size()) {
+ rumblers.add(new LinuxRumbleFF(this));
+ }
+ } catch (IOException e) {
+- LinuxEnvironmentPlugin.logln("Failed to enumerate rumblers: " + e.getMessage());
++ ControllerEnvironment.logln("Failed to enumerate rumblers: " + e.getMessage());
+ }
+- return (Rumbler[])rumblers.toArray(new Rumbler[]{});
++ return rumblers.toArray(new Rumbler[]{});
+ }
+
+ public final Rumbler[] getRumblers() {
+@@ -205,10 +204,10 @@ final class LinuxEventDevice implements
+ }
+
+ public final LinuxComponent mapDescriptor(LinuxAxisDescriptor desc) {
+- return (LinuxComponent)component_map.get(desc);
++ return component_map.get(desc);
+ }
+
+- public final Controller.PortType getPortType() throws IOException {
++ public final Controller.PortType getPortType() {
+ return input_id.getPortType();
+ }
+
+@@ -243,7 +242,7 @@ final class LinuxEventDevice implements
+ }
+ private final static native void nGetAbsInfo(long fd, int abs_axis, LinuxAbsInfo abs_info) throws IOException;
+
+- private final void addKeys(List components) throws IOException {
++ private final void addKeys(List<LinuxEventComponent> components) throws IOException {
+ byte[] bits = getKeysBits();
+ for (int i = 0; i < bits.length*8; i++) {
+ if (isBitSet(bits, i)) {
+@@ -253,7 +252,7 @@ final class LinuxEventDevice implements
+ }
+ }
+
+- private final void addAbsoluteAxes(List components) throws IOException {
++ private final void addAbsoluteAxes(List<LinuxEventComponent> components) throws IOException {
+ byte[] bits = getAbsoluteAxesBits();
+ for (int i = 0; i < bits.length*8; i++) {
+ if (isBitSet(bits, i)) {
+@@ -263,7 +262,7 @@ final class LinuxEventDevice implements
+ }
+ }
+
+- private final void addRelativeAxes(List components) throws IOException {
++ private final void addRelativeAxes(List<LinuxEventComponent> components) throws IOException {
+ byte[] bits = getRelativeAxesBits();
+ for (int i = 0; i < bits.length*8; i++) {
+ if (isBitSet(bits, i)) {
+@@ -273,12 +272,12 @@ final class LinuxEventDevice implements
+ }
+ }
+
+- public final List getComponents() {
++ public final List<LinuxEventComponent> getComponents() {
+ return components;
+ }
+
+- private final List getDeviceComponents() throws IOException {
+- List components = new ArrayList();
++ private final List<LinuxEventComponent> getDeviceComponents() throws IOException {
++ List<LinuxEventComponent> components = new ArrayList<LinuxEventComponent>();
+ byte[] evtype_bits = getEventTypeBits();
+ if (isBitSet(evtype_bits, NativeDefinitions.EV_KEY))
+ addKeys(components);
+--- ./plugins/linux/src/java/net/java/games/input/LinuxForceFeedbackEffect.java.orig 2007-06-10 09:03:27.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxForceFeedbackEffect.java 2014-02-22 14:00:00.000000000 -0700
+@@ -56,7 +56,7 @@ abstract class LinuxForceFeedbackEffect
+ write_task.write(0);
+ }
+ } catch (IOException e) {
+- LinuxEnvironmentPlugin.logln("Failed to rumble: " + e);
++ ControllerEnvironment.logln("Failed to rumble: " + e);
+ }
+ }
+
+--- ./plugins/linux/src/java/net/java/games/input/LinuxJoystickDevice.java.orig 2007-08-12 14:09:14.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxJoystickDevice.java 2014-02-22 14:00:00.000000000 -0700
+@@ -28,8 +28,6 @@ package net.java.games.input;
+ import java.io.IOException;
+ import java.util.Map;
+ import java.util.HashMap;
+-import java.util.List;
+-import java.util.ArrayList;
+
+ /**
+ * @author elias
+@@ -48,8 +46,8 @@ final class LinuxJoystickDevice implemen
+ private final Event event = new Event();
+ private final LinuxJoystickButton[] buttons;
+ private final LinuxJoystickAxis[] axes;
+- private final Map povXs = new HashMap();
+- private final Map povYs = new HashMap();
++ private final Map<Integer, LinuxJoystickPOV> povXs = new HashMap<Integer, LinuxJoystickPOV>();
++ private final Map<Integer, LinuxJoystickPOV> povYs = new HashMap<Integer, LinuxJoystickPOV>();
+ private final byte[] axisMap;
+ private final char[] buttonMap;
+
+@@ -103,11 +101,11 @@ final class LinuxJoystickDevice implemen
+ float value = (float)joystick_event.getValue()/AXIS_MAX_VALUE;
+ axis.setValue(value);
+ if(povXs.containsKey(new Integer(index))) {
+- LinuxJoystickPOV pov = (LinuxJoystickPOV)(povXs.get(new Integer(index)));
++ LinuxJoystickPOV pov = povXs.get(new Integer(index));
+ pov.updateValue();
+ event.set(pov, pov.getPollData(), joystick_event.getNanos());
+ } else if(povYs.containsKey(new Integer(index))) {
+- LinuxJoystickPOV pov = (LinuxJoystickPOV)(povYs.get(new Integer(index)));
++ LinuxJoystickPOV pov = povYs.get(new Integer(index));
+ pov.updateValue();
+ event.set(pov, pov.getPollData(), joystick_event.getNanos());
+ } else {
+@@ -154,7 +152,7 @@ final class LinuxJoystickDevice implemen
+ povYs.put(new Integer(yIndex),pov);
+ }
+
+- public final synchronized boolean getNextEvent(Event event) throws IOException {
++ public final synchronized boolean getNextEvent(Event event) {
+ return event_queue.getNextEvent(event);
+ }
+
+--- ./plugins/linux/src/java/net/java/games/input/LinuxJoystickPOV.java.orig 2007-08-12 15:59:25.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxJoystickPOV.java 2014-02-22 14:00:00.000000000 -0700
+@@ -1,7 +1,5 @@
+ package net.java.games.input;
+
+-import java.io.IOException;
+-
+ public class LinuxJoystickPOV extends LinuxJoystickAxis {
+
+ private LinuxJoystickAxis hatX;
+@@ -47,7 +45,7 @@ public class LinuxJoystickPOV extends Li
+ else if (last_x == 1 && last_y == 1)
+ setValue(Component.POV.DOWN_RIGHT);
+ else {
+- LinuxEnvironmentPlugin.logln("Unknown values x = " + last_x + " | y = " + last_y);
++ ControllerEnvironment.logln("Unknown values x = " + last_x + " | y = " + last_y);
+ setValue(Component.POV.OFF);
+ }
+ }
+--- ./plugins/linux/src/java/net/java/games/input/LinuxKeyboard.java.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxKeyboard.java 2014-02-22 14:00:00.000000000 -0700
+@@ -48,7 +48,7 @@ final class LinuxKeyboard extends Keyboa
+ private final PortType port;
+ private final LinuxEventDevice device;
+
+- protected LinuxKeyboard(LinuxEventDevice device, Component[] components, Controller[] children, Rumbler[] rumblers) throws IOException {
++ protected LinuxKeyboard(LinuxEventDevice device, Component[] components, Controller[] children, Rumbler[] rumblers) {
+ super(device.getName(), components, children, rumblers);
+ this.device = device;
+ this.port = device.getPortType();
+--- ./plugins/linux/src/java/net/java/games/input/LinuxMouse.java.orig 2006-04-29 16:29:27.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxMouse.java 2014-02-22 14:00:00.000000000 -0700
+@@ -48,7 +48,7 @@ final class LinuxMouse extends Mouse {
+ private final PortType port;
+ private final LinuxEventDevice device;
+
+- protected LinuxMouse(LinuxEventDevice device, Component[] components, Controller[] children, Rumbler[] rumblers) throws IOException {
++ protected LinuxMouse(LinuxEventDevice device, Component[] components, Controller[] children, Rumbler[] rumblers) {
+ super(device.getName(), components, children, rumblers);
+ this.device = device;
+ this.port = device.getPortType();
+--- ./plugins/linux/src/java/net/java/games/input/LinuxPOV.java.orig 2007-06-10 09:03:27.000000000 -0600
++++ ./plugins/linux/src/java/net/java/games/input/LinuxPOV.java 2014-02-22 14:00:00.000000000 -0700
+@@ -88,7 +88,7 @@ final class LinuxPOV extends LinuxCompon
+ else if (last_x == 1 && last_y == 1)
+ return Component.POV.DOWN_RIGHT;
+ else {
+- LinuxEnvironmentPlugin.logln("Unknown values x = " + last_x + " | y = " + last_y);
++ ControllerEnvironment.logln("Unknown values x = " + last_x + " | y = " + last_y);
+ return Component.POV.OFF;
+ }
+ }
diff --git a/jinput.spec b/jinput.spec
index 1765ae0..432c355 100644
--- a/jinput.spec
+++ b/jinput.spec
@@ -1,6 +1,6 @@
Name: jinput
Version: 2.0.6
-Release: 6.20130309svn%{?dist}
+Release: 7.20130309svn%{?dist}
Summary: Java Game Controller API
Group: Development/Libraries
@@ -23,17 +23,22 @@ Patch1: 002_jinput_dontstripso.patch
# Fedora-specific patch: will not be sent upstream. Load the shared library
# from the Fedora-mandated location.
Patch2: 003_jinput_usesystemload.patch
-# Patch from http://java.net/jira/browse/JINPUT-44 to not access usage bits,
+# Patch from https://java.net/jira/browse/JINPUT-44 to not access usage bits,
# which are not supported in current Linux kernels
Patch3: 004_jinput_usagebits.patch
+# Patch from https://java.net/jira/browse/JINPUT-51 to fix a resource leak
+Patch4: 005_jinput_leak.patch
+# Patch to be sent upstream to migrate to Java 5 (Java generics)
+Patch5: 006_jinput_java5.patch
BuildRequires: ant
-BuildRequires: java-devel
+BuildRequires: java-devel >= 1:1.6.0
+BuildRequires: java-javadoc >= 1:1.6.0
BuildRequires: jpackage-utils
BuildRequires: jutils
BuildRequires: jutils-javadoc
-Requires: java
+Requires: java-headless
Requires: jpackage-utils
Requires: jutils
@@ -63,16 +68,26 @@ This package contains the API documentation for %{name}.
%patch1
%patch2
%patch3
+%patch4
+%patch5
# Don't use prebuilt jars
rm -f lib/*.jar
build-jar-repository -s -p lib jutils
# Fix the version string in the POMs
-sed -i 's/@VERSION@/%{version}/' jinput.pom jinput-platform.pom
+for fil in jinput.pom jinput-platform.pom; do
+ sed -i.orig 's/@VERSION@/%{version}/' $fil
+ touch -r $fil.orig $fil
+ rm -f $fil.orig
+done
-# Use Fedora's CFLAGS
-sed -i "s/-O2 -Wall/$RPM_OPT_FLAGS/" plugins/linux/src/native/build.xml
+# Use Fedora's CFLAGS and LDFLAGS
+sed -i "s/-O2 -Wall/$RPM_OPT_FLAGS/;s/-shared/& $RPM_LD_FLAGS/" \
+ plugins/linux/src/native/build.xml
+
+# Prevent jutils.jar from being included in jinput.jar
+sed -i '\@zipfileset.*/>@d' build.xml
%build
# Get the latest definitions from <linux/input.h>
@@ -91,7 +106,8 @@ ant dist
# Therefore, we throw up our hands in despair and do this instead:
javadoc -d javadoc -classpath lib/jutils.jar:dist/jinput.jar -package \
-sourcepath plugins/awt/src:plugins/linux/src/java:coreAPI/src/java \
- -link %{_javadocdir}/jutils net.java.games.input
+ -link file://%{_javadocdir}/jutils -link file://%{_javadocdir}/java \
+ -source 1.5 net.java.games.input
%install
# jar
@@ -123,12 +139,19 @@ ant versiontest
%{_jnidir}/%{name}.jar
%{_mavenpomdir}/*
%{_mavendepmapfragdir}/*
-%{_libdir}/%{name}
+%{_libdir}/%{name}/
%files javadoc
-%{_javadocdir}/%{name}
+%{_javadocdir}/%{name}/
%changelog
+* Mon Feb 24 2014 Jerry James <loganjerry at gmail.com> - 2.0.6-7.20130309svn
+- Require java-headless instead of java (bz 1068289)
+- Add 005_jinput_leak.patch and 006_jinput_java5.patch
+- Link the plugin with Fedora LDFLAGS
+- Preserve timestamp when updating the POMs
+- Prevent jutils.jar from being included in jinput.jar
+
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.0.6-6.20130309svn
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
More information about the scm-commits
mailing list