From 41e62c376a2321f78f78f69ca2ef641be3073403 Mon Sep 17 00:00:00 2001 From: Amin Amani <56313800+AminAmani83@users.noreply.github.com> Date: Sat, 5 Oct 2024 18:25:20 -0400 Subject: [PATCH 01/20] Issue #4 - Removing Unused Variable in AndroidInputHandler.java Fixes #4 The unused variable 'isTouch' and the commented code which referred to it were removed from the 'onKey' method. --- .../java/com/jme3/input/android/AndroidInputHandler.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidInputHandler.java b/jme3-android/src/main/java/com/jme3/input/android/AndroidInputHandler.java index 5c3d303ab..dba0c7141 100644 --- a/jme3-android/src/main/java/com/jme3/input/android/AndroidInputHandler.java +++ b/jme3-android/src/main/java/com/jme3/input/android/AndroidInputHandler.java @@ -220,12 +220,6 @@ public boolean onKey(View view, int keyCode, KeyEvent event) { int source = event.getSource(); // logger.log(Level.INFO, "onKey source: {0}", source); - boolean isTouch = - ((source & InputDevice.SOURCE_TOUCHSCREEN) == InputDevice.SOURCE_TOUCHSCREEN) || - ((source & InputDevice.SOURCE_KEYBOARD) == InputDevice.SOURCE_KEYBOARD); -// logger.log(Level.INFO, "onKey source: {0}, isTouch: {1}", -// new Object[]{source, isTouch}); - if (touchInput != null) { consumed = touchInput.onKey(event); } From 6323050908b389a7efaa2e3437353ce96c274096 Mon Sep 17 00:00:00 2001 From: Nisarg291 <59527108+nisarg291@users.noreply.github.com> Date: Sat, 5 Oct 2024 19:33:17 -0400 Subject: [PATCH 02/20] Issue #2 and #3 resolved by changing field name to ESCAPEEVENT and type to static final. (#6) * fixed issue #2 by Changing final field to static final. * fixed issue #3 by Renaming ESCAPE_EVENT to ESCAPEEVENT. --- .../main/java/com/jme3/app/AndroidHarnessFragment.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/app/AndroidHarnessFragment.java b/jme3-android/src/main/java/com/jme3/app/AndroidHarnessFragment.java index 11de17538..4ec87ea91 100644 --- a/jme3-android/src/main/java/com/jme3/app/AndroidHarnessFragment.java +++ b/jme3-android/src/main/java/com/jme3/app/AndroidHarnessFragment.java @@ -205,7 +205,7 @@ public class AndroidHarnessFragment extends Fragment implements protected FrameLayout frameLayout = null; protected GLSurfaceView view = null; protected ImageView splashImageView = null; - final private String ESCAPE_EVENT = "TouchEscape"; + static final private String ESCAPEEVENT = "TouchEscape"; private boolean firstDrawFrame = true; private LegacyApplication app = null; private int viewWidth = 0; @@ -451,7 +451,7 @@ public void onClick(DialogInterface dialog, int whichButton) { */ @Override public void onTouch(String name, TouchEvent evt, float tpf) { - if (name.equals(ESCAPE_EVENT)) { + if (name.equals(ESCAPEEVENT)) { switch (evt.getType()) { case KEY_UP: getActivity().runOnUiThread(new Runnable() { @@ -562,8 +562,8 @@ public void initialize() { app.getInputManager().deleteMapping(SimpleApplication.INPUT_MAPPING_EXIT); } - app.getInputManager().addMapping(ESCAPE_EVENT, new TouchTrigger(TouchInput.KEYCODE_BACK)); - app.getInputManager().addListener(this, new String[]{ESCAPE_EVENT}); + app.getInputManager().addMapping(ESCAPEEVENT, new TouchTrigger(TouchInput.KEYCODE_BACK)); + app.getInputManager().addListener(this, new String[]{ESCAPEEVENT}); } } From b3cf6c1ce72a2b86a38a96ea04d6fe6a31a1acef Mon Sep 17 00:00:00 2001 From: "zaziba.ahmed" Date: Sun, 6 Oct 2024 00:03:19 -0400 Subject: [PATCH 03/20] Issue#1-removed commented out code --- .../main/java/com/jme3/app/state/MjpegFileWriter.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java b/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java index 16039fb17..7d941af3a 100644 --- a/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java +++ b/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java @@ -148,17 +148,6 @@ public void finishAVI() throws Exception { raf.close(); } - // public void writeAVI(File file) throws Exception - // { - // OutputStream os = new FileOutputStream(file); - // - // // RIFFHeader - // // AVIMainHeader - // // AVIStreamList - // // AVIStreamHeader - // // AVIStreamFormat - // // write 00db and image bytes... - // } public static int swapInt(int v) { return (v >>> 24) | (v << 24) | ((v << 8) & 0x00FF0000) | ((v >> 8) & 0x0000FF00); } From 76cc2c6fd6925048c66eba7c1758e2fe143a72e1 Mon Sep 17 00:00:00 2001 From: Aashvi zala Date: Sun, 6 Oct 2024 01:23:33 -0400 Subject: [PATCH 04/20] #9 Remove commented code from AndroidGestureProcessor.java --- .../android/AndroidGestureProcessor.java | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java b/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java index c38c7663a..bb582ec3d 100644 --- a/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java +++ b/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java @@ -70,8 +70,6 @@ public boolean onDown(MotionEvent event) { // so we don't create an event. // However, reset the scaleInProgress here since this is the beginning // of a series of gesture events. -// logger.log(Level.INFO, "onDown pointerId: {0}, action: {1}, x: {2}, y: {3}", -// new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()}); gestureDownX = touchInput.getJmeX(event.getX()); gestureDownY = touchInput.invertY(touchInput.getJmeY(event.getY())); return true; @@ -81,15 +79,11 @@ public boolean onDown(MotionEvent event) { public boolean onSingleTapUp(MotionEvent event) { // Up of single tap. May be followed by a double tap later. // use onSingleTapConfirmed instead. -// logger.log(Level.INFO, "onSingleTapUp pointerId: {0}, action: {1}, x: {2}, y: {3}", -// new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()}); return true; } @Override public void onShowPress(MotionEvent event) { -// logger.log(Level.INFO, "onShowPress pointerId: {0}, action: {1}, x: {2}, y: {3}", -// new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()}); float jmeX = touchInput.getJmeX(event.getX()); float jmeY = touchInput.invertY(touchInput.getJmeY(event.getY())); TouchEvent touchEvent = touchInput.getFreeTouchEvent(); @@ -102,8 +96,6 @@ public void onShowPress(MotionEvent event) { @Override public void onLongPress(MotionEvent event) { -// logger.log(Level.INFO, "onLongPress pointerId: {0}, action: {1}, x: {2}, y: {3}", -// new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()}); float jmeX = touchInput.getJmeX(event.getX()); float jmeY = touchInput.invertY(touchInput.getJmeY(event.getY())); TouchEvent touchEvent = touchInput.getFreeTouchEvent(); @@ -124,8 +116,6 @@ public boolean onScroll(MotionEvent startEvent, MotionEvent endEvent, float dist // Negate distX to get the real value, but leave distY negative to compensate // for the fact that jME has y=0 at bottom where Android has y=0 at top. if (!touchInput.getScaleDetector().isInProgress()) { -// logger.log(Level.INFO, "onScroll pointerId: {0}, startAction: {1}, startX: {2}, startY: {3}, endAction: {4}, endX: {5}, endY: {6}, dx: {7}, dy: {8}", -// new Object[]{touchInput.getPointerId(startEvent), touchInput.getAction(startEvent), startEvent.getX(), startEvent.getY(), touchInput.getAction(endEvent), endEvent.getX(), endEvent.getY(), distX, distY}); float jmeX = touchInput.getJmeX(endEvent.getX()); float jmeY = touchInput.invertY(touchInput.getJmeY(endEvent.getY())); @@ -146,9 +136,6 @@ public boolean onFling(MotionEvent startEvent, MotionEvent endEvent, float veloc // Therefore, the dX and dY values are actually velocity instead of distance values // Since this does not track the movement, use the start position and velocity values. -// logger.log(Level.INFO, "onFling pointerId: {0}, startAction: {1}, startX: {2}, startY: {3}, endAction: {4}, endX: {5}, endY: {6}, velocityX: {7}, velocityY: {8}", -// new Object[]{touchInput.getPointerId(startEvent), touchInput.getAction(startEvent), startEvent.getX(), startEvent.getY(), touchInput.getAction(endEvent), endEvent.getX(), endEvent.getY(), velocityX, velocityY}); - float jmeX = touchInput.getJmeX(startEvent.getX()); float jmeY = touchInput.invertY(touchInput.getJmeY(startEvent.getY())); TouchEvent touchEvent = touchInput.getFreeTouchEvent(); @@ -165,8 +152,6 @@ public boolean onFling(MotionEvent startEvent, MotionEvent endEvent, float veloc @Override public boolean onSingleTapConfirmed(MotionEvent event) { // Up of single tap when no double tap followed. -// logger.log(Level.INFO, "onSingleTapConfirmed pointerId: {0}, action: {1}, x: {2}, y: {3}", -// new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()}); float jmeX = touchInput.getJmeX(event.getX()); float jmeY = touchInput.invertY(touchInput.getJmeY(event.getY())); TouchEvent touchEvent = touchInput.getFreeTouchEvent(); @@ -183,8 +168,6 @@ public boolean onDoubleTap(MotionEvent event) { //The down motion event of the first tap of the double-tap // We could use this event to fire off a double tap event, or use // DoubleTapEvent with a check for the UP action -// logger.log(Level.INFO, "onDoubleTap pointerId: {0}, action: {1}, x: {2}, y: {3}", -// new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()}); float jmeX = touchInput.getJmeX(event.getX()); float jmeY = touchInput.invertY(touchInput.getJmeY(event.getY())); TouchEvent touchEvent = touchInput.getFreeTouchEvent(); @@ -200,8 +183,6 @@ public boolean onDoubleTap(MotionEvent event) { public boolean onDoubleTapEvent(MotionEvent event) { //Notified when an event within a double-tap gesture occurs, including the down, move(s), and up events. // this means it will get called multiple times for a single double tap -// logger.log(Level.INFO, "onDoubleTapEvent pointerId: {0}, action: {1}, x: {2}, y: {3}", -// new Object[]{touchInput.getPointerId(event), touchInput.getAction(event), event.getX(), event.getY()}); if (touchInput.getAction(event) == MotionEvent.ACTION_UP) { TouchEvent touchEvent = touchInput.getFreeTouchEvent(); touchEvent.set(TouchEvent.Type.DOUBLETAP, event.getX(), touchInput.invertY(event.getY()), 0, 0); @@ -221,7 +202,6 @@ public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) { // of the fingers. Therefore, use the x and y values from the Down event // so that the x and y values don't jump to the middle position. // return true or all gestures for this beginning event will be discarded -// logger.log(Level.INFO, "onScaleBegin"); scaleStartX = gestureDownX; scaleStartY = gestureDownY; TouchEvent touchEvent = touchInput.getFreeTouchEvent(); @@ -240,7 +220,6 @@ public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) { @Override public boolean onScale(ScaleGestureDetector scaleGestureDetector) { // return true or all gestures for this event will be accumulated -// logger.log(Level.INFO, "onScale"); scaleStartX = gestureDownX; scaleStartY = gestureDownY; TouchEvent touchEvent = touchInput.getFreeTouchEvent(); @@ -257,7 +236,6 @@ public boolean onScale(ScaleGestureDetector scaleGestureDetector) { @Override public void onScaleEnd(ScaleGestureDetector scaleGestureDetector) { -// logger.log(Level.INFO, "onScaleEnd"); scaleStartX = gestureDownX; scaleStartY = gestureDownY; TouchEvent touchEvent = touchInput.getFreeTouchEvent(); From 5ec71bf793823171c0e3aee00756830d99882ca4 Mon Sep 17 00:00:00 2001 From: Md Istiaq Ahmed <56519469+istiaqahmed121998@users.noreply.github.com> Date: Sun, 6 Oct 2024 21:58:13 -0400 Subject: [PATCH 05/20] Update MjpegFileWriter.java and deleted commented-out-line --- .../src/main/java/com/jme3/app/state/MjpegFileWriter.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java b/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java index 16039fb17..5e7f54d68 100644 --- a/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java +++ b/jme3-android/src/main/java/com/jme3/app/state/MjpegFileWriter.java @@ -376,12 +376,6 @@ public byte[] toBytes() throws Exception { } private class AVIStreamFormat { - /* - * FOURCC fcc; DWORD cb; DWORD biSize; LONG biWidth; LONG biHeight; WORD - * biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; - * LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD - * biClrImportant; - */ public byte[] fcc = new byte[]{'s', 't', 'r', 'f'}; public int cb = 40; From 52831a40d85cb9a65d8878e04a519666179dca54 Mon Sep 17 00:00:00 2001 From: Hanif Ali Date: Thu, 10 Oct 2024 01:14:51 -0400 Subject: [PATCH 06/20] Remove unnecessary intermediate variables before return --- .../main/java/com/jme3/system/android/OGLESContext.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/system/android/OGLESContext.java b/jme3-android/src/main/java/com/jme3/system/android/OGLESContext.java index 43895f3c5..9617f95ee 100644 --- a/jme3-android/src/main/java/com/jme3/system/android/OGLESContext.java +++ b/jme3-android/src/main/java/com/jme3/system/android/OGLESContext.java @@ -507,8 +507,7 @@ public com.jme3.opencl.Context getOpenCLContext() { @Override public int getFramebufferHeight() { Rect rect = getSurfaceFrame(); - int result = rect.height(); - return result; + return rect.height(); } /** @@ -519,8 +518,7 @@ public int getFramebufferHeight() { @Override public int getFramebufferWidth() { Rect rect = getSurfaceFrame(); - int result = rect.width(); - return result; + return rect.width(); } /** @@ -552,7 +550,6 @@ public int getWindowYPosition() { private Rect getSurfaceFrame() { SurfaceView view = (SurfaceView) androidInput.getView(); SurfaceHolder holder = view.getHolder(); - Rect result = holder.getSurfaceFrame(); - return result; + return holder.getSurfaceFrame(); } } From c1cb8536df0f4e7e5b48bb5cfb39a334ebf6d025 Mon Sep 17 00:00:00 2001 From: Hanif Ali Date: Thu, 10 Oct 2024 01:08:23 -0400 Subject: [PATCH 07/20] Fix ordering of modifiers in jme3-android to comply with Java spec --- jme3-android/src/main/java/com/jme3/app/AndroidHarness.java | 2 +- .../java/com/jme3/input/android/AndroidSensorJoyInput.java | 2 +- .../main/java/com/jme3/input/android/AndroidTouchInput.java | 2 +- .../java/com/jme3/system/android/AndroidConfigChooser.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/app/AndroidHarness.java b/jme3-android/src/main/java/com/jme3/app/AndroidHarness.java index 66d5abc0a..6076e3bc4 100644 --- a/jme3-android/src/main/java/com/jme3/app/AndroidHarness.java +++ b/jme3-android/src/main/java/com/jme3/app/AndroidHarness.java @@ -41,7 +41,7 @@ */ public class AndroidHarness extends Activity implements TouchListener, DialogInterface.OnClickListener, SystemListener { - protected final static Logger logger = Logger.getLogger(AndroidHarness.class.getName()); + protected static final Logger logger = Logger.getLogger(AndroidHarness.class.getName()); /** * The application class to start */ diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidSensorJoyInput.java b/jme3-android/src/main/java/com/jme3/input/android/AndroidSensorJoyInput.java index d0fab8031..f4f02bdd8 100644 --- a/jme3-android/src/main/java/com/jme3/input/android/AndroidSensorJoyInput.java +++ b/jme3-android/src/main/java/com/jme3/input/android/AndroidSensorJoyInput.java @@ -73,7 +73,7 @@ * @author iwgeric */ public class AndroidSensorJoyInput implements SensorEventListener { - private final static Logger logger = Logger.getLogger(AndroidSensorJoyInput.class.getName()); + private static final Logger logger = Logger.getLogger(AndroidSensorJoyInput.class.getName()); private AndroidJoyInput joyInput; private SensorManager sensorManager = null; diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidTouchInput.java b/jme3-android/src/main/java/com/jme3/input/android/AndroidTouchInput.java index 47e687dc5..e7a5c70e7 100644 --- a/jme3-android/src/main/java/com/jme3/input/android/AndroidTouchInput.java +++ b/jme3-android/src/main/java/com/jme3/input/android/AndroidTouchInput.java @@ -73,7 +73,7 @@ public class AndroidTouchInput implements TouchInput { protected int numPointers = 0; final private HashMap lastPositions = new HashMap<>(); final private ConcurrentLinkedQueue inputEventQueue = new ConcurrentLinkedQueue<>(); - private final static int MAX_TOUCH_EVENTS = 1024; + private static final int MAX_TOUCH_EVENTS = 1024; private final TouchEventPool touchEventPool = new TouchEventPool(MAX_TOUCH_EVENTS); private float scaleX = 1f; private float scaleY = 1f; diff --git a/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java b/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java index 8f023c626..a0c75a065 100644 --- a/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java +++ b/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java @@ -18,8 +18,8 @@ public class AndroidConfigChooser implements EGLConfigChooser { private static final Logger logger = Logger.getLogger(AndroidConfigChooser.class.getName()); protected AppSettings settings; - private final static int EGL_OPENGL_ES2_BIT = 4; - private final static int EGL_OPENGL_ES3_BIT = 0x40; + private static final int EGL_OPENGL_ES2_BIT = 4; + private static final int EGL_OPENGL_ES3_BIT = 0x40; public AndroidConfigChooser(AppSettings settings) { this.settings = settings; From b2b7395fdd3f6c4f95b171679edab2654958af99 Mon Sep 17 00:00:00 2001 From: TejasSonawane Date: Mon, 11 Nov 2024 19:49:34 -0500 Subject: [PATCH 08/20] Eliminated a code duplication in AndroidLocator.java --- .../jme3/asset/plugins/AndroidLocator.java | 54 +++++++++---------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/asset/plugins/AndroidLocator.java b/jme3-android/src/main/java/com/jme3/asset/plugins/AndroidLocator.java index d0ffda860..627a9969d 100644 --- a/jme3-android/src/main/java/com/jme3/asset/plugins/AndroidLocator.java +++ b/jme3-android/src/main/java/com/jme3/asset/plugins/AndroidLocator.java @@ -99,46 +99,44 @@ public class AndroidAssetInfo extends AssetInfo { this.resourceId = resourceId; } + private android.content.res.Resources getAndroidResources() { + return JmeAndroidSystem.getView().getContext().getResources(); + } + + private InputStream getResourceAsStream(String assetPath, int resourceId) throws AssetLoadException { + android.content.res.Resources androidResources = getAndroidResources(); + try { + if (resourceId == 0) { + return androidResources.getAssets().open(assetPath); + } else { + return androidResources.openRawResource(resourceId); + } + } catch (IOException | Resources.NotFoundException ex) { + throw new AssetLoadException("Failed to open asset " + assetPath, ex); + } + } + @Override public InputStream openStream() { - if (in != null){ - // Reuse the already existing stream (only once) + if (in != null) { InputStream in2 = in; in = null; return in2; - }else{ - // Create a new stream for subsequent invocations. - android.content.res.Resources androidResources = JmeAndroidSystem.getView().getContext().getResources(); - if (resourceId == 0) { - try { - return androidResources.getAssets().open(assetPath); - } catch (IOException ex) { - throw new AssetLoadException("Failed to open asset " + assetPath, ex); - } - } else { - try { - return androidResources.openRawResource(resourceId); - } catch (Resources.NotFoundException ex) { - throw new AssetLoadException("Failed to open asset " + assetPath, ex); - } - } + } else { + return getResourceAsStream(assetPath, resourceId); } } public AssetFileDescriptor openFileDescriptor() { - android.content.res.Resources androidResources = JmeAndroidSystem.getView().getContext().getResources(); - if (resourceId == 0) { - try { + android.content.res.Resources androidResources = getAndroidResources(); + try { + if (resourceId == 0) { return androidResources.getAssets().openFd(assetPath); - } catch (IOException ex) { - throw new AssetLoadException("Failed to open asset " + assetPath, ex); - } - } else { - try { + } else { return androidResources.openRawResourceFd(resourceId); - } catch (Resources.NotFoundException ex) { - throw new AssetLoadException("Failed to open asset " + assetPath, ex); } + } catch (IOException | Resources.NotFoundException ex) { + throw new AssetLoadException("Failed to open asset " + assetPath, ex); } } } From 85274d9bf10545c74207995e2f3aa31cf9a33545 Mon Sep 17 00:00:00 2001 From: Md Istiaq Ahmed Date: Tue, 12 Nov 2024 01:23:33 -0500 Subject: [PATCH 09/20] remove duplicated code and added a helper method --- .../android/AndroidJoystickJoyInput14.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidJoystickJoyInput14.java b/jme3-android/src/main/java/com/jme3/input/android/AndroidJoystickJoyInput14.java index 6011e9d0a..a8bd2de05 100644 --- a/jme3-android/src/main/java/com/jme3/input/android/AndroidJoystickJoyInput14.java +++ b/jme3-android/src/main/java/com/jme3/input/android/AndroidJoystickJoyInput14.java @@ -244,7 +244,11 @@ public boolean onKey(KeyEvent event) { return consumed; } - + private void logRemap(String original, String logicalId) { + if (logger.isLoggable(Level.FINE) && !Objects.equals(logicalId, original)) { + logger.log(Level.FINE, "Remapped: {0} to: {1}", new Object[]{original, logicalId}); + } + } protected class AndroidJoystick extends AbstractJoystick { private JoystickAxis nullAxis; @@ -328,10 +332,7 @@ protected JoystickButton addButton( int keyCode ) { } String logicalId = JoystickCompatibilityMappings.remapButton( getName(), original ); - if (logger.isLoggable(Level.FINE) && !Objects.equals(logicalId, original)) { - logger.log(Level.FINE, "Remapped: {0} to: {1}", - new Object[]{original, logicalId}); - } + logRemap(original, logicalId); JoystickButton button = new DefaultJoystickButton( getInputManager(), this, getButtonCount(), name, logicalId ); @@ -340,6 +341,7 @@ protected JoystickButton addButton( int keyCode ) { return button; } + protected JoystickAxis addAxis(MotionRange motionRange) { String name = MotionEvent.axisToString(motionRange.getAxis()); @@ -359,10 +361,7 @@ protected JoystickAxis addAxis(MotionRange motionRange) { original = JoystickAxis.POV_Y; } String logicalId = JoystickCompatibilityMappings.remapAxis( getName(), original ); - if (logger.isLoggable(Level.FINE) && !Objects.equals(logicalId, original)) { - logger.log(Level.FINE, "Remapped: {0} to: {1}", - new Object[]{original, logicalId}); - } + logRemap(original, logicalId); JoystickAxis axis = new DefaultJoystickAxis(getInputManager(), this, From 8b7adc321410f31ed3a010580cd5c8f8864ec326 Mon Sep 17 00:00:00 2001 From: Nisarg291 <59527108+nisarg291@users.noreply.github.com> Date: Tue, 12 Nov 2024 15:48:38 -0500 Subject: [PATCH 10/20] Removing Duplicate Code in RendererUtil.java - Issue#97 (#27) --- .../java/com/jme3/renderer/android/RendererUtil.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/renderer/android/RendererUtil.java b/jme3-android/src/main/java/com/jme3/renderer/android/RendererUtil.java index b4d824b94..2d3e3084f 100644 --- a/jme3-android/src/main/java/com/jme3/renderer/android/RendererUtil.java +++ b/jme3-android/src/main/java/com/jme3/renderer/android/RendererUtil.java @@ -153,14 +153,6 @@ public static void checkGLError() { if (!ENABLE_ERROR_CHECKING) { return; } - int error = GLES20.glGetError(); - if (error != 0) { - String message = GLU.gluErrorString(error); - if (message == null) { - throw new RendererException("An unknown OpenGL error has occurred."); - } else { - throw new RendererException("An OpenGL error has occurred: " + message); - } - } + checkGLErrorForced(); } } From f239d4da6168e4948aff1f416a4da391f09ec06a Mon Sep 17 00:00:00 2001 From: Zaziba Ahmed <54762652+ZazibaAhmed@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:20:29 -0500 Subject: [PATCH 11/20] Issue#79-removed clone in long press show press methods (#23) --- .../input/android/AndroidGestureProcessor.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java b/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java index bb582ec3d..fbc1ab746 100644 --- a/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java +++ b/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureProcessor.java @@ -84,22 +84,19 @@ public boolean onSingleTapUp(MotionEvent event) { @Override public void onShowPress(MotionEvent event) { - float jmeX = touchInput.getJmeX(event.getX()); - float jmeY = touchInput.invertY(touchInput.getJmeY(event.getY())); - TouchEvent touchEvent = touchInput.getFreeTouchEvent(); - touchEvent.set(TouchEvent.Type.SHOWPRESS, jmeX, jmeY, 0, 0); - touchEvent.setPointerId(touchInput.getPointerId(event)); - touchEvent.setTime(event.getEventTime()); - touchEvent.setPressure(event.getPressure()); - touchInput.addEvent(touchEvent); + pressEventHandler(event, TouchEvent.Type.SHOWPRESS); } @Override public void onLongPress(MotionEvent event) { + pressEventHandler(event, TouchEvent.Type.LONGPRESSED); + } + + private void pressEventHandler(MotionEvent event, TouchEvent.Type eventType) { float jmeX = touchInput.getJmeX(event.getX()); float jmeY = touchInput.invertY(touchInput.getJmeY(event.getY())); TouchEvent touchEvent = touchInput.getFreeTouchEvent(); - touchEvent.set(TouchEvent.Type.LONGPRESSED, jmeX, jmeY, 0, 0); + touchEvent.set(eventType, jmeX, jmeY, 0, 0); touchEvent.setPointerId(touchInput.getPointerId(event)); touchEvent.setTime(event.getEventTime()); touchEvent.setPressure(event.getPressure()); From 3e7d834952dc8705323af4b6e046b45b8835522d Mon Sep 17 00:00:00 2001 From: Amin Amani <56313800+AminAmani83@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:20:39 -0500 Subject: [PATCH 12/20] Fixes #72 (#22) The duplicate code has been extracted as a private static method. Co-authored-by: aminamani83 --- .../system/android/AndroidConfigChooser.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java b/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java index a0c75a065..81186148c 100644 --- a/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java +++ b/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java @@ -164,18 +164,12 @@ private EGLConfig[] getConfigs(EGL10 egl, EGLDisplay display) { { // Get back to openGL ES 2 configSpec[1]=EGL_OPENGL_ES2_BIT; - if (!egl.eglChooseConfig(display, configSpec, null, 0, num_config)) { - RendererUtil.checkEGLError(egl); - throw new AssertionError(); - } + checkEGL(egl.eglChooseConfig(display, configSpec, null, 0, num_config), egl); } int numConfigs = num_config[0]; EGLConfig[] configs = new EGLConfig[numConfigs]; - if (!egl.eglChooseConfig(display, configSpec, configs, numConfigs, num_config)) { - RendererUtil.checkEGLError(egl); - throw new AssertionError(); - } + checkEGL(egl.eglChooseConfig(display, configSpec, configs, numConfigs, num_config), egl); logger.fine("--------------Display Configurations---------------"); for (EGLConfig eGLConfig : configs) { @@ -186,6 +180,13 @@ private EGLConfig[] getConfigs(EGL10 egl, EGLDisplay display) { return configs; } + private static void checkEGL(boolean isEGL, EGL10 egl10) { + if (!isEGL) { + RendererUtil.checkEGLError(egl10); + throw new AssertionError(); + } + } + private EGLConfig chooseConfig( EGL10 egl, EGLDisplay display, EGLConfig[] configs, Config requestedConfig, boolean higherRGB, boolean higherAlpha, From 6f1ee7cf892421bfe78da92866d70e94fd97f873 Mon Sep 17 00:00:00 2001 From: Hanif Ali Date: Tue, 12 Nov 2024 23:21:08 -0500 Subject: [PATCH 13/20] Issue #28 Remove code duplication in GlfwKeymap.java --- .../java/com/jme3/input/lwjgl/GlfwKeyMap.java | 238 +++++++++--------- 1 file changed, 116 insertions(+), 122 deletions(-) diff --git a/jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwKeyMap.java b/jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwKeyMap.java index 51baafbda..7fc0e3984 100644 --- a/jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwKeyMap.java +++ b/jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwKeyMap.java @@ -48,127 +48,123 @@ private static void reg(final int jmeKey, final int glfwKey) { GLFW_TO_JME_KEY_MAP[glfwKey] = jmeKey; } + private static void registerKeys() { + int[][] keyMappings = { + {KEY_ESCAPE, GLFW_KEY_ESCAPE}, + {KEY_1, GLFW_KEY_1}, + {KEY_2, GLFW_KEY_2}, + {KEY_3, GLFW_KEY_3}, + {KEY_4, GLFW_KEY_4}, + {KEY_5, GLFW_KEY_5}, + {KEY_6, GLFW_KEY_6}, + {KEY_7, GLFW_KEY_7}, + {KEY_8, GLFW_KEY_8}, + {KEY_9, GLFW_KEY_9}, + {KEY_0, GLFW_KEY_0}, + {KEY_MINUS, GLFW_KEY_MINUS}, + {KEY_EQUALS, GLFW_KEY_EQUAL}, + {KEY_BACK, GLFW_KEY_BACKSPACE}, + {KEY_TAB, GLFW_KEY_TAB}, + {KEY_Q, GLFW_KEY_Q}, + {KEY_W, GLFW_KEY_W}, + {KEY_E, GLFW_KEY_E}, + {KEY_R, GLFW_KEY_R}, + {KEY_T, GLFW_KEY_T}, + {KEY_Y, GLFW_KEY_Y}, + {KEY_U, GLFW_KEY_U}, + {KEY_I, GLFW_KEY_I}, + {KEY_O, GLFW_KEY_O}, + {KEY_P, GLFW_KEY_P}, + {KEY_LBRACKET, GLFW_KEY_LEFT_BRACKET}, + {KEY_RBRACKET, GLFW_KEY_RIGHT_BRACKET}, + {KEY_RETURN, GLFW_KEY_ENTER}, + {KEY_LCONTROL, GLFW_KEY_LEFT_CONTROL}, + {KEY_A, GLFW_KEY_A}, + {KEY_S, GLFW_KEY_S}, + {KEY_D, GLFW_KEY_D}, + {KEY_F, GLFW_KEY_F}, + {KEY_G, GLFW_KEY_G}, + {KEY_H, GLFW_KEY_H}, + {KEY_J, GLFW_KEY_J}, + {KEY_K, GLFW_KEY_K}, + {KEY_L, GLFW_KEY_L}, + {KEY_SEMICOLON, GLFW_KEY_SEMICOLON}, + {KEY_APOSTROPHE, GLFW_KEY_APOSTROPHE}, + {KEY_GRAVE, GLFW_KEY_GRAVE_ACCENT}, + {KEY_LSHIFT, GLFW_KEY_LEFT_SHIFT}, + {KEY_BACKSLASH, GLFW_KEY_BACKSLASH}, + {KEY_Z, GLFW_KEY_Z}, + {KEY_X, GLFW_KEY_X}, + {KEY_C, GLFW_KEY_C}, + {KEY_V, GLFW_KEY_V}, + {KEY_B, GLFW_KEY_B}, + {KEY_N, GLFW_KEY_N}, + {KEY_M, GLFW_KEY_M}, + {KEY_COMMA, GLFW_KEY_COMMA}, + {KEY_PERIOD, GLFW_KEY_PERIOD}, + {KEY_SLASH, GLFW_KEY_SLASH}, + {KEY_RSHIFT, GLFW_KEY_RIGHT_SHIFT}, + {KEY_MULTIPLY, GLFW_KEY_KP_MULTIPLY}, + {KEY_LMENU, GLFW_KEY_LEFT_ALT}, + {KEY_SPACE, GLFW_KEY_SPACE}, + {KEY_CAPITAL, GLFW_KEY_CAPS_LOCK}, + {KEY_F1, GLFW_KEY_F1}, + {KEY_F2, GLFW_KEY_F2}, + {KEY_F3, GLFW_KEY_F3}, + {KEY_F4, GLFW_KEY_F4}, + {KEY_F5, GLFW_KEY_F5}, + {KEY_F6, GLFW_KEY_F6}, + {KEY_F7, GLFW_KEY_F7}, + {KEY_F8, GLFW_KEY_F8}, + {KEY_F9, GLFW_KEY_F9}, + {KEY_F10, GLFW_KEY_F10}, + {KEY_NUMLOCK, GLFW_KEY_NUM_LOCK}, + {KEY_SCROLL, GLFW_KEY_SCROLL_LOCK}, + {KEY_NUMPAD7, GLFW_KEY_KP_7}, + {KEY_NUMPAD8, GLFW_KEY_KP_8}, + {KEY_NUMPAD9, GLFW_KEY_KP_9}, + {KEY_SUBTRACT, GLFW_KEY_KP_SUBTRACT}, + {KEY_NUMPAD4, GLFW_KEY_KP_4}, + {KEY_NUMPAD5, GLFW_KEY_KP_5}, + {KEY_NUMPAD6, GLFW_KEY_KP_6}, + {KEY_ADD, GLFW_KEY_KP_ADD}, + {KEY_NUMPAD1, GLFW_KEY_KP_1}, + {KEY_NUMPAD2, GLFW_KEY_KP_2}, + {KEY_NUMPAD3, GLFW_KEY_KP_3}, + {KEY_NUMPAD0, GLFW_KEY_KP_0}, + {KEY_DECIMAL, GLFW_KEY_KP_DECIMAL}, + {KEY_F11, GLFW_KEY_F11}, + {KEY_F12, GLFW_KEY_F12}, + {KEY_F13, GLFW_KEY_F13}, + {KEY_F14, GLFW_KEY_F14}, + {KEY_F15, GLFW_KEY_F15}, + {KEY_NUMPADENTER, GLFW_KEY_KP_ENTER}, + {KEY_RCONTROL, GLFW_KEY_RIGHT_CONTROL}, + {KEY_DIVIDE, GLFW_KEY_KP_DIVIDE}, + {KEY_SYSRQ, GLFW_KEY_PRINT_SCREEN}, + {KEY_RMENU, GLFW_KEY_RIGHT_ALT}, + {KEY_PAUSE, GLFW_KEY_PAUSE}, + {KEY_HOME, GLFW_KEY_HOME}, + {KEY_UP, GLFW_KEY_UP}, + {KEY_PRIOR, GLFW_KEY_PAGE_UP}, + {KEY_LEFT, GLFW_KEY_LEFT}, + {KEY_RIGHT, GLFW_KEY_RIGHT}, + {KEY_END, GLFW_KEY_END}, + {KEY_DOWN, GLFW_KEY_DOWN}, + {KEY_NEXT, GLFW_KEY_PAGE_DOWN}, + {KEY_INSERT, GLFW_KEY_INSERT}, + {KEY_DELETE, GLFW_KEY_DELETE}, + {KEY_LMETA, GLFW_KEY_LEFT_SUPER}, + {KEY_RMETA, GLFW_KEY_RIGHT_SUPER} + }; + + for (int[] mapping : keyMappings) { + reg(mapping[0], mapping[1]); + } + } + static { - reg(KEY_ESCAPE, GLFW_KEY_ESCAPE); - reg(KEY_1, GLFW_KEY_1); - reg(KEY_2, GLFW_KEY_2); - reg(KEY_3, GLFW_KEY_3); - reg(KEY_4, GLFW_KEY_4); - reg(KEY_5, GLFW_KEY_5); - reg(KEY_6, GLFW_KEY_6); - reg(KEY_7, GLFW_KEY_7); - reg(KEY_8, GLFW_KEY_8); - reg(KEY_9, GLFW_KEY_9); - reg(KEY_0, GLFW_KEY_0); - reg(KEY_MINUS, GLFW_KEY_MINUS); - reg(KEY_EQUALS, GLFW_KEY_EQUAL); - reg(KEY_BACK, GLFW_KEY_BACKSPACE); - reg(KEY_TAB, GLFW_KEY_TAB); - reg(KEY_Q, GLFW_KEY_Q); - reg(KEY_W, GLFW_KEY_W); - reg(KEY_E, GLFW_KEY_E); - reg(KEY_R, GLFW_KEY_R); - reg(KEY_T, GLFW_KEY_T); - reg(KEY_Y, GLFW_KEY_Y); - reg(KEY_U, GLFW_KEY_U); - reg(KEY_I, GLFW_KEY_I); - reg(KEY_O, GLFW_KEY_O); - reg(KEY_P, GLFW_KEY_P); - reg(KEY_LBRACKET, GLFW_KEY_LEFT_BRACKET); - reg(KEY_RBRACKET, GLFW_KEY_RIGHT_BRACKET); - reg(KEY_RETURN, GLFW_KEY_ENTER); - reg(KEY_LCONTROL, GLFW_KEY_LEFT_CONTROL); - reg(KEY_A, GLFW_KEY_A); - reg(KEY_S, GLFW_KEY_S); - reg(KEY_D, GLFW_KEY_D); - reg(KEY_F, GLFW_KEY_F); - reg(KEY_G, GLFW_KEY_G); - reg(KEY_H, GLFW_KEY_H); - reg(KEY_J, GLFW_KEY_J); - reg(KEY_K, GLFW_KEY_K); - reg(KEY_L, GLFW_KEY_L); - reg(KEY_SEMICOLON, GLFW_KEY_SEMICOLON); - reg(KEY_APOSTROPHE, GLFW_KEY_APOSTROPHE); - reg(KEY_GRAVE, GLFW_KEY_GRAVE_ACCENT); - reg(KEY_LSHIFT, GLFW_KEY_LEFT_SHIFT); - reg(KEY_BACKSLASH, GLFW_KEY_BACKSLASH); - reg(KEY_Z, GLFW_KEY_Z); - reg(KEY_X, GLFW_KEY_X); - reg(KEY_C, GLFW_KEY_C); - reg(KEY_V, GLFW_KEY_V); - reg(KEY_B, GLFW_KEY_B); - reg(KEY_N, GLFW_KEY_N); - reg(KEY_M, GLFW_KEY_M); - reg(KEY_COMMA, GLFW_KEY_COMMA); - reg(KEY_PERIOD, GLFW_KEY_PERIOD); - reg(KEY_SLASH, GLFW_KEY_SLASH); - reg(KEY_RSHIFT, GLFW_KEY_RIGHT_SHIFT); - reg(KEY_MULTIPLY, GLFW_KEY_KP_MULTIPLY); - reg(KEY_LMENU, GLFW_KEY_LEFT_ALT); - reg(KEY_SPACE, GLFW_KEY_SPACE); - reg(KEY_CAPITAL, GLFW_KEY_CAPS_LOCK); - reg(KEY_F1, GLFW_KEY_F1); - reg(KEY_F2, GLFW_KEY_F2); - reg(KEY_F3, GLFW_KEY_F3); - reg(KEY_F4, GLFW_KEY_F4); - reg(KEY_F5, GLFW_KEY_F5); - reg(KEY_F6, GLFW_KEY_F6); - reg(KEY_F7, GLFW_KEY_F7); - reg(KEY_F8, GLFW_KEY_F8); - reg(KEY_F9, GLFW_KEY_F9); - reg(KEY_F10, GLFW_KEY_F10); - reg(KEY_NUMLOCK, GLFW_KEY_NUM_LOCK); - reg(KEY_SCROLL, GLFW_KEY_SCROLL_LOCK); - reg(KEY_NUMPAD7, GLFW_KEY_KP_7); - reg(KEY_NUMPAD8, GLFW_KEY_KP_8); - reg(KEY_NUMPAD9, GLFW_KEY_KP_9); - reg(KEY_SUBTRACT, GLFW_KEY_KP_SUBTRACT); - reg(KEY_NUMPAD4, GLFW_KEY_KP_4); - reg(KEY_NUMPAD5, GLFW_KEY_KP_5); - reg(KEY_NUMPAD6, GLFW_KEY_KP_6); - reg(KEY_ADD, GLFW_KEY_KP_ADD); - reg(KEY_NUMPAD1, GLFW_KEY_KP_1); - reg(KEY_NUMPAD2, GLFW_KEY_KP_2); - reg(KEY_NUMPAD3, GLFW_KEY_KP_3); - reg(KEY_NUMPAD0, GLFW_KEY_KP_0); - reg(KEY_DECIMAL, GLFW_KEY_KP_DECIMAL); - reg(KEY_F11, GLFW_KEY_F11); - reg(KEY_F12, GLFW_KEY_F12); - reg(KEY_F13, GLFW_KEY_F13); - reg(KEY_F14, GLFW_KEY_F14); - reg(KEY_F15, GLFW_KEY_F15); - //reg(KEY_KANA, GLFW_KEY_); - //reg(KEY_CONVERT, GLFW_KEY_); - //reg(KEY_NOCONVERT, GLFW_KEY_); - //reg(KEY_YEN, GLFW_KEY_); - //reg(KEY_NUMPADEQUALS, GLFW_KEY_); - //reg(KEY_CIRCUMFLEX, GLFW_KEY_); - //reg(KEY_AT, GLFW_KEY_); - //reg(KEY_COLON, GLFW_KEY_); - //reg(KEY_UNDERLINE, GLFW_KEY_); - //reg(KEY_KANJI, GLFW_KEY_); - //reg(KEY_STOP, GLFW_KEY_); - //reg(KEY_AX, GLFW_KEY_); - //reg(KEY_UNLABELED, GLFW_KEY_); - reg(KEY_NUMPADENTER, GLFW_KEY_KP_ENTER); - reg(KEY_RCONTROL, GLFW_KEY_RIGHT_CONTROL); - //reg(KEY_NUMPADCOMMA, GLFW_KEY_); - reg(KEY_DIVIDE, GLFW_KEY_KP_DIVIDE); - reg(KEY_SYSRQ, GLFW_KEY_PRINT_SCREEN); - reg(KEY_RMENU, GLFW_KEY_RIGHT_ALT); - reg(KEY_PAUSE, GLFW_KEY_PAUSE); - reg(KEY_HOME, GLFW_KEY_HOME); - reg(KEY_UP, GLFW_KEY_UP); - reg(KEY_PRIOR, GLFW_KEY_PAGE_UP); - reg(KEY_LEFT, GLFW_KEY_LEFT); - reg(KEY_RIGHT, GLFW_KEY_RIGHT); - reg(KEY_END, GLFW_KEY_END); - reg(KEY_DOWN, GLFW_KEY_DOWN); - reg(KEY_NEXT, GLFW_KEY_PAGE_DOWN); - reg(KEY_INSERT, GLFW_KEY_INSERT); - reg(KEY_DELETE, GLFW_KEY_DELETE); - reg(KEY_LMETA, GLFW_KEY_LEFT_SUPER); - reg(KEY_RMETA, GLFW_KEY_RIGHT_SUPER); + registerKeys(); } /** @@ -179,7 +175,6 @@ public static int toJmeKeyCode(final int glfwKey) { return GLFW_TO_JME_KEY_MAP[glfwKey]; } - /** * Returns the glfw keycode that matches the specified jme keycode or * GLFW_KEY_UNKNOWN if there isn't any match. @@ -192,5 +187,4 @@ public static int fromJmeKeyCode(final int jmeKey) { } return GLFW_KEY_UNKNOWN; } - } From c4c0b8cb5fb5f486f0d640f45594e5106676461e Mon Sep 17 00:00:00 2001 From: aminamani83 Date: Sun, 17 Nov 2024 23:20:57 -0500 Subject: [PATCH 14/20] Fixes #116 Checkstyle library version updated from 9.3 to 10.20.1 --- common.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.gradle b/common.gradle index d332cba6d..40098b7a6 100644 --- a/common.gradle +++ b/common.gradle @@ -206,7 +206,7 @@ tasks.withType(Sign) { } checkstyle { - toolVersion '9.3' + toolVersion '10.20.1' configFile file("${gradle.rootProject.rootDir}/config/checkstyle/checkstyle.xml") } From 9034de55a86e4b037f68b8ec23b2f9c70dd1e609 Mon Sep 17 00:00:00 2001 From: "zaziba.ahmed" Date: Mon, 2 Dec 2024 01:34:23 -0500 Subject: [PATCH 15/20] Issue#155-fixed Insecure Configuration vulnerability --- jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java b/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java index 73ebaf414..abc943363 100644 --- a/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java +++ b/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java @@ -71,6 +71,7 @@ public static Applet getApplet(Application app){ @SuppressWarnings("unchecked") private void createCanvas(){ AppSettings settings = new AppSettings(true); + Logger logger = Logger.getLogger(this.getClass().getName()); // load app cfg if (appCfg != null){ @@ -80,6 +81,9 @@ private void createCanvas(){ settings.load(in); in.close(); } catch (IOException ex){ + // Log the exception securely + logger.log(Level.SEVERE, "Error loading applet configuration", ex); + // Called before application has been created .... // Display error message through AWT JOptionPane.showMessageDialog(this, "An error has occurred while " @@ -87,7 +91,6 @@ private void createCanvas(){ + ex.getMessage(), "jME3 Applet", JOptionPane.ERROR_MESSAGE); - ex.printStackTrace(); } finally { if (in != null) try { From cdabf8e4025afabfcbe67dee05c3c871d04698bf Mon Sep 17 00:00:00 2001 From: "zaziba.ahmed" Date: Mon, 2 Dec 2024 02:35:35 -0500 Subject: [PATCH 16/20] Issue#155-fixed Insecure Configuration vulnerability --- jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java | 1 + 1 file changed, 1 insertion(+) diff --git a/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java b/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java index abc943363..3a9fd59d3 100644 --- a/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java +++ b/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java @@ -47,6 +47,7 @@ import java.util.HashMap; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; +import java.util.logging.Logger; /** * @author Kirill Vainer From 4d98ddc45f12f76d120537af4dbde6664cef5477 Mon Sep 17 00:00:00 2001 From: "zaziba.ahmed" Date: Mon, 2 Dec 2024 02:55:43 -0500 Subject: [PATCH 17/20] Issue#155-fixed Insecure Configuration vulnerability --- jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java b/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java index 3a9fd59d3..65034a781 100644 --- a/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java +++ b/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java @@ -47,7 +47,7 @@ import java.util.HashMap; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; -import java.util.logging.Logger; +import java.util.logging.*; /** * @author Kirill Vainer From 3a8aa979c0989c7016ded7fd66c3a1e20b0209f3 Mon Sep 17 00:00:00 2001 From: aashvi1802 Date: Mon, 2 Dec 2024 17:04:25 -0500 Subject: [PATCH 18/20] fix: Make sure the use of WRITE_EXTERNAL_STORAGE permission is necessary. --- jme3-android-examples/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jme3-android-examples/src/main/AndroidManifest.xml b/jme3-android-examples/src/main/AndroidManifest.xml index cf9cc7c2d..9ad8d1f7c 100644 --- a/jme3-android-examples/src/main/AndroidManifest.xml +++ b/jme3-android-examples/src/main/AndroidManifest.xml @@ -42,7 +42,7 @@ android:normalScreens="true" android:smallScreens="true"/> - + From e86c22f09e9240b65ea6c5d235357070922758ca Mon Sep 17 00:00:00 2001 From: Md Istiaq Ahmed <56519469+istiaqahmed121998@users.noreply.github.com> Date: Mon, 2 Dec 2024 19:17:44 -0500 Subject: [PATCH 19/20] Update XMLImporter.java --- .../src/xml/java/com/jme3/export/xml/XMLImporter.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/jme3-plugins/src/xml/java/com/jme3/export/xml/XMLImporter.java b/jme3-plugins/src/xml/java/com/jme3/export/xml/XMLImporter.java index 7cf2a98cb..c534e9004 100644 --- a/jme3-plugins/src/xml/java/com/jme3/export/xml/XMLImporter.java +++ b/jme3-plugins/src/xml/java/com/jme3/export/xml/XMLImporter.java @@ -98,7 +98,15 @@ public Savable load(File f) throws IOException { public Savable load(InputStream f) throws IOException { try { - domIn = new DOMInputCapsule(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(f), this); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + factory.setFeature("http://xml.org/sax/features/external-general-entities", false); + factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + factory.setXIncludeAware(false); + factory.setExpandEntityReferences(false); + + domIn = new DOMInputCapsule(factory.newDocumentBuilder().parse(f), this); return domIn.readSavable(null, null); } catch (SAXException | ParserConfigurationException e) { IOException ex = new IOException(); From 1bfb9e2d5d84860e2618fae862a7ba3cb3692a13 Mon Sep 17 00:00:00 2001 From: Hanif Ali Date: Mon, 2 Dec 2024 23:35:05 -0500 Subject: [PATCH 20/20] #35 Fix MALICIOUS_CODE vulnerability identified by SpotBugs --- .../main/java/com/jme3/environment/util/EnvMapUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java b/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java index 81c12e4a2..938c7813d 100644 --- a/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java +++ b/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java @@ -65,7 +65,7 @@ public class EnvMapUtils { public final static int NUM_SH_COEFFICIENT = 9; // See Peter-Pike Sloan paper for these coefficients //http://www.ppsloan.org/publications/StupidSH36.pdf - public static float[] shBandFactor = {1.0f, + private static float[] shBandFactor = {1.0f, 2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, 1.0f / 4.0f, 1.0f / 4.0f, 1.0f / 4.0f, 1.0f / 4.0f, 1.0f / 4.0f}; @@ -96,6 +96,10 @@ public static enum GenerationType { private EnvMapUtils() { } + public static float[] getShBandFactor() { + return shBandFactor.clone(); + } + /** * Creates a cube map from 6 images *