diff --git a/README.md b/README.md index b159cc2ad4c532845715dc7fca8466efaf04d811..dbfe6976f282dfcc0b6f39c6ff5de3bc56ea84fd 100644 --- a/README.md +++ b/README.md @@ -38,13 +38,13 @@ 2.在entry模块的build.gradle文件中, ``` dependencies { - implementation 'com.gitee.chinasoft_ohos:router_api:0.0.1-SNAPSHOT' - annotationProcessor 'com.gitee.chinasoft_ohos:router_compiler:0.0.1-SNAPSHOT' + implementation 'com.gitee.chinasoft_ohos:router_api:0.0.2-SNAPSHOT' + annotationProcessor 'com.gitee.chinasoft_ohos:router_compiler:0.0.2-SNAPSHOT' ...... } ``` -在sdk5,DevEco Studio2.1 Release下项目可直接运行 +在sdk6,DevEco Studio2.2 Beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 diff --git a/entry/src/main/java/com/lzh/nonview/router/demo/MyApplication.java b/entry/src/main/java/com/lzh/nonview/router/demo/MyApplication.java index f833e679e78c1662523ce06e45dc3597e2301219..8b812ed0375474fd2afc2231151ea93806c3d590 100644 --- a/entry/src/main/java/com/lzh/nonview/router/demo/MyApplication.java +++ b/entry/src/main/java/com/lzh/nonview/router/demo/MyApplication.java @@ -26,9 +26,8 @@ public class MyApplication extends AbilityPackage { /** * 设置默认路由拦截器:所有路由跳转均会被触发(除了需要直接打开浏览器的链接) */ - // RouteInterceptor interceptor = new DefaultInterceptor(); RouterConfiguration.get().setInterceptor(interceptor); - Router.DEBUG = true; + Router.setDebug(true); } } diff --git a/router_anno/src/main/java/com/lzh/nonview/router/anno/ActionLauncher.java b/router_anno/src/main/java/com/lzh/nonview/router/anno/ActionLauncher.java index 74a83a14236342a168598a063c9b9376174fc4a1..5dcdae3afafb1629fb8028a2042310882cbfb834 100644 --- a/router_anno/src/main/java/com/lzh/nonview/router/anno/ActionLauncher.java +++ b/router_anno/src/main/java/com/lzh/nonview/router/anno/ActionLauncher.java @@ -4,12 +4,19 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; - /** - * @author wjt + * ActionLauncher + * + * @author:wjt + * @since 2021-04-06 */ @Retention(RetentionPolicy.CLASS) @Target({ElementType.TYPE}) public @interface ActionLauncher { + /** + * value + * + * @return Class + */ Class value(); } diff --git a/router_anno/src/main/java/com/lzh/nonview/router/anno/ActivityLauncher.java b/router_anno/src/main/java/com/lzh/nonview/router/anno/ActivityLauncher.java index 5bb2ede3a4bf1eca293a6d567b214832d6de9d6f..0eff586f9977d482bd4afcf4770a806d378b858a 100644 --- a/router_anno/src/main/java/com/lzh/nonview/router/anno/ActivityLauncher.java +++ b/router_anno/src/main/java/com/lzh/nonview/router/anno/ActivityLauncher.java @@ -6,10 +6,17 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * @author wjt + * ActivityLauncher + * + * @since 2021-04-06 */ @Retention(RetentionPolicy.CLASS) @Target({ElementType.TYPE}) public @interface ActivityLauncher { + /** + * value + * + * @return Class + */ Class value(); } diff --git a/router_api/src/main/java/com/lzh/nonview/router/Router.java b/router_api/src/main/java/com/lzh/nonview/router/Router.java index f6b9f03c5fb39630d697b7b36c1292bdae141783..29950203d501753310bfda01ee370fc25afe66b7 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/Router.java +++ b/router_api/src/main/java/com/lzh/nonview/router/Router.java @@ -37,8 +37,6 @@ import com.lzh.nonview.router.tools.Constants; import com.lzh.nonview.router.tools.Utils; import ohos.aafwk.ability.Ability; import ohos.aafwk.content.IntentParams; -import ohos.app.AbilityContext; -import ohos.app.Context; import ohos.utils.net.Uri; import java.util.concurrent.Executor; @@ -49,7 +47,7 @@ import java.util.concurrent.Executor; * * @author haoge */ -public final class Router{ +public final class Router { /** * 原始uri的关键。 您可以通过此键获取uri,例如: @@ -58,15 +56,17 @@ public final class Router{ * haoge://page/intent/printer?title=动态登录检查&requestLogin=1 */ public static final String RAW_URI = "_ROUTER_RAW_URI_KEY_"; - public static boolean DEBUG = false; - + /** + * DEBUG + */ + private static boolean debug = false; private Uri uri; private String url; private InternalCallback internalCallback; private Router(String url) { - this.url= url; - this.uri = Uri.parse(url == null?"":url); + this.url = url; + this.uri = Uri.parse(url == null ? "" : url); internalCallback = new InternalCallback(uri); } @@ -81,17 +81,30 @@ public final class Router{ return new Router(url); } + public static boolean isDebug() { + return debug; + } + public static void setDebug(boolean debug) { + Router.debug = debug; + } + /** + * createInstanceRouter + * + * @param url + * @return InstanceRouter + */ public static InstanceRouter createInstanceRouter(String url) { return InstanceRouter.build(url); } /** * Set a callback to notify the user when the routing were success or failure. + * * @param callback The callback you set. * @return Router itself */ - public Router setCallback (RouteCallback callback) { + public Router setCallback(RouteCallback callback) { this.internalCallback.setCallback(callback); return this; } @@ -139,7 +152,8 @@ public final class Router{ /** * Restore a Routing event from last uri and extras. - * @param uri last uri + * + * @param uri last uri * @param extras last extras * @return The restored routing find by {@link Router#getRoute()} */ @@ -153,6 +167,7 @@ public final class Router{ /** * launch 路由任务. + * * @param context context to launched */ public void open(Ability context) { @@ -165,14 +180,14 @@ public final class Router{ * * @return An IRoute object.it will be BrowserRoute, ActivityRoute or ActionRoute. */ - public IRoute getRoute () { + public IRoute getRoute() { IRoute route = getLocalRoute(); if (!(route instanceof IRoute.EmptyRoute)) { return route; } route = HostServiceWrapper.create(url, internalCallback); if (route instanceof IRoute.EmptyRoute) { - notifyNotFound(String.format("find Route by %s failed:",uri)); + notifyNotFound(String.format("find Route by %s failed:", uri)); } return route; } @@ -202,6 +217,7 @@ public final class Router{ * Get {@link IBaseRoute} by uri, it could be one of {@link IActivityRoute} or {@link IActionRoute}. * and you can add some { } data and {@link RouteInterceptor} into it. *

+ * * @return returns an {@link IBaseRoute} finds by uri or {@link IBaseRoute.EmptyBaseRoute} for not found */ public IBaseRoute getBaseRoute() { @@ -210,12 +226,13 @@ public final class Router{ return (IBaseRoute) route; } - notifyNotFound(String.format("find BaseRoute by %s failed, but is %s",uri, route.getClass().getSimpleName())); + notifyNotFound(String.format("find BaseRoute by %s failed, but is %s", uri, route.getClass().getSimpleName())); return new IBaseRoute.EmptyBaseRoute(internalCallback); } /** * Get {@link IActivityRoute} by uri,you should get a route by this way and set some extras data before open + * * @return returns an {@link IActivityRoute} finds by uri or {@link IActivityRoute.EmptyActivityRoute} for not found. */ public IActivityRoute getActivityRoute() { @@ -225,12 +242,13 @@ public final class Router{ } // return an empty route to avoid NullPointException - notifyNotFound(String.format("find ActivityRoute by %s failed, but is %s",uri, route.getClass().getSimpleName())); + notifyNotFound(String.format("find ActivityRoute by %s failed, but is %s", uri, route.getClass().getSimpleName())); return new IActivityRoute.EmptyActivityRoute(internalCallback); } /** * Get {@link IActionRoute} by uri,you should get a route by this way and set some extras data before open + * * @return returns an {@link IActionRoute} finds by uri or {@link IActionRoute.EmptyActionRoute} for not found. */ public IActionRoute getActionRoute() { @@ -239,7 +257,7 @@ public final class Router{ return (IActionRoute) route; } - notifyNotFound(String.format("find ActionRoute by %s failed, but is %s",uri, route.getClass().getSimpleName())); + notifyNotFound(String.format("find ActionRoute by %s failed, but is %s", uri, route.getClass().getSimpleName())); // return a empty route to avoid NullPointException return new IActionRoute.EmptyActionRoute(internalCallback); } diff --git a/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultCallback.java b/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultCallback.java index 1c0142257fb2b420fe326b54af38a3a89ac65bf5..b19f49501ac28e1e85c77c48f5f60ab0ba728fc7 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultCallback.java +++ b/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultCallback.java @@ -4,11 +4,14 @@ package com.lzh.nonview.router.activityresult; import ohos.aafwk.content.Intent; /** - * @author wjt + * ActivityResultCallback + * + * @since 2021-04-06 */ public interface ActivityResultCallback { /** * 回调结果 + * * @param resultCode 返回码 * @param data 数据 */ diff --git a/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultDispatcher.java b/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultDispatcher.java index a618ad217b8ce773ec4b524c022861715593d53e..ae65a791ce532c287ad2aa31613c759ca0925374 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultDispatcher.java +++ b/router_api/src/main/java/com/lzh/nonview/router/activityresult/ActivityResultDispatcher.java @@ -10,21 +10,38 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Set; /** - * @author wjt + * ActivityResultDispatcher + * + * @since 2021-04-06 */ public final class ActivityResultDispatcher { - + private static ActivityResultDispatcher dispatcher = new ActivityResultDispatcher(); private Map> container = new HashMap<>(); - private static ActivityResultDispatcher dispatcher = new ActivityResultDispatcher(); - private ActivityResultDispatcher(){ } + /** + * 构造 + */ + private ActivityResultDispatcher() { + } + + /** + * get + * + * @return ActivityResultDispatcher + */ public static ActivityResultDispatcher get() { return dispatcher; } + /** + * bindRequestArgs + * + * @param activity + * @param requestCode + * @param callback + */ public void bindRequestArgs(Ability activity, int requestCode, ActivityResultCallback callback) { if (!Utils.isValid(activity) || callback == null @@ -36,6 +53,15 @@ public final class ActivityResultDispatcher { list.add(new RequestArgs(requestCode, callback)); } + /** + * dispatchActivityResult + * + * @param activity + * @param requestCode + * @param resultCode + * @param data + * @return boolean + */ public boolean dispatchActivityResult(Ability activity, int requestCode, int resultCode, Intent data) { if (!container.containsKey(activity)) { return false; @@ -43,7 +69,7 @@ public final class ActivityResultDispatcher { boolean handle = false; List list = findListByKey(activity); - for (RequestArgs args:list) { + for (RequestArgs args : list) { if (args.requestCode == requestCode) { args.callback.onResult(resultCode, data); list.remove(args); @@ -58,17 +84,22 @@ public final class ActivityResultDispatcher { // 移除无效的条目:比如当前activity在后台时被回收了 private void releaseInvalidItems() { - Set keys = container.keySet(); - Iterator iterator = keys.iterator(); - while (iterator.hasNext()) { - Ability next = iterator.next(); - if (!Utils.isValid(next) - || container.get(next).isEmpty()) { - iterator.remove(); + Iterator>> iterator1 = container.entrySet().iterator(); + while (iterator1.hasNext()) { + Map.Entry> next = iterator1.next(); + Ability nextAbility = next.getKey(); + if (!Utils.isValid(nextAbility)) { + iterator1.remove(); } } } + /** + * findListByKey + * + * @param activity + * @return List + */ private List findListByKey(Ability activity) { List list = container.get(activity); if (list == null) { @@ -78,10 +109,21 @@ public final class ActivityResultDispatcher { return list; } + /** + * 主页面 + * + * @since 2021-04-06 + */ private static class RequestArgs { int requestCode; ActivityResultCallback callback; + /** + * RequestArgs + * + * @param requestCode + * @param callback + */ public RequestArgs(int requestCode, ActivityResultCallback callback) { this.requestCode = requestCode; this.callback = callback; diff --git a/router_api/src/main/java/com/lzh/nonview/router/launcher/ActivityLauncher.java b/router_api/src/main/java/com/lzh/nonview/router/launcher/ActivityLauncher.java index 435290b34ab129b7680e556530bfc14a379284cc..528852d11c2c539c5b88271d7bad1bac5dd67f09 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/launcher/ActivityLauncher.java +++ b/router_api/src/main/java/com/lzh/nonview/router/launcher/ActivityLauncher.java @@ -18,29 +18,28 @@ package com.lzh.nonview.router.launcher; import ohos.aafwk.ability.Ability; import ohos.aafwk.ability.fraction.Fraction; import ohos.aafwk.content.Intent; -import ohos.app.Context; /** * The base class of Activity Launcher + * he default impl is {@link DefaultActivityLauncher} * - *

- * The default impl is {@link DefaultActivityLauncher} - *

+ * @since 2021-04-06 */ public abstract class ActivityLauncher extends Launcher{ /** - *调用时将调用此方法 {@link com.lzh.nonview.router.route.ActivityRoute#} + * 调用时将调用此方法 * - * @param context The context instance. - * @return The new intent that created by the launcher + * @param context + * @return Intent */ public abstract Intent createIntent(Ability context); /** - * Fraction: todo 要想使用Fraction,必须让Ability继承FractionAbility - * @param fragment The fragment instance + * Fraction + * + * @param fragment * @throws Exception a error occurs */ public abstract void open(Fraction fragment) throws Exception; diff --git a/router_api/src/main/java/com/lzh/nonview/router/module/ActionRouteRule.java b/router_api/src/main/java/com/lzh/nonview/router/module/ActionRouteRule.java index 363f4b967eef36d199a4d83f7db4212b55400c34..9aa229926fb42ed6f52f2b96478ed85263067a06 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/module/ActionRouteRule.java +++ b/router_api/src/main/java/com/lzh/nonview/router/module/ActionRouteRule.java @@ -22,20 +22,42 @@ import com.lzh.nonview.router.route.ActionSupport; import java.util.concurrent.Executor; /** - * @author wjt + * ActionRouteRule + * + * @since 2021-04-06 */ public class ActionRouteRule extends RouteRule { + /** + * executor + */ private Class executor = MainThreadExecutor.class; + /** + * ActionRouteRule + * + * @param clz + * @param + */ public ActionRouteRule(Class clz) { super(clz.getCanonicalName()); } + /** + * ActionRouteRule + * + * @param clzName + */ public ActionRouteRule(String clzName) { super(clzName); } + /** + * setExecutorClass + * + * @param executor + * @return ActionRouteRule + */ public ActionRouteRule setExecutorClass(Class executor) { if (executor != null) { this.executor = executor; diff --git a/router_api/src/main/java/com/lzh/nonview/router/module/ActivityRouteRule.java b/router_api/src/main/java/com/lzh/nonview/router/module/ActivityRouteRule.java index 652b283e3f8459b68e385240fdaa19e111815b5b..c8ee9555e575f3f71eebe73d717f64d1104e3d62 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/module/ActivityRouteRule.java +++ b/router_api/src/main/java/com/lzh/nonview/router/module/ActivityRouteRule.java @@ -21,14 +21,27 @@ import com.lzh.nonview.router.launcher.ActivityLauncher; import ohos.aafwk.ability.Ability; /** - * @author wjt + * 主页面 + * + * @since 2021-04-06 */ public class ActivityRouteRule extends RouteRule { + /** + * ActivityRouteRule + * + * @param clz + * @param + */ public ActivityRouteRule(Class clz) { super(clz.getCanonicalName()); } + /** + * ActivityRouteRule + * + * @param clzName + */ public ActivityRouteRule(String clzName) { super(clzName); } diff --git a/router_api/src/main/java/com/lzh/nonview/router/module/RouteRule.java b/router_api/src/main/java/com/lzh/nonview/router/module/RouteRule.java index 03906a2b542a12cd3d94324d0d0b418efa23aa22..d109316566fc9fc356f185413cbfc3572503ac22 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/module/RouteRule.java +++ b/router_api/src/main/java/com/lzh/nonview/router/module/RouteRule.java @@ -68,7 +68,7 @@ public class RouteRule{ } public Class[] getInterceptors() { - return interceptors; + return interceptors.clone(); } public R setLauncher(Class launcher) { diff --git a/router_api/src/main/java/com/lzh/nonview/router/protocol/HostServiceWrapper.java b/router_api/src/main/java/com/lzh/nonview/router/protocol/HostServiceWrapper.java index 80da0b466dccccc3151d77109868ee2104291334..cb70539877e3bf3704e0f8479f3c38ec135b5c59 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/protocol/HostServiceWrapper.java +++ b/router_api/src/main/java/com/lzh/nonview/router/protocol/HostServiceWrapper.java @@ -38,6 +38,7 @@ import ohos.rpc.IRemoteObject; import ohos.utils.net.Uri; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; /** @@ -138,11 +139,20 @@ public class HostServiceWrapper { private static Map transform(Map source){ Map dest = new HashMap<>(); - for (String route : source.keySet()) { - RouteRule rule = source.get(route); - RemoteRule remote = RemoteRule.create(rule, getRemote(context, rule)); - dest.put(route, remote); + Iterator> ii= source.entrySet().iterator(); + while(ii.hasNext()){ + Map.Entry next = (Map.Entry) ii.next(); + String key = next.getKey(); + RouteRule value = next.getValue(); + RemoteRule remote = RemoteRule.create(value, getRemote(context, value)); + dest.put(key, remote); } +// Map dest = new HashMap<>(); +// for (String route : source.keySet()) { +// RouteRule rule = source.get(route); +// RemoteRule remote = RemoteRule.create(rule, getRemote(context, rule)); +// dest.put(route, remote); +// } return dest; } diff --git a/router_api/src/main/java/com/lzh/nonview/router/route/ActionRoute.java b/router_api/src/main/java/com/lzh/nonview/router/route/ActionRoute.java index facdfb5981576350ecef87ba999da5baf9a85d51..8e5403fb07ee42dbf3b28b8ebf567b457abbe171 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/route/ActionRoute.java +++ b/router_api/src/main/java/com/lzh/nonview/router/route/ActionRoute.java @@ -24,7 +24,9 @@ import com.lzh.nonview.router.tools.Constants; import java.util.concurrent.Executor; /** - * @author wjt + * ActionRoute + * + * @since 2021-04-06 */ public class ActionRoute extends BaseRoute implements IActionRoute { diff --git a/router_api/src/main/java/com/lzh/nonview/router/route/ActionSupport.java b/router_api/src/main/java/com/lzh/nonview/router/route/ActionSupport.java index 837bdbb67bffc280a333b13cbdb3126154b88b30..b85d438285e4366822d5c54fb56903438c046356 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/route/ActionSupport.java +++ b/router_api/src/main/java/com/lzh/nonview/router/route/ActionSupport.java @@ -21,6 +21,8 @@ import ohos.app.Context; /** * 您可以从此类继承以创建动作路由事件 + * + * @since 2021-04-06 */ public abstract class ActionSupport { diff --git a/router_api/src/main/java/com/lzh/nonview/router/route/ActivityRoute.java b/router_api/src/main/java/com/lzh/nonview/router/route/ActivityRoute.java index cddeb1dbc7a51554120a37567210cd9490e2106a..ee2167f238864f44ce52f77c44a7859c33c022e8 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/route/ActivityRoute.java +++ b/router_api/src/main/java/com/lzh/nonview/router/route/ActivityRoute.java @@ -32,8 +32,7 @@ import ohos.app.Context; /** * 用于通过uri检查路线规则和启动活动的路线工具 * - * @author lzh - * @date 16/9/5 + * @since 2021-04-06 */ public class ActivityRoute extends BaseRoute implements IActivityRoute { @@ -92,7 +91,7 @@ public class ActivityRoute extends BaseRoute implements IActivit } @Override - protected Launcher obtainLauncher() throws Exception{ + protected Launcher obtainLauncher() throws Exception { ActivityRouteRule rule = (ActivityRouteRule) routeRule; Class launcher = rule.getLauncher(); if (launcher == null) { diff --git a/router_api/src/main/java/com/lzh/nonview/router/route/BaseRoute.java b/router_api/src/main/java/com/lzh/nonview/router/route/BaseRoute.java index a19d8637e0ace3a2aa61dfeea0ed0873b2577644..45803dfb36bcf3aabd0999beacb43e02f5c18514 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/route/BaseRoute.java +++ b/router_api/src/main/java/com/lzh/nonview/router/route/BaseRoute.java @@ -33,15 +33,30 @@ import ohos.utils.net.Uri; import java.util.ArrayList; import java.util.List; +/** + * BaseRoute + * + * @since 2021-04-06 + * @param + */ @SuppressWarnings("unchecked") public abstract class BaseRoute implements IRoute, IBaseRoute, RouteInterceptorAction { protected IntentParams bundle; - InternalCallback callback; protected Uri uri; protected IntentParams remote; protected RouteRule routeRule = null; protected Launcher launcher; + InternalCallback callback; + /** + * create + * + * @param uri + * @param rule + * @param remote + * @param callback + * @return IRoute + */ public final IRoute create(Uri uri, RouteRule rule, IntentParams remote, InternalCallback callback) { try { this.uri = uri; @@ -129,7 +144,6 @@ public abstract class BaseRoute implements IRoute, IBaseRo } } } - return interceptors; } diff --git a/router_api/src/main/java/com/lzh/nonview/router/route/BrowserRoute.java b/router_api/src/main/java/com/lzh/nonview/router/route/BrowserRoute.java index ba1771b4e1d82f3728f3fe1fe5b387fe58fb647e..8d4855a49798e17f35623697fdc04cc2e8e86b87 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/route/BrowserRoute.java +++ b/router_api/src/main/java/com/lzh/nonview/router/route/BrowserRoute.java @@ -20,21 +20,18 @@ import com.lzh.nonview.router.tools.Utils; import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Intent; import ohos.aafwk.content.Operation; -import ohos.app.Context; import ohos.utils.net.Uri; /** * 通过浏览器打开uri的路由工具 - * Created by lzh on 16/9/5. + * + * @since 2021-04-06 */ public class BrowserRoute implements IRoute { - + private static final BrowserRoute ROUTE = new BrowserRoute(); Uri uri; - - private static final BrowserRoute route = new BrowserRoute(); - - public static BrowserRoute getInstance () { - return route; + public static BrowserRoute getInstance() { + return ROUTE; } @Override @@ -47,10 +44,22 @@ public class BrowserRoute implements IRoute { context.startAbility(intent2); } + /** + * canOpenRouter + * + * @param uri + * @return boolean + */ public static boolean canOpenRouter(Uri uri) { return Utils.isHttp(uri.getScheme()); } + /** + * setUri + * + * @param uri + * @return IRoute + */ public IRoute setUri(Uri uri) { this.uri = uri; return this; diff --git a/router_api/src/main/java/com/lzh/nonview/router/route/IActivityRoute.java b/router_api/src/main/java/com/lzh/nonview/router/route/IActivityRoute.java index 085b6cb55ba40167708e3be81716fded8a312a31..3db232beaf1382c658ee86632744d720adfe559c 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/route/IActivityRoute.java +++ b/router_api/src/main/java/com/lzh/nonview/router/route/IActivityRoute.java @@ -17,13 +17,11 @@ package com.lzh.nonview.router.route; import com.lzh.nonview.router.activityresult.ActivityResultCallback; -import com.lzh.nonview.router.extras.RouteBundleExtras; import com.lzh.nonview.router.tools.Constants; import ohos.aafwk.ability.Ability; import ohos.aafwk.ability.fraction.Fraction; import ohos.aafwk.content.Intent; import ohos.aafwk.content.IntentParams; -import ohos.app.Context; /** * Base on the IBaseRoute, This interface provided some methods diff --git a/router_api/src/main/java/com/lzh/nonview/router/tools/Cache.java b/router_api/src/main/java/com/lzh/nonview/router/tools/Cache.java index 2981ba25efbefb80b0ed72fe9ec382f81a22b7b2..96be734ecb184a51e89ac13ae897b901c2c04746 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/tools/Cache.java +++ b/router_api/src/main/java/com/lzh/nonview/router/tools/Cache.java @@ -31,30 +31,33 @@ import java.util.concurrent.Executor; /** * The cache manager to holds all the cached instance. + * * @author haoge */ public final class Cache { private static boolean shouldReload;// if should be reload routeMap. - /** A container to contains all of route rule creator,compat with some complex scene*/ + /** + * A container to contains all of route rule creator,compat with some complex scene + */ private static List creatorList = new ArrayList<>(); - /** A map to contains all of route rule created by creatorList*/ - private static Map activityRouteMap = new HashMap<>(); - private static Map actionRouteMap = new HashMap<>(); - private static Map creatorRouteMap = new HashMap<>(); + /** + * A map to contains all of route rule created by creatorList + */ + private static Map activityRouteMap = new HashMap<>(); + private static Map actionRouteMap = new HashMap<>(); + private static Map creatorRouteMap = new HashMap<>(); public static final int TYPE_ACTIVITY_ROUTE = 0; public static final int TYPE_ACTION_ROUTE = 1; private final static Map, Executor> container = new HashMap<>(); /** - *

- * Add a {@link RouteCreator} who contains some route rules to be used. - * this method could be invoked multiple-times. so that you can put multiple route rules from difference modules - *

- * @param creator {@link RouteCreator} + * who contains some route rules to be used.* this method could be invoked multiple-times. so that you can put multiple route rules from difference modules + * + * @param creator */ - public static void addCreator (RouteCreator creator) { + public static void addCreator(RouteCreator creator) { if (creator == null) { throw new IllegalArgumentException("Route creator should not be null"); } @@ -62,21 +65,43 @@ public final class Cache { shouldReload = true; } + /** + * getCreatorRules + * + * @return Map + */ public static Map getCreatorRules() { obtainRouteRulesIfNeed(); return creatorRouteMap; } + /** + * getActionRules + * + * @return Map + */ public static Map getActionRules() { obtainRouteRulesIfNeed(); return actionRouteMap; } - public static Map getActivityRules() { + /** + * getActivityRules + * + * @return Map + */ + public static Map getActivityRules() { obtainRouteRulesIfNeed(); return activityRouteMap; } + /** + * getRouteMapByUri + * + * @param parser + * @param type + * @return RouteRule + */ public static RouteRule getRouteMapByUri(URIParser parser, int type) { //haoge://page/intent/printer String route = parser.getRoute(); Map routes; @@ -88,6 +113,9 @@ public final class Cache { return (RouteRule) routes.get(route); } + /** + * obtainRouteRulesIfNeed + */ private static void obtainRouteRulesIfNeed() { if (shouldReload) { activityRouteMap.clear(); @@ -107,6 +135,13 @@ public final class Cache { } } + /** + * addAll + * + * @param src + * @param target + * @param + */ private static void addAll(Map src, Map target) { if (target == null || src == null) { return; @@ -116,6 +151,12 @@ public final class Cache { } } + /** + * findOrCreateExecutor + * + * @param key + * @return Executor + */ public static Executor findOrCreateExecutor(Class key) { try { Executor executor = container.get(key); @@ -132,7 +173,8 @@ public final class Cache { /** * To register an Executor to be used. - * @param key The class of Executor + * + * @param key The class of Executor * @param value The Executor instance associate with the key. */ @SuppressWarnings("WeakerAccess") diff --git a/router_api/src/main/java/com/lzh/nonview/router/tools/CacheBundle.java b/router_api/src/main/java/com/lzh/nonview/router/tools/CacheBundle.java index 5c0040454ee660e3dc07a2e6845ab972db63c636..44f273081a783041f24153494d109bc6978bce1b 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/tools/CacheBundle.java +++ b/router_api/src/main/java/com/lzh/nonview/router/tools/CacheBundle.java @@ -7,19 +7,33 @@ import java.util.ArrayList; import java.util.HashMap; /** - * @author: wjt - * @since 2021-03-26 + * CacheBundle + * + * @since 2021-04-06 */ public class CacheBundle { + + private static CacheBundle INSTANCE = new CacheBundle(); + private ArrayList interceptors = null; private RouteCallback callback; private HashMap additionalMap = null; - private static CacheBundle INSTANCE = new CacheBundle(); - private CacheBundle(){} + /** + * 构造 + */ + private CacheBundle() { + } + + /** + * get + * + * @return CacheBundle + */ public static CacheBundle get() { return INSTANCE; } + public ArrayList getInterceptors() { return interceptors; } @@ -43,5 +57,4 @@ public class CacheBundle { public void setAdditionalMap(HashMap additionalMap) { this.additionalMap = additionalMap; } - } diff --git a/router_api/src/main/java/com/lzh/nonview/router/tools/CacheStore.java b/router_api/src/main/java/com/lzh/nonview/router/tools/CacheStore.java index 17d634bcb5304eda17bebb5ff56a37abfd1c2c85..ab7ac20771eeafd8eadaabc52cd859881b526d65 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/tools/CacheStore.java +++ b/router_api/src/main/java/com/lzh/nonview/router/tools/CacheStore.java @@ -24,15 +24,23 @@ import java.util.Arrays; * Created by haoge on 2018/5/3. */ public class CacheStore { - - private Object[] stores = new Object[10]; + private CacheStore() { + } private static CacheStore INSTANCE = new CacheStore(); - private CacheStore(){} + + /** + * get + * + * @return CacheStore + */ public static CacheStore get() { return INSTANCE; } + private Object[] stores = new Object[10]; + + public T get(int index) { if (index < 0 || index >= stores.length) { return null; diff --git a/router_api/src/main/java/com/lzh/nonview/router/tools/RouterLog.java b/router_api/src/main/java/com/lzh/nonview/router/tools/RouterLog.java index d926f0e85cf3ea677caf4b22d6ed752090e3ea1b..2e5e3b5493eb6f3ceaa6108f434590604d7296fb 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/tools/RouterLog.java +++ b/router_api/src/main/java/com/lzh/nonview/router/tools/RouterLog.java @@ -9,13 +9,24 @@ public final class RouterLog { private static final String TAG = "RouterLog"; // 定义日志标签 private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MyLog"); + + /** + * d + * + * @param message + */ public static void d(String message) { - if (Router.DEBUG) { + if (Router.isDebug()) { HiLog.debug(LABEL, message); } } + /** + * e + * + * @param message + */ public static void e(String message, Throwable t) { - if (Router.DEBUG) { + if (Router.isDebug()) { HiLog.error(LABEL, message); } } diff --git a/router_api/src/main/java/com/lzh/nonview/router/tools/Utils.java b/router_api/src/main/java/com/lzh/nonview/router/tools/Utils.java index b415c3e399c8490478daaf3e43eae8dc27ff3132..21afb276393ee1d1b19c2d92a8e28861ae0afa16 100644 --- a/router_api/src/main/java/com/lzh/nonview/router/tools/Utils.java +++ b/router_api/src/main/java/com/lzh/nonview/router/tools/Utils.java @@ -26,6 +26,7 @@ import ohos.agp.utils.TextTool; import ohos.app.Context; import ohos.utils.net.Uri; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -84,9 +85,10 @@ public class Utils { public static IntentParams parseToBundle(URIParser parser) { IntentParams bundle = new IntentParams(); Map params = parser.getParams(); - Set keySet = params.keySet(); - for (String key : keySet) { - bundle.setParam(key, params.get(key)); + Iterator> iterator = params.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry entry = iterator.next(); + bundle.setParam(entry.getKey(), entry.getValue()); } return bundle; } diff --git a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Compiler.java b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Compiler.java index 14dff5934d447489d6010d7795af96983622676e..1c09c5a005e45d219b4fba85be4fe028fe3bc8e8 100644 --- a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Compiler.java +++ b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Compiler.java @@ -13,11 +13,9 @@ import com.lzh.nonview.router.compiler.util.Utils; import com.squareup.javapoet.ClassName; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Set; import javax.annotation.processing.AbstractProcessor; @@ -33,7 +31,7 @@ import javax.tools.Diagnostic; * The entry class of annotation processor */ @AutoService(Processor.class) -public class Compiler extends AbstractProcessor{ +public class Compiler extends AbstractProcessor { @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { try { @@ -42,18 +40,19 @@ public class Compiler extends AbstractProcessor{ return false; } catch (RouterException e) { e.printStackTrace(); - error(e.getElement(),e.getMessage()); + error(e.getElement(), e.getMessage()); return true; } } /** * Parse the {@link RouteConfig} and create a {@link BasicConfigurations} to be used. + * * @param roundEnv data sources * @return The instance of {@link BasicConfigurations} * @throws RouterException pack all of the exception when a error occurs. */ - private BasicConfigurations processRouteConfig(RoundEnvironment roundEnv) throws RouterException{ + private BasicConfigurations processRouteConfig(RoundEnvironment roundEnv) throws RouterException { TypeElement type = null; try { Set elements = roundEnv.getElementsAnnotatedWith(RouteConfig.class); @@ -62,10 +61,10 @@ public class Compiler extends AbstractProcessor{ while (iterator.hasNext()) { type = (TypeElement) iterator.next(); if (configurations != null) { - throw new RouterException("The RouteConfig in this module was defined duplicated!",type); + throw new RouterException("The RouteConfig in this module was defined duplicated!", type); } - if (!Utils.isSuperClass(type,Constants.CLASSNAME_APPLICATION)) { - throw new RouterException("The class you are annotated by RouteConfig must be a Application",type); + if (!Utils.isSuperClass(type, Constants.CLASSNAME_APPLICATION)) { + throw new RouterException("The class you are annotated by RouteConfig must be a Application", type); } RouteConfig config = type.getAnnotation(RouteConfig.class); configurations = new BasicConfigurations(config); @@ -74,16 +73,18 @@ public class Compiler extends AbstractProcessor{ } catch (RouterException e) { throw e; } catch (Throwable e) { - throw new RouterException(e.getMessage(),e,type); + throw new RouterException(e.getMessage(), e, type); } } + /** * 解析由{@link RouterRule}注释的所有元素。并结合{@link BasicConfigurations}来创建新的Java文件 + * * @param roundEnv The data sources - * @param config The instance of {@link BasicConfigurations} that be parsed by {@link Compiler#processRouteConfig(RoundEnvironment)} + * @param config The instance of {@link BasicConfigurations} that be parsed by {@link Compiler#processRouteConfig(RoundEnvironment)} * @throws RouterException pack all of the exception when a error occurs. */ - private void processRouteRules(RoundEnvironment roundEnv, BasicConfigurations config) throws RouterException{ + private void processRouteRules(RoundEnvironment roundEnv, BasicConfigurations config) throws RouterException { List parsers = new ArrayList<>(); Set elements = roundEnv.getElementsAnnotatedWith(RouterRule.class); if (elements.isEmpty()) { @@ -93,7 +94,9 @@ public class Compiler extends AbstractProcessor{ try { for (Element ele : elements) { type = (TypeElement) ele; - if (!Utils.checkTypeValid(type)) continue; + if (!Utils.checkTypeValid(type)) { + continue; + } RouterRule rule = type.getAnnotation(RouterRule.class); RouteRuleConfig ruleConfig = RouteRuleConfig.create(rule, config, type); @@ -108,7 +111,7 @@ public class Compiler extends AbstractProcessor{ } catch (RouterException e) { throw e; } catch (Throwable e) { - throw new RouterException(e.getMessage(),e,type); + throw new RouterException(e.getMessage(), e, type); } } @@ -117,7 +120,7 @@ public class Compiler extends AbstractProcessor{ * * @param element Element of class who has a exception when compiled * @param message The message should be noticed to user - * @param args args to inflate message + * @param args args to inflate message */ private void error(Element element, String message, Object... args) { if (args.length > 0) { diff --git a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Constants.java b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Constants.java index 46e72231b3b47871f83327373f1a28c85d05d1d2..13788d8535f00f43601de27f134708364d0c0ba7 100644 --- a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Constants.java +++ b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/Constants.java @@ -1,6 +1,16 @@ package com.lzh.nonview.router.compiler; +/** + * Constants + * + * @since 2021-04-06 + */ public class Constants { + /** + * 构造 + */ + public Constants() { + } // Application public static final String CLASSNAME_APPLICATION = "ohos.aafwk.ability.AbilityPackage"; diff --git a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/factory/RuleFactory.java b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/factory/RuleFactory.java index a20cb7ed8b0cbd45ae0b64a9599f7c1fbb0f8aed..4aba83b093030f772d96b0d117534a2dd628669e 100644 --- a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/factory/RuleFactory.java +++ b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/factory/RuleFactory.java @@ -30,7 +30,6 @@ public class RuleFactory { private List activityParser = new ArrayList<>(); private List actionParser = new ArrayList<>(); private List creatorParser = new ArrayList<>(); - private ClassName routeMap = ClassName.bestGuess(Constants.CLASSNAME_ROUTE_MAP); private ClassName activityRouteMap = ClassName.bestGuess(Constants.CLASSNAME_ACTIVITY_ROUTE_MAP); private ClassName actionRouteMap = ClassName.bestGuess(Constants.CLASSNAME_ACTION_ROUTE_MAP); private ClassName creatorRouteMap = ClassName.bestGuess(Constants.CLASSNAME_CREATOR_ROUTE_MAP); diff --git a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/BasicConfigurations.java b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/BasicConfigurations.java index 86e7c18dd4f0a6d27fba8e22700894543c96d8b1..98bc9fdae82830b7e9256281df5c0b26856044db 100644 --- a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/BasicConfigurations.java +++ b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/BasicConfigurations.java @@ -3,10 +3,20 @@ package com.lzh.nonview.router.compiler.model; import com.lzh.nonview.router.anno.RouteConfig; import com.lzh.nonview.router.compiler.util.Utils; +/** + * 主页面 + * + * @since 2021-04-06 + */ public class BasicConfigurations { public String baseUrl; public String pack = "com.lzh.router"; + /** + * 构造 + * + * @param config + */ public BasicConfigurations(RouteConfig config) { if (config == null) { return; diff --git a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/Parser.java b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/Parser.java index 4213eef5cf5e2f51a86c7368d8ad0acb9a3dbd0a..f9f6dc4192e4a954e25d782fe51343f805a3ccf3 100644 --- a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/Parser.java +++ b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/Parser.java @@ -17,14 +17,18 @@ import javax.lang.model.type.TypeMirror; * 解析器 */ public class Parser { - public final static String Slash="/"; - private static Map parsed = new HashMap<>(); + + private static Map parsed = new HashMap<>(); + private String[] routers; private TypeElement type; private RouteRuleConfig configurations; private ClassName executorClass; - - public static Parser create (TypeElement element, RouteRuleConfig configurations) { + /** + * "/" + */ + public static final String Slash = "/"; + public static Parser create(TypeElement element, RouteRuleConfig configurations) { Parser parser = new Parser(); parser.type = element; parser.configurations = configurations; @@ -45,7 +49,7 @@ public class Parser { } } - public void parse () { + public void parse() { routers = configurations.getRoute(); for (int i = 0; i < routers.length; i++) { String route = routers[i]; @@ -55,17 +59,17 @@ public class Parser { private void checkIsDuplicate(String route) { if (route.endsWith(Slash)) { - route = route.substring(0,route.lastIndexOf(Slash)); + route = route.substring(0, route.lastIndexOf(Slash)); } if (parsed.containsKey(route)) { - throw new RouterException(String.format("A same scheme was double defined on another class %s", parsed.get(route)),type); + throw new RouterException(String.format("A same scheme was double defined on another class %s", parsed.get(route)), type); } - parsed.put(route,type); + parsed.put(route, type); } public String[] getScheme() { - return routers; + return routers.clone(); } public TypeElement getType() { diff --git a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/RouteRuleConfig.java b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/RouteRuleConfig.java index c8dff36b2d098918bca43d15e1e91df13e549b16..082056b0c9eef9dbcd48b77f8e591bc5e4fe3790 100644 --- a/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/RouteRuleConfig.java +++ b/router_compiler/src/main/java/com/lzh/nonview/router/compiler/model/RouteRuleConfig.java @@ -13,6 +13,7 @@ import com.squareup.javapoet.TypeName; import java.net.URI; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.locks.AbstractOwnableSynchronizer; import javax.lang.model.element.TypeElement; import javax.lang.model.type.MirroredTypeException; @@ -31,7 +32,6 @@ public class RouteRuleConfig { private String[] routes; private ClassName launcher; private TypeName[] interceptors; - public static RouteRuleConfig create(RouterRule rule, BasicConfigurations basicConfigurations, TypeElement type) { RouteRuleConfig config = new RouteRuleConfig(); config.routes = config.combineRoute(rule, basicConfigurations); @@ -126,10 +126,8 @@ public class RouteRuleConfig { return launcher; } - - public String[] getRoute() { - return routes == null ? new String[0] : routes; + return routes.clone(); } public ClassName getLauncher() { @@ -137,6 +135,6 @@ public class RouteRuleConfig { } public TypeName[] getInterceptors () { - return interceptors; + return this.interceptors.clone(); } }