From 116c1d9c2121cee6e3254970659621fe7d3de206 Mon Sep 17 00:00:00 2001 From: Joey Grover Date: Wed, 9 Sep 2020 11:02:57 -0400 Subject: Remove deprecated code from router service --- .../transport/RegisteredAppTests.java | 10 +-- .../transport/SdlRouterServiceTests.java | 10 +-- .../transport/SdlRouterService.java | 83 ---------------------- 3 files changed, 11 insertions(+), 92 deletions(-) diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java index f2164e498..faa4ad318 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/RegisteredAppTests.java @@ -4,6 +4,8 @@ import android.os.Looper; import android.os.Messenger; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.smartdevicelink.transport.enums.TransportType; + import org.junit.Test; import org.junit.runner.RunWith; @@ -30,10 +32,10 @@ public class RegisteredAppTests { // Instantiate SdlRouterService and Registered App class SdlRouterService router = new SdlRouterService(); - SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger); + SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, 1, messenger); // Call Handle Message - app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_LARGE_PACKET_START,bytes); + app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_LARGE_PACKET_START,bytes, TransportType.BLUETOOTH); // Insure that the buffer is not null, if it is the test will fail assertNotNull(app.buffer); @@ -50,13 +52,13 @@ public class RegisteredAppTests { // Instantiate SdlRouterService and Registered App class SdlRouterService router = new SdlRouterService(); - SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, messenger); + SdlRouterService.RegisteredApp app = router.new RegisteredApp(APP_ID, 1, messenger); // Force Null Buffer app.buffer = null; // Call Handle Message - Making sure it doesn't init buffer - app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_NONE,bytes); + app.handleMessage(TransportConstants.BYTES_TO_SEND_FLAG_NONE, bytes, TransportType.BLUETOOTH); // Insure that the buffer is null. and no NPE assertNull(app.buffer); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java index 5815911e7..cf8b6a38d 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java @@ -187,8 +187,8 @@ public class SdlRouterServiceTests { // We need a registered app for this to work Message message = Message.obtain(); - SdlRouterService.RegisteredApp app1 = sdlRouterService.new RegisteredApp("12345",message.replyTo); - SdlRouterService.RegisteredApp app2 = sdlRouterService.new RegisteredApp("12344",message.replyTo); + SdlRouterService.RegisteredApp app1 = sdlRouterService.new RegisteredApp("12345", 1, message.replyTo); + SdlRouterService.RegisteredApp app2 = sdlRouterService.new RegisteredApp("12344", 1, message.replyTo); HashMap registeredApps = new HashMap<>(); registeredApps.put(app1.getAppId(),app1); registeredApps.put(app2.getAppId(),app2); @@ -280,8 +280,8 @@ public class SdlRouterServiceTests { // We need a registered app for this to work Message message = Message.obtain(); - SdlRouterService.RegisteredApp app1 = sdlRouterService.new RegisteredApp("12345",message.replyTo); - SdlRouterService.RegisteredApp app2 = sdlRouterService.new RegisteredApp("12344",message.replyTo); + SdlRouterService.RegisteredApp app1 = sdlRouterService.new RegisteredApp("12345", 1, message.replyTo); + SdlRouterService.RegisteredApp app2 = sdlRouterService.new RegisteredApp("12344", 1, message.replyTo); HashMap registeredApps = new HashMap<>(); registeredApps.put(app1.getAppId(),app1); registeredApps.put(app2.getAppId(),app2); @@ -688,7 +688,7 @@ public class SdlRouterServiceTests { private void addDummyRegisteredApp(SdlRouterService routerService, String appId, int sessionId) throws IllegalAccessException, NoSuchFieldException { Message message = Message.obtain(); - SdlRouterService.RegisteredApp app = routerService.new RegisteredApp(appId, message.replyTo); + SdlRouterService.RegisteredApp app = routerService.new RegisteredApp(appId, 1, message.replyTo); Field raf = routerService.getClass().getDeclaredField("registeredApps"); raf.setAccessible(true); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java index 2fde0e817..84a766978 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java @@ -152,11 +152,6 @@ public class SdlRouterService extends Service{ public static final String SDL_NOTIFICATION_FAQS_PAGE = "https://smartdevicelink.com/en/guides/android/frequently-asked-questions/sdl-notifications/"; - /** - * @deprecated use {@link TransportConstants#START_ROUTER_SERVICE_ACTION} instead - */ - @Deprecated - public static final String START_SERVICE_ACTION = "sdl.router.startservice"; public static final String REGISTER_WITH_ROUTER_ACTION = "com.sdl.android.register"; /** Message types sent from the BluetoothReadService Handler */ @@ -1610,12 +1605,6 @@ public class SdlRouterService extends Service{ *********************************************** Helper Methods ************************************************************** ****************************************************************************************************************************************/ - @SuppressWarnings("SameReturnValue") - @Deprecated - public String getConnectedDeviceName(){ - return null; - } - private ArrayList getConnectedTransports(){ ArrayList connected = new ArrayList<>(); if(bluetoothTransport != null && bluetoothTransport.isConnected()){ @@ -1733,11 +1722,6 @@ public class SdlRouterService extends Service{ } } - @Deprecated - public void onTransportConnected(final TransportType type){ - onTransportConnected(new TransportRecord(type,null)); - } - public void onTransportConnected(final TransportRecord record){ cancelForegroundTimeOut(); enterForeground(createConnectedNotificationText(),0,true); @@ -1798,11 +1782,6 @@ public class SdlRouterService extends Service{ } - @Deprecated - public void onTransportDisconnected(TransportType type) { - onTransportDisconnected(new TransportRecord(type,null)); - } - public void onTransportDisconnected(TransportRecord record){ cachedModuleVersion = -1; //Reset our cached version //Stop any current pings being sent before the proper state can be determined. @@ -1911,16 +1890,6 @@ public class SdlRouterService extends Service{ } } - @Deprecated - public void onTransportError(TransportType transportType){ - onTransportError(new TransportRecord(transportType,null), null); - } - - @Deprecated - public void onTransportError(TransportRecord record) { - onTransportError(record, null); - } - public void onTransportError(TransportRecord transport, Bundle errorBundle){ switch (transport.getType()){ case BLUETOOTH: @@ -2429,29 +2398,6 @@ public class SdlRouterService extends Service{ //************************************************************************************************************************************** //********************************************************* PREFERENCES **************************************************************** //************************************************************************************************************************************** - /** - * @deprecated - * This method will set the last known bluetooth connection method that worked with this phone. - * This helps speed up the process of connecting - * @param level The level of bluetooth connecting method that last worked - * @param prefLocation Where the preference should be stored - */ - @SuppressWarnings("DeprecatedIsStillUsed") - @Deprecated - public static void setBluetoothPrefs (int level, String prefLocation) { - DebugTool.logWarning(TAG, "This method is deprecated and will not take any action"); - } - - /** - * @deprecated - * This method has been deprecated as it was bad practice. - */ - @SuppressWarnings({"DeprecatedIsStillUsed", "SameReturnValue"}) - @Deprecated - public static int getBluetoothPrefs(String prefLocation) - { - return 0; - } /** * Set the connection establishment status of the particular device @@ -3072,24 +3018,6 @@ public class SdlRouterService extends Service{ //Primary will always be first final SparseArray> registeredTransports; - /** - * This is a simple class to hold onto a reference of a registered app. - * @param appId the supplied id for this app that is attempting to register - * @param messenger the specific messenger that is tied to this app - */ - @Deprecated - public RegisteredApp(String appId, Messenger messenger){ - this.appId = appId; - this.messenger = messenger; - this.sessionIds = new Vector(); - this.queues = new ConcurrentHashMap<>(); - queueWaitHandler = new Handler(); - registeredTransports = new SparseArray>(); - awaitingSession = new Vector<>(); - setDeathNote(); - routerMessagingVersion = 1; - } - /** * This is a simple class to hold onto a reference of a registered app. * @param appId the supplied id for this app that is attempting to register @@ -3373,11 +3301,6 @@ public class SdlRouterService extends Service{ } } - @Deprecated - public void handleMessage(int flags, byte[] packet) { - handleMessage(flags,packet,null); - } - public void handleMessage(int flags, byte[] packet, TransportType transportType){ if(flags == TransportConstants.BYTES_TO_SEND_FLAG_LARGE_PACKET_START){ clearBuffer(); @@ -3514,12 +3437,6 @@ public class SdlRouterService extends Service{ private final long timestamp; final Bundle receivedBundle; TransportType transportType; - - @SuppressWarnings("SameParameterValue") - @Deprecated - public PacketWriteTask(byte[] bytes, int offset, int size, int priorityCoefficient) { - this(bytes, offset, size, priorityCoefficient,null); - } public PacketWriteTask(byte[] bytes, int offset, int size, int priorityCoefficient, TransportType transportType){ timestamp = System.currentTimeMillis(); -- cgit v1.2.1 From d5990d96c79b609130aeee5af582fc67c1e15277 Mon Sep 17 00:00:00 2001 From: Joey Grover Date: Wed, 9 Sep 2020 11:52:20 -0400 Subject: Refactor TransportBroker Removed deprecated code, fix a few spelling errors, and refactor some logic, and added restrictTo tag --- .../smartdevicelink/transport/TransportBroker.java | 100 +++++---------------- .../transport/TransportManager.java | 2 +- 2 files changed, 25 insertions(+), 77 deletions(-) diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java index 3851ab563..e2e3c1d87 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java @@ -49,6 +49,9 @@ import android.os.Parcelable; import android.os.RemoteException; import android.os.TransactionTooLargeException; +import androidx.annotation.NonNull; +import androidx.annotation.RestrictTo; + import com.smartdevicelink.protocol.SdlPacket; import com.smartdevicelink.transport.enums.TransportType; import com.smartdevicelink.transport.utl.ByteAraryMessageAssembler; @@ -65,6 +68,7 @@ import java.util.List; import java.util.Locale; +@RestrictTo(RestrictTo.Scope.LIBRARY) public class TransportBroker { private static final String TAG = "SdlTransportBroker"; @@ -80,9 +84,9 @@ public class TransportBroker { private static final TransportRecord LEGACY_TRANSPORT_RECORD = new TransportRecord(TransportType.BLUETOOTH,null); private final String WHERE_TO_REPLY_PREFIX = "com.sdl.android."; - private String appId = null; - private String whereToReply = null; - private Context currentContext = null; + private String appId; + private String whereToReply; + private Context currentContext; private final Object INIT_LOCK = new Object(); private final Object MESSAGE_SEND_LOCK = new Object(); @@ -235,7 +239,6 @@ public class TransportBroker { broker.registeredWithRouterService = false; broker.enableLegacyMode(true); //We call this so we can start the process of legacy connection - //onHardwareDisconnected(TransportType.BLUETOOTH); broker.onLegacyModeEnabled(); break; default: @@ -251,7 +254,6 @@ public class TransportBroker { if (msg.arg1 == TransportConstants.UNREGISTRATION_RESPONSE_SUCESS) { // We've been unregistered. Now what? - } else { //We were denied our unregister request to the router service, let's see why DebugTool.logWarning(TAG, "Unregister request denied from router service. Reason - " + msg.arg1); //Do we care? @@ -263,7 +265,7 @@ public class TransportBroker { DebugTool.logWarning(TAG, "Received packet message from router service with no bundle"); return; } - //So the intent has a packet with it. PEFRECT! Let's send it through the library + //So the intent has a packet with it. PERFECT! Let's send it through the library int flags = bundle.getInt(TransportConstants.BYTES_TO_SEND_FLAGS, TransportConstants.BYTES_TO_SEND_FLAG_NONE); if (bundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)) { @@ -310,10 +312,8 @@ public class TransportBroker { broker.bufferedPacket = null; } } - //} - //} } else { - DebugTool.logWarning(TAG, "Flase positive packet reception"); + DebugTool.logWarning(TAG, "False positive packet reception"); } break; case TransportConstants.HARDWARE_CONNECTION_EVENT: @@ -393,25 +393,19 @@ public class TransportBroker { @SuppressLint("SimpleDateFormat") - public TransportBroker(Context context, String appId, ComponentName service) { + public TransportBroker(@NonNull Context context, @NonNull String appId, @NonNull ComponentName service) { synchronized (INIT_LOCK) { + this.appId = appId; + currentContext = context; + this.routerService = service; + clientMessenger = new Messenger(new ClientHandler(this)); initRouterConnection(); - //So the user should have set the AppId, lets define where the intents need to be sent + + //So the user should have set the AppId, lets define where the messages need to be sent SimpleDateFormat s = new SimpleDateFormat("hhmmssss"); //So we have a time stamp of the event String timeStamp = s.format(new Date(System.currentTimeMillis())); - if (whereToReply == null) { - if (appId == null) { //This should really just throw an error - whereToReply = WHERE_TO_REPLY_PREFIX + "." + timeStamp; - } else { - whereToReply = WHERE_TO_REPLY_PREFIX + appId + "." + timeStamp; - } - } - //this.appId = appId.concat(timeStamp); - this.appId = appId; - currentContext = context; - //Log.d(TAG, "Registering our reply receiver: " + whereToReply); - this.routerService = service; + whereToReply = WHERE_TO_REPLY_PREFIX + appId + "." + timeStamp; } } @@ -422,7 +416,7 @@ public class TransportBroker { //Log.d(TAG, "Starting up transport broker for " + whereToReply); synchronized (INIT_LOCK) { if (currentContext == null) { - throw new IllegalStateException("This instance can't be started since it's local reference of context is null. Ensure when suppling a context to the TransportBroker that it is valid"); + throw new IllegalStateException("This instance can't be started since it's local reference of context is null. Ensure when supplying a context to the TransportBroker that it is valid"); } if (routerConnection == null) { initRouterConnection(); @@ -479,31 +473,11 @@ public class TransportBroker { public void onServiceUnregsiteredFromRouterService(int unregisterCode) { } - @Deprecated - public void onHardwareDisconnected(TransportType type) { - stop(); - } public void onHardwareDisconnected(TransportRecord record, List connectedTransports) { } - /** - * WILL NO LONGER BE CALLED - * - * @param type - * @return - */ - @Deprecated - public boolean onHardwareConnected(TransportType type) { - synchronized (INIT_LOCK) { - if (routerServiceMessenger == null) { - return false; - } - return true; - } - } - public boolean onHardwareConnected(List transports) { synchronized (INIT_LOCK) { if (routerServiceMessenger == null && transports != null && transports.size() > 0) { @@ -525,30 +499,6 @@ public class TransportBroker { return routerServiceVersion; } - /** - * We want to check to see if the Router service is already up and running - * - * @param context - * @return - */ - private boolean isRouterServiceRunning(Context context) { - if (context == null) { - - return false; - } - ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { - //We will check to see if it contains this name, should be pretty specific - if ((service.service.getClassName()).toLowerCase(Locale.US).contains(SdlBroadcastReceiver.SDL_ROUTER_SERVICE_CLASS_NAME)) { - this.routerClassName = service.service.getClassName(); - this.routerPackage = service.service.getPackageName(); - return true; - } - } - return false; - } - - public boolean sendPacketToRouterService(SdlPacket packet) { //We use ints because that is all that is supported by the outputstream class //Log.d(TAG,whereToReply + "Sending packet to router service"); @@ -617,16 +567,14 @@ public class TransportBroker { } //Make sure we know where to bind to if (this.routerService == null) { - if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.O) && !isRouterServiceRunning(getContext())) {//We should be able to ignore this case because of the validation now - DebugTool.logInfo(TAG, whereToReply + " found no router service. Shutting down."); - this.onHardwareDisconnected(null); - return false; - } - } else {//We were already told where to bind. This should be the case. - this.routerClassName = this.routerService.getClassName(); - this.routerPackage = this.routerService.getPackageName(); + DebugTool.logInfo(TAG, whereToReply + " has no router service reference; should shut down."); + return false; } + this.routerClassName = this.routerService.getClassName(); + this.routerPackage = this.routerService.getPackageName(); + + if (!sendBindingIntent()) { DebugTool.logError(TAG, "Something went wrong while trying to bind with the router service."); SdlBroadcastReceiver.queryForConnectedService(currentContext); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java index c653c7d93..e3614faa9 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java @@ -97,7 +97,7 @@ public class TransportManager extends TransportManagerBase{ @Override public void onFinishedValidation(boolean valid, ComponentName name) { DebugTool.logInfo(TAG, "onFinishedValidation valid=" + valid + "; name=" + ((name == null)? "null" : name.getPackageName())); - if (valid) { + if (valid && name != null) { mConfig.service = name; transport = new TransportBrokerImpl(contextWeakReference.get(), mConfig.appId, mConfig.service); DebugTool.logInfo(TAG, "TransportManager start was called; transport=" + transport); -- cgit v1.2.1 From 08cd0e729b4f07f6a4d29fabfd0f113f1cca6d2f Mon Sep 17 00:00:00 2001 From: Joey Grover Date: Wed, 9 Sep 2020 12:04:20 -0400 Subject: Remove constant from TransportConstants --- .../main/java/com/smartdevicelink/transport/TransportConstants.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/base/src/main/java/com/smartdevicelink/transport/TransportConstants.java b/base/src/main/java/com/smartdevicelink/transport/TransportConstants.java index 19579c19b..7fbcde80d 100644 --- a/base/src/main/java/com/smartdevicelink/transport/TransportConstants.java +++ b/base/src/main/java/com/smartdevicelink/transport/TransportConstants.java @@ -65,8 +65,6 @@ public class TransportConstants { public static final String FORCE_TRANSPORT_CONNECTED = "force_connect"; //This is legacy, do not refactor this. public static final String ROUTER_SERVICE_VALIDATED = "router_service_validated"; - @Deprecated - public static final String REPLY_TO_INTENT_EXTRA = "ReplyAddress"; public static final String CONNECT_AS_CLIENT_BOOLEAN_EXTRA = "connectAsClient"; public static final String PACKAGE_NAME_STRING = "package.name"; public static final String APP_ID_EXTRA = "app.id";//Sent as a Long. This is no longer used @@ -78,7 +76,7 @@ public class TransportConstants { public static final String ENABLE_LEGACY_MODE_EXTRA = "ENABLE_LEGACY_MODE_EXTRA"; @Deprecated - public static final String HARDWARE_DISCONNECTED = "hardware.disconect"; + public static final String HARDWARE_DISCONNECTED = "hardware.disconect"; //This is legacy, do not refactor this. public static final String TRANSPORT_DISCONNECTED = "transport.disconect"; public static final String HARDWARE_CONNECTED = "hardware.connected"; public static final String CURRENT_HARDWARE_CONNECTED = "current.hardware.connected"; -- cgit v1.2.1