diff options
author | Alexander Dorokhine <adorokhine@google.com> | 2016-12-06 19:26:41 -0800 |
---|---|---|
committer | Alexander Dorokhine <adorokhine@google.com> | 2016-12-07 18:12:39 -0800 |
commit | acc0748fce28b7cc1ff95a47d73ad77a49806cfd (patch) | |
tree | ead19ca61f30194db40eb4df8a88656ca96aa7dd /third_party/sl4a/src | |
parent | a113c04e0bf87ad3bf0b480e5a18bc18bf845f14 (diff) | |
download | mobly-snippet-lib-acc0748fce28b7cc1ff95a47d73ad77a49806cfd.tar.gz |
Remove the 'facade' package and FacadeManager.
Merge the sdk checking code into SnippetManager.
Move the main Snippet interface to the root package.
Diffstat (limited to 'third_party/sl4a/src')
8 files changed, 54 insertions, 106 deletions
diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/Snippet.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/Snippet.java index a6286a0..fb3a1b9 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/Snippet.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/Snippet.java @@ -14,7 +14,7 @@ * the License. */ -package com.google.android.mobly.snippet.rpc; +package com.google.android.mobly.snippet; public interface Snippet { /** Invoked when the receiver is shut down. */ diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/facade/FacadeManager.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/facade/FacadeManager.java deleted file mode 100644 index a3160c7..0000000 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/facade/FacadeManager.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2016 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.android.mobly.snippet.facade; - -import android.content.Context; - -import com.google.android.mobly.snippet.rpc.RpcMinSdk; -import com.google.android.mobly.snippet.rpc.Snippet; -import com.google.android.mobly.snippet.rpc.SnippetManager; -import com.google.android.mobly.snippet.util.SnippetLibException; -import com.google.android.mobly.snippet.util.Log; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Collection; - -public class FacadeManager extends SnippetManager { - - private int mSdkLevel; - - public FacadeManager(int sdkLevel, Collection<Class<? extends Snippet>> classList) { - super(classList); - mSdkLevel = sdkLevel; - } - - @Override - public Object invoke(Class<? extends Snippet> clazz, Method method, Object[] args) - throws Exception { - if (method.isAnnotationPresent(RpcMinSdk.class)) { - int requiredSdkLevel = method.getAnnotation(RpcMinSdk.class).value(); - if (mSdkLevel < requiredSdkLevel) { - throw new SnippetLibException( - String.format("%s requires API level %d, current level is %d", - method.getName(), requiredSdkLevel, mSdkLevel)); - } - } - return super.invoke(clazz, method, args); - } -} diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/facade/ReflectionFacadeManagerFactory.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/manager/ReflectionSnippetManagerFactory.java index 1b626b5..eb97481 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/facade/ReflectionFacadeManagerFactory.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/manager/ReflectionSnippetManagerFactory.java @@ -14,7 +14,7 @@ * the License. */ -package com.google.android.mobly.snippet.facade; +package com.google.android.mobly.snippet.manager; import android.content.Context; import android.content.pm.ApplicationInfo; @@ -22,9 +22,7 @@ import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; -import com.google.android.mobly.snippet.rpc.Snippet; -import com.google.android.mobly.snippet.rpc.SnippetManager; -import com.google.android.mobly.snippet.rpc.SnippetManagerFactory; +import com.google.android.mobly.snippet.Snippet; import com.google.android.mobly.snippet.util.Log; import java.util.Collections; @@ -33,25 +31,25 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -public class ReflectionFacadeManagerFactory implements SnippetManagerFactory { +public class ReflectionSnippetManagerFactory implements SnippetManagerFactory { private static final String METADATA_TAG_NAME = "mobly-snippets"; private final Context mContext; private final Set<Class<? extends Snippet>> mClasses; private final Map<Integer, SnippetManager> mSnippetManagers; - public ReflectionFacadeManagerFactory(Context context) { + public ReflectionSnippetManagerFactory(Context context) { mContext = context; mClasses = loadSnippets(); mSnippetManagers = new HashMap<>(); } @Override - public FacadeManager create(Integer UID) { + public SnippetManager create(Integer UID) { int sdkLevel = Build.VERSION.SDK_INT; - FacadeManager facadeManager = new FacadeManager(sdkLevel, mClasses); - mSnippetManagers.put(UID, facadeManager); - return facadeManager; + SnippetManager manager = new SnippetManager(mClasses); + mSnippetManagers.put(UID, manager); + return manager; } @Override diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/SnippetManager.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/manager/SnippetManager.java index d118707..edb872b 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/SnippetManager.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/manager/SnippetManager.java @@ -14,29 +14,27 @@ * the License. */ -package com.google.android.mobly.snippet.rpc; +package com.google.android.mobly.snippet.manager; -import android.content.Context; +import android.os.Build; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import com.google.android.mobly.snippet.Snippet; +import com.google.android.mobly.snippet.rpc.MethodDescriptor; +import com.google.android.mobly.snippet.rpc.RpcMinSdk; import com.google.android.mobly.snippet.util.Log; +import com.google.android.mobly.snippet.util.SnippetLibException; -public abstract class SnippetManager { - +public class SnippetManager { private final Map<Class<? extends Snippet>, Snippet> mReceivers; - - /** - * A map of strings to known RPCs. - */ + /** A map of strings to known RPCs. */ private final Map<String, MethodDescriptor> mKnownRpcs = new HashMap<String, MethodDescriptor>(); public SnippetManager(Collection<Class<? extends Snippet>> classList) { @@ -56,24 +54,6 @@ public abstract class SnippetManager { } } - private Snippet get(Class<? extends Snippet> clazz) { - Snippet object = mReceivers.get(clazz); - if (object != null) { - return object; - } - - Constructor<? extends Snippet> constructor; - try { - constructor = clazz.getConstructor(); - object = constructor.newInstance(); - mReceivers.put(clazz, object); - } catch (Exception e) { - Log.e(e); - } - - return object; - } - public MethodDescriptor getMethodDescriptor(String methodName) { return mKnownRpcs.get(methodName); } @@ -84,6 +64,14 @@ public abstract class SnippetManager { public Object invoke(Class<? extends Snippet> clazz, Method method, Object[] args) throws Exception { + if (method.isAnnotationPresent(RpcMinSdk.class)) { + int requiredSdkLevel = method.getAnnotation(RpcMinSdk.class).value(); + if (Build.VERSION.SDK_INT < requiredSdkLevel) { + throw new SnippetLibException( + String.format("%s requires API level %d, current level is %d", + method.getName(), requiredSdkLevel, Build.VERSION.SDK_INT)); + } + } Snippet object = get(clazz); return method.invoke(object, args); } @@ -99,4 +87,22 @@ public abstract class SnippetManager { } } } + + private Snippet get(Class<? extends Snippet> clazz) { + Snippet object = mReceivers.get(clazz); + if (object != null) { + return object; + } + + Constructor<? extends Snippet> constructor; + try { + constructor = clazz.getConstructor(); + object = constructor.newInstance(); + mReceivers.put(clazz, object); + } catch (Exception e) { + Log.e(e); + } + + return object; + } } diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/SnippetManagerFactory.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/manager/SnippetManagerFactory.java index f1d16b2..9acb273 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/SnippetManagerFactory.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/manager/SnippetManagerFactory.java @@ -14,7 +14,7 @@ * the License. */ -package com.google.android.mobly.snippet.rpc; +package com.google.android.mobly.snippet.manager; import java.util.Map; diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/AndroidProxy.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/AndroidProxy.java index fd13b3f..0ae764f 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/AndroidProxy.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/AndroidProxy.java @@ -18,7 +18,8 @@ package com.google.android.mobly.snippet.rpc; import android.content.Context; -import com.google.android.mobly.snippet.facade.ReflectionFacadeManagerFactory; +import com.google.android.mobly.snippet.manager.ReflectionSnippetManagerFactory; +import com.google.android.mobly.snippet.manager.SnippetManagerFactory; import java.net.InetSocketAddress; @@ -26,11 +27,11 @@ public class AndroidProxy { private InetSocketAddress mAddress; private final JsonRpcServer mJsonRpcServer; - private final SnippetManagerFactory mFacadeManagerFactory; + private final SnippetManagerFactory mSnippetManagerFactory; public AndroidProxy(Context context) { - mFacadeManagerFactory = new ReflectionFacadeManagerFactory(context); - mJsonRpcServer = new JsonRpcServer(mFacadeManagerFactory); + mSnippetManagerFactory = new ReflectionSnippetManagerFactory(context); + mJsonRpcServer = new JsonRpcServer(mSnippetManagerFactory); } public InetSocketAddress startLocal(int port) { diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java index 6834507..398dc3f 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonRpcServer.java @@ -16,6 +16,8 @@ package com.google.android.mobly.snippet.rpc; +import com.google.android.mobly.snippet.manager.SnippetManager; +import com.google.android.mobly.snippet.manager.SnippetManagerFactory; import com.google.android.mobly.snippet.util.Log; import java.io.BufferedReader; @@ -49,8 +51,7 @@ public class JsonRpcServer extends SimpleServer { public void shutdown() { super.shutdown(); // Notify all RPC receiving objects. They may have to clean up some of their state. - for (SnippetManager manager : mSnippetManagerFactory.getSnippetManagers() - .values()) { + for (SnippetManager manager : mSnippetManagerFactory.getSnippetManagers().values()) { manager.shutdown(); } } diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/MethodDescriptor.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/MethodDescriptor.java index c110da0..8d18582 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/MethodDescriptor.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/MethodDescriptor.java @@ -18,21 +18,16 @@ package com.google.android.mobly.snippet.rpc; import android.content.Intent; import android.net.Uri; -import android.os.Bundle; -import android.os.Parcelable; +import com.google.android.mobly.snippet.Snippet; +import com.google.android.mobly.snippet.manager.SnippetManager; import com.google.android.mobly.snippet.util.AndroidUtil; -import java.lang.annotation.Annotation; -import java.lang.reflect.Constructor; import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.json.JSONArray; import org.json.JSONException; |