Repository: baidu/Rubik Branch: main Commit: 065ba8f4652b Files: 794 Total size: 1.0 MB Directory structure: gitextract_e_w543jg/ ├── LICENSE ├── README.md ├── README_en.md ├── build.gradle ├── demo/ │ ├── demo_component_detail/ │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── mars/ │ │ │ └── component/ │ │ │ └── detail/ │ │ │ ├── api/ │ │ │ │ ├── AipsInCompanion.kt │ │ │ │ ├── AipsInTop.kt │ │ │ │ ├── ApiSerialization.kt │ │ │ │ ├── Apis.kt │ │ │ │ ├── ApisAsyncReturn.kt │ │ │ │ ├── ApisBadCase.kt │ │ │ │ ├── ApisBigData.kt │ │ │ │ ├── ApisExt.kt │ │ │ │ ├── ApisProvideInstance.kt │ │ │ │ ├── ApisWithLiveData.kt │ │ │ │ └── ApisWithResultReceiver.kt │ │ │ ├── callback/ │ │ │ │ ├── CallbackTestDefault.kt │ │ │ │ └── CallbackTestInterface.kt │ │ │ ├── event/ │ │ │ │ └── Events.kt │ │ │ ├── objekt/ │ │ │ │ ├── ObjectTest.kt │ │ │ │ └── ObjectTestCteate.kt │ │ │ ├── test/ │ │ │ │ ├── TestDataTypeTask.kt │ │ │ │ ├── TestDefaultPathTask.kt │ │ │ │ └── TestGenericityTask.kt │ │ │ ├── ui/ │ │ │ │ ├── FirstPageActivity.kt │ │ │ │ ├── FirstPageFragment.kt │ │ │ │ └── SecondPageActivity.kt │ │ │ └── value/ │ │ │ ├── TestCompanionBean.kt │ │ │ ├── TestCreateBean.kt │ │ │ ├── TestDataBean.kt │ │ │ ├── TestDataNotRValueBean.kt │ │ │ ├── TestListBean.kt │ │ │ ├── TestNullableBean.kt │ │ │ ├── TestOriginalBean.kt │ │ │ ├── TestParcelizeBean.kt │ │ │ ├── TestSerializableBean.kt │ │ │ └── mapping/ │ │ │ ├── TestDataMappingBean.kt │ │ │ └── TestNestDataMappingBean.kt │ │ ├── ra/ │ │ │ └── rubik/ │ │ │ └── generate/ │ │ │ └── aggregate/ │ │ │ └── demo_com_mars_rubik_test_detail/ │ │ │ └── DetailAggregate.kt │ │ └── res/ │ │ ├── layout/ │ │ │ └── activity_a1.xml │ │ └── values/ │ │ └── strings.xml │ ├── demo_component_detail_java/ │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── aggregate/ │ │ │ └── rubik/ │ │ │ └── generate/ │ │ │ └── aggregate/ │ │ │ └── demo_com_mars_rubik_test_detail_java/ │ │ │ └── DetailJavaAggregate.kt │ │ ├── java/ │ │ │ └── com/ │ │ │ └── mars/ │ │ │ └── component/ │ │ │ └── detail/ │ │ │ └── java/ │ │ │ ├── api/ │ │ │ │ ├── Apis.java │ │ │ │ ├── ApisAsyncReturn.java │ │ │ │ ├── ApisForInstance.java │ │ │ │ ├── BaseApis.java │ │ │ │ └── callback/ │ │ │ │ ├── Callback.java │ │ │ │ └── Callbackable.java │ │ │ ├── test/ │ │ │ │ └── TestJavaDataType.java │ │ │ ├── ui/ │ │ │ │ ├── FirstPageActivity.java │ │ │ │ └── SecondActivity.java │ │ │ └── value/ │ │ │ └── TestJavaBean.java │ │ └── res/ │ │ ├── layout/ │ │ │ └── activity_d1.xml │ │ └── values/ │ │ └── strings.xml │ ├── demo_component_home/ │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── aggregate/ │ │ │ └── rubik/ │ │ │ └── generate/ │ │ │ └── aggregate/ │ │ │ └── demo_com_mars_rubik_test_home/ │ │ │ └── HomeAggregate.kt │ │ ├── java/ │ │ │ └── com/ │ │ │ └── mars/ │ │ │ └── component/ │ │ │ └── home/ │ │ │ ├── api/ │ │ │ │ └── TestOne.kt │ │ │ ├── event/ │ │ │ │ └── Events.kt │ │ │ ├── test/ │ │ │ │ ├── java/ │ │ │ │ │ ├── TestJavaInvokeBuilderTask.java │ │ │ │ │ ├── TestJavaInvokeFunctionTask.java │ │ │ │ │ └── TestJavaInvokeJavaFunctionTask.java │ │ │ │ └── kotlin/ │ │ │ │ ├── TestBigData.kt │ │ │ │ ├── TestDataType.kt │ │ │ │ ├── TestKotlinInvokeActionFunctionJavaTask.kt │ │ │ │ ├── TestKotlinInvokeActionFunctionTask.kt │ │ │ │ ├── TestKotlinInvokeDSLTask.kt │ │ │ │ └── TestKotlinInvokeRouteFunctionTask.kt │ │ │ └── ui/ │ │ │ ├── HomeActivity.kt │ │ │ ├── HomeFragment.kt │ │ │ └── java/ │ │ │ └── JavaHomeActivity.java │ │ └── res/ │ │ ├── layout/ │ │ │ ├── activity_java.xml │ │ │ ├── activity_kotlin.xml │ │ │ └── fragment_b1.xml │ │ └── values/ │ │ └── strings.xml │ ├── demo_root_app/ │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── mars/ │ │ │ └── component/ │ │ │ └── test/ │ │ │ └── RouterTestCase.kt │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── baidu/ │ │ │ └── kcomponent/ │ │ │ ├── MainActivity.kt │ │ │ └── MainApplication.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-v24/ │ │ │ └── ic_launcher_foreground.xml │ │ ├── layout/ │ │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── values/ │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ ├── demo_until_library_a/ │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── mars/ │ │ └── util_library/ │ │ ├── TestClassA.kt │ │ └── TestLibDataBean.kt │ ├── demo_until_library_b/ │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── mars/ │ │ │ └── util_library/ │ │ │ └── TestClassB.kt │ │ └── testex/ │ │ └── java/ │ │ └── com/ │ │ └── x/ │ │ ├── Xx.kt │ │ └── Yx.java │ ├── demo_until_library_c_java/ │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── TestClassC.kt │ ├── rubik-components.gradle │ └── rubik-packing.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── rubik/ │ ├── rubik_annotations/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── rubik/ │ │ └── annotations/ │ │ ├── context/ │ │ │ ├── REvent.java │ │ │ ├── REventRepeatable.java │ │ │ ├── assist/ │ │ │ │ ├── REventAssist.java │ │ │ │ └── REventAssistRepeatable.java │ │ │ └── instance/ │ │ │ ├── REventInstance.java │ │ │ └── REventInstanceRepeatable.java │ │ ├── route/ │ │ │ ├── RCallback.java │ │ │ ├── RExtend.java │ │ │ ├── RInstance.java │ │ │ ├── RInstanceRepeatable.java │ │ │ ├── RObject.java │ │ │ ├── RProperty.java │ │ │ ├── RResult.java │ │ │ ├── RRoute.java │ │ │ ├── RRouteRepeatable.java │ │ │ ├── RValue.java │ │ │ ├── assist/ │ │ │ │ ├── RRouteAssist.java │ │ │ │ └── RRouteAssistRepeatable.java │ │ │ ├── function/ │ │ │ │ ├── RDefaultType.java │ │ │ │ ├── RFunction.java │ │ │ │ └── RFunctionRepeatable.java │ │ │ ├── instance/ │ │ │ │ ├── RRouteInstance.java │ │ │ │ └── RRouteInstanceRepeatable.java │ │ │ └── page/ │ │ │ ├── RPage.java │ │ │ └── RPageRepeatable.java │ │ └── source/ │ │ ├── RAggregate.java │ │ ├── RComponent.java │ │ ├── RContext.java │ │ ├── RContextLib.java │ │ ├── RGenerated.java │ │ ├── RGeneratedRouter.java │ │ ├── RGeneratedValue.java │ │ └── ROriginalValue.java │ ├── rubik_context/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── rubik/ │ │ ├── context/ │ │ │ ├── Dependency.kt │ │ │ ├── Ext.kt │ │ │ ├── MavenSource.kt │ │ │ ├── Source.kt │ │ │ ├── container/ │ │ │ │ └── ContextsContainer.kt │ │ │ ├── exception/ │ │ │ │ ├── RubikComponentUndefinedException.kt │ │ │ │ ├── RubikDSLDefaultGroupNotSetException.kt │ │ │ │ ├── RubikDSLDefaultSchemeNotSetException.kt │ │ │ │ ├── RubikMultipleComponentDefinedException.kt │ │ │ │ └── RubikPluginNotApplyException.kt │ │ │ ├── extra/ │ │ │ │ ├── Context.kt │ │ │ │ ├── Injector.kt │ │ │ │ └── Rubik.kt │ │ │ ├── folder/ │ │ │ │ ├── ClassesTmpDir.kt │ │ │ │ ├── GeneratedSourceDir.kt │ │ │ │ └── LibsTmpDir.kt │ │ │ ├── id/ │ │ │ │ ├── ContextIdHolder.kt │ │ │ │ └── LeastContext.kt │ │ │ ├── log/ │ │ │ │ └── LogTags.kt │ │ │ ├── publication/ │ │ │ │ ├── BuildType.kt │ │ │ │ └── LibType.kt │ │ │ ├── router/ │ │ │ │ └── RouterRegister.kt │ │ │ └── utility/ │ │ │ ├── KApt.kt │ │ │ ├── Module.kt │ │ │ └── Uri.kt │ │ └── global/ │ │ └── GlobalConfig.kt │ ├── rubik_dsl/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── rubik/ │ │ └── dsl/ │ │ ├── DSLRubik.kt │ │ ├── RDSL.java │ │ ├── context/ │ │ │ ├── DSLContext.kt │ │ │ ├── dependency/ │ │ │ │ ├── DSLDependencies.kt │ │ │ │ └── DSLDependency.kt │ │ │ └── source/ │ │ │ ├── DSLMavenSource.kt │ │ │ ├── DSLProjectSource.kt │ │ │ └── DSLSource.kt │ │ ├── exception/ │ │ │ └── RubikDSLComponentUriException.kt │ │ ├── global/ │ │ │ ├── DSLGlobalConfig.kt │ │ │ ├── DSLGlobalContextConfig.kt │ │ │ └── DSLGlobalMavenConfig.kt │ │ └── packing/ │ │ ├── DSLExcept.kt │ │ ├── DSLPacking.kt │ │ ├── DSLPackingHow.kt │ │ └── DSLPackingNoSource.kt │ ├── rubik_kapt/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ ├── ByVersion.kt │ │ └── com/ │ │ └── rubik/ │ │ └── apt/ │ │ ├── Constants.kt │ │ ├── RContextProcessService.java │ │ ├── RContextProcessor.kt │ │ ├── annotation/ │ │ │ ├── AnnotationData.kt │ │ │ ├── Callback.kt │ │ │ ├── CodebaseObtainer.kt │ │ │ ├── Event.kt │ │ │ ├── EventInstance.kt │ │ │ ├── Object.kt │ │ │ ├── Route.kt │ │ │ ├── RouteInstance.kt │ │ │ └── Value.kt │ │ ├── codebase/ │ │ │ ├── AnnotationCodeBase.kt │ │ │ ├── ClassMirrorable.kt │ │ │ ├── RToken.kt │ │ │ ├── RouteCodeBase.kt │ │ │ ├── activity/ │ │ │ │ ├── ActivityCodeBase.kt │ │ │ │ └── ActivityPropertyCodeBase.kt │ │ │ ├── api/ │ │ │ │ ├── ApiCodeBase.kt │ │ │ │ ├── ApiInstanceCodeBase.kt │ │ │ │ ├── QueryCodeBase.kt │ │ │ │ └── ResultCodeBase.kt │ │ │ ├── callback/ │ │ │ │ ├── FunctionCallbackCodeBase.kt │ │ │ │ └── ObjectCallbackCodeBase.kt │ │ │ ├── context/ │ │ │ │ ├── ContextCodeBase.kt │ │ │ │ └── SectionCodeBase.kt │ │ │ ├── event/ │ │ │ │ ├── EventCodeBase.kt │ │ │ │ └── EventInstanceCodeBase.kt │ │ │ ├── invoker/ │ │ │ │ ├── Callbackable.kt │ │ │ │ ├── Instanceable.kt │ │ │ │ ├── InvokeContextCodeBase.kt │ │ │ │ ├── InvokeFunctionCodeBase.kt │ │ │ │ ├── InvokeOriginalCodeBase.kt │ │ │ │ ├── LambdaTypeCodeBase.kt │ │ │ │ ├── OriginalInvokable.kt │ │ │ │ └── TypeCodeBase.kt │ │ │ ├── objekt/ │ │ │ │ └── ObjectCodeBase.kt │ │ │ └── value/ │ │ │ ├── ValueCodeBase.kt │ │ │ └── ValueFieldCodeBase.kt │ │ ├── declare/ │ │ │ └── LeastContext.kt │ │ ├── files/ │ │ │ └── source/ │ │ │ ├── AggregateSourceFile.kt │ │ │ ├── ContextSourceFiles.kt │ │ │ ├── aggregate/ │ │ │ │ ├── CallbackTransformCode.kt │ │ │ │ ├── FactoryCode.kt │ │ │ │ ├── InvokeOriginalCode.kt │ │ │ │ ├── MappingType.kt │ │ │ │ ├── OnEventCode.kt │ │ │ │ ├── OnRouteCode.kt │ │ │ │ ├── QueryCode.kt │ │ │ │ └── RouteActionsImplCode.kt │ │ │ ├── context/ │ │ │ │ ├── TouchCode.kt │ │ │ │ ├── action/ │ │ │ │ │ ├── ApiRouteActionFunctionCode.kt │ │ │ │ │ └── inceface/ │ │ │ │ │ ├── RouteActionFunctionCode.kt │ │ │ │ │ └── RouteActionsSourceFile.kt │ │ │ │ └── dsl/ │ │ │ │ ├── ActivityDSLFuntionCode.kt │ │ │ │ ├── ApiDSLFunctionCode.kt │ │ │ │ └── DSLRouteContextSourceFiles.kt │ │ │ ├── identity/ │ │ │ │ └── IdentitySourceFile.kt │ │ │ └── mirror/ │ │ │ ├── callback/ │ │ │ │ └── CallbackSourceFiles.kt │ │ │ ├── objekt/ │ │ │ │ └── ObjectSourceFiles.kt │ │ │ └── value/ │ │ │ ├── ValueCode.kt │ │ │ └── ValueSourceFiles.kt │ │ ├── namebox/ │ │ │ ├── FileNameBox.kt │ │ │ └── MappingMatrix.kt │ │ ├── plugin/ │ │ │ ├── Arguments.kt │ │ │ └── PluginArguments.kt │ │ └── utility/ │ │ ├── Code.kt │ │ ├── Element.kt │ │ ├── FilePath.kt │ │ ├── KotlinPoet.kt │ │ └── RType.kt │ ├── rubik_maven_repositories.gradle │ ├── rubik_picker/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── rubik/ │ │ ├── pick/ │ │ │ ├── Excepted.kt │ │ │ ├── PickHow.kt │ │ │ ├── PickWhat.kt │ │ │ └── PickWhere.kt │ │ └── picker/ │ │ ├── ContextPickHow.kt │ │ ├── ContextPicker.kt │ │ ├── MavenPicker.kt │ │ ├── PickCase.kt │ │ ├── Picker.kt │ │ ├── ProjectPicker.kt │ │ ├── TmpDirLibPicker.kt │ │ ├── container/ │ │ │ ├── ContextPickHowContainer.kt │ │ │ └── PickedContextsContainer.kt │ │ ├── exception/ │ │ │ ├── RubikMavenDependencyVersionNotSetException.kt │ │ │ ├── RubikMavenVariantNotSetException.kt │ │ │ ├── RubikMavenVersionNotSetException.kt │ │ │ ├── RubikProjectNotFoundException.kt │ │ │ ├── RubikProjectPathNotSetException.kt │ │ │ └── RubikPublicationTypeNotConfigureException.kt │ │ ├── extra/ │ │ │ ├── Context.kt │ │ │ └── Injector.kt │ │ └── log/ │ │ └── LogTags.kt │ ├── rubik_plugins/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ ├── ByVersion.kt │ │ │ └── com/ │ │ │ └── rubik/ │ │ │ └── plugins/ │ │ │ ├── MainPlugin.kt │ │ │ ├── RubikPlugin.kt │ │ │ ├── analyst/ │ │ │ │ └── AnalystPlugin.kt │ │ │ ├── basic/ │ │ │ │ ├── Constants.kt │ │ │ │ ├── LogTags.kt │ │ │ │ ├── exception/ │ │ │ │ │ ├── RubikException.kt │ │ │ │ │ ├── RubikKaptDependencyNotSetException.kt │ │ │ │ │ ├── RubikNotCalculatePublicationException.kt │ │ │ │ │ ├── RubikPackingNotSupportException.kt │ │ │ │ │ ├── RubikProjectNoKotlinAndroidPluginException.kt │ │ │ │ │ ├── RubikRouterAndContextVersionsNotMatchException.kt │ │ │ │ │ └── RubikRouterDependencyNotSetException.kt │ │ │ │ ├── extra/ │ │ │ │ │ └── Rubik.kt │ │ │ │ ├── transform/ │ │ │ │ │ ├── MakeLibsTransform.kt │ │ │ │ │ └── RubikTransform.kt │ │ │ │ └── utility/ │ │ │ │ ├── Code.kt │ │ │ │ ├── Javassist.kt │ │ │ │ └── KotlinPoet.kt │ │ │ ├── context/ │ │ │ │ ├── ContextPlugin.kt │ │ │ │ ├── controller/ │ │ │ │ │ ├── AllContextController.kt │ │ │ │ │ ├── ComponentIdGeneratingController.kt │ │ │ │ │ ├── ContextKaptController.kt │ │ │ │ │ └── ProjectSyncController.kt │ │ │ │ └── generate/ │ │ │ │ └── file/ │ │ │ │ ├── IdentitySourceFile.kt │ │ │ │ └── ProjectSettingsFile.kt │ │ │ ├── extension/ │ │ │ │ ├── RubikExtension.kt │ │ │ │ └── RubikSingletonExtension.kt │ │ │ └── shell/ │ │ │ ├── ShellPlugin.kt │ │ │ ├── checker/ │ │ │ │ ├── CheckClassesRule.kt │ │ │ │ ├── CheckClassesTransform.kt │ │ │ │ ├── context/ │ │ │ │ │ ├── CheckContextVersionRule.kt │ │ │ │ │ └── CheckContextVersionTransform.kt │ │ │ │ └── router/ │ │ │ │ ├── CheckRouterVersionRule.kt │ │ │ │ └── CheckRouterVersionTransform.kt │ │ │ ├── controller/ │ │ │ │ ├── ShellConfigGeneratingController.kt │ │ │ │ └── ShellSourceGeneratingController.kt │ │ │ └── generate/ │ │ │ └── files/ │ │ │ ├── RubikIdCheckerSourceFile.kt │ │ │ └── RubikInitializerSourceFile.kt │ │ └── resources/ │ │ └── META-INF/ │ │ └── gradle-plugins/ │ │ ├── rubik-analyst.properties │ │ ├── rubik-context.properties │ │ ├── rubik-shell.properties │ │ └── rubik.properties │ ├── rubik_publish/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── k1_5/ │ │ │ └── java/ │ │ │ └── ResetKotlinCompileTask.kt │ │ ├── k1_7/ │ │ │ └── java/ │ │ │ └── ResetKotlinCompileTask.kt │ │ └── main/ │ │ └── java/ │ │ ├── ByPluginVersion.kt │ │ └── com/ │ │ └── rubik/ │ │ └── publish/ │ │ ├── exception/ │ │ │ ├── RubikNoClassesToJarException.kt │ │ │ ├── RubikNoKaptTaskFoundException.kt │ │ │ ├── RubikNoKotlinCompileFoundException.kt │ │ │ ├── RubikNoSourceToCompileException.kt │ │ │ ├── RubikPublishVersionNotSetException.kt │ │ │ └── RubikTaskStateError.kt │ │ ├── extension/ │ │ │ └── ContextRecordExtension.kt │ │ ├── extra/ │ │ │ ├── Context.kt │ │ │ ├── Injector.kt │ │ │ └── Rubik.kt │ │ ├── log/ │ │ │ └── LogTags.kt │ │ ├── publication/ │ │ │ ├── Component.kt │ │ │ ├── Jar.kt │ │ │ ├── Lib.kt │ │ │ └── SourceCode.kt │ │ ├── record/ │ │ │ ├── ContextPublicationRecords.kt │ │ │ ├── PublicationRecord.kt │ │ │ ├── generate/ │ │ │ │ └── file/ │ │ │ │ └── RubikPublicationRecordFiles.kt │ │ │ └── version/ │ │ │ └── StandardVersion.kt │ │ └── task/ │ │ ├── GlobalPublishTasksController.kt │ │ ├── PublishContextTask.kt │ │ ├── PublishContextTaskController.kt │ │ ├── PublishContextTaskGroup.kt │ │ ├── PublishContextTasksContainer.kt │ │ ├── both/ │ │ │ ├── ComponentAndContextLibsTask.kt │ │ │ ├── ComponentAndContextLibsTaskGraphic.kt │ │ │ ├── PackingLinkComponentAndContextLibsTask.kt │ │ │ ├── VariantComponentAndContextLibsTask.kt │ │ │ └── VariantComponentAndContextLibsTaskGraphic.kt │ │ ├── component/ │ │ │ ├── ComponentTask.kt │ │ │ ├── ComponentTaskGraphic.kt │ │ │ ├── PackingLinkComponentTask.kt │ │ │ ├── VariantComponentTask.kt │ │ │ └── VariantComponentTaskGraphic.kt │ │ ├── global/ │ │ │ ├── AllComponentAndContextLibsTask.kt │ │ │ ├── AllComponentTask.kt │ │ │ ├── AllContextLibsTask.kt │ │ │ ├── TagComponentAndContextLibsTask.kt │ │ │ ├── TagComponentTask.kt │ │ │ └── TagContextLibsTask.kt │ │ ├── lib/ │ │ │ ├── ContextLibTask.kt │ │ │ ├── ContextLibTaskGraphic.kt │ │ │ └── state/ │ │ │ └── ContextLibStateMachine.kt │ │ ├── name/ │ │ │ ├── PublishByMeaning.kt │ │ │ ├── PublishTaskName.kt │ │ │ └── PublishTaskNameMeaning.kt │ │ ├── provider/ │ │ │ ├── CopySourceTaskProvider.kt │ │ │ ├── JarTaskProvider.kt │ │ │ └── KotlinCompileTaskProvider.kt │ │ └── target/ │ │ ├── TaskTarget.kt │ │ ├── TaskTargetContainer.kt │ │ └── TaskTargetController.kt │ └── rubik_router/ │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── rubik/ │ │ ├── Rubik.kt │ │ ├── activity/ │ │ │ └── Launcher.kt │ │ ├── builder/ │ │ │ ├── query/ │ │ │ │ ├── BundleQueriesBuilder.kt │ │ │ │ ├── DSLLaunchQueriesBuilder.kt │ │ │ │ ├── LinkedLaunchQueriesBuilder.kt │ │ │ │ ├── QueriesBuilder.kt │ │ │ │ └── QueriesFrameable.kt │ │ │ ├── result/ │ │ │ │ └── ResultsBuildable.kt │ │ │ └── router/ │ │ │ ├── BasicRouterBuilder.kt │ │ │ ├── DSLApiRouterBuilder.kt │ │ │ ├── DSLLaunchRouterBuilder.kt │ │ │ ├── LinkedApiRouterBuilder.kt │ │ │ ├── LinkedLaunchRouterBuilder.kt │ │ │ └── RouterBuildable.kt │ │ ├── context/ │ │ │ ├── Aggregatable.kt │ │ │ ├── LifeCycleEvent.kt │ │ │ └── RouteActions.kt │ │ ├── identity/ │ │ │ ├── IdentityChecker.kt │ │ │ ├── RIdentity.kt │ │ │ └── exception/ │ │ │ ├── DuplicateComponentException.kt │ │ │ ├── DuplicateContextException.kt │ │ │ ├── RIdentityCheckFailedException.kt │ │ │ ├── RIdentityNotFoundException.kt │ │ │ └── UriNotConformException.kt │ │ ├── logger/ │ │ │ └── Logger.kt │ │ ├── route/ │ │ │ ├── LaunchQueries.kt │ │ │ ├── Object.kt │ │ │ ├── Queries.kt │ │ │ ├── Query.kt │ │ │ ├── Result.kt │ │ │ ├── ResultGroups.kt │ │ │ ├── Results.kt │ │ │ ├── exception/ │ │ │ │ ├── BadAggregatableClassException.kt │ │ │ │ ├── BadPathOrVersionException.kt │ │ │ │ ├── BadQueryException.kt │ │ │ │ ├── BadResultException.kt │ │ │ │ ├── BadTypeException.kt │ │ │ │ ├── BadUriException.kt │ │ │ │ ├── BadValueException.kt │ │ │ │ ├── DuplicateRegisteredUriException.kt │ │ │ │ └── ParcelableNoCreatorException.kt │ │ │ └── mapping/ │ │ │ ├── Bundle.kt │ │ │ ├── JsonMapping.kt │ │ │ ├── LiveDataMapping.kt │ │ │ ├── ParcelMapping.kt │ │ │ └── TypeMapping.kt │ │ └── router/ │ │ ├── Router.kt │ │ ├── RouterResult.kt │ │ ├── TouchHolder.kt │ │ ├── annotations/ │ │ │ └── RInvariant.kt │ │ ├── exception/ │ │ │ ├── BadRubikVersionException.kt │ │ │ ├── BadUriException.kt │ │ │ ├── RContextNotFoundException.kt │ │ │ ├── RubikAggregateNotFoundException.kt │ │ │ └── RubikNotInitException.kt │ │ └── uri/ │ │ └── Path.kt │ └── res/ │ └── values/ │ └── strings.xml ├── rubik_libs_repository/ │ ├── demo_com_mars_rubik_test_detail/ │ │ ├── context/ │ │ │ └── detail-lib-context.jar │ │ └── context_sources/ │ │ └── detail-lib-context-sources.jar │ ├── demo_com_mars_rubik_test_detail_java/ │ │ ├── context/ │ │ │ └── detail-java-lib-context.jar │ │ └── context_sources/ │ │ └── detail-java-lib-context-sources.jar │ ├── demo_com_mars_rubik_test_home/ │ │ ├── context/ │ │ │ └── home-lib-context.jar │ │ └── context_sources/ │ │ └── home-lib-context-sources.jar │ ├── rubik-demo_com_mars_rubik_test_detail-publication-records.gradle │ ├── rubik-demo_com_mars_rubik_test_detail_java-publication-records.gradle │ └── rubik-demo_com_mars_rubik_test_home-publication-records.gradle ├── rubik_maven_local_repository/ │ └── com/ │ ├── kotlin/ │ │ └── blueprint/ │ │ ├── 5.1.12-K1_5/ │ │ │ ├── blueprint-5.1.12-K1_5.jar │ │ │ ├── blueprint-5.1.12-K1_5.jar.md5 │ │ │ ├── blueprint-5.1.12-K1_5.jar.sha1 │ │ │ └── blueprint-5.1.12-K1_5.pom │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ ├── maven-metadata.xml.sha1 │ │ ├── maven-metadata.xml.sha256 │ │ └── maven-metadata.xml.sha512 │ ├── ktnail/ │ │ ├── gradle/ │ │ │ ├── 0.1.1-AGBT4_2-K1_5/ │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.jar │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.jar.md5 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.jar.sha1 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.jar.sha256 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.jar.sha512 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.module │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.module.md5 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.module.sha1 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.module.sha256 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.module.sha512 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.pom │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.pom.md5 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.pom.sha1 │ │ │ │ ├── gradle-0.1.1-AGBT4_2-K1_5.pom.sha256 │ │ │ │ └── gradle-0.1.1-AGBT4_2-K1_5.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ └── x/ │ │ ├── 0.0.62-K1_5/ │ │ │ ├── x-0.0.62-K1_5.jar │ │ │ ├── x-0.0.62-K1_5.jar.md5 │ │ │ ├── x-0.0.62-K1_5.jar.sha1 │ │ │ └── x-0.0.62-K1_5.pom │ │ ├── 0.0.67-K1_5/ │ │ │ ├── x-0.0.67-K1_5.jar │ │ │ ├── x-0.0.67-K1_5.jar.md5 │ │ │ ├── x-0.0.67-K1_5.jar.sha1 │ │ │ ├── x-0.0.67-K1_5.jar.sha256 │ │ │ ├── x-0.0.67-K1_5.jar.sha512 │ │ │ ├── x-0.0.67-K1_5.module │ │ │ ├── x-0.0.67-K1_5.module.md5 │ │ │ ├── x-0.0.67-K1_5.module.sha1 │ │ │ ├── x-0.0.67-K1_5.module.sha256 │ │ │ ├── x-0.0.67-K1_5.module.sha512 │ │ │ ├── x-0.0.67-K1_5.pom │ │ │ ├── x-0.0.67-K1_5.pom.md5 │ │ │ ├── x-0.0.67-K1_5.pom.sha1 │ │ │ ├── x-0.0.67-K1_5.pom.sha256 │ │ │ └── x-0.0.67-K1_5.pom.sha512 │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ ├── maven-metadata.xml.sha1 │ │ ├── maven-metadata.xml.sha256 │ │ └── maven-metadata.xml.sha512 │ ├── mars/ │ │ └── rubik-test/ │ │ ├── detail-component-company1-channel1-release/ │ │ │ ├── 0.0.1-DEV/ │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.aar │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.aar.md5 │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.aar.sha1 │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.aar.sha256 │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.aar.sha512 │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.pom │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.pom.md5 │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.pom.sha1 │ │ │ │ ├── detail-component-company1-channel1-release-0.0.1-DEV.pom.sha256 │ │ │ │ └── detail-component-company1-channel1-release-0.0.1-DEV.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── detail-component-company1-channel2-release/ │ │ │ ├── 0.0.1-DEV/ │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.aar │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.aar.md5 │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.aar.sha1 │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.aar.sha256 │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.aar.sha512 │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.pom │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.pom.md5 │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.pom.sha1 │ │ │ │ ├── detail-component-company1-channel2-release-0.0.1-DEV.pom.sha256 │ │ │ │ └── detail-component-company1-channel2-release-0.0.1-DEV.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── detail-java-component-release/ │ │ │ ├── 0.0.1-DEV/ │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.aar │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.aar.md5 │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.aar.sha1 │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.aar.sha256 │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.aar.sha512 │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.pom │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.pom.md5 │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.pom.sha1 │ │ │ │ ├── detail-java-component-release-0.0.1-DEV.pom.sha256 │ │ │ │ └── detail-java-component-release-0.0.1-DEV.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── detail-java-lib-context/ │ │ │ ├── 0.0.1-DEV/ │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV-sources.jar │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV-sources.jar.md5 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV-sources.jar.sha1 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV-sources.jar.sha256 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV-sources.jar.sha512 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.jar │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.jar.md5 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.jar.sha1 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.jar.sha256 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.jar.sha512 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.pom │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.pom.md5 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.pom.sha1 │ │ │ │ ├── detail-java-lib-context-0.0.1-DEV.pom.sha256 │ │ │ │ └── detail-java-lib-context-0.0.1-DEV.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── detail-lib-context/ │ │ │ ├── 0.0.1-DEV/ │ │ │ │ ├── detail-lib-context-0.0.1-DEV-sources.jar │ │ │ │ ├── detail-lib-context-0.0.1-DEV-sources.jar.md5 │ │ │ │ ├── detail-lib-context-0.0.1-DEV-sources.jar.sha1 │ │ │ │ ├── detail-lib-context-0.0.1-DEV-sources.jar.sha256 │ │ │ │ ├── detail-lib-context-0.0.1-DEV-sources.jar.sha512 │ │ │ │ ├── detail-lib-context-0.0.1-DEV.jar │ │ │ │ ├── detail-lib-context-0.0.1-DEV.jar.md5 │ │ │ │ ├── detail-lib-context-0.0.1-DEV.jar.sha1 │ │ │ │ ├── detail-lib-context-0.0.1-DEV.jar.sha256 │ │ │ │ ├── detail-lib-context-0.0.1-DEV.jar.sha512 │ │ │ │ ├── detail-lib-context-0.0.1-DEV.pom │ │ │ │ ├── detail-lib-context-0.0.1-DEV.pom.md5 │ │ │ │ ├── detail-lib-context-0.0.1-DEV.pom.sha1 │ │ │ │ ├── detail-lib-context-0.0.1-DEV.pom.sha256 │ │ │ │ └── detail-lib-context-0.0.1-DEV.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ └── home-lib-context/ │ │ ├── 0.0.1-DEV/ │ │ │ ├── home-lib-context-0.0.1-DEV-sources.jar │ │ │ ├── home-lib-context-0.0.1-DEV-sources.jar.md5 │ │ │ ├── home-lib-context-0.0.1-DEV-sources.jar.sha1 │ │ │ ├── home-lib-context-0.0.1-DEV-sources.jar.sha256 │ │ │ ├── home-lib-context-0.0.1-DEV-sources.jar.sha512 │ │ │ ├── home-lib-context-0.0.1-DEV.jar │ │ │ ├── home-lib-context-0.0.1-DEV.jar.md5 │ │ │ ├── home-lib-context-0.0.1-DEV.jar.sha1 │ │ │ ├── home-lib-context-0.0.1-DEV.jar.sha256 │ │ │ ├── home-lib-context-0.0.1-DEV.jar.sha512 │ │ │ ├── home-lib-context-0.0.1-DEV.pom │ │ │ ├── home-lib-context-0.0.1-DEV.pom.md5 │ │ │ ├── home-lib-context-0.0.1-DEV.pom.sha1 │ │ │ ├── home-lib-context-0.0.1-DEV.pom.sha256 │ │ │ └── home-lib-context-0.0.1-DEV.pom.sha512 │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ ├── maven-metadata.xml.sha1 │ │ ├── maven-metadata.xml.sha256 │ │ └── maven-metadata.xml.sha512 │ ├── rubik/ │ │ ├── annotations/ │ │ │ ├── 1.10.0.0-LOCAL/ │ │ │ │ ├── annotations-1.10.0.0-LOCAL.jar │ │ │ │ ├── annotations-1.10.0.0-LOCAL.jar.md5 │ │ │ │ ├── annotations-1.10.0.0-LOCAL.jar.sha1 │ │ │ │ ├── annotations-1.10.0.0-LOCAL.jar.sha256 │ │ │ │ ├── annotations-1.10.0.0-LOCAL.jar.sha512 │ │ │ │ ├── annotations-1.10.0.0-LOCAL.pom │ │ │ │ ├── annotations-1.10.0.0-LOCAL.pom.md5 │ │ │ │ ├── annotations-1.10.0.0-LOCAL.pom.sha1 │ │ │ │ ├── annotations-1.10.0.0-LOCAL.pom.sha256 │ │ │ │ └── annotations-1.10.0.0-LOCAL.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── context/ │ │ │ ├── 1.10.0.0-AGBT4_2-K1_5-LOCAL/ │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.md5 │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha1 │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha256 │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha512 │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.md5 │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha1 │ │ │ │ ├── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha256 │ │ │ │ └── context-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── dsl/ │ │ │ ├── 1.10.0.0-AGBT4_2-K1_5-LOCAL/ │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.md5 │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha1 │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha256 │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha512 │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.md5 │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha1 │ │ │ │ ├── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha256 │ │ │ │ └── dsl-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── kapt/ │ │ │ ├── 1.10.0.0-K1_5-LOCAL/ │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.jar │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.jar.md5 │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.jar.sha1 │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.jar.sha256 │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.jar.sha512 │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.pom │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.pom.md5 │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.pom.sha1 │ │ │ │ ├── kapt-1.10.0.0-K1_5-LOCAL.pom.sha256 │ │ │ │ └── kapt-1.10.0.0-K1_5-LOCAL.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── picker/ │ │ │ ├── 1.10.0.0-AGBT4_2-K1_5-LOCAL/ │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.md5 │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha1 │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha256 │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha512 │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.md5 │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha1 │ │ │ │ ├── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha256 │ │ │ │ └── picker-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── plugins/ │ │ │ ├── 1.10.0.0-AGBT4_2-K1_5-LOCAL/ │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.md5 │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha1 │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha256 │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha512 │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.md5 │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha1 │ │ │ │ ├── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha256 │ │ │ │ └── plugins-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ ├── publish/ │ │ │ ├── 1.10.0.0-AGBT4_2-K1_5-LOCAL/ │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.md5 │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha1 │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha256 │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.jar.sha512 │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.md5 │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha1 │ │ │ │ ├── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha256 │ │ │ │ └── publish-1.10.0.0-AGBT4_2-K1_5-LOCAL.pom.sha512 │ │ │ ├── maven-metadata.xml │ │ │ ├── maven-metadata.xml.md5 │ │ │ ├── maven-metadata.xml.sha1 │ │ │ ├── maven-metadata.xml.sha256 │ │ │ └── maven-metadata.xml.sha512 │ │ └── router/ │ │ ├── 1.10.0.0-K1_5-LOCAL/ │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.jar │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.jar.md5 │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.jar.sha1 │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.jar.sha256 │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.jar.sha512 │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.pom │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.pom.md5 │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.pom.sha1 │ │ │ ├── router-1.10.0.0-K1_5-LOCAL.pom.sha256 │ │ │ └── router-1.10.0.0-K1_5-LOCAL.pom.sha512 │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ ├── maven-metadata.xml.sha1 │ │ ├── maven-metadata.xml.sha256 │ │ └── maven-metadata.xml.sha512 │ └── synccode/ │ └── syncer/ │ ├── 0.0.8-K1_5/ │ │ ├── syncer-0.0.8-K1_5.jar │ │ ├── syncer-0.0.8-K1_5.jar.md5 │ │ ├── syncer-0.0.8-K1_5.jar.sha1 │ │ ├── syncer-0.0.8-K1_5.jar.sha256 │ │ ├── syncer-0.0.8-K1_5.jar.sha512 │ │ ├── syncer-0.0.8-K1_5.module │ │ ├── syncer-0.0.8-K1_5.module.md5 │ │ ├── syncer-0.0.8-K1_5.module.sha1 │ │ ├── syncer-0.0.8-K1_5.module.sha256 │ │ ├── syncer-0.0.8-K1_5.module.sha512 │ │ ├── syncer-0.0.8-K1_5.pom │ │ ├── syncer-0.0.8-K1_5.pom.md5 │ │ ├── syncer-0.0.8-K1_5.pom.sha1 │ │ ├── syncer-0.0.8-K1_5.pom.sha256 │ │ └── syncer-0.0.8-K1_5.pom.sha512 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ ├── maven-metadata.xml.sha1 │ ├── maven-metadata.xml.sha256 │ └── maven-metadata.xml.sha512 ├── settings-rubik.gradle ├── settings.gradle ├── test_app/ │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── rubik/ │ │ └── test/ │ │ ├── EventTest.kt │ │ ├── LaunchTest.kt │ │ ├── PathTest.kt │ │ ├── RouterBuilderTest.kt │ │ ├── RouterResultTest.kt │ │ ├── RouterTest.kt │ │ ├── RubikTest.kt │ │ ├── TouchTest.kt │ │ └── router/ │ │ ├── TestAggregate.kt │ │ ├── TestSimpleAggregate.kt │ │ └── TestSimpleAggregateFactory.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── rubik/ │ │ │ └── test/ │ │ │ └── TestActivity.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-v24/ │ │ │ └── ic_launcher_foreground.xml │ │ ├── layout/ │ │ │ └── activity_test.xml │ │ ├── mipmap-anydpi-v26/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── values/ │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test/ │ └── java/ │ └── com/ │ └── rubik/ │ └── test/ │ └── ExampleUnitTest.kt ├── version-adapter.gradle └── versions.gradle ================================================ FILE CONTENTS ================================================ ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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. ================================================ FILE: README.md ================================================

![license](https://img.shields.io/github/license/baidu/rubik.svg) ![platform](https://img.shields.io/badge/platform-Android-red) ![language](https://img.shields.io/github/languages/top/baidu/rubik) ![last](https://img.shields.io/github/last-commit/baidu/rubik.svg) ![release](https://img.shields.io/github/v/release/baidu/rubik?display_name=release)
English Readme
# Rubik Rubik是一套解决Android平台组件化的综合方案,提供gradle project之间的路由通讯能力,以及对gradle project的组件定义、版本控制、maven发布、aar/jar与源码之间的切换以及组件的自由组合等能力。 Rubik由两部分组成: * Rubik Router :提供组件之间的低耦合通讯能力,即Rubik的"函数路由",与一般的页面路由不同,Rubik Router允许把Uri及参数,导航到工程内部,任意的一个公开的JVM语言(Java/Kotlin)函数的执行上,以便于更灵活的进行gradle project之间不基于代码调用的通讯。 * Rubik 工具链 :提供组件上下文的定义、版本控制、maven发布、aar/jar与源码之间的切换等能力,包括4个gradle plugin: + rubik: - 提供全局定义组件的能力,并根据全局定义自动启用rubik-context、rubik-shell等插件 + rubik-context: - 提供task,自动生成接口中间代码,并把中间代码打包成context.jar ,按版本号发布到maven - 提供task,把业务代码按flavor、版本号编译成aar (包括代码、资源、内置SDK)发布到maven - 通过全局定义的组件,为组件所在子工程自动添加其他组件的context.jar的依赖 + rubik-shell: - 给壳工程提供筛选组件能力,根据flavor、版本号筛选要打包进apk的业务组件 - 提供组件的源码工程和aar切换的能力 + rubik-test: - 给工程提供单元测试环境 ## 快速开始 ### 1. 工程创建和组件声明:   (1) 创建或使用已有的一个或多个android library module,作为"组件工程"(如demo代码中的demo_component_detail、demo_component_home等),用于开发真正的业务逻辑。   (2) 在最外层工程(gradle root project)的build.gradle或gradle.properties文件中配置Rubik版本号等初始化参数,并在最外层工程中启用rubik插件: ```groovy ext { rubik_kapt_version = "com.rubik:kapt:1.9.1.1-K1_5" rubik_router_version = "com.rubik:router:1.9.1.1-K1_5" rubik_plugins_version = "com.rubik:plugins:1.9.1.1-AGBT4-K1_5" } apply plugin: 'rubik' // 启用rubik插件 ```   (3) 在最外层工程的build.gradle文件或同级目录下的rubik-*.gradle文件中,配置组件信息: ```groovy rubik { component { // 第一个组件 uri "app://com.myapp.home" // 组件的Uri touching { // 组件需要依赖的其他组件 uri ("app://com.myapp.detail" ) { version "0.1.1" // 依赖其他组件的版本 } uri( … ) } source { // 定义默认来源,如不需切换源码和aar,可以只声明project或maven project (":demo_component_home") } } component { … } //继续配置第二个组件 } ``` ### 2. 让组件之间互相通信:   (1). 在接口提供者工程内,通过注解定义路由路径,作为组件暴露给其他组件的通信接口:     通过RFunction注解声明函数路由: ```kotlin @RFunction(path = "account/user") fun getUser(id : Int, name : String) : User? { … } ```     通过RPage注解声明页面路由: ```kotlin @RPage(path = "page/main") class HomeActivity : AppCompatActivity() { … } ```   (2). 执行接口提供者工程对应的"publishRubikXxxRContextLib"任务,发布组件上下文到云端或本地maven仓库。   (3). 执行接口提供者工程对应的"publishRubikXxxRComponent"任务,发布组件aar到云端或本地maven仓库。   (4). 在接口调用者工程内,调用上述接口提供者所提供的接口,可以选择两种方式:     通过Kotlin DSL: ```kotlin navigate { uri = "app://com.myapp.detail/account/user" // 请求的uri query { // 请求的参数 "id" with 400 "name" with "CuiVincent" } result { user -> // 通过泛型指定接收数据类型,多次异步返回时,可以用多个result接收 … } } ```     通过自动生成的镜像函数: ```kotlin DetailContext.Account.user(400, "CuiVincent" ) { user -> … // 自动生成的镜像函数的参数类型、返回值类型都是明确的,比DSL方式更具有约束力 } ``` ### 3. 筛选要打包的组件   (1). 创建或使用已有的android application project,作为"壳工程"(如demo代码中的demo_root_app),用于把组件组装并编译成Apk。   (2). 在"壳工程"的的build.gradle文件或同级目录下的rubik-*.gradle文件中,指定"壳工程"最终要将哪些组件,以哪种方式引入,并打包到最终的编译产物之中: ```groovy rubik { packing { projectMode { // projectMode,通过源码工程的方式引入组件 uri ("app://com.myapp.home") uri ("app://com.myapp.*") // 支持通过*匹配任意字符 } mavenMode { // mavenMode,通过maven上的aar的方式引入组件 uri ("app://com.myapp.detail") { version "0.2.0" } } } } ``` ## 测试 * 通过rubik-test插件,给当前工程的androidTest variant添加全部可pick组件的context.jar依赖,便于写测试用例。 ```kotlin @RunWith(AndroidJUnit4::class) class RouterTestCase { @Before fun init() { Rubik.init() } // 初始化Rubik @Test fun usePerview() { PerviewContext.preViewVideo(path) { success -> log("preViewVideo success:${success}") } // 测试用例 } … // 继续写测试用例 } ``` ## 如何贡献 请用Kotlin语言编写,所有注明动机的合理改动提交都会被接收。 ================================================ FILE: README_en.md ================================================

![license](https://img.shields.io/github/license/baidu/rubik.svg) ![platform](https://img.shields.io/badge/platform-Android-red) ![language](https://img.shields.io/github/languages/top/baidu/rubik) ![last](https://img.shields.io/github/last-commit/baidu/rubik.svg) ![release](https://img.shields.io/github/v/release/baidu/rubik?display_name=release)
中文 Readme
# Rubik Rubik is a comprehensive solution for Android platform componentized development. It provides the ability of routing communication between Gradle projects, as well as the ability of component definition, version control, Maven publishing, AAR/JAR and source code switching, and free composition of components. Rubik consists of two parts: * Rubik Router :Provide low coupling communication between components. The function level routing capability of Rubik. Unlike normal page router, Rubik Router allows the Uri and parameters to be navigated to any execution of a public JVM language (Java/Kotlin) function . It allows for more flexible communication between Gradle Projects without code calls. * Rubik Tools link :Provides component context definition, versioning, Maven publishing, AAR/JAR and source switching capabilities, including 4 Gradle Plugins: + rubik: - Provides the ability to define components globally, and automatically enables plugins such as rubik-context and rubik-shell based on the global definition + rubik-context: - Provide Task, automatically generate the intermediate code such as interface, and package the intermediate code into context.jar, release to Maven according to the version. - Provides tasks to compile business codes into AAR (including code, resources, and built-in SDK) based on flavor and version. publish them to Maven. - Automatically adds dependencies on other context.jars to subprojects where components reside + rubik-shell: - Provides the ability to picking components, picking components to be packaged into APK based on flavor and version. - Provide component source code and AAR switching ability. + rubik-test: - Provide unit testing environment for projects ## Quick start ### 1. Project creation and component declaration:   (1) Create or use one or more existing Android Library Modules as "component projects" (demo_component_detail, DEMO_component_home, etc. in Demo code) for developing real business logic.   (2) Set Rubik initialization parameters such as the Rubik version in the build.gradle or gradle.properties file of the gradle root project. and enable the Rubik plugin in the gradle root project: ```groovy ext { rubik_kapt_version = "com.rubik:kapt:1.9.1.1-K1_5" rubik_router_version = "com.rubik:router:1.9.1.1-K1_5" rubik_plugins_version = "com.rubik:plugins:1.9.1.1-AGBT4-K1_5" } apply plugin: 'rubik' // enable the Rubik plugin ```   (3) In the build.gradle file of the outermost project ,or rubik-*.gradle file in its sibling directory, configure the component information: ```groovy rubik { component { // The first component uri "app://com.myapp.home" // The Uri of component touching { // The component needs to depend on other components uri ("app://com.myapp.detail" ) { version "0.1.1" // Versions that depend on other components } uri( … ) } source { // Define the default source. project (":demo_component_home") } } component { … } // Proceed to configure the second component } ``` ### 2. Let components communicating to each other.:   (1). In the interface provider project, defined routing path by annotations, as a communication interface that a component exposes to other components:     Declare function route with the RFunction annotation: ```kotlin @RFunction(path = "account/user") fun getUser(id : Int, name : String) : User? { … } ```     Declare page route with the RPage annotation: ```kotlin @RPage(path = "page/main") class HomeActivity : AppCompatActivity() { … } ```   (2). Run "publishRubikXxxRContextLib" task in the interface provider project, release the component context to the cloud or local maven repository.   (3). Run "publishRubikXxxRComponent" task in the interface provider project, release the component aar to the cloud or local maven repository.   (4). In the interface caller project, there are two ways to call the interface provided by the above interface provider:     Via Kotlin DSL: ```kotlin navigate { uri = "app://com.myapp.detail/account/user" // The request uri query { // Parameters of the request "id" with 400 "name" with "CuiVincent" } result { user -> // The received data type is specified by generics, and multiple asynchronous returns can be received as multiple results … } } ```     Via automatically generated image functions: ```kotlin DetailContext.Account.user(400, "CuiVincent" ) { user -> … // The parameter type and return value type of the automatically generated image function are clear, which is more binding than the DSL } ``` ### 3. Picking components to package   (1). Create or use an existing Android Application Project as a "shell project" (demo_root_app in demo code) to assemble and compile components to Apk.   (2). In the build.gradle file of the shell project or rubik-*.gradle file in its sibling directory, specify which components the shell project will eventually bring in and how they will be packaged into the final build product: ```groovy rubik { packing { projectMode { // projectMode,Introduce components through source code project uri ("app://com.myapp.home") uri ("app://com.myapp.*") // Support to match any character through * } mavenMode { // mavenMode,Introduce components through AAR on maven uri ("app://com.myapp.detail") { version "0.2.0" } } } } ``` ## Test * Through the rubik-test plugin, add all the context.jar dependencies of picked components to androidTest Variant of the current project, which is easy to write test cases. ```kotlin @RunWith(AndroidJUnit4::class) class RouterTestCase { @Before fun init() { Rubik.init() } // Initialize Rubik @Test fun usePerview() { PerviewContext.preViewVideo(path) { success -> log("preViewVideo success:${success}") } // Test case } … // Continue to write test cases } ``` ## How to contribute Please write in Kotlin, and all change commit with reasonable motivation will be accepted. ================================================ FILE: build.gradle ================================================ // Top-level build file where you can add configuration options common to all sub-projects/modules. apply plugin: 'rubik' buildscript { ext { rubik_tmp_lib_dir = uri('./rubik_libs_repository').path // default:./rubik_libs // rubik_tmp_lib_dir_mode = false // default: false rubik_maven_repository = "http://my.maven/repository/releases/" rubik_maven_username = "admin" // simple rubik_maven_password = "123" // simple rubik_maven_local_repository = uri('./rubik_maven_local_repository').path // rubik_use_reset_compiler = false // default: true // rubik_publish_context_lib_source = true // default: true // rubik_kapt_version = "com.rubik:kapt:xxx" // @see version.gradle in this demo // rubik_router_version = "com.rubik:router:xxx" // @see version.gradle in this demo // rubik_plugins_version = "com.rubik:plugins:xxx" // @see version.gradle in this demo // rubik_kapt_source_folder = "generated/source/kaptKotlin" // rubik_clean_before_task = false // default: true rubik_auto_generate_aggregate = true // default: false rubik_generate_aggregate_in_build_dir = false // default: true // only usable when rubik_auto_generate_aggregate = true rubik_aggregate_kdoc_add_user_add_time = false // default: true rubik_auto_generate_component_id = true // default: false rubik_generate_router_context = true // default: false // rubik_extension_name = "rk" // rubik_auto_apply_shell_plugin = false // default: true rubik_config_file_dirs = [uri('./demo').path] // rubik_github_maven_repository = "https://maven.pkg.github.com/baidu/rubik/" // rubik_github_maven_username = "myname" // rubik_github_maven_password = "123" // rubik_enable_check_router_version = true // default: false // rubik_enable_check_context_version = true // default: false // rubik_check_context_lib_tasks_state = false // default: true // rubik_context_packing_compile_only = false // default: true // rubik_auto_fill_flavor = false // default: true // rubik_strict_touching_and_packing = false // default: true rubik_except_component_build_types = ['debug'] rubik_except_component_flavors = ['company2'] rubik_remove_project_when_publish_context_libs = false // default: true rubik_publication_record_files_dir = uri('./rubik_libs_repository').path // rubik_auto_update_publication_record = false // default: true // // rubik_auto_use_publication_record = false // default: true rubik_publication_record_history_max_size = 15 // default: 10 rubik_on_route_method_max_size = 15 // default: 100 // rubik_sync_code_enable = false // default: true // // rubik_auto_generate_settings = false // default: true rubik_log_level = 1 // 1:all logs , 2:default , 3:least logs rubik_write_log_to_file = false // rubik_ignore_value_annotations = ["com.google.gson.annotations.SerializedName"] } apply from: 'version-adapter.gradle' apply from: 'versions.gradle' addRepos(repositories) dependencies { classpath "com.android.tools.build:gradle:$agbt_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath rubik_plugins_version } } allprojects { addRepos(repositories) } task clean(type: Delete) { delete rootProject.buildDir } ================================================ FILE: demo/demo_component_detail/build.gradle ================================================ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 30 buildToolsVersion "30.0.0" defaultConfig { minSdkVersion 23 targetSdkVersion 30 versionCode 1 versionName "1.0" consumerProguardFiles 'consumer-rules.pro' } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } flavorDimensions "company", "channel" productFlavors { company1 { dimension "company" } company2 { dimension "company" } channel1 { dimension "channel" } channel2 { dimension "channel" } } } androidExtensions { experimental = true } rubik { aggregateSet uri('./src/main/ra').path } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.code.gson:gson:2.8.5' // implementation project(':demo:demo_until_library_a') } ================================================ FILE: demo/demo_component_detail/consumer-rules.pro ================================================ ================================================ FILE: demo/demo_component_detail/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ================================================ FILE: demo/demo_component_detail/src/main/AndroidManifest.xml ================================================ ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/AipsInCompanion.kt ================================================ package com.mars.component.detail.api import com.rubik.annotations.route.RRoute class AipsInCompanion { companion object DetailCompanion { // Companion方法 @RRoute(path = "doSthCompanion") fun doSthCompanion(i: Int, j: String, k: Long): String { println(" AP DBG DETAIL doSthCompanion begin !!! i:$i j:$j k:$k") return "result = i:$i j:$j k:$k" } // Companion属性 @RRoute(path = "property/companion") var propertyCompanion: String = "bnm3" // Companion高阶函数 @RRoute(path = "doSthHOFCompanion") val doSthHOFCompanion: (Int) -> Int = { println(" AP DBG DETAIL doSthHOFCompanion begin !!!") it + 102 } } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/AipsInTop.kt ================================================ package com.mars.component.detail.api import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RRoute //顶层方法 @RRoute(path = "doSthTop") fun doSthTop( ints: Array, li: List, strings: Array, ls: List, beans: Array, lb: List ): List { println(" AP DBG DETAIL doSthTop begin beans:${ints[0]} li:${li[0]} ls:${ls[0]} strings:${strings[0]} beans:${beans[0]} lb:${lb[0]} !!!") return lb } //顶层高阶函数 @RRoute(path = "doSthHOFTop") val doSthHOFTop: (Unit) -> Unit = { println(" AP DBG DETAIL doSthHOFTop begin !!!") } //顶层属性 @RRoute(path = "property/top") var propertyTop: String = "bnm" ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApiSerialization.kt ================================================ package com.mars.component.detail.api import com.mars.component.detail.value.TestParcelizeBean import com.mars.component.detail.value.TestSerializableBean import com.rubik.annotations.route.function.RFunction class ApiSerialization { @RFunction(path = "api/serialization/parcel-bean") fun doSthParcelBean(parcelBean: TestParcelizeBean?): TestParcelizeBean { println(" AP DBG DETAIL doSthParcelBean begin parcelBean:${parcelBean?.d2}!!!") return TestParcelizeBean(430,"from detail!") } @RFunction(path = "api/serialization/parcel-array") fun doSthParcelArray(parcels: Array): Array { println(" AP DBG DETAIL doSthParcelArray begin parcels:${parcels.size}!!!") println(" AP DBG DETAIL doSthParcelArray begin parcels 0 :${parcels[0].d2}!!!") return arrayOf( TestParcelizeBean(430, "from detail 11!"), TestParcelizeBean(430, "from detail 22!"), TestParcelizeBean(430, "from detail 33!") ) } @RFunction(path = "api/serialization/parcel-list") fun doSthParcelList(parcels: List): List { println(" AP DBG DETAIL doSthParcelList begin parcels:${parcels.size}!!!") println(" AP DBG DETAIL doSthParcelList begin parcels 0 :${parcels[0].d2}!!!") return listOf( TestParcelizeBean(430, "from detail 22!"), TestParcelizeBean(430, "from detail 33!"), TestParcelizeBean(430, "from detail 44!") ) } @RFunction(path = "api/serialization/Serializable-bean") fun doSthSerializableBean(serializableBean: TestSerializableBean): TestSerializableBean { println(" AP DBG DETAIL doSthSerializableBean begin serializableBean:${serializableBean.d2}!!!!!!") return TestSerializableBean(530,"from detail!") } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/Apis.kt ================================================ package com.mars.component.detail.api import android.app.Activity import android.content.Context import android.view.View import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ViewModelStoreOwner import com.mars.component.detail.value.TestDataBean import com.mars.component.detail.value.TestListBean import com.mars.component.detail.value.mapping.TestDataMappingBean import com.mars.component.detail.value.mapping.TestNestDataMappingBean import com.rubik.annotations.route.RRoute typealias AliasHof = (String?) -> String? typealias AigcChatHybridActionCreator = ( activity: Activity, owner: ViewModelStoreOwner, lifecycleOwner: LifecycleOwner, hybridActionBuilder: LifecycleOwner?, baseView: LifecycleOwner? ) -> LifecycleOwner? class Apis { // 无参无返回值 @RRoute(path = "do-sth") fun doSth() { println(" AP DBG DETAIL doSth begin !!!") } // 高阶函数 @RRoute(path = "do-sth-hof", forResult = true, version = "2.0") val doSthHOF: (Int, String, TestDataBean) -> Int = { a, b, c -> println(" AP DBG DETAIL doSthHOF begin b:$b c:$c!!!") a + 102 } // 属性 @RRoute(path = "property/property", version = "1.0") val property: String = "vbn" // 返回View @RRoute(path = "view/get") fun getView(context: Context): View? { println(" AP DBG DETAIL getView begin !!!") return View(context) } // uri传递参数 @RRoute(path = "sth/{id}/a-{name}?code1={code1}&code2={code2}") fun getSth(id: String, name: String, code1: String, code2: String): String { println(" AP DBG DETAIL getSth begin id:$id name:$name code1:$code1 code2:$code2 !!!") return "$id => $name => $code1 => $code2" } // navigationOnly @RRoute(path = "sth-navigation-only/{uri}", navigationOnly = true) fun getSthNavigationOnly(uri: String): String { println(" AP DBG DETAIL getSthNavigationOnly begin uri:$uri !!!") return "$uri !" } // 变长参数 @RRoute(path = "doSthVararg") fun doSthVararg(no: Int, vararg varargString: String) { println(" AP DBG DETAIL doSthVararg begin strings:${varargString.getOrNull(0)}!!!") } @RRoute(path = "doSthVarargHof") fun doSthVarargHof(no: Int, vararg varargString: AigcChatHybridActionCreator) { println(" AP DBG DETAIL doSthVarargHof begin strings:${varargString.getOrNull(0)}!!!") } // Bean参数返回值 @RRoute(path = "doSthBean") fun doSthBean(a1: TestDataBean): TestListBean { println(" AP DBG DETAIL doSthBean begin a1:${a1.d1}!!!") return TestListBean(55) } // // BeanList参数返回值 // @RRoute(context = "com.mars.rubik-test.detail", path = "doSthBean") // fun doSthBeanList(a1: List?): List? { // println(" AP DBG DETAIL doSthBean begin a1:${a1?.getOrNull(0)}!!!") // return listOf(TestDataNotRValueBean(66, "")) // } // uri冲突 // @RRoute(path = "doSthUriCrash") // fun doSthUriCrash1(name: String, code: String) { // } // // @RRoute(path = "doSthUriCrash") // fun doSthUriCrash2(name: String, code: String, version: String) { // } @RRoute(path = "do-sth-uri-crash") fun doSthUriCrash3(name: String, code: String) { } @RRoute(path = "do-sth-uri-crash") fun doSthUriCrash4(name: String, code: String, version: String) { } // @RRoute(path = "do-sth-uri-crash") // fun doSthUriCrash5(name: String, code: String, version: String) { // } // Bean mapping参数返回值 @RRoute(path = "doSthMappingBean") fun doSthMappingBean(a1: TestDataMappingBean): TestDataMappingBean { println(" AP DBG DETAIL doSthMappingBean a1:${a1.d1}!!!") return TestDataMappingBean(655, "sdfa") } // Bean mapping参数返回值 @RRoute(path = "doSthTestNestDataMappingBean") fun doSthTestNestDataMappingBean(bean: TestNestDataMappingBean): TestNestDataMappingBean { println(" AP DBG DETAIL doSthTestNestDataMappingBean ${bean.d1?.d2} ${bean.d2?.d2} ${bean.d3?.d2} ${bean.d4} ${bean.d5}!!!") return TestNestDataMappingBean( TestDataBean(23, "11sdsd"), TestDataMappingBean(55, "11sdsd"), TestNestDataMappingBean( TestDataBean(4423, "22sdsd"), TestDataMappingBean(4455, "22sdsd"), null, listOf(TestDataBean(4423, "22sdsd")), listOf(TestDataMappingBean(4455, "22sdsd")) ), listOf(TestDataBean(23, "11sdsd")), listOf(TestDataMappingBean(55, "11sdsd")) ) } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApisAsyncReturn.kt ================================================ package com.mars.component.detail.api import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RResult import com.rubik.annotations.route.RRoute class ApisAsyncReturn { // 高阶函数异步返回 @RRoute(path = "doSthAsyncHOF") fun doSthAsyncHOF(@RResult hof: (String, TestDataBean) -> Unit) { println(" AP DBG DETAIL doSthAsyncHOF begin !!!") hof("dfg", TestDataBean(101, "xxx")) } // 高阶函数异步返回 @RRoute(path = "doSthAsyncHOFNullable") fun doSthAsyncHOFNullable( @RResult hofx1res: ((String, TestDataBean) -> Unit)?, hof2xx: ((String, TestDataBean) -> Unit)?, // @RResult hofx3res: ((String, Int, TestDataBean) -> TestDataBean)?, hof4xx: ((String, Int, TestDataBean) -> TestDataBean?)? ) { println(" AP DBG DETAIL doSthAsyncHOFNullable begin !!!") hofx1res?.invoke("dfg", TestDataBean(101, "xxx")) } @RRoute(path = "doSthAsync2HOF") fun doSthAsyncHOF( @RResult hof: (String, Int) -> Unit, @RResult hof2: (String, Int) -> Unit ) { println(" AP DBG DETAIL doSthAsyncHOF begin !!!") hof("dfg", 22) hof2("dfg2", 222) } // 接口异步返回 @RRoute(path = "doSthAsyncOpen") fun doSthAsyncOpen(uri: String, @RResult results: Callback?) { println(" AP DBG DETAIL doSthAsyncOpen begin uri:$uri !!!") results?.onCall("zxc", 33) } @RRoute(path = "do-sth-async-interface") fun doSthAsyncInterface(@RResult onResult: Callbackable) { println(" AP DBG DETAIL doSthAsyncInterface begin !!!") onResult.onCall("zxc", 33) } @RRoute(path = "do-sth-async-3-interface") fun doSthAsync2Interface( @RResult onResult: Callbackable?, @RResult onResult2: Callbackable, @RResult onResult3: BeanCallbackable // @RResult onResult4: BeanReturnCallbackable, // func5: BeanReturnCallbackable ) { println(" AP DBG DETAIL doSthAsyncInterface begin !!!") onResult?.onCall("zxc", 33) onResult2.onCall("zxc2", 332) onResult3.onCall(TestDataBean(0, "abd")) } @RRoute(path = "do-sth-async-interface-multi-func") fun doSthAsyncInterfaceMultiFunc(@RResult onResult: MultiCallback) { println(" AP DBG DETAIL doSthAsyncInterface begin !!!") onResult.start("start1", 55) onResult.data(TestDataBean(1, "dfg")) onResult.stop("stop2", 66) } } open class Callback { open fun onCallNone(v1: String?, v2: Int) { // nothing } @RResult open fun onCall(v1: String?, v2: Int) { // nothing } } interface Callbackable { fun onCall(v1: String?, v2: Int) } interface BeanCallbackable { fun onCall(v: TestDataBean?) } interface MultiCallback { @RResult fun start(v1: String?, v2: Int) @RResult fun data(v: TestDataBean?) @RResult fun stop(v1: String?, v2: Int) } interface BeanReturnCallbackable { fun onCall(v: TestDataBean?):TestDataBean } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApisBadCase.kt ================================================ package com.mars.component.detail.api import android.content.Context import androidx.lifecycle.LiveData import com.rubik.annotations.route.RResult import com.rubik.annotations.route.RRoute class ApisBadCase { @RRoute(path = "getFilesMeta") fun getFilesMeta(context: Context?, path: String?, @RResult callback: GetFileMetaCallback) { } @RRoute(path = "enterprise/business/allocateTicket") fun allocateTicket(context: Context, shareId: Long, count: Int, packetType: Int): LiveData>? { return null } // @RRoute(path = "get/TestClassB") // fun allocateTicket( count: Int): LiveData? { // return null // } // @RFunction(path = "shareObject/createGroupLinkShareController") // fun createGroupLinkShareController( // activity: Activity?, // shareOption: String?, // image: ByteArray?, // handler: Handler?, // type: String? // ): GetFileMetaCallback? { // return null // } // // @RFunction(path = "shareObject/createGroupLinkShareController") // fun createGroupLinkShareController( // activity: Activity?, // shareOption: String?, // handler: Handler?, // type: String?, // @RResult shareHelper: GetFileMetaCallback? // ): GetFileMetaCallback? { // return null // } } interface GetFileMetaCallback { /** * 文件恢复结果通知 */ @RResult fun onResult(fsid: Long, path: String?) } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApisBigData.kt ================================================ package com.mars.component.detail.api import com.mars.component.detail.value.TestDataBean import com.mars.component.detail.value.TestParcelizeBean import com.rubik.annotations.route.function.RFunction class ApisBigData { private val testArraySize = 200001 private val testListSize = 200001 @RFunction(path = "api/bigdata/json-array") fun getBigJsonArray(array: Array): Array { println(" AP DBG DETAIL getBigJsonArray begin array:${array.size}!!!") return Array(testArraySize) { TestDataBean(it, "from detail! array:$it") } } @RFunction(path = "api/bigdata/parcel-array") fun getBigParcelArray(array: Array): Array { println(" AP DBG DETAIL getBigJsonArray begin array:${array.size}!!!") return Array(testArraySize) { TestParcelizeBean(it, "from detail! array:$it") } } @RFunction(path = "api/bigdata/lib-array") fun getBigLibArray(array: Array): Array { println(" AP DBG DETAIL getBigJsonArray begin array:${array.size}!!!") return Array(testArraySize) { TestDataBean(it, "from detail! array:$it") } // TestLibDataBean } @RFunction(path = "api/bigdata/json-list") fun getBigJsonList(list: List): List { println(" AP DBG DETAIL getBigJsonList begin list:${list.size}!!!") return MutableList(testListSize){ TestDataBean(it, "from detail! list:$it") } } @RFunction(path = "api/bigdata/parcel-list") fun getBigParcelList(list: List): List { println(" AP DBG DETAIL getBigJsonList begin list:${list.size}!!!") return MutableList(testListSize){ TestParcelizeBean(it, "from detail! list:$it") } } // @RFunction(path = "api/bigdata/lib-list") // fun getBigLibList(list: List): List { // println(" AP DBG DETAIL getBigJsonList begin list:${list.size}!!!") // return List(testListSize){ // TestLibDataBean(it, "from detail! list:$it") // } // } @RFunction(path = "api/bigdata/lib-list") fun getBigLibList(list: List): List { println(" AP DBG DETAIL getBigJsonList begin list:${list.size}!!!") return List(testListSize){ TestDataBean(it, "from detail! list:$it") } } @RFunction(path = "api/bigdata/parcel-arraylist") fun getBigParcelArrayList(list: List): MutableList { println(" AP DBG DETAIL getBigJsonList begin arraylist:${list.size}!!!") return MutableList(testListSize){ TestParcelizeBean(it, "from detail! arraylist:$it") } } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApisExt.kt ================================================ package com.mars.component.detail.api import com.rubik.annotations.route.RExtend import com.rubik.annotations.route.RRoute // 扩展函数 @RRoute(path = "do-sth-ext") fun doSthExt(s: String, @RExtend i: Int): Int { println(" AP DBG DETAIL doSthExt i:$i !!!") return i } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApisProvideInstance.kt ================================================ package com.mars.component.detail.api import com.rubik.annotations.route.RInstance import com.rubik.annotations.route.RRoute import com.rubik.annotations.route.instance.RRouteInstance class Task @RInstance( provideForPath = "do-sth-provide-instance-by-constructor" ) constructor(val value: String) { // 通过assist提供实例 @RRoute(path = "do-sth-provide-instance-by-func") fun doSthProvideObject() { println(" AP DBG DETAIL doSthProvideObject begin value:$value!!!") } @RRoute(path = "do-sth-provide-instance-by-func2") fun doSthProvideObject2() { println(" AP DBG DETAIL doSthProvideObject begin value:$value!!!") } @RRoute(path = "do-sth-provide-instance-by-parameter-func") fun doSthProvideObject2(v1: String, v2: Int?, v3: Int?) { println(" AP DBG DETAIL doSthProvideObjectByParameterFunction begin value:$value v1:$v1 v2:$v2 v3:$v3 :!!!") } @RRoute(path = "do-sth-provide-instance-by-constructor") fun doSthProvideObject3(v1: String, v2: Int?, v3: Int?) { println(" AP DBG DETAIL doSthProvideObjectByConstructor begin value:$value v1:$v1 v2:$v2 v3:$v3 :!!!") } } @RInstance(provideForPath = "do-sth-provide-instance-by-func") @RInstance(provideForPath = "do-sth-provide-instance-by-func2") fun provideTask(): Task { println(" AP DBG DETAIL provideTask begin !!!") return Task("TTT-CREATE BY FUNC") } @RInstance(provideForPath = "do-sth-provide-instance-by-parameter-func") fun provideTask2(value: String, v0: Int?): Task { println(" AP DBG DETAIL provideTask2 begin v0:$v0!!!") return Task(value) } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApisWithLiveData.kt ================================================ package com.mars.component.detail.api import android.os.Handler import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.mars.component.detail.value.TestDataBean import com.mars.component.detail.value.TestListBean import com.rubik.annotations.route.RRoute class ApisWithLiveData { // 传递LiveData @RRoute(path = "live-data/get") fun getSthLiveData(): LiveData { return MutableLiveData().apply { this.postValue("i am from A") Handler().postDelayed({ this.value = "i am also from A" }, 1000L) } } @RRoute(path = "live-data-bean/get") fun getSthLiveDataBean(): LiveData { return MutableLiveData().apply { this.value = TestDataBean(122334, "A1q2w3e") } } @RRoute(path = "live-data-bean-list/get") fun getSthLiveDataBeanList(): LiveData> { return MutableLiveData>().apply { this.value = listOf( TestListBean(45566778, listOf("A2QQQ", "A2WWW", "A2EEE")), TestListBean(67788990, listOf("A2AAA", "A2SSS", "A2DDD")) ) } } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/api/ApisWithResultReceiver.kt ================================================ package com.mars.component.detail.api import android.os.Bundle import android.os.Handler import android.os.ResultReceiver import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RRoute import com.rubik.route.mapping.query import com.rubik.router.bundleQueries import com.rubik.router.property class ApisWithResultReceiver { // 传递ResultReceiver @RRoute(path = "doSthResultReceiver") fun doSthResultReceiver(result: ResultReceiver): ResultReceiver { result.send(100, bundleQueries { "fromA" with " this is A " "BEAN_fromA" with TestDataBean(555,"A5r5r5r") }) return object : ResultReceiver(Handler()) { override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { super.onReceiveResult(resultCode, resultData) println( " AP DBG DETAIL doSthResultReceiver begin resultCode:$resultCode " + "resultData1:${resultData?.property("fromB" )} resultData2:${resultData?.property( "BEAN_fromB" )?.d2} !!!" ) } } } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/callback/CallbackTestDefault.kt ================================================ package com.mars.component.detail.callback import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RCallback @RCallback interface CallbackTestDefault { fun callbackDefault1(int1: Int) fun callbackDefault2(bean:TestDataBean?) } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/callback/CallbackTestInterface.kt ================================================ package com.mars.component.detail.callback import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RCallback import com.rubik.annotations.route.RRoute @RCallback interface CallbackTestInterface { @RCallback fun callbackInt(i:Int) @RCallback fun callbackBean(bean:TestDataBean) @RCallback fun callbackBeanReBean(bean:TestDataBean?) } @RRoute(path = "do-sth-callback-object") fun doSthCallbackObject(callback: CallbackTestInterface) { println(" AP DBG DETAIL doSthCallbackObject begin this:${callback.hashCode()} !!!") callback.callbackInt(11) callback.callbackBean(TestDataBean(23, "sdsd")) callback.callbackBeanReBean(TestDataBean(24, "dfdf")) } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/event/Events.kt ================================================ package com.mars.component.detail.event import android.content.Context import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.context.REvent import com.rubik.annotations.route.RInstance import com.rubik.annotations.route.RResult import com.rubik.context.LifeCycleEvent data class EventsWithLambda( @REvent(msg = LifeCycleEvent.INIT) val init: () -> Unit = { println(" CT DBG init DETAIL EventsWithLambda begin !!! !!!") initSdk() }, @REvent(msg = LifeCycleEvent.DESTROY) val destroy: () -> Unit = { println(" CT DBG destroy DETAIL EventsWithLambda begin !!!") } ) class Events { @REvent(msg = LifeCycleEvent.INIT) fun onInit(context: Context, parameter1: String) { println(" CT DBG init DETAIL Events begin :${context.hashCode()} parameter1:$parameter1!!!") initSdk() } @REvent(msg = LifeCycleEvent.DESTROY) fun onDestroy(context: Context, parameter1: String) { println(" CT DBG destroy DETAIL Events begin :${context.hashCode()} parameter1:$parameter1!!!") } } class EventsByInstance { @REvent(msg = "MY_INIT", tag = "events-by-instance") fun onInit(arg1: Any, arg2: Any, arg3: Any) { println(" CT DBG MY_INIT DETAIL:${hashCode()} arg1:$arg1 arg2:$arg2 arg3:$arg3 EventsByInstance begin !!!") initSdk() } @REvent(msg = "MY_DESTROY", tag = "events-by-instance") fun onDestroy(arg1: Any, arg2: Any, arg3: Any) { println(" CT DBG MY_DESTROY DETAIL:${hashCode()} arg1:$arg1 arg2:$arg2 arg3:$arg3 EventsByInstance begin !!!") } @REvent(msg = "MY_CALLBACK_RES", tag = "events-by-instance") fun onCallbackRes(arg1: Any, @RResult result: (Int) -> Unit) { println(" CT DBG MY_CALLBACK DETAIL:${hashCode()} arg1:$arg1 result:$result EventsByInstance begin !!!") } @REvent(msg = "MY_CALLBACK_RES_BEAN", tag = "events-by-instance") fun onCallbackResBean(arg1: Any, @RResult result: (TestDataBean) -> Unit) { println(" CT DBG MY_CALLBACK_RES_BEAN DETAIL:${hashCode()} arg1:$arg1 result:$result EventsByInstance begin !!!") } @REvent(msg = "MY_CALLBACK_BEAN", tag = "events-by-instance") fun onCallbackBean(arg1: Any, bean: TestDataBean) { println(" CT DBG MY_CALLBACK_BEAN DETAIL:${hashCode()} arg1:$arg1 result:$bean EventsByInstance begin !!!") } } fun initSdk() { println(" CT DBG initSdk begin !!!") } private val life = EventsByInstance() @RInstance(provideForTag = "events-by-instance") @RInstance(provideForTag = "events-by-instance") fun provideEventsInstance(bool: Boolean) = life ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/objekt/ObjectTest.kt ================================================ package com.mars.component.detail.objekt import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RObject import com.rubik.annotations.route.RRoute import com.rubik.annotations.route.function.RFunction @RObject class ObjectTest(val value: String) { @RRoute(path = "do-sth-in-common-instance") fun doSthInObject(): TestDataBean { println(" AP DBG DETAIL doSthProvideObject begin this:${this.hashCode()} value:$value!!!") return TestDataBean(645, "ahr") } @RRoute(path = "do-sth-in-common-instance-parameter") fun doSthInObject2(v1: String, v2: Int?, v3: Int?) { println(" AP DBG DETAIL doSthProvideObject2 begin this:${this.hashCode()} value:$value " + "v1:$v1 v2:$v2 v3:$v3 :!!!") } @RFunction(path = "object/get/do-sth-in-common-ins") fun doSthInObject3(v1: String, v2: Int?, v3: Int?) { println(" AP DBG DETAIL doSthProvideObject3 begin this:${this.hashCode()} value:$value " + "v1:$v1 v2:$v2 v3:$v3 :!!!") } } // get and send @RRoute(path = "get-a-other-common-instance") fun getAOtherObjectTest(i: Int) :ObjectTest= ObjectTest("x1x").apply { println(" AP DBG DETAIL getAOtherObjectTestDa ${hashCode()} value:$value") } @RRoute(path = "send-back-common-instance") fun senBackObjectTest(obj: ObjectTest) { println(" AP DBG DETAIL senBackObjectTest ${obj.hashCode()} value:${obj?.value}") } @RFunction(path = "get-a-lot-of-common-instance") fun getALotOfObjectTest(i: Int):List = mutableListOf( ObjectTest("yy1").apply { println(" AP DBG DETAIL getALotOfObjectTest 1 ${hashCode()} value:$value") }, ObjectTest("yy2").apply { println(" AP DBG DETAIL getALotOfObjectTest 2 ${hashCode()} value:$value") }, ObjectTest("yy3").apply { println(" AP DBG DETAIL getALotOfObjectTest 3 ${hashCode()} value:$value") }) @RFunction(path = "send-back-a-lot-of-common-instance") fun senBackALotOfObjectTest(objs: Map) { objs.forEach { (key, value) -> println(" AP DBG DETAIL senBackALotOfObjectTest ${value.hashCode()} value:${value?.value} key:$key") } } @RRoute(path = "get-a-other-common-instance-null") fun getAOtherObjectTestNull(i: Int) :ObjectTest?= ObjectTest("x1x").apply { println(" AP DBG DETAIL getAOtherObjectTestNull ${hashCode()} value:$value") } @RRoute(path = "send-back-common-instance-null") fun senBackObjectTestNull(obj: ObjectTest?) { println(" AP DBG DETAIL senBackObjectTestNull ${obj.hashCode()} value:${obj?.value}") } @RFunction(path = "get-a-lot-of-common-instance-null") fun getALotOfObjectTestNull(i: Int):List? = mutableListOf( ObjectTest("yy1").apply { println(" AP DBG DETAIL getALotOfObjectTestNull 0 ${hashCode()} value:$value") }, ObjectTest("yy2").apply { println(" AP DBG DETAIL getALotOfObjectTestNull 1 ${hashCode()} value:$value") }, ObjectTest("yy3").apply { println(" AP DBG DETAIL getALotOfObjectTestNull 2 ${hashCode()} value:$value") }) @RFunction(path = "send-back-a-lot-of-common-instance-null") fun senBackALotOfObjectTesNull(objs: Map?) { objs?.forEach { (key, value) -> println(" AP DBG DETAIL senBackALotOfObjectTesNull ${value.hashCode()} value:${value?.value} key:$key") } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/objekt/ObjectTestCteate.kt ================================================ package com.mars.component.detail.objekt import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RObject import com.rubik.annotations.route.RRoute class ObjectTestCreate @RObject constructor( val v1: Int, val v2: String ) { @RObject constructor( v1: Int, v2: Int, v3: Int, v4: Int ) : this(v1, v1.toString()) @RRoute(path = "do-sth-create-common-instance") fun doSthInCreateObject(): TestDataBean { println(" AP DBG DETAIL doSthInCreateObject begin this:${this.hashCode()} value:$v2!!!") return TestDataBean(985, "gds") } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/test/TestDataTypeTask.kt ================================================ package com.mars.component.detail.test import android.content.Context import com.mars.component.detail.value.TestNullableBean import com.rubik.annotations.route.RResult import com.rubik.annotations.route.RRoute class TestDataTypeTask { @RRoute(path = "doTestDataType1", forResult = true) fun doTestDataType1(data: Context?): Context? { println(" AP DBG doTestDataType1 Context !!!") return data } @RRoute(path = "doTestDataType2", forResult = true) fun doTestDataType2(data: Int?): Int? { println(" AP DBG doTestDataType2 Int !!!") return data } @RRoute(path = "doTestDataType3", forResult = true) fun doTestDataType3(data: String?): String? { println(" AP DBG doTestDataType3 String !!!") return data } @RRoute(path = "doTestDataType4", forResult = true) fun doTestDataType4(data: TestNullableBean?): TestNullableBean? { println(" AP DBG doTestDataType4 A1Bean!!!") return data } @RRoute(path = "doTestDataType5", forResult = true) fun doTestDataType5(data: List?): List? { println(" AP DBG doTestDataType5 List!!!") return data } @RRoute(path = "doTestDataType6", forResult = true) fun doTestDataType6(data: Array?): Array? { println(" AP DBG doTestDataType7 Array !!!") return data } @RRoute(path = "doTestDataType7", forResult = true) fun doTestDataType7(data: LongArray?): LongArray? { println(" AP DBG doTestDataType6 LongArray !!!") return data } @RRoute(path = "doTestDataType8", forResult = true) fun doTestDataType8(data: IntArray?): IntArray? { println(" AP DBG doTestDataType8 IntArray !!!") return data } @RRoute(path = "doTestDataType9", forResult = true) fun doTestDataType9(data: BooleanArray?): BooleanArray? { println(" AP DBG doTestDataType9 BooleanArray !!!") return data } @RRoute(path = "doTestDataType10") fun doTestDataType10(resultSuccess: (Int) -> Unit, resultSuccess2: (String) -> Unit) { println(" AP DBG HOF doTestDataType10 C1Bean HOF !!") resultSuccess.invoke(300) resultSuccess2.invoke("res-sus-10") } @RRoute(path = "doTestDataType11") fun doTestDataType11( @RResult resultSuccess: (Int, TestNullableBean) -> Unit, @RResult resultSuccess2: (TestNullableBean?) -> Unit ) { println(" AP DBG HOF doTestDataType11 C1Bean HOF !!") resultSuccess.invoke(400, TestNullableBean(null, "res-sus-11")) Thread().run { Thread.sleep(500) resultSuccess2.invoke(null) } } @RRoute(path = "doTestDataType13", forResult = true) fun doTestDataType13(data: List): List { println(" AP DBG doTestDataType13 List!!!") return data } @RRoute(path = "doTestDataType14", forResult = true) fun doTestDataType14(data: ArrayList): ArrayList { println(" AP DBG doTestDataType14 ArrayList!!!") return data } @RRoute(path = "doTestDataType15", forResult = true) fun doTestDataType15(data: List): List { println(" AP DBG doTestDataType15 List!!!") return data } @RRoute(path = "doTestDataType16", forResult = true) fun doTestDataType16(data: ArrayList): ArrayList { println(" AP DBG doTestDataType16 ArrayList!!!") return data } @RRoute(path = "doTestDataType17", forResult = true) fun doTestDataType17(data: List): List { println(" AP DBG doTestDataType17 List!!!") return data } @RRoute(path = "doTestDataType18", forResult = true) fun doTestDataType18(data: ArrayList): ArrayList { println(" AP DBG doTestDataType18 ArrayList!!!") return data } @RRoute(path = "doTestDataType19", forResult = true) fun doTestDataType19(data: ArrayList>): ArrayList> { println(" AP DBG doTestDataType19 ArrayList>!!!") return data } @RRoute(path = "doTestDataType20", forResult = true) fun doTestDataType20(media: Pair): List?{ return null } @RRoute(path = "doTestDataType21", forResult = true) fun doTestDataType21(data: List): List { println(" AP DBG doTestDataType21 List!!!") return data } @RRoute(path = "doTestDataType22", forResult = true) fun doTestDataType22(data: MutableList): MutableList { println(" AP DBG doTestDataType22 MutableList!!!") return data } @RRoute(path = "doTestDataType23", forResult = true) fun doTestDataType23(data: Array): Array { println(" AP DBG doTestDataType23 Array!!!") return data } @RRoute(path = "doTestDataType24", forResult = true) fun doTestDataType24(data: Map): Map { println(" AP DBG doTestDataType24 Map!!!") return data } @RRoute(path = "doTestDataType25", forResult = true) fun doTestDataType25(data: MutableMap): MutableMap { println(" AP DBG doTestDataType25 MutableMap!!!") return data } @RRoute(path = "doTestDataType26", forResult = true) fun doTestDataType26(data: Set): Set { println(" AP DBG doTestDataType26 ASet!!!") return data } @RRoute(path = "doTestDataType27", forResult = true) fun doTestDataType27(data: MutableSet): MutableSet { println(" AP DBG doTestDataType27 MutableSet!!!") return data } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/test/TestDefaultPathTask.kt ================================================ package com.mars.component.detail.test import android.app.Activity import com.rubik.annotations.route.RRoute import com.rubik.annotations.route.function.RFunction import kotlin.reflect.jvm.internal.impl.load.kotlin.JvmType class TestDefaultPathTask { @RFunction fun testName(){ } @RFunction fun TEST_NAME_UP(){ } @RFunction val testNameString = "" @RRoute(forResult = false,resultType = Any::class) constructor() } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/test/TestGenericityTask.kt ================================================ package com.mars.component.detail.test import androidx.lifecycle.LiveData import com.mars.component.detail.value.TestNullableBean import com.rubik.annotations.route.RRoute @RRoute(path = "doTestGenericity1", forResult = true) fun doTestGenericity1(data: List?): List? { println(" AP DBG doTestGenericity1 Context !!!") return data } @RRoute(path = "doTestGenericity2", forResult = true) fun doTestGenericity2(data: LiveData?): LiveData? { println(" AP DBG doTestGenericity2 Context !!!") return data } @RRoute(path = "doTestGenericity3", forResult = true) fun doTestGenericity3(data: Map): Map { println(" AP DBG doTestGenericity3 Context !!!") return data } class TestGenericityTask { @RRoute(path = "testGenericity4", forResult = true) val testGenericity4: List = listOf() @RRoute(path = "testGenericity5", forResult = true) val testGenericity5: (List?) -> List? = { println(" AP DBG testGenericity5 Context !!!") it } @RRoute(path = "doTestGenericity6", forResult = true) fun doTestGenericity6(data: Array?): Array? { println(" AP DBG doTestGenericity6 Context !!!") return data } companion object { @RRoute(path = "doTestGenericity7", forResult = true) fun doTestGenericity7(data: Array?): Array? { println(" AP DBG doTestGenericity7 Context !!!") return data } } } @RRoute(path = "doTestGenericity8") fun doTestGenericity8(resultSuccess: (ArrayList) -> Unit){ println(" AP DBG doTestGenericity8 Context !!!") } @RRoute(path = "doTestGenericity9") fun doTestGenericity9(resultSuccess: (List) -> Unit){ println(" AP DBG doTestGenericity9 Context !!") } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/ui/FirstPageActivity.kt ================================================ package com.mars.component.detail.ui import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.mars.component.detail.R import com.mars.component.detail.value.TestCompanionBean import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RProperty import com.rubik.annotations.route.page.RPage import com.rubik.router.property import kotlinx.android.synthetic.main.activity_a1.* @RPage(path = "activity/page1") @RPage(path = "activity/page1_from_home") @RPage(path = "activity/page1_from_detail") class FirstPageActivity : AppCompatActivity() { @RProperty(name = "key_int_for_home", forPath = ["activity/page1_from_home"]) private var intForA1b: Int? = null get() = property("key_int_for_home") @RProperty(name = "key_int_for_detail", forPath = ["activity/page1_from_detail"]) private var intForA1c: Int? = null get() = property("key_int_for_detail") @RProperty(name = "key_int_for_all", forPath = ["activity/page1_from_home", "activity/page1_from_detail"]) private var intForAll: Int? = null get() = property("key_int_for_all") @get:RProperty(name = "key_3_int") private val inta: Int get() = property("key_3_int") ?: -1 @get:RProperty(name = "uri") private val str: String? get() = property("uri") @get:RProperty(name = "key_4_strs", extra = "serializable") private val strs: List? get() = property("key_4_strs") @get:RProperty(name = "key_a_ints") private val ints: List? get() = property("key_a_ints") private var aints: ArrayList? = null get() = property("key_a_ints") @RProperty(name = "key_5_bean") private var bean: TestDataBean? = null get() = property("key_5_bean") @RProperty(name = "key_1_pa") private var pa: TestCompanionBean? = null get() = property("key_1_pa") @RProperty(name = "key_2_pa_ar") private var paAr: Array? = null get() = property("key_2_pa_ar") @RProperty(name = "key_c_pa_li") private var paLi: List? = null get() = property("key_c_pa_li") // @RProperty(name = "key_pa_p") // private var paP: A3Bean? = null // get() = parcelableProperties("key_pa_p") // // @RProperty(name = "key_pa_ar_p") // private var paArP: Array? = null // get() = parcelableArrayProperties("key_pa_ar_p") // // @RProperty(name = "key_pa_li_p") // private var paLiP: List? = null // get() = parcelableListProperties("key_pa_li_p") // // @RProperty(name = "key_ser") // private var ser: A4Bean? = null // get() = serializablProperties("key_ser") override fun onCreate(savedInstanceState: Bundle?) { println(" CT DBG TEST FirstPageActivity onCreate !!!") super.onCreate(savedInstanceState) setContentView(R.layout.activity_a1) val msg = "Hello FirstPageActivity !!\n" + "$inta\n" + "$str\n" + "$strs\n" + "$ints\n" + "$aints\n" + "${bean?.d1}\n" + "${pa?.d1}\n" + "${paAr?.get(0)?.d1}\n" + "${paLi?.get(0)?.d1}\n" // "$ser\n" // "${paP?.b1}\n" + // "${paArP?.get(0)?.b1}\n" + // "${paLiP?.get(0)?.b1}\n" text_hello.text = msg } } //@RRoute(path = "notActivity2") //class NotActivity(val b :TestClassB){ //} ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/ui/FirstPageFragment.kt ================================================ package com.mars.component.detail.ui import androidx.fragment.app.Fragment import com.rubik.annotations.route.RRoute import com.rubik.annotations.route.function.RFunction class FirstPageFragment @RFunction( path = "fragment/page1", resultType = Fragment::class ) constructor() : Fragment() { val name = "FirstPageFragment" } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/ui/SecondPageActivity.kt ================================================ package com.mars.component.detail.ui import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.mars.component.detail.R import com.rubik.annotations.route.RProperty import com.rubik.annotations.route.RRoute import com.rubik.annotations.route.page.RPage import com.rubik.router.property import kotlinx.android.synthetic.main.activity_a1.* @RPage(path = "activity/page2/{key_str1}/{key_str2}/{key_str3}") class SecondPageActivity : AppCompatActivity() { @RProperty(name = "key_str1") private var str1: String? = null get() = property("key_str1") @RProperty(name = "key_str2") private var str2: String? = null get() = property("key_str2") @RProperty(name = "key_str3") private var str3: String? = null get() = property("key_str3") override fun onCreate(savedInstanceState: Bundle?) { println(" CT DBG TEST SecondPageActivity onCreate !!!") super.onCreate(savedInstanceState) setContentView(R.layout.activity_a1) val msg = "Hello SecondPageActivity !!\n" + "$str1\n" + "$str2\n" + "$str3\n" text_hello.text = msg setResult(200, Intent().apply { putExtra("data", "data from A2") }) } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestCompanionBean.kt ================================================ package com.mars.component.detail.value import com.rubik.annotations.route.RValue @RValue data class TestCompanionBean(val d1: Int, val d2: String) { companion object { const val C1 = 33 const val C2 = "CONST_COMP" const val C3: Float = 0.1F } } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestCreateBean.kt ================================================ package com.mars.component.detail.value import com.google.gson.annotations.SerializedName import com.rubik.annotations.route.RRoute import com.rubik.annotations.route.RValue @RValue data class TestCreateBean @RRoute( path = "test-bean/create" ) constructor( @SerializedName("data1") val d1: Int?, @SerializedName("data2") val d2: String? ) ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestDataBean.kt ================================================ package com.mars.component.detail.value import com.rubik.annotations.route.RValue import com.google.gson.annotations.SerializedName @RValue data class TestDataBean(@SerializedName("data1") val d1: Int?, @SerializedName("data2") val d2: String?) ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestDataNotRValueBean.kt ================================================ package com.mars.component.detail.value import com.rubik.annotations.route.RValue import com.google.gson.annotations.SerializedName data class TestDataNotRValueBean(@SerializedName("data1") val d1: Int?, @SerializedName("data2") val d2: String?) ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestListBean.kt ================================================ package com.mars.component.detail.value import com.rubik.annotations.route.RValue import com.google.gson.annotations.SerializedName @RValue data class TestListBean(@SerializedName("data1") val d1: Int, val d2: List?) { constructor(b1: Int) : this(b1, listOf()) } ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestNullableBean.kt ================================================ package com.mars.component.detail.value import com.google.gson.annotations.SerializedName import com.rubik.annotations.route.RValue @RValue data class TestNullableBean(@SerializedName("ddd111") val d1: Int?, @SerializedName("ddd222") val d2: String?) ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestOriginalBean.kt ================================================ package com.mars.component.detail.value import java.io.Serializable import com.rubik.annotations.source.ROriginalValue @ROriginalValue data class TestOriginalBean (val d1:Int, val d2:String): Serializable ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestParcelizeBean.kt ================================================ package com.mars.component.detail.value import android.os.Parcel import android.os.Parcelable import com.google.gson.annotations.SerializedName import com.rubik.annotations.route.RValue import kotlinx.android.parcel.Parcelize @RValue @Parcelize data class TestParcelizeBean( val d1: Int?, val d2: String? ) : Parcelable //{ // constructor(parcel: Parcel) : this( // parcel.readInt(), // parcel.readString() // ) // override fun describeContents(): Int { // return 0 // } // // override fun writeToParcel(dest: Parcel?, flags: Int) { // dest?.writeInt(d1 ?: -1) // dest?.writeString(d2) // } // // companion object CREATOR : Parcelable.Creator { // override fun createFromParcel(parcel: Parcel): TestParcelizeBean { // return TestParcelizeBean(parcel) // } // // override fun newArray(size: Int): Array { // return arrayOfNulls(size) // } // } //} ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/TestSerializableBean.kt ================================================ package com.mars.component.detail.value import com.google.gson.annotations.SerializedName import com.rubik.annotations.route.RValue import java.io.Serializable @RValue data class TestSerializableBean( @SerializedName("data1") val d1: Int?, @SerializedName("data2") val d2: String? ):Serializable ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/mapping/TestDataMappingBean.kt ================================================ package com.mars.component.detail.value.mapping import com.google.gson.annotations.SerializedName import com.rubik.annotations.route.RValue data class TestDataMappingBean @RValue constructor( @SerializedName("data1") val d1: Int?, @SerializedName("data2") val d2: String? ) ================================================ FILE: demo/demo_component_detail/src/main/java/com/mars/component/detail/value/mapping/TestNestDataMappingBean.kt ================================================ package com.mars.component.detail.value.mapping import com.mars.component.detail.value.TestDataBean import com.rubik.annotations.route.RValue data class TestNestDataMappingBean @RValue constructor( val d1: TestDataBean?, val d2: TestDataMappingBean?, val d3: TestNestDataMappingBean?, val d4: List?, val d5: List? ) ================================================ FILE: demo/demo_component_detail/src/main/ra/rubik/generate/aggregate/demo_com_mars_rubik_test_detail/DetailAggregate.kt ================================================ package rubik.generate.aggregate.demo_com_mars_rubik_test_detail import android.app.Activity import android.content.Context import android.os.ResultReceiver import android.view.View import androidx.annotation.Keep import androidx.fragment.app.Fragment import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModelStoreOwner import com.mars.component.detail.api.AipsInCompanion import com.mars.component.detail.api.ApiSerialization import com.mars.component.detail.api.Apis import com.mars.component.detail.api.ApisAsyncReturn import com.mars.component.detail.api.ApisBadCase import com.mars.component.detail.api.ApisBigData import com.mars.component.detail.api.ApisWithLiveData import com.mars.component.detail.api.ApisWithResultReceiver import com.mars.component.detail.api.BeanCallbackable import com.mars.component.detail.api.Callback import com.mars.component.detail.api.Callbackable import com.mars.component.detail.api.GetFileMetaCallback import com.mars.component.detail.api.MultiCallback import com.mars.component.detail.api.Task import com.mars.component.detail.event.Events import com.mars.component.detail.event.EventsWithLambda import com.mars.component.detail.test.TestDataTypeTask import com.mars.component.detail.test.TestDefaultPathTask import com.mars.component.detail.test.TestGenericityTask import com.mars.component.detail.ui.FirstPageActivity import com.mars.component.detail.ui.FirstPageFragment import com.mars.component.detail.ui.SecondPageActivity import com.rubik.annotations.source.RAggregate import com.rubik.annotations.source.RGenerated import com.rubik.context.Aggregatable import com.rubik.context.AggregateFactory import com.rubik.identity.RAggregateId import com.rubik.route.mapping.castToTypeOfT import com.rubik.route.mapping.mapToType import com.rubik.route.mapping.toTypeOfT import kotlin.Any import kotlin.Array import kotlin.BooleanArray import kotlin.Function0 import kotlin.Function1 import kotlin.Function2 import kotlin.Function3 import kotlin.Function5 import kotlin.Int import kotlin.IntArray import kotlin.Long import kotlin.LongArray import kotlin.Pair import kotlin.String import kotlin.Unit import kotlin.collections.ArrayList import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.Set import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toCallbackTestInterfaceOrgMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toNullableObjectTestCtxMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toNullableObjectTestOrgMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toNullableTestDataMappingBeanCtxMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toNullableTestDataMappingBeanOrgMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toNullableTestNestDataMappingBeanCtxMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toNullableTestNestDataMappingBeanOrgMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toObjectTestCreateCtxMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toObjectTestCreateOrgMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toObjectTestCtxMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toObjectTestOrgMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toTestDataMappingBeanCtxMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toTestDataMappingBeanOrgMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toTestNestDataMappingBeanCtxMapping import rubik.generate.aggregate.demo_com_mars_rubik_test_detail.DetailAggregate.Mappings.toTestNestDataMappingBeanOrgMapping import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailRouteActions import com.mars.component.detail.callback.CallbackTestDefault as CallbackTestDefaultOrg import com.mars.component.detail.callback.CallbackTestInterface as CallbackTestInterfaceOrg import com.mars.component.detail.objekt.ObjectTestCreate as ObjectTestCreateOrg import com.mars.component.detail.objekt.ObjectTest as ObjectTestOrg import com.mars.component.detail.value.TestCompanionBean as TestCompanionBeanOrg import com.mars.component.detail.value.TestCreateBean as TestCreateBeanOrg import com.mars.component.detail.value.TestDataBean as TestDataBeanOrg import com.mars.component.detail.value.TestListBean as TestListBeanOrg import com.mars.component.detail.value.TestNullableBean as TestNullableBeanOrg import com.mars.component.detail.value.TestParcelizeBean as TestParcelizeBeanOrg import com.mars.component.detail.value.TestSerializableBean as TestSerializableBeanOrg import com.mars.component.detail.value.mapping.TestDataMappingBean as TestDataMappingBeanOrg import com.mars.component.detail.value.mapping.TestNestDataMappingBean as TestNestDataMappingBeanOrg import com.rubik.activity.Launcher as RubikLauncher import com.rubik.route.Queries as RubikQueries import com.rubik.route.ResultGroups as RubikResultGroups import com.rubik.route.Result as RubikResult import com.rubik.router.uri.Path as RubikPath import rubik.generate.context.demo_com_mars_rubik_test_detail.TestCompanionBean as TestCompanionBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestCreateBean as TestCreateBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean as TestDataBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataMappingBean as TestDataMappingBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestListBean as TestListBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestNestDataMappingBean as TestNestDataMappingBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestNullableBean as TestNullableBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestParcelizeBean as TestParcelizeBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.TestSerializableBean as TestSerializableBeanCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.callback.CallbackTestDefault as CallbackTestDefaultCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.callback.CallbackTestInterface as CallbackTestInterfaceCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTestCreate as ObjectTestCreateCtx import rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTest as ObjectTestCtx /** * aggregate router function and router event of Rubik Context. * * uri: [demo://com.mars.rubik-test.detail] * version: 0.0.1-DEV */ @RGenerated( kind = "aggregate", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.1-DEV" ) @Keep class DetailAggregate : Aggregatable, DetailRouteActions { override fun onEvent(msg: String, queries: RubikQueries) { when (msg){ "MY_INIT" -> { // com.mars.component.detail.event.EventsByInstance.onInit // - parameters: // --- arg1 : kotlin.Any // --- arg2 : kotlin.Any // --- arg3 : kotlin.Any // - resultType: // --- null val rubikInstanceBool = queries.value(0, null) val arg1 = queries.value(1, null) val arg2 = queries.value(2, null) val arg3 = queries.value(3, null) com.mars.component.detail.event.provideEventsInstance( rubikInstanceBool.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Boolean] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.event.EventsByInstance] */ .onInit( arg1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ , arg2.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ , arg3.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ )} "MY_DESTROY" -> { // com.mars.component.detail.event.EventsByInstance.onDestroy // - parameters: // --- arg1 : kotlin.Any // --- arg2 : kotlin.Any // --- arg3 : kotlin.Any // - resultType: // --- null val rubikInstanceBool = queries.value(0, null) val arg1 = queries.value(1, null) val arg2 = queries.value(2, null) val arg3 = queries.value(3, null) com.mars.component.detail.event.provideEventsInstance( rubikInstanceBool.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Boolean] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.event.EventsByInstance] */ .onDestroy( arg1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ , arg2.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ , arg3.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ )} "MY_CALLBACK_RES" -> { // com.mars.component.detail.event.EventsByInstance.onCallbackRes // - parameters: // --- arg1 : kotlin.Any // --- result : kotlin.Function1 // - resultType: // --- null val rubikInstanceBool = queries.value(0, null) val arg1 = queries.value(1, null) val resultCallback = queries.value(2, null) com.mars.component.detail.event.provideEventsInstance( rubikInstanceBool.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Boolean] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.event.EventsByInstance] */ .onCallbackRes( arg1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ , resultCallback.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Function1] */ )} "MY_CALLBACK_RES_BEAN" -> { // com.mars.component.detail.event.EventsByInstance.onCallbackResBean // - parameters: // --- arg1 : kotlin.Any // --- result : kotlin.Function1 // - resultType: // --- null val rubikInstanceBool = queries.value(0, null) val arg1 = queries.value(1, null) val resultCallback = queries.value(2, null).castToTypeOfT>() val resultCallbackCallbackTransformer: (Any?) -> Unit = { lambdaArg0 -> resultCallback( lambdaArg0.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ )} com.mars.component.detail.event.provideEventsInstance( rubikInstanceBool.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Boolean] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.event.EventsByInstance] */ .onCallbackResBean( arg1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ , resultCallbackCallbackTransformer.castToTypeOfT() )} "MY_CALLBACK_BEAN" -> { // com.mars.component.detail.event.EventsByInstance.onCallbackBean // - parameters: // --- arg1 : kotlin.Any // --- bean : com.mars.component.detail.value.TestDataBean // - resultType: // --- null val rubikInstanceBool = queries.value(0, null) val arg1 = queries.value(1, null) val bean = queries.value(2, null) com.mars.component.detail.event.provideEventsInstance( rubikInstanceBool.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Boolean] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.event.EventsByInstance] */ .onCallbackBean( arg1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Any] */ , bean.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestDataBean] */ )} "LifeCycleEvent_Init" -> { // com.mars.component.detail.event.EventsWithLambda.init // - resultType: // --- kotlin.Unit EventsWithLambda().init() /* -> NO NEED TO MAPPING :[kotlin.Unit] */ // com.mars.component.detail.event.Events.onInit // - parameters: // --- context : android.content.Context // --- parameter1 : kotlin.String // - resultType: // --- null val context = queries.value(0, null) val parameter1 = queries.value(1, null) Events().onInit( context.castToTypeOfT() /* -> NO NEED TO MAPPING :[android.content.Context] */ , parameter1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.String] */ )} "LifeCycleEvent_Destroy" -> { // com.mars.component.detail.event.EventsWithLambda.destroy // - resultType: // --- kotlin.Unit EventsWithLambda().destroy() /* -> NO NEED TO MAPPING :[kotlin.Unit] */ // com.mars.component.detail.event.Events.onDestroy // - parameters: // --- context : android.content.Context // --- parameter1 : kotlin.String // - resultType: // --- null val context = queries.value(0, null) val parameter1 = queries.value(1, null) Events().onDestroy( context.castToTypeOfT() /* -> NO NEED TO MAPPING :[android.content.Context] */ , parameter1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.String] */ )} else -> { } } } override fun onRoute( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "doTestGenericity7" == path -> { val data = queries.value(0, null) doTestGenericity7(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "testGenericity4" == path -> { testGenericity4().apply { results.set(0, RubikResult(this)) } } "testGenericity5" == path -> { val lambdaArg0 = queries.value(0, "lambdaArg0") testGenericity5(lambdaArg0.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestGenericity6" == path -> { val data = queries.value(0, null) doTestGenericity6(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestGenericity1" == path -> { val data = queries.value(0, null) doTestGenericity1(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestGenericity2" == path -> { val data = queries.value(0, null) doTestGenericity2(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestGenericity3" == path -> { val data = queries.value(0, null) doTestGenericity3(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestGenericity8" == path -> { val resultSuccessCallback = queries.value(0, null) doTestGenericity8(resultSuccessCallback.castToTypeOfT()) } "doTestGenericity9" == path -> { val resultSuccessCallback = queries.value(0, null) doTestGenericity9(resultSuccessCallback.castToTypeOfT()) } "create-test-default-path-task-instance" == path -> { val routeResultTransformer: (Any) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } createTestDefaultPathTaskInstance(routeResultTransformer) } "doTestDataType1" == path -> { val data = queries.value(0, null) doTestDataType1(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType2" == path -> { val data = queries.value(0, null) doTestDataType2(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType3" == path -> { val data = queries.value(0, null) doTestDataType3(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType4" == path -> { val data = queries.value(0, null) doTestDataType4(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType5" == path -> { val data = queries.value(0, null) doTestDataType5(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } else -> { onRouteExt1(path, queries, results) } } } private fun onRouteExt1( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "doTestDataType6" == path -> { val data = queries.value(0, null) doTestDataType6(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType7" == path -> { val data = queries.value(0, null) doTestDataType7(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType8" == path -> { val data = queries.value(0, null) doTestDataType8(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType9" == path -> { val data = queries.value(0, null) doTestDataType9(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType10" == path -> { val resultSuccessCallback = queries.value(0, null) val resultSuccess2Callback = queries.value(1, null) doTestDataType10(resultSuccessCallback.castToTypeOfT(), resultSuccess2Callback.castToTypeOfT()) } "doTestDataType11" == path -> { val resultSuccessCallback: (Int, TestNullableBeanCtx) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } val resultSuccess2Callback: (TestNullableBeanCtx?) -> Unit = { lambdaArg0 -> results.set(1, RubikResult(lambdaArg0)) } doTestDataType11(resultSuccessCallback, resultSuccess2Callback) } "doTestDataType13" == path -> { val data = queries.value(0, null) doTestDataType13(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType14" == path -> { val data = queries.value(0, null) doTestDataType14(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType15" == path -> { val data = queries.value(0, null) doTestDataType15(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType16" == path -> { val data = queries.value(0, null) doTestDataType16(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType17" == path -> { val data = queries.value(0, null) doTestDataType17(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType18" == path -> { val data = queries.value(0, null) doTestDataType18(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType19" == path -> { val data = queries.value(0, null) doTestDataType19(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType20" == path -> { val media = queries.value(0, null) doTestDataType20(media.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType21" == path -> { val data = queries.value(0, null) doTestDataType21(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } else -> { onRouteExt2(path, queries, results) } } } private fun onRouteExt2( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "doTestDataType22" == path -> { val data = queries.value(0, null) doTestDataType22(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType23" == path -> { val data = queries.value(0, null) doTestDataType23(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType24" == path -> { val data = queries.value(0, null) doTestDataType24(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType25" == path -> { val data = queries.value(0, null) doTestDataType25(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType26" == path -> { val data = queries.value(0, null) doTestDataType26(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType27" == path -> { val data = queries.value(0, null) doTestDataType27(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "test-bean/create" == path -> { val d1 = queries.value(0, null) val d2 = queries.value(1, null) val routeResultTransformer: (TestCreateBeanCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } testBeanCreate(d1.castToTypeOfT(), d2.castToTypeOfT(), routeResultTransformer) } "do-sth-in-common-instance" == path -> { val objectInstance = queries.value(0, null) val routeResultTransformer: (TestDataBeanCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthInCommonInstance(objectInstance.castToTypeOfT(), routeResultTransformer) } "do-sth-in-common-instance-parameter" == path -> { val objectInstance = queries.value(0, null) val v1 = queries.value(1, null) val v2 = queries.value(2, null) val v3 = queries.value(3, null) doSthInCommonInstanceParameter(objectInstance.castToTypeOfT(), v1.castToTypeOfT(), v2.castToTypeOfT(), v3.castToTypeOfT()) } "do-sth-create-common-instance" == path -> { val objectInstance = queries.value(0, null) val routeResultTransformer: (TestDataBeanCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthCreateCommonInstance(objectInstance.castToTypeOfT(), routeResultTransformer) } "get-a-other-common-instance" == path -> { val i = queries.value(0, null) val routeResultTransformer: (ObjectTestCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } getAOtherCommonInstance(i.castToTypeOfT(), routeResultTransformer) } "send-back-common-instance" == path -> { val obj = queries.value(0, null) sendBackCommonInstance(obj.castToTypeOfT()) } "get-a-other-common-instance-null" == path -> { val i = queries.value(0, null) val routeResultTransformer: ((ObjectTestCtx?) -> Unit)? = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } getAOtherCommonInstanceNull(i.castToTypeOfT(), routeResultTransformer) } "send-back-common-instance-null" == path -> { val obj = queries.value(0, null) sendBackCommonInstanceNull(obj.castToTypeOfT()) } "do-sth-ext" == path -> { val i = queries.value(0, null) val s = queries.value(1, null) val routeResultTransformer: (Int) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthExt(i.castToTypeOfT(), s.castToTypeOfT(), routeResultTransformer) } else -> { onRouteExt3(path, queries, results) } } } private fun onRouteExt3( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "doSthCompanion" == path -> { val i = queries.value(0, null) val j = queries.value(1, null) val k = queries.value(2, null) val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthCompanion(i.castToTypeOfT(), j.castToTypeOfT(), k.castToTypeOfT(), routeResultTransformer) } "property/companion" == path -> { val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } propertyCompanion(routeResultTransformer) } "doSthHOFCompanion" == path -> { val lambdaArg0 = queries.value(0, "lambdaArg0") val routeResultTransformer: (Int) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthHOFCompanion(lambdaArg0.castToTypeOfT(), routeResultTransformer) } "2.0/do-sth-hof" == path -> { val lambdaArg0 = queries.value(0, "lambdaArg0") val lambdaArg1 = queries.value(1, "lambdaArg1") val lambdaArg2 = queries.value(2, "lambdaArg2") doSthHof(lambdaArg0.castToTypeOfT(), lambdaArg1.castToTypeOfT(), lambdaArg2.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "1.0/property/property" == path -> { val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } propertyProperty(routeResultTransformer) } "do-sth" == path -> { doSth() } "view/get" == path -> { val context = queries.value(0, null) val routeResultTransformer: ((View?) -> Unit)? = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } viewGet(context.castToTypeOfT(), routeResultTransformer) } RubikPath("sth/{id}/a-{name}?code1={code1}&code2={code2}").matching(path) -> { queries.addAll(RubikPath("sth/{id}/a-{name}?code1={code1}&code2={code2}").getParameters(path)) val id = queries.value(0, null) val name = queries.value(1, null) val code1 = queries.value(2, null) val code2 = queries.value(3, null) val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } sthIdAName(id.castToTypeOfT(), name.castToTypeOfT(), code1.castToTypeOfT(), code2.castToTypeOfT(), routeResultTransformer) } RubikPath("sth-navigation-only/{uri}").matching(path) -> { queries.addAll(RubikPath("sth-navigation-only/{uri}").getParameters(path)) val uriParameter = queries.value(0, null) val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } sthNavigationOnlyUri(uriParameter.castToTypeOfT(), routeResultTransformer) } "doSthVararg" == path -> { val no = queries.value(0, null) val varargString = queries.value(1, null) doSthVararg(no.castToTypeOfT(), *varargString.castToTypeOfT()) } "doSthVarargHof" == path -> { val no = queries.value(0, null) val varargString = queries.value(1, null) doSthVarargHof(no.castToTypeOfT(), *varargString.castToTypeOfT()) } "doSthBean" == path -> { val a1 = queries.value(0, null) val routeResultTransformer: (TestListBeanCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthBean(a1.castToTypeOfT(), routeResultTransformer) } "do-sth-uri-crash" == path -> { val name = queries.value(0, null) val code = queries.value(1, null) doSthUriCrash(name.castToTypeOfT(), code.castToTypeOfT()) } "do-sth-uri-crash-by-name-code-version" == path -> { val name = queries.value(0, null) val code = queries.value(1, null) val version = queries.value(2, null) doSthUriCrashByNameCodeVersion(name.castToTypeOfT(), code.castToTypeOfT(), version.castToTypeOfT()) } "doSthMappingBean" == path -> { val a1 = queries.value(0, null) val routeResultTransformer: (TestDataMappingBeanCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthMappingBean(a1.castToTypeOfT(), routeResultTransformer) } else -> { onRouteExt4(path, queries, results) } } } private fun onRouteExt4( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "doSthTestNestDataMappingBean" == path -> { val bean = queries.value(0, null) val routeResultTransformer: (TestNestDataMappingBeanCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthTestNestDataMappingBean(bean.castToTypeOfT(), routeResultTransformer) } "doSthAsyncHOF" == path -> { val hofCallback: (String, TestDataBeanCtx) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsyncHOF(hofCallback) } "doSthAsyncHOFNullable" == path -> { val hof2xxCallback = queries.value(0, null) val hof4xxCallback = queries.value(1, null) val hofx1resCallback: ((String, TestDataBeanCtx) -> Unit)? = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsyncHOFNullable(hof2xxCallback.castToTypeOfT(), hof4xxCallback.castToTypeOfT(), hofx1resCallback) } "doSthAsync2HOF" == path -> { val hofCallback: (String, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } val hof2Callback: (String, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(1, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsync2HOF(hofCallback, hof2Callback) } "doSthAsyncOpen" == path -> { val uriParameter = queries.value(0, null) val onCallCallback: ((String?, Int) -> Unit)? = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsyncOpen(uriParameter.castToTypeOfT(), onCallCallback) } "do-sth-async-interface" == path -> { val onCallCallback: (String?, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsyncInterface(onCallCallback) } "do-sth-async-3-interface" == path -> { val onCallCallback: ((String?, Int) -> Unit)? = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } val onCall1Callback: (String?, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(1, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } val onCall2Callback: (TestDataBeanCtx?) -> Unit = { lambdaArg0 -> results.set(2, RubikResult(lambdaArg0)) } doSthAsync3Interface(onCallCallback, onCall1Callback, onCall2Callback) } "do-sth-async-interface-multi-func" == path -> { val startCallback: (String?, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } val dataCallback: (TestDataBeanCtx?) -> Unit = { lambdaArg0 -> results.set(1, RubikResult(lambdaArg0)) } val stopCallback: (String?, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(2, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsyncInterfaceMultiFunc(startCallback, dataCallback, stopCallback) } "doSthHOFTop" == path -> { val lambdaArg0 = queries.value(0, "lambdaArg0") val routeResultTransformer: (Unit) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthHOFTop(lambdaArg0.castToTypeOfT(), routeResultTransformer) } "property/top" == path -> { val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } propertyTop(routeResultTransformer) } "doSthTop" == path -> { val ints = queries.value(0, null) val li = queries.value(1, null) val strings = queries.value(2, null) val ls = queries.value(3, null) val beans = queries.value(4, null) val lb = queries.value(5, null) val routeResultTransformer: (List) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthTop(ints.castToTypeOfT(), li.castToTypeOfT(), strings.castToTypeOfT(), ls.castToTypeOfT(), beans.castToTypeOfT(), lb.castToTypeOfT(), routeResultTransformer) } "getFilesMeta" == path -> { val context = queries.value(0, null) val pathParameter = queries.value(1, null) val onResultCallback: (Long, String?) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } getFilesMeta(context.castToTypeOfT(), pathParameter.castToTypeOfT(), onResultCallback) } "enterprise/business/allocateTicket" == path -> { val context = queries.value(0, null) val shareId = queries.value(1, null) val count = queries.value(2, null) val packetType = queries.value(3, null) val routeResultTransformer: ((LiveData>?) -> Unit)? = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } enterpriseBusinessAllocateTicket(context.castToTypeOfT(), shareId.castToTypeOfT(), count.castToTypeOfT(), packetType.castToTypeOfT(), routeResultTransformer) } "do-sth-provide-instance-by-func" == path -> { doSthProvideInstanceByFunc() } "do-sth-provide-instance-by-func2" == path -> { doSthProvideInstanceByFunc2() } else -> { onRouteExt5(path, queries, results) } } } private fun onRouteExt5( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "do-sth-provide-instance-by-parameter-func" == path -> { val rubikInstanceValue = queries.value(0, null) val rubikInstanceV0 = queries.value(1, null) val v1 = queries.value(2, null) val v2 = queries.value(3, null) val v3 = queries.value(4, null) doSthProvideInstanceByParameterFunc(rubikInstanceValue.castToTypeOfT(), rubikInstanceV0.castToTypeOfT(), v1.castToTypeOfT(), v2.castToTypeOfT(), v3.castToTypeOfT()) } "do-sth-provide-instance-by-constructor" == path -> { val rubikInstanceValue = queries.value(0, null) val v1 = queries.value(1, null) val v2 = queries.value(2, null) val v3 = queries.value(3, null) doSthProvideInstanceByConstructor(rubikInstanceValue.castToTypeOfT(), v1.castToTypeOfT(), v2.castToTypeOfT(), v3.castToTypeOfT()) } "doSthResultReceiver" == path -> { val resultParameter = queries.value(0, null) val routeResultTransformer: (ResultReceiver) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthResultReceiver(resultParameter.castToTypeOfT(), routeResultTransformer) } "live-data/get" == path -> { val routeResultTransformer: (LiveData) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } liveDataGet(routeResultTransformer) } "live-data-bean/get" == path -> { val routeResultTransformer: (LiveData) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } liveDataBeanGet(routeResultTransformer) } "live-data-bean-list/get" == path -> { val routeResultTransformer: (LiveData>) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } liveDataBeanListGet(routeResultTransformer) } "do-sth-callback-object" == path -> { val callback = queries.value(0, null) doSthCallbackObject(callback.castToTypeOfT()) } "fragment/page1" == path -> { fragmentPage1().apply { results.set(0, RubikResult(this)) } } "test-name-string" == path -> { testNameString().apply { results.set(0, RubikResult(this)) } } "test-name" == path -> { testName() } "test_name_up" == path -> { testNameUp() } "object/get/do-sth-in-common-ins" == path -> { val objectInstance = queries.value(0, null) val v1 = queries.value(1, null) val v2 = queries.value(2, null) val v3 = queries.value(3, null) objectGetDoSthInCommonIns(objectInstance.castToTypeOfT(), v1.castToTypeOfT(), v2.castToTypeOfT(), v3.castToTypeOfT()) } "get-a-lot-of-common-instance" == path -> { val i = queries.value(0, null) getALotOfCommonInstance(i.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "send-back-a-lot-of-common-instance" == path -> { val objs = queries.value(0, null) sendBackALotOfCommonInstance(objs.castToTypeOfT()) } "get-a-lot-of-common-instance-null" == path -> { val i = queries.value(0, null) getALotOfCommonInstanceNull(i.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } else -> { onRouteExt6(path, queries, results) } } } private fun onRouteExt6( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "send-back-a-lot-of-common-instance-null" == path -> { val objs = queries.value(0, null) sendBackALotOfCommonInstanceNull(objs.castToTypeOfT()) } "api/bigdata/json-array" == path -> { val array = queries.value(0, null) apiBigdataJsonArray(array.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/bigdata/parcel-array" == path -> { val array = queries.value(0, null) apiBigdataParcelArray(array.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/bigdata/lib-array" == path -> { val array = queries.value(0, null) apiBigdataLibArray(array.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/bigdata/json-list" == path -> { val list = queries.value(0, null) apiBigdataJsonList(list.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/bigdata/parcel-list" == path -> { val list = queries.value(0, null) apiBigdataParcelList(list.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/bigdata/lib-list" == path -> { val list = queries.value(0, null) apiBigdataLibList(list.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/bigdata/parcel-arraylist" == path -> { val list = queries.value(0, null) apiBigdataParcelArraylist(list.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/serialization/parcel-bean" == path -> { val parcelBean = queries.value(0, null) apiSerializationParcelBean(parcelBean.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/serialization/parcel-array" == path -> { val parcels = queries.value(0, null) apiSerializationParcelArray(parcels.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/serialization/parcel-list" == path -> { val parcels = queries.value(0, null) apiSerializationParcelList(parcels.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "api/serialization/Serializable-bean" == path -> { val serializableBean = queries.value(0, null) apiSerializationSerializableBean(serializableBean.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "create-object-test-instance" == path -> { val value = queries.value(0, null) createObjectTestInstance(value.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "create-object-test-create-instance" == path -> { val v1 = queries.value(0, null) val v2 = queries.value(1, null) createObjectTestCreateInstance(v1.castToTypeOfT(), v2.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "create-object-test-create-instance-by-v1-v2-v3-v4" == path -> { val v1 = queries.value(0, null) val v2 = queries.value(1, null) val v3 = queries.value(2, null) val v4 = queries.value(3, null) createObjectTestCreateInstanceByV1V2V3V4(v1.castToTypeOfT(), v2.castToTypeOfT(), v3.castToTypeOfT(), v4.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } else -> { onRouteExt7(path, queries, results) } } } private fun onRouteExt7( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { RubikPath("activity/page2/{key_str1}/{key_str2}/{key_str3}").matching(path) -> { // com.mars.component.detail.ui.SecondPageActivity // - parameters: // --- key_str1 : kotlin.String? // --- key_str2 : kotlin.String? // --- key_str3 : kotlin.String? RubikLauncher().launch(SecondPageActivity::class.java, queries, RubikPath("activity/page2/{key_str1}/{key_str2}/{key_str3}").getParameters(path), results) } "activity/page1_from_detail" == path -> { // com.mars.component.detail.ui.FirstPageActivity // - parameters: // --- key_1_pa : com.mars.component.detail.value.TestCompanionBean? // --- key_2_pa_ar : kotlin.Array? // --- key_3_int : kotlin.Int // --- key_4_strs : kotlin.collections.List? // --- key_5_bean : com.mars.component.detail.value.TestDataBean? // --- key_a_ints : kotlin.collections.List? // --- key_c_pa_li : kotlin.collections.List? // --- key_int_for_all : kotlin.Int? // --- key_int_for_detail : kotlin.Int? // --- uri : kotlin.String? RubikLauncher().launch(FirstPageActivity::class.java, queries, null, results) } "activity/page1_from_home" == path -> { // com.mars.component.detail.ui.FirstPageActivity // - parameters: // --- key_1_pa : com.mars.component.detail.value.TestCompanionBean? // --- key_2_pa_ar : kotlin.Array? // --- key_3_int : kotlin.Int // --- key_4_strs : kotlin.collections.List? // --- key_5_bean : com.mars.component.detail.value.TestDataBean? // --- key_a_ints : kotlin.collections.List? // --- key_c_pa_li : kotlin.collections.List? // --- key_int_for_all : kotlin.Int? // --- key_int_for_home : kotlin.Int? // --- uri : kotlin.String? RubikLauncher().launch(FirstPageActivity::class.java, queries, null, results) } "activity/page1" == path -> { // com.mars.component.detail.ui.FirstPageActivity // - parameters: // --- key_1_pa : com.mars.component.detail.value.TestCompanionBean? // --- key_2_pa_ar : kotlin.Array? // --- key_3_int : kotlin.Int // --- key_4_strs : kotlin.collections.List? // --- key_5_bean : com.mars.component.detail.value.TestDataBean? // --- key_a_ints : kotlin.collections.List? // --- key_c_pa_li : kotlin.collections.List? // --- uri : kotlin.String? RubikLauncher().launch(FirstPageActivity::class.java, queries, null, results) } else -> { throw com.rubik.route.exception.BadPathOrVersionException(path) } } } override fun doTestGenericity7(data: Array?): Array? { // com.mars.component.detail.test.TestGenericityTask.Companion.doTestGenericity7 // - parameters: // --- data : kotlin.Array? // - resultType: // --- kotlin.Array? return TestGenericityTask.Companion.doTestGenericity7( data /* -> NO NEED TO MAPPING :[kotlin.Array?] */ ) /* -> NO NEED TO MAPPING :[kotlin.Array?] */ } override fun testGenericity4(): List? { // com.mars.component.detail.test.TestGenericityTask.testGenericity4 // - resultType: // --- kotlin.collections.List return TestGenericityTask().testGenericity4 /* -> NO NEED TO MAPPING :[kotlin.collections.List] */ } override fun testGenericity5(lambdaArg0: List?): List? { // com.mars.component.detail.test.TestGenericityTask.testGenericity5 // - parameters: // --- lambdaArg0 : kotlin.collections.List? // - resultType: // --- kotlin.collections.List? return TestGenericityTask().testGenericity5( lambdaArg0 /* -> NO NEED TO MAPPING :[kotlin.collections.List?] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.List?] */ } override fun doTestGenericity6(data: Array?): Array? { // com.mars.component.detail.test.TestGenericityTask.doTestGenericity6 // - parameters: // --- data : kotlin.Array? // - resultType: // --- kotlin.Array? return TestGenericityTask().doTestGenericity6( data?.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.Array?] */ )?.toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.Array?] */ } override fun doTestGenericity1(data: List?): List? { // com.mars.component.detail.test.TestGenericityTaskKt.doTestGenericity1 // - parameters: // --- data : kotlin.collections.List? // - resultType: // --- kotlin.collections.List? return com.mars.component.detail.test.doTestGenericity1( data?.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List?] */ )?.toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List?] */ } override fun doTestGenericity2(data: LiveData?): LiveData? { // com.mars.component.detail.test.TestGenericityTaskKt.doTestGenericity2 // - parameters: // --- data : androidx.lifecycle.LiveData? // - resultType: // --- androidx.lifecycle.LiveData? return com.mars.component.detail.test.doTestGenericity2( data?.toTypeOfT() /* -> TO ORIGINAL TYPE :[androidx.lifecycle.LiveData?] */ )?.toTypeOfT() /* -> TO CONTEXT TYPE :[androidx.lifecycle.LiveData?] */ } override fun doTestGenericity3(data: Map): Map? { // com.mars.component.detail.test.TestGenericityTaskKt.doTestGenericity3 // - parameters: // --- data : kotlin.collections.Map // - resultType: // --- kotlin.collections.Map return com.mars.component.detail.test.doTestGenericity3( data /* -> NO NEED TO MAPPING :[kotlin.collections.Map] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.Map] */ } override fun doTestGenericity8(resultSuccessCallback: Function1, Unit>) { // com.mars.component.detail.test.TestGenericityTaskKt.doTestGenericity8 // - parameters: // --- resultSuccess : kotlin.Function1, kotlin.Unit> // - resultType: // --- null com.mars.component.detail.test.doTestGenericity8( resultSuccessCallback /* -> NO NEED TO MAPPING :[kotlin.Function1, kotlin.Unit>] */ ) } override fun doTestGenericity9(resultSuccessCallback: Function1, Unit>) { // com.mars.component.detail.test.TestGenericityTaskKt.doTestGenericity9 // - parameters: // --- resultSuccess : kotlin.Function1, kotlin.Unit> // - resultType: // --- null com.mars.component.detail.test.doTestGenericity9( resultSuccessCallback /* -> NO NEED TO MAPPING :[kotlin.Function1, kotlin.Unit>] */ ) } override fun createTestDefaultPathTaskInstance(routeResultTransformer: (Any) -> Unit) { // com.mars.component.detail.test.TestDefaultPathTask // - resultType: // --- com.mars.component.detail.test.TestDefaultPathTask routeResultTransformer(TestDefaultPathTask() /* -> NO NEED TO MAPPING :[com.mars.component.detail.test.TestDefaultPathTask] */ ) } override fun doTestDataType1(data: Context?): Context? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType1 // - parameters: // --- data : android.content.Context? // - resultType: // --- android.content.Context? return TestDataTypeTask().doTestDataType1( data /* -> NO NEED TO MAPPING :[android.content.Context?] */ ) /* -> NO NEED TO MAPPING :[android.content.Context?] */ } override fun doTestDataType2(data: Int?): Int? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType2 // - parameters: // --- data : kotlin.Int? // - resultType: // --- kotlin.Int? return TestDataTypeTask().doTestDataType2( data /* -> NO NEED TO MAPPING :[kotlin.Int?] */ ) /* -> NO NEED TO MAPPING :[kotlin.Int?] */ } override fun doTestDataType3(data: String?): String? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType3 // - parameters: // --- data : kotlin.String? // - resultType: // --- kotlin.String? return TestDataTypeTask().doTestDataType3( data /* -> NO NEED TO MAPPING :[kotlin.String?] */ ) /* -> NO NEED TO MAPPING :[kotlin.String?] */ } override fun doTestDataType4(data: TestNullableBeanCtx?): TestNullableBeanCtx? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType4 // - parameters: // --- data : com.mars.component.detail.value.TestNullableBean? // - resultType: // --- com.mars.component.detail.value.TestNullableBean? return TestDataTypeTask().doTestDataType4( data?.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestNullableBean?] */ )?.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestNullableBean?] */ } override fun doTestDataType5(data: List?): List? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType5 // - parameters: // --- data : kotlin.collections.List? // - resultType: // --- kotlin.collections.List? return TestDataTypeTask().doTestDataType5( data /* -> NO NEED TO MAPPING :[kotlin.collections.List?] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.List?] */ } override fun doTestDataType6(data: Array?): Array? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType6 // - parameters: // --- data : kotlin.Array? // - resultType: // --- kotlin.Array? return TestDataTypeTask().doTestDataType6( data /* -> NO NEED TO MAPPING :[kotlin.Array?] */ ) /* -> NO NEED TO MAPPING :[kotlin.Array?] */ } override fun doTestDataType7(data: LongArray?): LongArray? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType7 // - parameters: // --- data : kotlin.LongArray? // - resultType: // --- kotlin.LongArray? return TestDataTypeTask().doTestDataType7( data /* -> NO NEED TO MAPPING :[kotlin.LongArray?] */ ) /* -> NO NEED TO MAPPING :[kotlin.LongArray?] */ } override fun doTestDataType8(data: IntArray?): IntArray? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType8 // - parameters: // --- data : kotlin.IntArray? // - resultType: // --- kotlin.IntArray? return TestDataTypeTask().doTestDataType8( data /* -> NO NEED TO MAPPING :[kotlin.IntArray?] */ ) /* -> NO NEED TO MAPPING :[kotlin.IntArray?] */ } override fun doTestDataType9(data: BooleanArray?): BooleanArray? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType9 // - parameters: // --- data : kotlin.BooleanArray? // - resultType: // --- kotlin.BooleanArray? return TestDataTypeTask().doTestDataType9( data /* -> NO NEED TO MAPPING :[kotlin.BooleanArray?] */ ) /* -> NO NEED TO MAPPING :[kotlin.BooleanArray?] */ } override fun doTestDataType10(resultSuccessCallback: Function1, resultSuccess2Callback: Function1) { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType10 // - parameters: // --- resultSuccess : kotlin.Function1 // --- resultSuccess2 : kotlin.Function1 // - resultType: // --- null TestDataTypeTask().doTestDataType10( resultSuccessCallback /* -> NO NEED TO MAPPING :[kotlin.Function1] */ , resultSuccess2Callback /* -> NO NEED TO MAPPING :[kotlin.Function1] */ ) } override fun doTestDataType11(resultSuccessCallback: (Int, TestNullableBeanCtx) -> Unit, resultSuccess2Callback: (TestNullableBeanCtx?) -> Unit) { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType11 // - parameters: // --- resultSuccess : kotlin.Function2 // --- resultSuccess2 : kotlin.Function1 // - resultType: // --- null val resultSuccessCallbackCallbackTransformer: (Any?, Any?) -> Unit = { lambdaArg0, lambdaArg1 -> resultSuccessCallback( lambdaArg0.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Int] */ , lambdaArg1.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestNullableBean] */ )} val resultSuccess2CallbackCallbackTransformer: (Any?) -> Unit = { lambdaArg0 -> resultSuccess2Callback( lambdaArg0?.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestNullableBean?] */ )} TestDataTypeTask().doTestDataType11( resultSuccessCallbackCallbackTransformer, resultSuccess2CallbackCallbackTransformer ) } override fun doTestDataType13(data: List): List? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType13 // - parameters: // --- data : kotlin.collections.List // - resultType: // --- kotlin.collections.List return TestDataTypeTask().doTestDataType13( data /* -> NO NEED TO MAPPING :[kotlin.collections.List] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.List] */ } override fun doTestDataType14(data: ArrayList): ArrayList? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType14 // - parameters: // --- data : kotlin.collections.ArrayList // - resultType: // --- kotlin.collections.ArrayList return TestDataTypeTask().doTestDataType14( data /* -> NO NEED TO MAPPING :[kotlin.collections.ArrayList] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.ArrayList] */ } override fun doTestDataType15(data: List): List? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType15 // - parameters: // --- data : kotlin.collections.List // - resultType: // --- kotlin.collections.List return TestDataTypeTask().doTestDataType15( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun doTestDataType16(data: ArrayList): ArrayList? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType16 // - parameters: // --- data : kotlin.collections.ArrayList // - resultType: // --- kotlin.collections.ArrayList return TestDataTypeTask().doTestDataType16( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.ArrayList] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.ArrayList] */ } override fun doTestDataType17(data: List): List? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType17 // - parameters: // --- data : kotlin.collections.List // - resultType: // --- kotlin.collections.List return TestDataTypeTask().doTestDataType17( data /* -> NO NEED TO MAPPING :[kotlin.collections.List] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.List] */ } override fun doTestDataType18(data: ArrayList): ArrayList? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType18 // - parameters: // --- data : kotlin.collections.ArrayList // - resultType: // --- kotlin.collections.ArrayList return TestDataTypeTask().doTestDataType18( data /* -> NO NEED TO MAPPING :[kotlin.collections.ArrayList] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.ArrayList] */ } override fun doTestDataType19(data: ArrayList>): ArrayList>? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType19 // - parameters: // --- data : kotlin.collections.ArrayList> // - resultType: // --- kotlin.collections.ArrayList> return TestDataTypeTask().doTestDataType19( data /* -> NO NEED TO MAPPING :[kotlin.collections.ArrayList>] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.ArrayList>] */ } override fun doTestDataType20(media: Pair): List? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType20 // - parameters: // --- media : kotlin.Pair // - resultType: // --- kotlin.collections.List? return TestDataTypeTask().doTestDataType20( media /* -> NO NEED TO MAPPING :[kotlin.Pair] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.List?] */ } override fun doTestDataType21(data: List): List? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType21 // - parameters: // --- data : kotlin.collections.List // - resultType: // --- kotlin.collections.List return TestDataTypeTask().doTestDataType21( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun doTestDataType22(data: List): List? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType22 // - parameters: // --- data : kotlin.collections.List // - resultType: // --- kotlin.collections.List return TestDataTypeTask().doTestDataType22( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun doTestDataType23(data: Array): Array? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType23 // - parameters: // --- data : kotlin.Array // - resultType: // --- kotlin.Array return TestDataTypeTask().doTestDataType23( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.Array] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.Array] */ } override fun doTestDataType24(data: Map): Map? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType24 // - parameters: // --- data : kotlin.collections.Map // - resultType: // --- kotlin.collections.Map return TestDataTypeTask().doTestDataType24( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.Map] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.Map] */ } override fun doTestDataType25(data: Map): Map? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType25 // - parameters: // --- data : kotlin.collections.Map // - resultType: // --- kotlin.collections.Map return TestDataTypeTask().doTestDataType25( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.Map] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.Map] */ } override fun doTestDataType26(data: Set): Set? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType26 // - parameters: // --- data : kotlin.collections.Set // - resultType: // --- kotlin.collections.Set return TestDataTypeTask().doTestDataType26( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.Set] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.Set] */ } override fun doTestDataType27(data: Set): Set? { // com.mars.component.detail.test.TestDataTypeTask.doTestDataType27 // - parameters: // --- data : kotlin.collections.Set // - resultType: // --- kotlin.collections.Set return TestDataTypeTask().doTestDataType27( data.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.Set] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.Set] */ } override fun testBeanCreate( d1: Int?, d2: String?, routeResultTransformer: (TestCreateBeanCtx) -> Unit ) { // com.mars.component.detail.value.TestCreateBean // - parameters: // --- d1 : kotlin.Int? // --- d2 : kotlin.String? // - resultType: // --- com.mars.component.detail.value.TestCreateBean routeResultTransformer(TestCreateBeanOrg( d1 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ , d2 /* -> NO NEED TO MAPPING :[kotlin.String?] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestCreateBean] */ ) } override fun doSthInCommonInstance(objectInstance: ObjectTestCtx, routeResultTransformer: (TestDataBeanCtx) -> Unit) { // com.mars.component.detail.objekt.ObjectTest.doSthInObject // - resultType: // --- com.mars.component.detail.value.TestDataBean routeResultTransformer(objectInstance.mapToType(toObjectTestOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.objekt.ObjectTest] */ .doSthInObject().toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ ) } override fun doSthInCommonInstanceParameter( objectInstance: ObjectTestCtx, v1: String, v2: Int?, v3: Int? ) { // com.mars.component.detail.objekt.ObjectTest.doSthInObject2 // - parameters: // --- v1 : kotlin.String // --- v2 : kotlin.Int? // --- v3 : kotlin.Int? // - resultType: // --- null objectInstance.mapToType(toObjectTestOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.objekt.ObjectTest] */ .doSthInObject2( v1 /* -> NO NEED TO MAPPING :[kotlin.String] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ , v3 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ ) } override fun doSthCreateCommonInstance(objectInstance: ObjectTestCreateCtx, routeResultTransformer: (TestDataBeanCtx) -> Unit) { // com.mars.component.detail.objekt.ObjectTestCreate.doSthInCreateObject // - resultType: // --- com.mars.component.detail.value.TestDataBean routeResultTransformer(objectInstance.mapToType(toObjectTestCreateOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.objekt.ObjectTestCreate] */ .doSthInCreateObject().toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ ) } override fun getAOtherCommonInstance(i: Int, routeResultTransformer: (ObjectTestCtx) -> Unit) { // com.mars.component.detail.objekt.ObjectTestKt.getAOtherObjectTest // - parameters: // --- i : kotlin.Int // - resultType: // --- com.mars.component.detail.objekt.ObjectTest routeResultTransformer(com.mars.component.detail.objekt.getAOtherObjectTest( i /* -> NO NEED TO MAPPING :[kotlin.Int] */ ).mapToType(toObjectTestCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTest] */ ) } override fun sendBackCommonInstance(obj: ObjectTestCtx) { // com.mars.component.detail.objekt.ObjectTestKt.senBackObjectTest // - parameters: // --- obj : com.mars.component.detail.objekt.ObjectTest // - resultType: // --- null com.mars.component.detail.objekt.senBackObjectTest( obj.mapToType(toObjectTestOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.objekt.ObjectTest] */ ) } override fun getAOtherCommonInstanceNull(i: Int, routeResultTransformer: ((ObjectTestCtx?) -> Unit)?) { // com.mars.component.detail.objekt.ObjectTestKt.getAOtherObjectTestNull // - parameters: // --- i : kotlin.Int // - resultType: // --- com.mars.component.detail.objekt.ObjectTest? if (null != routeResultTransformer) { routeResultTransformer(com.mars.component.detail.objekt.getAOtherObjectTestNull( i /* -> NO NEED TO MAPPING :[kotlin.Int] */ )?.mapToType(toNullableObjectTestCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTest?] */ )} } override fun sendBackCommonInstanceNull(obj: ObjectTestCtx?) { // com.mars.component.detail.objekt.ObjectTestKt.senBackObjectTestNull // - parameters: // --- obj : com.mars.component.detail.objekt.ObjectTest? // - resultType: // --- null com.mars.component.detail.objekt.senBackObjectTestNull( obj?.mapToType(toNullableObjectTestOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.objekt.ObjectTest?] */ ) } override fun doSthExt( i: Int, s: String, routeResultTransformer: (Int) -> Unit ) { // com.mars.component.detail.api.ApisExtKt.doSthExt // - parameters: // --- s : kotlin.String // --- i : kotlin.Int // - resultType: // --- kotlin.Int routeResultTransformer(com.mars.component.detail.api.doSthExt( s /* -> NO NEED TO MAPPING :[kotlin.String] */ , i /* -> NO NEED TO MAPPING :[kotlin.Int] */ ) /* -> NO NEED TO MAPPING :[kotlin.Int] */ ) } override fun doSthCompanion( i: Int, j: String, k: Long, routeResultTransformer: (String) -> Unit ) { // com.mars.component.detail.api.AipsInCompanion.DetailCompanion.doSthCompanion // - parameters: // --- i : kotlin.Int // --- j : kotlin.String // --- k : kotlin.Long // - resultType: // --- kotlin.String routeResultTransformer(AipsInCompanion.DetailCompanion.doSthCompanion( i /* -> NO NEED TO MAPPING :[kotlin.Int] */ , j /* -> NO NEED TO MAPPING :[kotlin.String] */ , k /* -> NO NEED TO MAPPING :[kotlin.Long] */ ) /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun propertyCompanion(routeResultTransformer: (String) -> Unit) { // com.mars.component.detail.api.AipsInCompanion.propertyCompanion // - resultType: // --- kotlin.String routeResultTransformer(com.mars.component.detail.api.AipsInCompanion.propertyCompanion /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSthHOFCompanion(lambdaArg0: Int, routeResultTransformer: (Int) -> Unit) { // com.mars.component.detail.api.AipsInCompanion.doSthHOFCompanion // - parameters: // --- lambdaArg0 : kotlin.Int // - resultType: // --- kotlin.Int routeResultTransformer(com.mars.component.detail.api.AipsInCompanion.doSthHOFCompanion( lambdaArg0 /* -> NO NEED TO MAPPING :[kotlin.Int] */ ) /* -> NO NEED TO MAPPING :[kotlin.Int] */ ) } override fun doSthHof( lambdaArg0: Int, lambdaArg1: String, lambdaArg2: TestDataBeanCtx ): Int? { // com.mars.component.detail.api.Apis.doSthHOF // - parameters: // --- lambdaArg0 : kotlin.Int // --- lambdaArg1 : kotlin.String // --- lambdaArg2 : com.mars.component.detail.value.TestDataBean // - resultType: // --- kotlin.Int return Apis().doSthHOF( lambdaArg0 /* -> NO NEED TO MAPPING :[kotlin.Int] */ , lambdaArg1 /* -> NO NEED TO MAPPING :[kotlin.String] */ , lambdaArg2.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestDataBean] */ ) /* -> NO NEED TO MAPPING :[kotlin.Int] */ } override fun propertyProperty(routeResultTransformer: (String) -> Unit) { // com.mars.component.detail.api.Apis.property // - resultType: // --- kotlin.String routeResultTransformer(Apis().property /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSth() { // com.mars.component.detail.api.Apis.doSth // - resultType: // --- null Apis().doSth() } override fun viewGet(context: Context, routeResultTransformer: ((View?) -> Unit)?) { // com.mars.component.detail.api.Apis.getView // - parameters: // --- context : android.content.Context // - resultType: // --- android.view.View? if (null != routeResultTransformer) { routeResultTransformer(Apis().getView( context /* -> NO NEED TO MAPPING :[android.content.Context] */ ) /* -> NO NEED TO MAPPING :[android.view.View?] */ )} } override fun sthIdAName( id: String, name: String, code1: String, code2: String, routeResultTransformer: (String) -> Unit ) { // com.mars.component.detail.api.Apis.getSth // - parameters: // --- id : kotlin.String // --- name : kotlin.String // --- code1 : kotlin.String // --- code2 : kotlin.String // - resultType: // --- kotlin.String routeResultTransformer(Apis().getSth( id /* -> NO NEED TO MAPPING :[kotlin.String] */ , name /* -> NO NEED TO MAPPING :[kotlin.String] */ , code1 /* -> NO NEED TO MAPPING :[kotlin.String] */ , code2 /* -> NO NEED TO MAPPING :[kotlin.String] */ ) /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSthVararg(no: Int, vararg varargString: String) { // com.mars.component.detail.api.Apis.doSthVararg // - parameters: // --- no : kotlin.Int // --- varargString : vararg kotlin.Array // - resultType: // --- null Apis().doSthVararg( no /* -> NO NEED TO MAPPING :[kotlin.Int] */ , *varargString /* -> NO NEED TO MAPPING :[kotlin.Array] */ ) } override fun doSthVarargHof(no: Int, vararg varargString: Function5) { // com.mars.component.detail.api.Apis.doSthVarargHof // - parameters: // --- no : kotlin.Int // --- varargString : vararg kotlin.Array> // - resultType: // --- null Apis().doSthVarargHof( no /* -> NO NEED TO MAPPING :[kotlin.Int] */ , *varargString /* -> NO NEED TO MAPPING :[kotlin.Array>] */ ) } override fun doSthBean(a1: TestDataBeanCtx, routeResultTransformer: (TestListBeanCtx) -> Unit) { // com.mars.component.detail.api.Apis.doSthBean // - parameters: // --- a1 : com.mars.component.detail.value.TestDataBean // - resultType: // --- com.mars.component.detail.value.TestListBean routeResultTransformer(Apis().doSthBean( a1.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestDataBean] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestListBean] */ ) } override fun doSthUriCrash(name: String, code: String) { // com.mars.component.detail.api.Apis.doSthUriCrash3 // - parameters: // --- name : kotlin.String // --- code : kotlin.String // - resultType: // --- null Apis().doSthUriCrash3( name /* -> NO NEED TO MAPPING :[kotlin.String] */ , code /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSthUriCrashByNameCodeVersion( name: String, code: String, version: String ) { // com.mars.component.detail.api.Apis.doSthUriCrash4 // - parameters: // --- name : kotlin.String // --- code : kotlin.String // --- version : kotlin.String // - resultType: // --- null Apis().doSthUriCrash4( name /* -> NO NEED TO MAPPING :[kotlin.String] */ , code /* -> NO NEED TO MAPPING :[kotlin.String] */ , version /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSthMappingBean(a1: TestDataMappingBeanCtx, routeResultTransformer: (TestDataMappingBeanCtx) -> Unit) { // com.mars.component.detail.api.Apis.doSthMappingBean // - parameters: // --- a1 : com.mars.component.detail.value.mapping.TestDataMappingBean // - resultType: // --- com.mars.component.detail.value.mapping.TestDataMappingBean routeResultTransformer(Apis().doSthMappingBean( a1.mapToType(toTestDataMappingBeanOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.mapping.TestDataMappingBean] */ ).mapToType(toTestDataMappingBeanCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataMappingBean] */ ) } override fun doSthTestNestDataMappingBean(bean: TestNestDataMappingBeanCtx, routeResultTransformer: (TestNestDataMappingBeanCtx) -> Unit) { // com.mars.component.detail.api.Apis.doSthTestNestDataMappingBean // - parameters: // --- bean : com.mars.component.detail.value.mapping.TestNestDataMappingBean // - resultType: // --- com.mars.component.detail.value.mapping.TestNestDataMappingBean routeResultTransformer(Apis().doSthTestNestDataMappingBean( bean.mapToType(toTestNestDataMappingBeanOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.mapping.TestNestDataMappingBean] */ ).mapToType(toTestNestDataMappingBeanCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestNestDataMappingBean] */ ) } override fun doSthAsyncHOF(hofCallback: (String, TestDataBeanCtx) -> Unit) { // com.mars.component.detail.api.ApisAsyncReturn.doSthAsyncHOF // - parameters: // --- hof : kotlin.Function2 // - resultType: // --- null val hofCallbackCallbackTransformer: (Any?, Any?) -> Unit = { lambdaArg0, lambdaArg1 -> hofCallback( lambdaArg0.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.String] */ , lambdaArg1.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ )} ApisAsyncReturn().doSthAsyncHOF( hofCallbackCallbackTransformer ) } override fun doSthAsyncHOFNullable( hof2xxCallback: Function2?, hof4xxCallback: Function3?, hofx1resCallback: ((String, TestDataBeanCtx) -> Unit)? ) { // com.mars.component.detail.api.ApisAsyncReturn.doSthAsyncHOFNullable // - parameters: // --- hofx1res : kotlin.Function2? // --- hof2xx : kotlin.Function2? // --- hof4xx : kotlin.Function3? // - resultType: // --- null val hofx1resCallbackCallbackTransformer: (Any?, Any?) -> Unit = { lambdaArg0, lambdaArg1 -> hofx1resCallback?.invoke( lambdaArg0.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.String] */ , lambdaArg1.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ )} val hof2xxCallbackCallbackTransformer: (Any?, Any?) -> Unit = { lambdaArg0, lambdaArg1 -> hof2xxCallback?.invoke( lambdaArg0.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.String] */ , lambdaArg1.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ )} val hof4xxCallbackCallbackTransformer: (Any?, Any?, Any?) -> TestDataBeanOrg? = { lambdaArg0, lambdaArg1, lambdaArg2 -> hof4xxCallback?.invoke( lambdaArg0.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.String] */ , lambdaArg1.castToTypeOfT() /* -> NO NEED TO MAPPING :[kotlin.Int] */ , lambdaArg2.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ )?.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestDataBean?] */ } ApisAsyncReturn().doSthAsyncHOFNullable( hofx1resCallbackCallbackTransformer, hof2xxCallbackCallbackTransformer, hof4xxCallbackCallbackTransformer ) } override fun doSthAsync2HOF(hofCallback: (String, Int) -> Unit, hof2Callback: (String, Int) -> Unit) { // com.mars.component.detail.api.ApisAsyncReturn.doSthAsyncHOF // - parameters: // --- hof : kotlin.Function2 // --- hof2 : kotlin.Function2 // - resultType: // --- null ApisAsyncReturn().doSthAsyncHOF( hofCallback /* -> NO NEED TO MAPPING :[kotlin.Function2] */ , hof2Callback /* -> NO NEED TO MAPPING :[kotlin.Function2] */ ) } override fun doSthAsyncOpen(uriParameter: String, onCallCallback: ((String?, Int) -> Unit)?) { // com.mars.component.detail.api.ApisAsyncReturn.doSthAsyncOpen // - parameters: // --- uri : kotlin.String // --- results : com.mars.component.detail.api.Callback? // - resultType: // --- null val resultsParameterCallbackTransformer = object : Callback() { override fun onCall(v1: String?, v2: Int) { onCallCallback?.invoke( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} } ApisAsyncReturn().doSthAsyncOpen( uriParameter /* -> NO NEED TO MAPPING :[kotlin.String] */ , resultsParameterCallbackTransformer ) } override fun doSthAsyncInterface(onCallCallback: (String?, Int) -> Unit) { // com.mars.component.detail.api.ApisAsyncReturn.doSthAsyncInterface // - parameters: // --- onResult : com.mars.component.detail.api.Callbackable // - resultType: // --- null val onResultCallbackTransformer = object : Callbackable { override fun onCall(v1: String?, v2: Int) { onCallCallback( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} } ApisAsyncReturn().doSthAsyncInterface( onResultCallbackTransformer ) } override fun doSthAsync3Interface( onCallCallback: ((String?, Int) -> Unit)?, onCall1Callback: (String?, Int) -> Unit, onCall2Callback: (TestDataBeanCtx?) -> Unit ) { // com.mars.component.detail.api.ApisAsyncReturn.doSthAsync2Interface // - parameters: // --- onResult : com.mars.component.detail.api.Callbackable? // --- onResult2 : com.mars.component.detail.api.Callbackable // --- onResult3 : com.mars.component.detail.api.BeanCallbackable // - resultType: // --- null val onResultCallbackTransformer = object : Callbackable { override fun onCall(v1: String?, v2: Int) { onCallCallback?.invoke( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} } val onResult2CallbackTransformer = object : Callbackable { override fun onCall(v1: String?, v2: Int) { onCall1Callback( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} } val onResult3CallbackTransformer = object : BeanCallbackable { override fun onCall(v: TestDataBeanOrg?) { onCall2Callback( v?.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean?] */ )} } ApisAsyncReturn().doSthAsync2Interface( onResultCallbackTransformer, onResult2CallbackTransformer, onResult3CallbackTransformer ) } override fun doSthAsyncInterfaceMultiFunc( startCallback: (String?, Int) -> Unit, dataCallback: (TestDataBeanCtx?) -> Unit, stopCallback: (String?, Int) -> Unit ) { // com.mars.component.detail.api.ApisAsyncReturn.doSthAsyncInterfaceMultiFunc // - parameters: // --- onResult : com.mars.component.detail.api.MultiCallback // - resultType: // --- null val onResultCallbackTransformer = object : MultiCallback { override fun start(v1: String?, v2: Int) { startCallback( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} override fun data(v: TestDataBeanOrg?) { dataCallback( v?.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean?] */ )} override fun stop(v1: String?, v2: Int) { stopCallback( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} } ApisAsyncReturn().doSthAsyncInterfaceMultiFunc( onResultCallbackTransformer ) } override fun doSthHOFTop(lambdaArg0: Unit, routeResultTransformer: (Unit) -> Unit) { // com.mars.component.detail.api.AipsInTopKt.doSthHOFTop // - parameters: // --- lambdaArg0 : kotlin.Unit // - resultType: // --- kotlin.Unit routeResultTransformer(com.mars.component.detail.api.doSthHOFTop( lambdaArg0 /* -> NO NEED TO MAPPING :[kotlin.Unit] */ ) /* -> NO NEED TO MAPPING :[kotlin.Unit] */ ) } override fun propertyTop(routeResultTransformer: (String) -> Unit) { // com.mars.component.detail.api.AipsInTopKt.propertyTop // - resultType: // --- kotlin.String routeResultTransformer(com.mars.component.detail.api.propertyTop /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSthTop( ints: Array, li: List, strings: Array, ls: List, beans: Array, lb: List, routeResultTransformer: (List) -> Unit ) { // com.mars.component.detail.api.AipsInTopKt.doSthTop // - parameters: // --- ints : kotlin.Array // --- li : kotlin.collections.List // --- strings : kotlin.Array // --- ls : kotlin.collections.List // --- beans : kotlin.Array // --- lb : kotlin.collections.List // - resultType: // --- kotlin.collections.List routeResultTransformer(com.mars.component.detail.api.doSthTop( ints /* -> NO NEED TO MAPPING :[kotlin.Array] */ , li /* -> NO NEED TO MAPPING :[kotlin.collections.List] */ , strings /* -> NO NEED TO MAPPING :[kotlin.Array] */ , ls /* -> NO NEED TO MAPPING :[kotlin.collections.List] */ , beans.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.Array] */ , lb.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ ) } override fun getFilesMeta( context: Context?, pathParameter: String?, onResultCallback: (Long, String?) -> Unit ) { // com.mars.component.detail.api.ApisBadCase.getFilesMeta // - parameters: // --- context : android.content.Context? // --- path : kotlin.String? // --- callback : com.mars.component.detail.api.GetFileMetaCallback // - resultType: // --- null val callbackCallbackTransformer = object : GetFileMetaCallback { override fun onResult(fsid: Long, pathParameter: String?) { onResultCallback( fsid /* -> NO NEED TO MAPPING :[kotlin.Long] */ , pathParameter /* -> NO NEED TO MAPPING :[kotlin.String?] */ )} } ApisBadCase().getFilesMeta( context /* -> NO NEED TO MAPPING :[android.content.Context?] */ , pathParameter /* -> NO NEED TO MAPPING :[kotlin.String?] */ , callbackCallbackTransformer ) } override fun enterpriseBusinessAllocateTicket( context: Context, shareId: Long, count: Int, packetType: Int, routeResultTransformer: ((LiveData>?) -> Unit)? ) { // com.mars.component.detail.api.ApisBadCase.allocateTicket // - parameters: // --- context : android.content.Context // --- shareId : kotlin.Long // --- count : kotlin.Int // --- packetType : kotlin.Int // - resultType: // --- androidx.lifecycle.LiveData>? if (null != routeResultTransformer) { routeResultTransformer(ApisBadCase().allocateTicket( context /* -> NO NEED TO MAPPING :[android.content.Context] */ , shareId /* -> NO NEED TO MAPPING :[kotlin.Long] */ , count /* -> NO NEED TO MAPPING :[kotlin.Int] */ , packetType /* -> NO NEED TO MAPPING :[kotlin.Int] */ ) /* -> NO NEED TO MAPPING :[androidx.lifecycle.LiveData>?] */ )} } override fun doSthProvideInstanceByFunc() { // com.mars.component.detail.api.Task.doSthProvideObject // - resultType: // --- null com.mars.component.detail.api.provideTask() /* -> NO NEED TO MAPPING :[com.mars.component.detail.api.Task] */ .doSthProvideObject() } override fun doSthProvideInstanceByFunc2() { // com.mars.component.detail.api.Task.doSthProvideObject2 // - resultType: // --- null com.mars.component.detail.api.provideTask() /* -> NO NEED TO MAPPING :[com.mars.component.detail.api.Task] */ .doSthProvideObject2() } override fun doSthProvideInstanceByParameterFunc( rubikInstanceValue: String, rubikInstanceV0: Int?, v1: String, v2: Int?, v3: Int? ) { // com.mars.component.detail.api.Task.doSthProvideObject2 // - parameters: // --- v1 : kotlin.String // --- v2 : kotlin.Int? // --- v3 : kotlin.Int? // - resultType: // --- null com.mars.component.detail.api.provideTask2( rubikInstanceValue /* -> NO NEED TO MAPPING :[kotlin.String] */ , rubikInstanceV0 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.api.Task] */ .doSthProvideObject2( v1 /* -> NO NEED TO MAPPING :[kotlin.String] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ , v3 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ ) } override fun doSthProvideInstanceByConstructor( rubikInstanceValue: String, v1: String, v2: Int?, v3: Int? ) { // com.mars.component.detail.api.Task.doSthProvideObject3 // - parameters: // --- v1 : kotlin.String // --- v2 : kotlin.Int? // --- v3 : kotlin.Int? // - resultType: // --- null Task( rubikInstanceValue /* -> NO NEED TO MAPPING :[kotlin.String] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.api.Task] */ .doSthProvideObject3( v1 /* -> NO NEED TO MAPPING :[kotlin.String] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ , v3 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ ) } override fun doSthResultReceiver(resultParameter: ResultReceiver, routeResultTransformer: (ResultReceiver) -> Unit) { // com.mars.component.detail.api.ApisWithResultReceiver.doSthResultReceiver // - parameters: // --- result : android.os.ResultReceiver // - resultType: // --- android.os.ResultReceiver routeResultTransformer(ApisWithResultReceiver().doSthResultReceiver( resultParameter /* -> NO NEED TO MAPPING :[android.os.ResultReceiver] */ ) /* -> NO NEED TO MAPPING :[android.os.ResultReceiver] */ ) } override fun liveDataGet(routeResultTransformer: (LiveData) -> Unit) { // com.mars.component.detail.api.ApisWithLiveData.getSthLiveData // - resultType: // --- androidx.lifecycle.LiveData routeResultTransformer(ApisWithLiveData().getSthLiveData() /* -> NO NEED TO MAPPING :[androidx.lifecycle.LiveData] */ ) } override fun liveDataBeanGet(routeResultTransformer: (LiveData) -> Unit) { // com.mars.component.detail.api.ApisWithLiveData.getSthLiveDataBean // - resultType: // --- androidx.lifecycle.LiveData routeResultTransformer(ApisWithLiveData().getSthLiveDataBean().toTypeOfT() /* -> TO CONTEXT TYPE :[androidx.lifecycle.LiveData] */ ) } override fun liveDataBeanListGet(routeResultTransformer: (LiveData>) -> Unit) { // com.mars.component.detail.api.ApisWithLiveData.getSthLiveDataBeanList // - resultType: // --- androidx.lifecycle.LiveData> routeResultTransformer(ApisWithLiveData().getSthLiveDataBeanList().toTypeOfT() /* -> TO CONTEXT TYPE :[androidx.lifecycle.LiveData>] */ ) } override fun doSthCallbackObject(callback: CallbackTestInterfaceCtx) { // com.mars.component.detail.callback.CallbackTestInterfaceKt.doSthCallbackObject // - parameters: // --- callback : com.mars.component.detail.callback.CallbackTestInterface // - resultType: // --- null com.mars.component.detail.callback.doSthCallbackObject( callback.mapToType(toCallbackTestInterfaceOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.callback.CallbackTestInterface] */ ) } override fun testNameString(): String? { // com.mars.component.detail.test.TestDefaultPathTask.testNameString // - resultType: // --- kotlin.String return TestDefaultPathTask().testNameString /* -> NO NEED TO MAPPING :[kotlin.String] */ } override fun testName() { // com.mars.component.detail.test.TestDefaultPathTask.testName // - resultType: // --- null TestDefaultPathTask().testName() } override fun testNameUp() { // com.mars.component.detail.test.TestDefaultPathTask.TEST_NAME_UP // - resultType: // --- null TestDefaultPathTask().TEST_NAME_UP() } override fun getALotOfCommonInstance(i: Int): List? { // com.mars.component.detail.objekt.ObjectTestKt.getALotOfObjectTest // - parameters: // --- i : kotlin.Int // - resultType: // --- kotlin.collections.List return com.mars.component.detail.objekt.getALotOfObjectTest( i /* -> NO NEED TO MAPPING :[kotlin.Int] */ ).mapToType(toObjectTestCtxMapping) /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun sendBackALotOfCommonInstance(objs: Map) { // com.mars.component.detail.objekt.ObjectTestKt.senBackALotOfObjectTest // - parameters: // --- objs : kotlin.collections.Map // - resultType: // --- null com.mars.component.detail.objekt.senBackALotOfObjectTest( objs.mapToType(toObjectTestOrgMapping) /* -> TO ORIGINAL TYPE :[kotlin.collections.Map] */ ) } override fun getALotOfCommonInstanceNull(i: Int): List? { // com.mars.component.detail.objekt.ObjectTestKt.getALotOfObjectTestNull // - parameters: // --- i : kotlin.Int // - resultType: // --- kotlin.collections.List? return com.mars.component.detail.objekt.getALotOfObjectTestNull( i /* -> NO NEED TO MAPPING :[kotlin.Int] */ )?.mapToType(toNullableObjectTestCtxMapping) /* -> TO CONTEXT TYPE :[kotlin.collections.List?] */ } override fun sendBackALotOfCommonInstanceNull(objs: Map?) { // com.mars.component.detail.objekt.ObjectTestKt.senBackALotOfObjectTesNull // - parameters: // --- objs : kotlin.collections.Map? // - resultType: // --- null com.mars.component.detail.objekt.senBackALotOfObjectTesNull( objs?.mapToType(toNullableObjectTestOrgMapping) /* -> TO ORIGINAL TYPE :[kotlin.collections.Map?] */ ) } override fun fragmentPage1(): Fragment? { // com.mars.component.detail.ui.FirstPageFragment // - resultType: // --- com.mars.component.detail.ui.FirstPageFragment return FirstPageFragment() /* -> NO NEED TO MAPPING :[com.mars.component.detail.ui.FirstPageFragment] */ } override fun objectGetDoSthInCommonIns( objectInstance: ObjectTestCtx, v1: String, v2: Int?, v3: Int? ) { // com.mars.component.detail.objekt.ObjectTest.doSthInObject3 // - parameters: // --- v1 : kotlin.String // --- v2 : kotlin.Int? // --- v3 : kotlin.Int? // - resultType: // --- null objectInstance.mapToType(toObjectTestOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.objekt.ObjectTest] */ .doSthInObject3( v1 /* -> NO NEED TO MAPPING :[kotlin.String] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ , v3 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ ) } override fun apiBigdataJsonArray(array: Array): Array? { // com.mars.component.detail.api.ApisBigData.getBigJsonArray // - parameters: // --- array : kotlin.Array // - resultType: // --- kotlin.Array return ApisBigData().getBigJsonArray( array.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.Array] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.Array] */ } override fun apiBigdataParcelArray(array: Array): Array? { // com.mars.component.detail.api.ApisBigData.getBigParcelArray // - parameters: // --- array : kotlin.Array // - resultType: // --- kotlin.Array return ApisBigData().getBigParcelArray( array.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.Array] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.Array] */ } override fun apiBigdataLibArray(array: Array): Array? { // com.mars.component.detail.api.ApisBigData.getBigLibArray // - parameters: // --- array : kotlin.Array // - resultType: // --- kotlin.Array return ApisBigData().getBigLibArray( array.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.Array] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.Array] */ } override fun apiBigdataJsonList(list: List): List? { // com.mars.component.detail.api.ApisBigData.getBigJsonList // - parameters: // --- list : kotlin.collections.List // - resultType: // --- kotlin.collections.List return ApisBigData().getBigJsonList( list.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun apiBigdataParcelList(list: List): List? { // com.mars.component.detail.api.ApisBigData.getBigParcelList // - parameters: // --- list : kotlin.collections.List // - resultType: // --- kotlin.collections.List return ApisBigData().getBigParcelList( list.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun apiBigdataLibList(list: List): List? { // com.mars.component.detail.api.ApisBigData.getBigLibList // - parameters: // --- list : kotlin.collections.List // - resultType: // --- kotlin.collections.List return ApisBigData().getBigLibList( list.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun apiBigdataParcelArraylist(list: List): List? { // com.mars.component.detail.api.ApisBigData.getBigParcelArrayList // - parameters: // --- list : kotlin.collections.List // - resultType: // --- kotlin.collections.List return ApisBigData().getBigParcelArrayList( list.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun apiSerializationParcelBean(parcelBean: TestParcelizeBeanCtx?): TestParcelizeBeanCtx? { // com.mars.component.detail.api.ApiSerialization.doSthParcelBean // - parameters: // --- parcelBean : com.mars.component.detail.value.TestParcelizeBean? // - resultType: // --- com.mars.component.detail.value.TestParcelizeBean return ApiSerialization().doSthParcelBean( parcelBean?.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestParcelizeBean?] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestParcelizeBean] */ } override fun apiSerializationParcelArray(parcels: Array): Array? { // com.mars.component.detail.api.ApiSerialization.doSthParcelArray // - parameters: // --- parcels : kotlin.Array // - resultType: // --- kotlin.Array return ApiSerialization().doSthParcelArray( parcels.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.Array] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.Array] */ } override fun apiSerializationParcelList(parcels: List): List? { // com.mars.component.detail.api.ApiSerialization.doSthParcelList // - parameters: // --- parcels : kotlin.collections.List // - resultType: // --- kotlin.collections.List return ApiSerialization().doSthParcelList( parcels.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List] */ } override fun apiSerializationSerializableBean(serializableBean: TestSerializableBeanCtx): TestSerializableBeanCtx? { // com.mars.component.detail.api.ApiSerialization.doSthSerializableBean // - parameters: // --- serializableBean : com.mars.component.detail.value.TestSerializableBean // - resultType: // --- com.mars.component.detail.value.TestSerializableBean return ApiSerialization().doSthSerializableBean( serializableBean.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestSerializableBean] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestSerializableBean] */ } override fun sthNavigationOnlyUri(uriParameter: String, routeResultTransformer: (String) -> Unit) { // com.mars.component.detail.api.Apis.getSthNavigationOnly // - parameters: // --- uri : kotlin.String // - resultType: // --- kotlin.String routeResultTransformer(Apis().getSthNavigationOnly( uriParameter /* -> NO NEED TO MAPPING :[kotlin.String] */ ) /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun createObjectTestInstance(value: String): ObjectTestCtx? { // com.mars.component.detail.objekt.ObjectTest // - parameters: // --- value : kotlin.String // - resultType: // --- com.mars.component.detail.objekt.ObjectTest return ObjectTestOrg( value /* -> NO NEED TO MAPPING :[kotlin.String] */ ).mapToType(toObjectTestCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTest] */ } override fun createObjectTestCreateInstance(v1: Int, v2: String): ObjectTestCreateCtx? { // com.mars.component.detail.objekt.ObjectTestCreate // - parameters: // --- v1 : kotlin.Int // --- v2 : kotlin.String // - resultType: // --- com.mars.component.detail.objekt.ObjectTestCreate return ObjectTestCreateOrg( v1 /* -> NO NEED TO MAPPING :[kotlin.Int] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.String] */ ).mapToType(toObjectTestCreateCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTestCreate] */ } override fun createObjectTestCreateInstanceByV1V2V3V4( v1: Int, v2: Int, v3: Int, v4: Int ): ObjectTestCreateCtx? { // com.mars.component.detail.objekt.ObjectTestCreate // - parameters: // --- v1 : kotlin.Int // --- v2 : kotlin.Int // --- v3 : kotlin.Int // --- v4 : kotlin.Int // - resultType: // --- com.mars.component.detail.objekt.ObjectTestCreate return ObjectTestCreateOrg( v1 /* -> NO NEED TO MAPPING :[kotlin.Int] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ , v3 /* -> NO NEED TO MAPPING :[kotlin.Int] */ , v4 /* -> NO NEED TO MAPPING :[kotlin.Int] */ ).mapToType(toObjectTestCreateCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTestCreate] */ } @RGenerated( kind = "aggregate_mappings", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.1-DEV" ) @Keep object Mappings { /** * Mapping between : * com.mars.component.detail.objekt.ObjectTest < --- > rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTest */ val toObjectTestCtxMapping: ObjectTestOrg.() -> ObjectTestCtx get() = { ObjectTestCtx.create(this) } val toObjectTestOrgMapping: ObjectTestCtx.() -> ObjectTestOrg get() = { this.originalObject.castToTypeOfT() } val toNullableObjectTestCtxMapping: ObjectTestOrg?.() -> ObjectTestCtx? get() = { this?.toObjectTestCtxMapping() } val toNullableObjectTestOrgMapping: ObjectTestCtx?.() -> ObjectTestOrg? get() = { this?.toObjectTestOrgMapping() } /** * Mapping between : * com.mars.component.detail.objekt.ObjectTestCreate < --- > rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTestCreate */ val toObjectTestCreateCtxMapping: ObjectTestCreateOrg.() -> ObjectTestCreateCtx get() = { ObjectTestCreateCtx.create(this) } val toObjectTestCreateOrgMapping: ObjectTestCreateCtx.() -> ObjectTestCreateOrg get() = { this.originalObject.castToTypeOfT() } /** * Mapping between : * com.mars.component.detail.callback.CallbackTestInterface < --- > rubik.generate.context.demo_com_mars_rubik_test_detail.callback.CallbackTestInterface */ val toCallbackTestInterfaceOrgMapping: CallbackTestInterfaceCtx.() -> CallbackTestInterfaceOrg get() = { val mappingTarget = this object : CallbackTestInterfaceOrg { override fun callbackInt(i: Int) { mappingTarget.callbackInt( i /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} override fun callbackBean(bean: TestDataBeanOrg) { mappingTarget.callbackBean( bean.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean] */ )} override fun callbackBeanReBean(bean: TestDataBeanOrg?) { mappingTarget.callbackBeanReBean( bean?.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean?] */ )} } } /** * Mapping between : * com.mars.component.detail.value.mapping.TestNestDataMappingBean < --- > rubik.generate.context.demo_com_mars_rubik_test_detail.TestNestDataMappingBean */ val toTestNestDataMappingBeanCtxMapping: TestNestDataMappingBeanOrg.() -> TestNestDataMappingBeanCtx get() = { TestNestDataMappingBeanCtx( d1?.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean?] */ , d2?.mapToType(toNullableTestDataMappingBeanCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataMappingBean?] */ , d3?.mapToType(toNullableTestNestDataMappingBeanCtxMapping) /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail.TestNestDataMappingBean?] */ , d4?.toTypeOfT() /* -> TO CONTEXT TYPE :[kotlin.collections.List?] */ , d5?.mapToType(toTestDataMappingBeanCtxMapping) /* -> TO CONTEXT TYPE :[kotlin.collections.List?] */ ) } val toTestNestDataMappingBeanOrgMapping: TestNestDataMappingBeanCtx.() -> TestNestDataMappingBeanOrg get() = { TestNestDataMappingBeanOrg( d1?.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.TestDataBean?] */ , d2?.mapToType(toNullableTestDataMappingBeanOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.mapping.TestDataMappingBean?] */ , d3?.mapToType(toNullableTestNestDataMappingBeanOrgMapping) /* -> TO ORIGINAL TYPE :[com.mars.component.detail.value.mapping.TestNestDataMappingBean?] */ , d4?.toTypeOfT() /* -> TO ORIGINAL TYPE :[kotlin.collections.List?] */ , d5?.mapToType(toTestDataMappingBeanOrgMapping) /* -> TO ORIGINAL TYPE :[kotlin.collections.List?] */ ) } val toNullableTestNestDataMappingBeanCtxMapping: TestNestDataMappingBeanOrg?.() -> TestNestDataMappingBeanCtx? get() = { this?.toTestNestDataMappingBeanCtxMapping() } val toNullableTestNestDataMappingBeanOrgMapping: TestNestDataMappingBeanCtx?.() -> TestNestDataMappingBeanOrg? get() = { this?.toTestNestDataMappingBeanOrgMapping() } /** * Mapping between : * com.mars.component.detail.value.mapping.TestDataMappingBean < --- > rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataMappingBean */ val toTestDataMappingBeanCtxMapping: TestDataMappingBeanOrg.() -> TestDataMappingBeanCtx get() = { TestDataMappingBeanCtx( d1 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ , d2 /* -> NO NEED TO MAPPING :[kotlin.String?] */ ) } val toTestDataMappingBeanOrgMapping: TestDataMappingBeanCtx.() -> TestDataMappingBeanOrg get() = { TestDataMappingBeanOrg( d1 /* -> NO NEED TO MAPPING :[kotlin.Int?] */ , d2 /* -> NO NEED TO MAPPING :[kotlin.String?] */ ) } val toNullableTestDataMappingBeanCtxMapping: TestDataMappingBeanOrg?.() -> TestDataMappingBeanCtx? get() = { this?.toTestDataMappingBeanCtxMapping() } val toNullableTestDataMappingBeanOrgMapping: TestDataMappingBeanCtx?.() -> TestDataMappingBeanOrg? get() = { this?.toTestDataMappingBeanOrgMapping() } } @RGenerated( kind = "aggregate_companion", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.1-DEV" ) @Keep companion object : AggregateFactory() { override val URI: String = "demo://com.mars.rubik-test.detail" override val EVENT_MSGS: List = listOf( "MY_INIT", "MY_DESTROY", "MY_CALLBACK_RES", "MY_CALLBACK_RES_BEAN", "MY_CALLBACK_BEAN", "LifeCycleEvent_Init", "LifeCycleEvent_Destroy" ) override val CREATOR: Function0 = {DetailAggregate()} } } /** * generated Rubik AggregateId. * * uri: [demo://com.mars.rubik-test.detail] * originalToken: * [API]api/bigdata/json-array|N|F|T|T|[IVO]getBigJsonArray|F|N|[QUY]array|Array|F|F|F[<]|[RST]B|Array[<]|ApisBigData|F[<][<] * [API]api/bigdata/json-list|N|F|T|T|[IVO]getBigJsonList|F|N|[QUY]list|List|F|F|F[<]|[RST]B|List[<]|ApisBigData|F[<][<] * [API]api/bigdata/lib-array|N|F|T|T|[IVO]getBigLibArray|F|N|[QUY]array|Array|F|F|F[<]|[RST]B|Array[<]|ApisBigData|F[<][<] * [API]api/bigdata/lib-list|N|F|T|T|[IVO]getBigLibList|F|N|[QUY]list|List|F|F|F[<]|[RST]B|List[<]|ApisBigData|F[<][<] * [API]api/bigdata/parcel-array|N|F|T|T|[IVO]getBigParcelArray|F|N|[QUY]array|Array|F|F|F[<]|[RST]B|Array[<]|ApisBigData|F[<][<] * [API]api/bigdata/parcel-arraylist|N|F|T|T|[IVO]getBigParcelArrayList|F|N|[QUY]list|List|F|F|F[<]|[RST]B|List[<]|ApisBigData|F[<][<] * [API]api/bigdata/parcel-list|N|F|T|T|[IVO]getBigParcelList|F|N|[QUY]list|List|F|F|F[<]|[RST]B|List[<]|ApisBigData|F[<][<] * [API]api/serialization/Serializable-bean|N|F|T|T|[IVO]doSthSerializableBean|F|N|[QUY]serializableBean|com.mars.component.detail.value.TestSerializableBean|F|F|F[<]|[RST]B|com.mars.component.detail.value.TestSerializableBean[<]|com.mars.component.detail.api.ApiSerialization|F[<][<] * [API]api/serialization/parcel-array|N|F|T|T|[IVO]doSthParcelArray|F|N|[QUY]parcels|Array|F|F|F[<]|[RST]B|Array[<]|com.mars.component.detail.api.ApiSerialization|F[<][<] * [API]api/serialization/parcel-bean|N|F|T|T|[IVO]doSthParcelBean|F|N|[QUY]parcelBean|TestParcelizeBean?|F|F|F[<]|[RST]B|TestParcelizeBean[<]|com.mars.component.detail.api.ApiSerialization|F[<][<] * [API]api/serialization/parcel-list|N|F|T|T|[IVO]doSthParcelList|F|N|[QUY]parcels|List|F|F|F[<]|[RST]B|List[<]|com.mars.component.detail.api.ApiSerialization|F[<][<] * [API]create-object-test-create-instance|N|T|T|T|[IVO]ObjectTestCreate|F|N|[QUY]v1|Int|F|F|F[<]|[QUY]v2|String|F|F|F[<]|[RST]B|ObjectTestCreate[<]|ObjectTestCreate|F[<][<] * [API]create-object-test-create-instance-by-v1-v2-v3-v4|N|T|T|T|[IVO]ObjectTestCreate|F|N|[QUY]v1|Int|F|F|F[<]|[QUY]v2|Int|F|F|F[<]|[QUY]v3|Int|F|F|F[<]|[QUY]v4|Int|F|F|F[<]|[RST]B|ObjectTestCreate[<]|ObjectTestCreate|F[<][<] * [API]create-obj2|N|T|T|T|[IVO]ObjectTest|F|N|[QUY]value|String|F|F|F[<]|[RST]B|ObjectTest[<]|ObjectTest|F[<][<] * [API]create-test-default-path-task-instance|java.lang.Object|F|F|F|[IVO]TestDefaultPathTask|F|N|E|[RST]B|TestDefaultPathTask[<]|TestDefaultPathTask|F[<][<] * [API]do-sth|N|F|F|F|[IVO]doSth|F|N|E|N|Apis|F[<][<] * [API]do-sth-async-3-interface|N|F|F|F|[IVO]doSthAsync2Interface|F|N|[QUY]onResult|com.mars.component.detail.api.Callbackable?|F|F|T[<]|[QUY]onResult2|com.mars.component.detail.api.Callbackable|F|F|T[<]|[QUY]onResult3|com.mars.component.detail.api.BeanCallbackable|F|F|T[<]|N|ApisAsyncReturn|F[<][<] * [API]do-sth-async-interface|N|F|F|F|[IVO]doSthAsyncInterface|F|N|[QUY]onResult|com.mars.component.detail.api.Callbackable|F|F|T[<]|N|ApisAsyncReturn|F[<][<] * [API]do-sth-async-interface-multi-func|N|F|F|F|[IVO]doSthAsyncInterfaceMultiFunc|F|N|[QUY]onResult|com.mars.component.detail.api.MultiCallback|F|F|T[<]|N|ApisAsyncReturn|F[<][<] * [API]do-sth-callback-object|N|F|F|F|[IVO]doSthCallbackObject|T|N|[QUY]callback|com.mars.component.detail.callback.CallbackTestInterface|F|F|F[<]|N|com.mars.component.detail.callback.CallbackTestInterfaceKt|F[<][<] * [API]do-sth-create-common-instance|N|F|F|F|[IVO]doSthInCreateObject|F|[OBJ]ObjectTestCreate|create-object-test-create-instance|create-object-test-create-instance-by-v1-v2-v3-v4|do-sth-create-common-instance[<]|[QUY]objectInstance|ObjectTestCreate|F|F|F[<]|[RST]B|TestDataBean[<]|ObjectTestCreate|F[<][<] * [API]do-sth-ext|N|F|F|F|[IVO]doSthExt|T|N|[QUY]s|String|F|F|F[<]|[QUY]i|Int|T|F|F[<]|[RST]B|Int[<]|com.mars.component.detail.api.ApisExtKt|F[<][<] * [API]2.0/do-sth-hof|N|F|T|F|[IVO]doSthHOF|F|N|[QUY]lambdaArg0|Int|F|F|F[<]|[QUY]lambdaArg1|String|F|F|F[<]|[QUY]lambdaArg2|TestDataBean|F|F|F[<]|[RST]B|Int[<]|Apis|F[<][<] * [API]do-sth-in-|N|F|F|F|[IVO]doSthInObject|F|[OBJ]ObjectTest|create-obj2|do-sth-in-|do-sth-in-1|object/get[<]|[QUY]objectInstance|ObjectTest|F|F|F[<]|[RST]B|TestDataBean[<]|ObjectTest|F[<][<] * [API]do-sth-in-1|N|F|F|F|[IVO]doSthInObject2|F|[OBJ]ObjectTest|create-obj2|do-sth-in-|do-sth-in-1|object/get[<]|[QUY]objectInstance|ObjectTest|F|F|F[<]|[QUY]v1|String|F|F|F[<]|[QUY]v2|Int?|F|F|F[<]|[QUY]v3|Int?|F|F|F[<]|N|ObjectTest|F[<][<] * [API]do-sth-provide-instance-by-constructor|N|F|F|F|[IVO]doSthProvideObject3|F|[AIN]do-sth-provide-instance-by-constructor|[IVO]Task|F|N|[QUY]rubikInstanceValue|String|F|F|F[<]|[RST]B|Task[<]|Task|F[<][<]|[QUY]rubikInstanceValue|String|F|F|F[<]|[QUY]v1|String|F|F|F[<]|[QUY]v2|Int?|F|F|F[<]|[QUY]v3|Int?|F|F|F[<]|N|Task|F[<][<] * [API]do-sth-provide-instance-by-func|N|F|F|F|[IVO]doSthProvideObject|F|[AIN]do-sth-provide-instance-by-func|[IVO]provideTask|T|N|E|[RST]B|Task[<]|com.mars.component.detail.api.ApisProvideInstanceKt|F[<][<]|E|N|Task|F[<][<] * [API]do-sth-provide-instance-by-func2|N|F|F|F|[IVO]doSthProvideObject2|F|[AIN]do-sth-provide-instance-by-func2|[IVO]provideTask|T|N|E|[RST]B|Task[<]|com.mars.component.detail.api.ApisProvideInstanceKt|F[<][<]|E|N|Task|F[<][<] * [API]do-sth-provide-instance-by-parameter-func|N|F|F|F|[IVO]doSthProvideObject2|F|[AIN]do-sth-provide-instance-by-parameter-func|[IVO]provideTask2|T|N|[QUY]rubikInstanceValue|String|F|F|F[<]|[QUY]rubikInstanceV0|Int?|F|F|F[<]|[RST]B|Task[<]|com.mars.component.detail.api.ApisProvideInstanceKt|F[<][<]|[QUY]rubikInstanceValue|String|F|F|F[<]|[QUY]rubikInstanceV0|Int?|F|F|F[<]|[QUY]v1|String|F|F|F[<]|[QUY]v2|Int?|F|F|F[<]|[QUY]v3|Int?|F|F|F[<]|N|Task|F[<][<] * [API]do-sth-uri-crash|N|F|F|F|[IVO]doSthUriCrash3|F|N|[QUY]name|String|F|F|F[<]|[QUY]code|String|F|F|F[<]|N|Apis|F[<][<] * [API]do-sth-uri-crash-by-name-code-version|N|F|F|F|[IVO]doSthUriCrash4|F|N|[QUY]name|String|F|F|F[<]|[QUY]code|String|F|F|F[<]|[QUY]version|String|F|F|F[<]|N|Apis|F[<][<] * [API]doSthAsync2HOF|N|F|F|F|[IVO]doSthAsyncHOF|F|N|[QUY]hof|Function2|F|F|T[<]|[QUY]hof2|Function2|F|F|T[<]|N|ApisAsyncReturn|F[<][<] * [API]doSthAsyncHOF|N|F|F|F|[IVO]doSthAsyncHOF|F|N|[QUY]hof|Function2|F|F|T[<]|N|ApisAsyncReturn|F[<][<] * [API]doSthAsyncHOFNullable|N|F|F|F|[IVO]doSthAsyncHOFNullable|F|N|[QUY]hofx1res|Function2?|F|F|T[<]|[QUY]hof2xx|Function2?|F|F|F[<]|[QUY]hof4xx|kotlin.Function3?|F|F|F[<]|N|ApisAsyncReturn|F[<][<] * [API]doSthAsyncOpen|N|F|F|F|[IVO]doSthAsyncOpen|F|N|[QUY]uri|String|F|F|F[<]|[QUY]results|com.mars.component.detail.api.Callback?|F|F|T[<]|N|ApisAsyncReturn|F[<][<] * [API]doSthBean|N|F|F|F|[IVO]doSthBean|F|N|[QUY]a1|TestDataBean|F|F|F[<]|[RST]B|com.mars.component.detail.value.TestListBean[<]|Apis|F[<][<] * [API]doSthCompanion|N|F|F|F|[IVO]doSthCompanion|F|N|[QUY]i|Int|F|F|F[<]|[QUY]j|String|F|F|F[<]|[QUY]k|Long|F|F|F[<]|[RST]B|String[<]|com.mars.component.detail.api.AipsInCompanion.DetailCompanion|T[<][<] * [API]doSthHOFCompanion|N|F|F|F|[IVO]doSthHOFCompanion|T|N|[QUY]lambdaArg0|Int|F|F|F[<]|[RST]B|Int[<]|com.mars.component.detail.api.AipsInCompanion|F[<][<] * [API]doSthHOFTop|N|F|F|F|[IVO]doSthHOFTop|T|N|[QUY]lambdaArg0|Unit|F|F|F[<]|[RST]B|Unit[<]|com.mars.component.detail.api.AipsInTopKt|F[<][<] * [API]doSthMappingBean|N|F|F|F|[IVO]doSthMappingBean|F|N|[QUY]a1|TestDataMappingBean|F|F|F[<]|[RST]B|TestDataMappingBean[<]|Apis|F[<][<] * [API]doSthResultReceiver|N|F|F|F|[IVO]doSthResultReceiver|F|N|[QUY]result|android.os.ResultReceiver|F|F|F[<]|[RST]B|android.os.ResultReceiver[<]|com.mars.component.detail.api.ApisWithResultReceiver|F[<][<] * [API]doSthTestNestDataMappingBean|N|F|F|F|[IVO]doSthTestNestDataMappingBean|F|N|[QUY]bean|com.mars.component.detail.value.mapping.TestNestDataMappingBean|F|F|F[<]|[RST]B|com.mars.component.detail.value.mapping.TestNestDataMappingBean[<]|Apis|F[<][<] * [API]doSthTop|N|F|F|F|[IVO]doSthTop|T|N|[QUY]ints|Array|F|F|F[<]|[QUY]li|List|F|F|F[<]|[QUY]strings|Array|F|F|F[<]|[QUY]ls|List|F|F|F[<]|[QUY]beans|Array|F|F|F[<]|[QUY]lb|List|F|F|F[<]|[RST]B|List[<]|com.mars.component.detail.api.AipsInTopKt|F[<][<] * [API]doSthVararg|N|F|F|F|[IVO]doSthVararg|F|N|[QUY]no|Int|F|F|F[<]|[QUY]varargString|*Array|F|T|F[<]|N|Apis|F[<][<] * [API]doSthVarargHof|N|F|F|F|[IVO]doSthVarargHof|F|N|[QUY]no|Int|F|F|F[<]|[QUY]varargString|*Array>|F|T|F[<]|N|Apis|F[<][<] * [API]doTestDataType1|N|F|T|F|[IVO]doTestDataType1|F|N|[QUY]data|Context?|F|F|F[<]|[RST]B|Context?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType10|N|F|F|F|[IVO]doTestDataType10|F|N|[QUY]resultSuccess|Function1|F|F|F[<]|[QUY]resultSuccess2|Function1|F|F|F[<]|N|TestDataTypeTask|F[<][<] * [API]doTestDataType11|N|F|F|F|[IVO]doTestDataType11|F|N|[QUY]resultSuccess|Function2|F|F|T[<]|[QUY]resultSuccess2|Function1|F|F|T[<]|N|TestDataTypeTask|F[<][<] * [API]doTestDataType13|N|F|T|F|[IVO]doTestDataType13|F|N|[QUY]data|List|F|F|F[<]|[RST]B|List[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType14|N|F|T|F|[IVO]doTestDataType14|F|N|[QUY]data|ArrayList|F|F|F[<]|[RST]B|ArrayList[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType15|N|F|T|F|[IVO]doTestDataType15|F|N|[QUY]data|List|F|F|F[<]|[RST]B|List[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType16|N|F|T|F|[IVO]doTestDataType16|F|N|[QUY]data|ArrayList|F|F|F[<]|[RST]B|ArrayList[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType17|N|F|T|F|[IVO]doTestDataType17|F|N|[QUY]data|List|F|F|F[<]|[RST]B|List[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType18|N|F|T|F|[IVO]doTestDataType18|F|N|[QUY]data|ArrayList|F|F|F[<]|[RST]B|ArrayList[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType19|N|F|T|F|[IVO]doTestDataType19|F|N|[QUY]data|ArrayList>|F|F|F[<]|[RST]B|ArrayList>[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType2|N|F|T|F|[IVO]doTestDataType2|F|N|[QUY]data|Int?|F|F|F[<]|[RST]B|Int?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType20|N|F|T|F|[IVO]doTestDataType20|F|N|[QUY]media|kotlin.Pair|F|F|F[<]|[RST]B|List?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType21|N|F|T|F|[IVO]doTestDataType21|F|N|[QUY]data|List|F|F|F[<]|[RST]B|List[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType22|N|F|T|F|[IVO]doTestDataType22|F|N|[QUY]data|List|F|F|F[<]|[RST]B|List[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType23|N|F|T|F|[IVO]doTestDataType23|F|N|[QUY]data|Array|F|F|F[<]|[RST]B|Array[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType24|N|F|T|F|[IVO]doTestDataType24|F|N|[QUY]data|Map|F|F|F[<]|[RST]B|Map[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType25|N|F|T|F|[IVO]doTestDataType25|F|N|[QUY]data|Map|F|F|F[<]|[RST]B|Map[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType26|N|F|T|F|[IVO]doTestDataType26|F|N|[QUY]data|kotlin.collections.Set|F|F|F[<]|[RST]B|kotlin.collections.Set[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType27|N|F|T|F|[IVO]doTestDataType27|F|N|[QUY]data|kotlin.collections.Set|F|F|F[<]|[RST]B|kotlin.collections.Set[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType3|N|F|T|F|[IVO]doTestDataType3|F|N|[QUY]data|String?|F|F|F[<]|[RST]B|String?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType4|N|F|T|F|[IVO]doTestDataType4|F|N|[QUY]data|TestNullableBean?|F|F|F[<]|[RST]B|TestNullableBean?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType5|N|F|T|F|[IVO]doTestDataType5|F|N|[QUY]data|List?|F|F|F[<]|[RST]B|List?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType6|N|F|T|F|[IVO]doTestDataType6|F|N|[QUY]data|Array?|F|F|F[<]|[RST]B|Array?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType7|N|F|T|F|[IVO]doTestDataType7|F|N|[QUY]data|kotlin.LongArray?|F|F|F[<]|[RST]B|kotlin.LongArray?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType8|N|F|T|F|[IVO]doTestDataType8|F|N|[QUY]data|kotlin.IntArray?|F|F|F[<]|[RST]B|kotlin.IntArray?[<]|TestDataTypeTask|F[<][<] * [API]doTestDataType9|N|F|T|F|[IVO]doTestDataType9|F|N|[QUY]data|kotlin.BooleanArray?|F|F|F[<]|[RST]B|kotlin.BooleanArray?[<]|TestDataTypeTask|F[<][<] * [API]doTestGenericity1|N|F|T|F|[IVO]doTestGenericity1|T|N|[QUY]data|List?|F|F|F[<]|[RST]B|List?[<]|TestGenericityTaskKt|F[<][<] * [API]doTestGenericity2|N|F|T|F|[IVO]doTestGenericity2|T|N|[QUY]data|LiveData?|F|F|F[<]|[RST]B|LiveData?[<]|TestGenericityTaskKt|F[<][<] * [API]doTestGenericity3|N|F|T|F|[IVO]doTestGenericity3|T|N|[QUY]data|Map|F|F|F[<]|[RST]B|Map[<]|TestGenericityTaskKt|F[<][<] * [API]doTestGenericity6|N|F|T|F|[IVO]doTestGenericity6|F|N|[QUY]data|Array?|F|F|F[<]|[RST]B|Array?[<]|com.mars.component.detail.test.TestGenericityTask|F[<][<] * [API]doTestGenericity7|N|F|T|F|[IVO]doTestGenericity7|F|N|[QUY]data|Array?|F|F|F[<]|[RST]B|Array?[<]|com.mars.component.detail.test.TestGenericityTask.Companion|T[<][<] * [API]doTestGenericity8|N|F|F|F|[IVO]doTestGenericity8|T|N|[QUY]resultSuccess|Function1,Unit>|F|F|F[<]|N|TestGenericityTaskKt|F[<][<] * [API]doTestGenericity9|N|F|F|F|[IVO]doTestGenericity9|T|N|[QUY]resultSuccess|Function1,Unit>|F|F|F[<]|N|TestGenericityTaskKt|F[<][<] * [API]enterprise/business/allocateTicket|N|F|F|F|[IVO]allocateTicket|F|N|[QUY]context|Context|F|F|F[<]|[QUY]shareId|Long|F|F|F[<]|[QUY]count|Int|F|F|F[<]|[QUY]packetType|Int|F|F|F[<]|[RST]B|LiveData>?[<]|com.mars.component.detail.api.ApisBadCase|F[<][<] * [API]fragment/page1|androidx.fragment.app.Fragment|F|T|T|[IVO]com.mars.component.detail.ui.FirstPageFragment|F|N|E|[RST]B|com.mars.component.detail.ui.FirstPageFragment[<]|com.mars.component.detail.ui.FirstPageFragment|F[<][<] * [API]get-a-lot-of-common-instance|N|F|T|T|[IVO]getALotOfObjectTest|T|N|[QUY]i|Int|F|F|F[<]|[RST]B|List[<]|ObjectTestKt|F[<][<] * [API]get-a-lot-of-common-instance-null|N|F|T|T|[IVO]getALotOfObjectTestNull|T|N|[QUY]i|Int|F|F|F[<]|[RST]B|List?[<]|ObjectTestKt|F[<][<] * [API]get-a-other-common-instance|N|F|F|F|[IVO]getAOtherObjectTest|T|N|[QUY]i|Int|F|F|F[<]|[RST]B|ObjectTest[<]|ObjectTestKt|F[<][<] * [API]get-a-other-common-instance-null|N|F|F|F|[IVO]getAOtherObjectTestNull|T|N|[QUY]i|Int|F|F|F[<]|[RST]B|ObjectTest?[<]|ObjectTestKt|F[<][<] * [API]getFilesMeta|N|F|F|F|[IVO]getFilesMeta|F|N|[QUY]context|Context?|F|F|F[<]|[QUY]path|String?|F|F|F[<]|[QUY]callback|com.mars.component.detail.api.GetFileMetaCallback|F|F|T[<]|N|com.mars.component.detail.api.ApisBadCase|F[<][<] * [API]live-data-bean-list/get|N|F|F|F|[IVO]getSthLiveDataBeanList|F|N|E|[RST]B|LiveData>[<]|com.mars.component.detail.api.ApisWithLiveData|F[<][<] * [API]live-data-bean/get|N|F|F|F|[IVO]getSthLiveDataBean|F|N|E|[RST]B|LiveData[<]|com.mars.component.detail.api.ApisWithLiveData|F[<][<] * [API]live-data/get|N|F|F|F|[IVO]getSthLiveData|F|N|E|[RST]B|LiveData[<]|com.mars.component.detail.api.ApisWithLiveData|F[<][<] * [API]object/get|N|F|T|T|[IVO]doSthInObject3|F|[OBJ]ObjectTest|create-obj2|do-sth-in-|do-sth-in-1|object/get[<]|[QUY]objectInstance|ObjectTest|F|F|F[<]|[QUY]v1|String|F|F|F[<]|[QUY]v2|Int?|F|F|F[<]|[QUY]v3|Int?|F|F|F[<]|N|ObjectTest|F[<][<] * [API]property/companion|N|F|F|F|[IVO]propertyCompanion|T|N|E|[RST]B|String[<]|com.mars.component.detail.api.AipsInCompanion|F[<][<] * [API]1.0/property/property|N|F|F|F|[IVO]property|F|N|E|[RST]B|String[<]|Apis|F[<][<] * [API]property/top|N|F|F|F|[IVO]propertyTop|T|N|E|[RST]B|String[<]|com.mars.component.detail.api.AipsInTopKt|F[<][<] * [API]send-back-a-lot-of-common-instance|N|F|T|T|[IVO]senBackALotOfObjectTest|T|N|[QUY]objs|Map|F|F|F[<]|N|ObjectTestKt|F[<][<] * [API]send-back-a-lot-of-common-instance-null|N|F|T|T|[IVO]senBackALotOfObjectTesNull|T|N|[QUY]objs|Map?|F|F|F[<]|N|ObjectTestKt|F[<][<] * [API]send-back-common-instance|N|F|F|F|[IVO]senBackObjectTest|T|N|[QUY]obj|ObjectTest|F|F|F[<]|N|ObjectTestKt|F[<][<] * [API]send-back-common-instance-null|N|F|F|F|[IVO]senBackObjectTestNull|T|N|[QUY]obj|ObjectTest?|F|F|F[<]|N|ObjectTestKt|F[<][<] * [API]sth-navigation-only/{uri}|N|T|F|F|[IVO]getSthNavigationOnly|F|N|[QUY]uri|String|F|F|F[<]|[RST]B|String[<]|Apis|F[<][<] * [API]sth/{id}/a-{name}?code1={code1}&code2={code2}|N|F|F|F|[IVO]getSth|F|N|[QUY]id|String|F|F|F[<]|[QUY]name|String|F|F|F[<]|[QUY]code1|String|F|F|F[<]|[QUY]code2|String|F|F|F[<]|[RST]B|String[<]|Apis|F[<][<] * [API]test-bean/create|N|F|F|F|[IVO]com.mars.component.detail.value.TestCreateBean|F|N|[QUY]d1|Int?|F|F|F[<]|[QUY]d2|String?|F|F|F[<]|[RST]B|com.mars.component.detail.value.TestCreateBean[<]|com.mars.component.detail.value.TestCreateBean|F[<][<] * [API]test-name|N|F|T|T|[IVO]testName|F|N|E|N|TestDefaultPathTask|F[<][<] * [API]test-name-string|N|F|T|T|[IVO]testNameString|F|N|E|[RST]B|String[<]|TestDefaultPathTask|F[<][<] * [API]testGenericity4|N|F|T|F|[IVO]testGenericity4|F|N|E|[RST]B|List[<]|com.mars.component.detail.test.TestGenericityTask|F[<][<] * [API]testGenericity5|N|F|T|F|[IVO]testGenericity5|F|N|[QUY]lambdaArg0|List?|F|F|F[<]|[RST]B|List?[<]|com.mars.component.detail.test.TestGenericityTask|F[<][<] * [API]test_name_up|N|F|T|T|[IVO]TEST_NAME_UP|F|N|E|N|TestDefaultPathTask|F[<][<] * [API]view/get|N|F|F|F|[IVO]getView|F|N|[QUY]context|Context|F|F|F[<]|[RST]B|android.view.View?[<]|Apis|F[<][<] * [ACT]activity/page1|B|F|T|com.mars.component.detail.ui.FirstPageActivity|[PRT]key_5_bean|N|TestDataBean?[<]|[PRT]key_1_pa|N|TestCompanionBean?[<]|[PRT]key_2_pa_ar|N|Array?[<]|[PRT]key_c_pa_li|N|List?[<]|[PRT]key_3_int|N|Int[<]|[PRT]uri|N|String?[<]|[PRT]key_4_strs|serializable|List?[<]|[PRT]key_a_ints|N|List?[<][<] * [ACT]activity/page1_from_detail|B|F|T|com.mars.component.detail.ui.FirstPageActivity|[PRT]key_5_bean|N|TestDataBean?[<]|[PRT]key_int_for_detail|N|Int?[<]|[PRT]key_int_for_all|N|Int?[<]|[PRT]key_1_pa|N|TestCompanionBean?[<]|[PRT]key_2_pa_ar|N|Array?[<]|[PRT]key_c_pa_li|N|List?[<]|[PRT]key_3_int|N|Int[<]|[PRT]uri|N|String?[<]|[PRT]key_4_strs|serializable|List?[<]|[PRT]key_a_ints|N|List?[<][<] * [ACT]activity/page1_from_home|B|F|T|com.mars.component.detail.ui.FirstPageActivity|[PRT]key_5_bean|N|TestDataBean?[<]|[PRT]key_int_for_home|N|Int?[<]|[PRT]key_int_for_all|N|Int?[<]|[PRT]key_1_pa|N|TestCompanionBean?[<]|[PRT]key_2_pa_ar|N|Array?[<]|[PRT]key_c_pa_li|N|List?[<]|[PRT]key_3_int|N|Int[<]|[PRT]uri|N|String?[<]|[PRT]key_4_strs|serializable|List?[<]|[PRT]key_a_ints|N|List?[<][<] * [ACT]activity/page2/{key_str1}/{key_str2}/{key_str3}|B|F|T|com.mars.component.detail.ui.SecondPageActivity|[PRT]key_str1|N|String?[<]|[PRT]key_str2|N|String?[<]|[PRT]key_str3|N|String?[<][<] * [EVT]LifeCycleEvent_Destroy|B|[IVO]destroy|F|N|E|[RST]B|Unit[<]|com.mars.component.detail.event.EventsWithLambda|F[<][<] * [EVT]LifeCycleEvent_Destroy|B|[IVO]onDestroy|F|N|[QUY]context|Context|F|F|F[<]|[QUY]parameter1|String|F|F|F[<]|N|com.mars.component.detail.event.Events|F[<][<] * [EVT]LifeCycleEvent_Init|B|[IVO]init|F|N|E|[RST]B|Unit[<]|com.mars.component.detail.event.EventsWithLambda|F[<][<] * [EVT]LifeCycleEvent_Init|B|[IVO]onInit|F|N|[QUY]context|Context|F|F|F[<]|[QUY]parameter1|String|F|F|F[<]|N|com.mars.component.detail.event.Events|F[<][<] * [EVT]MY_CALLBACK_BEAN|events-by-instance|[IVO]onCallbackBean|F|[EIN]events-by-instance|[IVO]provideEve|T|N|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[RST]B|EventsByInstance[<]|EventsKt|F[<][<]|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[QUY]arg1|Any|F|F|F[<]|[QUY]bean|TestDataBean|F|F|F[<]|N|EventsByInstance|F[<][<] * [EVT]MY_CALLBACK_RES|events-by-instance|[IVO]onCallbackRes|F|[EIN]events-by-instance|[IVO]provideEve|T|N|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[RST]B|EventsByInstance[<]|EventsKt|F[<][<]|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[QUY]arg1|Any|F|F|F[<]|[QUY]result|Function1|F|F|T[<]|N|EventsByInstance|F[<][<] * [EVT]MY_CALLBACK_RES_BEAN|events-by-instance|[IVO]onCallbackResBean|F|[EIN]events-by-instance|[IVO]provideEve|T|N|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[RST]B|EventsByInstance[<]|EventsKt|F[<][<]|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[QUY]arg1|Any|F|F|F[<]|[QUY]result|Function1|F|F|T[<]|N|EventsByInstance|F[<][<] * [EVT]MY_DESTROY|events-by-instance|[IVO]onDestroy|F|[EIN]events-by-instance|[IVO]provideEve|T|N|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[RST]B|EventsByInstance[<]|EventsKt|F[<][<]|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[QUY]arg1|Any|F|F|F[<]|[QUY]arg2|Any|F|F|F[<]|[QUY]arg3|Any|F|F|F[<]|N|EventsByInstance|F[<][<] * [EVT]MY_INIT|events-by-instance|[IVO]onInit|F|[EIN]events-by-instance|[IVO]provideEve|T|N|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[RST]B|EventsByInstance[<]|EventsKt|F[<][<]|[QUY]rubikInstanceBool|Boolean|F|F|F[<]|[QUY]arg1|Any|F|F|F[<]|[QUY]arg2|Any|F|F|F[<]|[QUY]arg3|Any|F|F|F[<]|N|EventsByInstance|F[<][<] * [VLE]TestCompanionBean|E|E|[FLD]Int|E|0|F[<]|[FLD]String|E|N|F[<]|[FLD]Int|E|33|T[<]|[FLD]String|E|"CONST_COMP"|T[<]|[FLD]kotlin.Float|E|0.1F|T[<][<] * [VLE]com.mars.component.detail.value.TestCreateBean|E|E|[FLD]Int?|[ANT]SerializedName|value = "data1"[<]|N|F[<]|[FLD]String?|[ANT]SerializedName|value = "data2"[<]|N|F[<][<] * [VLE]TestDataBean|E|E|[FLD]Int?|[ANT]SerializedName|value = "data1"[<]|N|F[<]|[FLD]String?|[ANT]SerializedName|value = "data2"[<]|N|F[<][<] * [VLE]com.mars.component.detail.value.TestListBean|E|E|[FLD]Int|[ANT]SerializedName|value = "data1"[<]|0|F[<]|[FLD]List?|E|N|F[<][<] * [VLE]TestNullableBean|E|E|[FLD]Int?|[ANT]SerializedName|value = "ddd111"[<]|N|F[<]|[FLD]String?|[ANT]SerializedName|value = "ddd222"[<]|N|F[<][<] * [VLE]TestParcelizeBean|android.os.Parcelable|[ANT]kotlinx.android.parcel.Parcelize|E[<]|[FLD]Int?|E|N|F[<]|[FLD]String?|E|N|F[<][<] * [VLE]com.mars.component.detail.value.TestSerializableBean|E|E|[FLD]Int?|[ANT]SerializedName|value = "data1"[<]|N|F[<]|[FLD]String?|[ANT]SerializedName|value = "data2"[<]|N|F[<][<] * [VLE]TestDataMappingBean|E|E|[FLD]Int?|E|N|F[<]|[FLD]String?|E|N|F[<][<] * [VLE]com.mars.component.detail.value.mapping.TestNestDataMappingBean|E|E|[FLD]TestDataBean?|E|N|F[<]|[FLD]TestDataMappingBean?|E|N|F[<]|[FLD]com.mars.component.detail.value.mapping.TestNestDataMappingBean?|E|N|F[<]|[FLD]List?|E|N|F[<]|[FLD]List?|E|N|F[<][<] * [OBJ]ObjectTest|create-obj2|do-sth-in-|do-sth-in-1|object/get[<] * [OBJ]ObjectTestCreate|create-object-test-create-instance|create-object-test-create-instance-by-v1-v2-v3-v4|do-sth-create-common-instance[<] * [CBO]com.mars.component.detail.callback.CallbackTestDefault|[IVF]callbackDefault1|[QUY]int1|Int|F|F|F[<]|N|F[<]|[IVF]callbackDefault2|[QUY]bean|TestDataBean?|F|F|F[<]|N|F[<][<] * [CBO]com.mars.component.detail.callback.CallbackTestInterface|[IVF]callbackInt|[QUY]i|Int|F|F|F[<]|N|F[<]|[IVF]callbackBean|[QUY]bean|TestDataBean|F|F|F[<]|N|F[<]|[IVF]callbackBeanReBean|[QUY]bean|TestDataBean?|F|F|F[<]|N|F[<][<] * [MAP]Any->kotlin.Any[<] * [MAP]Apis->com.mars.component.detail.api.Apis[<] * [MAP]ApisAsyncReturn->com.mars.component.detail.api.ApisAsyncReturn[<] * [MAP]ApisBigData->com.mars.component.detail.api.ApisBigData[<] * [MAP]Array->kotlin.Array[<] * [MAP]ArrayList->kotlin.collections.ArrayList[<] * [MAP]Boolean->kotlin.Boolean[<] * [MAP]Context->android.content.Context[<] * [MAP]EventsByInstance->com.mars.component.detail.event.EventsByInstance[<] * [MAP]EventsKt->com.mars.component.detail.event.EventsKt[<] * [MAP]Function1->kotlin.Function1[<] * [MAP]Function2->kotlin.Function2[<] * [MAP]Int->kotlin.Int[<] * [MAP]List->kotlin.collections.List[<] * [MAP]LiveData->androidx.lifecycle.LiveData[<] * [MAP]Long->kotlin.Long[<] * [MAP]Map->kotlin.collections.Map[<] * [MAP]ObjectTest->com.mars.component.detail.objekt.ObjectTest[<] * [MAP]ObjectTestCreate->com.mars.component.detail.objekt.ObjectTestCreate[<] * [MAP]ObjectTestKt->com.mars.component.detail.objekt.ObjectTestKt[<] * [MAP]SerializedName->com.google.gson.annotations.SerializedName[<] * [MAP]String->kotlin.String[<] * [MAP]Task->com.mars.component.detail.api.Task[<] * [MAP]TestCompanionBean->com.mars.component.detail.value.TestCompanionBean[<] * [MAP]TestDataBean->com.mars.component.detail.value.TestDataBean[<] * [MAP]TestDataMappingBean->com.mars.component.detail.value.mapping.TestDataMappingBean[<] * [MAP]TestDataTypeTask->com.mars.component.detail.test.TestDataTypeTask[<] * [MAP]TestDefaultPathTask->com.mars.component.detail.test.TestDefaultPathTask[<] * [MAP]TestGenericityTaskKt->com.mars.component.detail.test.TestGenericityTaskKt[<] * [MAP]TestNullableBean->com.mars.component.detail.value.TestNullableBean[<] * [MAP]TestParcelizeBean->com.mars.component.detail.value.TestParcelizeBean[<] * [MAP]Unit->kotlin.Unit[<] * [MAP]create-obj2->create-object-test-instance[<] * [MAP]do-sth-in-->do-sth-in-common-instance[<] * [MAP]do-sth-in-1->do-sth-in-common-instance-parameter[<] * [MAP]object/get->object/get/do-sth-in-common-ins[<] * [MAP]provideEve->provideEventsInstance[<] * version: 0.0.1-DEV */ @RGenerated( kind = "aggregate_Id", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.1-DEV" ) @RAggregate( uri = "demo://com.mars.rubik-test.detail", version = "0.0.1-DEV", token = "23234bceab3ea7b3508a03d64e91cf41" ) @Keep class DetailAggregateId : RAggregateId(uri = "demo://com.mars.rubik-test.detail", version = "0.0.1-DEV", token = "23234bceab3ea7b3508a03d64e91cf41") ================================================ FILE: demo/demo_component_detail/src/main/res/layout/activity_a1.xml ================================================ ================================================ FILE: demo/demo_component_detail/src/main/res/values/strings.xml ================================================ ComponentA ================================================ FILE: demo/demo_component_detail_java/build.gradle ================================================ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 30 buildToolsVersion "30.0.0" defaultConfig { minSdkVersion 23 targetSdkVersion 30 versionCode 1 versionName "1.0" consumerProguardFiles 'consumer-rules.pro' } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } androidExtensions { experimental = true } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.code.gson:gson:2.8.5' implementation project(':demo:demo_until_library_a') } //rubik{ // component { // uri 'demo://com.mars.rubik-test.detail-java1' // } //} ================================================ FILE: demo/demo_component_detail_java/consumer-rules.pro ================================================ ================================================ FILE: demo/demo_component_detail_java/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ================================================ FILE: demo/demo_component_detail_java/src/main/AndroidManifest.xml ================================================ ================================================ FILE: demo/demo_component_detail_java/src/main/aggregate/rubik/generate/aggregate/demo_com_mars_rubik_test_detail_java/DetailJavaAggregate.kt ================================================ package rubik.generate.aggregate.demo_com_mars_rubik_test_detail_java import android.content.Context import androidx.annotation.Keep import com.mars.component.detail.java.api.Apis import com.mars.component.detail.java.api.ApisAsyncReturn import com.mars.component.detail.java.api.ApisForInstance import com.mars.component.detail.java.api.callback.Callback import com.mars.component.detail.java.api.callback.Callbackable import com.mars.component.detail.java.test.TestJavaDataType import com.mars.component.detail.java.ui.FirstPageActivity import com.mars.component.detail.java.ui.SecondActivity import com.rubik.annotations.source.RAggregate import com.rubik.annotations.source.RGenerated import com.rubik.context.Aggregatable import com.rubik.context.AggregateFactory import com.rubik.identity.RAggregateId import com.rubik.route.mapping.castToTypeOfT import com.rubik.route.mapping.mapToType import com.rubik.route.mapping.toTypeOfT import kotlin.Array import kotlin.Function0 import kotlin.Int import kotlin.Long import kotlin.LongArray import kotlin.String import kotlin.Unit import kotlin.collections.List import rubik.generate.context.demo_com_mars_rubik_test_detail_java.DetailJavaRouteActions import com.mars.component.detail.java.value.TestJavaBean as TestJavaBeanOrg import com.rubik.activity.Launcher as RubikLauncher import com.rubik.route.Queries as RubikQueries import com.rubik.route.ResultGroups as RubikResultGroups import com.rubik.route.Result as RubikResult import com.rubik.router.uri.Path as RubikPath import rubik.generate.context.demo_com_mars_rubik_test_detail_java.TestJavaBean as TestJavaBeanCtx /** * aggregate router function and router event of Rubik Context. * * uri: [demo://com.mars.rubik-test.detail-java] * version: 0.0.1-DEV */ @RGenerated( kind = "aggregate", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.1-DEV" ) @Keep class DetailJavaAggregate : Aggregatable, DetailJavaRouteActions { override fun onEvent(msg: String, queries: RubikQueries) { when (msg){ else -> { } } } override fun onRoute( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "doTestDataType1" == path -> { val data = queries.value(0, null) doTestDataType1(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType1-2" == path -> { val data = queries.value(0, null) doTestDataType12(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType2" == path -> { val data = queries.value(0, null) doTestDataType2(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType2-2" == path -> { val data = queries.value(0, null) doTestDataType22(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType3" == path -> { val data = queries.value(0, null) doTestDataType3(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType4" == path -> { val data = queries.value(0, null) doTestDataType4(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType5" == path -> { val data = queries.value(0, null) doTestDataType5(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType6" == path -> { val data = queries.value(0, null) doTestDataType6(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "doTestDataType7" == path -> { val data = queries.value(0, null) doTestDataType7(data.castToTypeOfT()).apply { results.set(0, RubikResult(this)) } } "do-sth-bean-provide-instance-by-func" == path -> { val rubikInstanceValue = queries.value(0, null) val d1 = queries.value(1, null) val routeResultTransformer: (TestJavaBeanCtx) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthBeanProvideInstanceByFunc(rubikInstanceValue.castToTypeOfT(), d1.castToTypeOfT(), routeResultTransformer) } "doSth" == path -> { doSth() } "1.0/property/property" == path -> { val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } propertyProperty(routeResultTransformer) } "doSthStatic" == path -> { val i = queries.value(0, null) val j = queries.value(1, null) val k = queries.value(2, null) val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } doSthStatic(i.castToTypeOfT(), j.castToTypeOfT(), k.castToTypeOfT(), routeResultTransformer) } "property/static" == path -> { val routeResultTransformer: (String) -> Unit = { lambdaArg0 -> results.set(0, RubikResult(lambdaArg0)) } propertyStatic(routeResultTransformer) } "do-sth-async-open" == path -> { val onCallCallback: (String?, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsyncOpen(onCallCallback) } else -> { onRouteExt1(path, queries, results) } } } private fun onRouteExt1( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "do-sth-async-interface" == path -> { val onCallCallback: (String?, Int) -> Unit = { lambdaArg0, lambdaArg1 -> results.set(0, RubikResult(lambdaArg0),RubikResult(lambdaArg1)) } doSthAsyncInterface(onCallCallback) } "activity/java_page1" == path -> { // com.mars.component.detail.java.ui.FirstPageActivity // - parameters: // --- key_str4 : kotlin.collections.List? // --- key_str5 : kotlin.collections.List? // --- key_str6 : kotlin.Array? RubikLauncher().launch(FirstPageActivity::class.java, queries, null, results) } RubikPath("activity/java_page2/{key_str1}/{key_str2}/{key_str3}").matching(path) -> { // com.mars.component.detail.java.ui.SecondActivity // - parameters: // --- key_str1 : kotlin.String? // --- key_str2 : kotlin.String? // --- key_str3 : kotlin.Int? RubikLauncher().launch(SecondActivity::class.java, queries, RubikPath("activity/java_page2/{key_str1}/{key_str2}/{key_str3}").getParameters(path), results) } else -> { throw com.rubik.route.exception.BadPathOrVersionException(path) } } } override fun doTestDataType1(data: Context): Context? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType1 // - parameters: // --- data : android.content.Context // - resultType: // --- android.content.Context return TestJavaDataType().doTestDataType1( data /* -> NO NEED TO MAPPING :[android.content.Context] */ ) /* -> NO NEED TO MAPPING :[android.content.Context] */ } override fun doTestDataType12(data: Context?): Context? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType1_2 // - parameters: // --- data : android.content.Context? // - resultType: // --- android.content.Context? return TestJavaDataType().doTestDataType1_2( data /* -> NO NEED TO MAPPING :[android.content.Context?] */ ) /* -> NO NEED TO MAPPING :[android.content.Context?] */ } override fun doTestDataType2(data: Int?): Int? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType2 // - parameters: // --- data : kotlin.Int? // - resultType: // --- kotlin.Int? return TestJavaDataType().doTestDataType2( data /* -> NO NEED TO MAPPING :[kotlin.Int?] */ ) /* -> NO NEED TO MAPPING :[kotlin.Int?] */ } override fun doTestDataType22(data: Int): Int? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType2_2 // - parameters: // --- data : kotlin.Int // - resultType: // --- kotlin.Int return TestJavaDataType().doTestDataType2_2( data /* -> NO NEED TO MAPPING :[kotlin.Int] */ ) /* -> NO NEED TO MAPPING :[kotlin.Int] */ } override fun doTestDataType3(data: String?): String? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType3 // - parameters: // --- data : kotlin.String? // - resultType: // --- kotlin.String? return TestJavaDataType().doTestDataType3( data /* -> NO NEED TO MAPPING :[kotlin.String?] */ ) /* -> NO NEED TO MAPPING :[kotlin.String?] */ } override fun doTestDataType4(data: TestJavaBeanCtx?): TestJavaBeanCtx? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType4 // - parameters: // --- data : com.mars.component.detail.java.value.TestJavaBean? // - resultType: // --- com.mars.component.detail.java.value.TestJavaBean? return TestJavaDataType().doTestDataType4( data?.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.java.value.TestJavaBean?] */ )?.toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail_java.TestJavaBean?] */ } override fun doTestDataType5(data: List?): List? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType5 // - parameters: // --- data : kotlin.collections.List? // - resultType: // --- kotlin.collections.List? return TestJavaDataType().doTestDataType5( data /* -> NO NEED TO MAPPING :[kotlin.collections.List?] */ ) /* -> NO NEED TO MAPPING :[kotlin.collections.List?] */ } override fun doTestDataType6(data: Array?): Array? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType6 // - parameters: // --- data : kotlin.Array? // - resultType: // --- kotlin.Array? return TestJavaDataType().doTestDataType6( data /* -> NO NEED TO MAPPING :[kotlin.Array?] */ ) /* -> NO NEED TO MAPPING :[kotlin.Array?] */ } override fun doTestDataType7(data: LongArray?): LongArray? { // com.mars.component.detail.java.test.TestJavaDataType.doTestDataType7 // - parameters: // --- data : kotlin.LongArray? // - resultType: // --- kotlin.LongArray? return TestJavaDataType().doTestDataType7( data /* -> NO NEED TO MAPPING :[kotlin.LongArray?] */ ) /* -> NO NEED TO MAPPING :[kotlin.LongArray?] */ } override fun doSthBeanProvideInstanceByFunc( rubikInstanceValue: String, d1: TestJavaBeanCtx, routeResultTransformer: (TestJavaBeanCtx) -> Unit ) { // com.mars.component.detail.java.api.ApisForInstance.doSthBean // - parameters: // --- d1 : com.mars.component.detail.java.value.TestJavaBean // - resultType: // --- com.mars.component.detail.java.value.TestJavaBean routeResultTransformer(ApisForInstance( rubikInstanceValue /* -> NO NEED TO MAPPING :[kotlin.String] */ ) /* -> NO NEED TO MAPPING :[com.mars.component.detail.java.api.ApisForInstance] */ .doSthBean( d1.toTypeOfT() /* -> TO ORIGINAL TYPE :[com.mars.component.detail.java.value.TestJavaBean] */ ).toTypeOfT() /* -> TO CONTEXT TYPE :[rubik.generate.context.demo_com_mars_rubik_test_detail_java.TestJavaBean] */ ) } override fun doSth() { // com.mars.component.detail.java.api.Apis.doSth // - resultType: // --- null Apis().doSth() } override fun propertyProperty(routeResultTransformer: (String) -> Unit) { // com.mars.component.detail.java.api.Apis.property // - resultType: // --- kotlin.String routeResultTransformer(Apis().property /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSthStatic( i: Int, j: String, k: Long, routeResultTransformer: (String) -> Unit ) { // com.mars.component.detail.java.api.Apis.doSthCompanion // - parameters: // --- i : kotlin.Int // --- j : kotlin.String // --- k : kotlin.Long // - resultType: // --- kotlin.String routeResultTransformer(com.mars.component.detail.java.api.Apis.doSthCompanion( i /* -> NO NEED TO MAPPING :[kotlin.Int] */ , j /* -> NO NEED TO MAPPING :[kotlin.String] */ , k /* -> NO NEED TO MAPPING :[kotlin.Long] */ ) /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun propertyStatic(routeResultTransformer: (String) -> Unit) { // com.mars.component.detail.java.api.Apis.propertyCompanion // - resultType: // --- kotlin.String routeResultTransformer(com.mars.component.detail.java.api.Apis.propertyCompanion /* -> NO NEED TO MAPPING :[kotlin.String] */ ) } override fun doSthAsyncOpen(onCallCallback: (String?, Int) -> Unit) { // com.mars.component.detail.java.api.ApisAsyncReturn.doSthAsyncOpen // - parameters: // --- onResult : com.mars.component.detail.java.api.callback.Callback // - resultType: // --- null val onResultCallbackTransformer = object : Callback() { override fun onCall(v1: String?, v2: Int) { onCallCallback( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} } ApisAsyncReturn().doSthAsyncOpen( onResultCallbackTransformer ) } override fun doSthAsyncInterface(onCallCallback: (String?, Int) -> Unit) { // com.mars.component.detail.java.api.ApisAsyncReturn.doSthAsyncInterface // - parameters: // --- onResult : com.mars.component.detail.java.api.callback.Callbackable // - resultType: // --- null val onResultCallbackTransformer = object : Callbackable { override fun onCall(v1: String?, v2: Int) { onCallCallback( v1 /* -> NO NEED TO MAPPING :[kotlin.String?] */ , v2 /* -> NO NEED TO MAPPING :[kotlin.Int] */ )} } ApisAsyncReturn().doSthAsyncInterface( onResultCallbackTransformer ) } @RGenerated( kind = "aggregate_companion", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.1-DEV" ) @Keep companion object : AggregateFactory() { override val URI: String = "demo://com.mars.rubik-test.detail-java" override val EVENT_MSGS: List = listOf() override val CREATOR: Function0 = {DetailJavaAggregate()} } } /** * generated Rubik AggregateId. * * uri: [demo://com.mars.rubik-test.detail-java] * originalToken: * [API]do-sth-async-interface|N|F|F|F|[IVO]doSthAsyncInterface|F|N|[QUY]onResult|com.mars.component.detail.java.api.callback.Callbackable|F|F|T[<]|N|com.mars.component.detail.java.api.ApisAsyncReturn|F[<][<] * [API]do-sth-async-open|N|F|F|F|[IVO]doSthAsyncOpen|F|N|[QUY]onResult|com.mars.component.detail.java.api.callback.Callback|F|F|T[<]|N|com.mars.component.detail.java.api.ApisAsyncReturn|F[<][<] * [API]do-sth-bean-provide-instance-by-func|N|F|F|F|[IVO]doSthBean|F|[AIN]do-sth-bean-provide-instance-by-func|[IVO]com.mars.component.detail.java.api.ApisForInstance|F|N|[QUY]rubikInstanceValue|String|F|F|F[<]|[RST]B|com.mars.component.detail.java.api.ApisForInstance[<]|com.mars.component.detail.java.api.ApisForInstance|F[<][<]|[QUY]rubikInstanceValue|String|F|F|F[<]|[QUY]d1|TestJavaBean|F|F|F[<]|[RST]B|TestJavaBean[<]|com.mars.component.detail.java.api.ApisForInstance|F[<][<] * [API]doSth|N|F|F|F|[IVO]doSth|F|N|E|N|com.mars.component.detail.java.api.Apis|F[<][<] * [API]doSthStatic|N|F|F|F|[IVO]doSthCompanion|T|N|[QUY]i|Int|F|F|F[<]|[QUY]j|String|F|F|F[<]|[QUY]k|kotlin.Long|F|F|F[<]|[RST]B|String[<]|com.mars.component.detail.java.api.Apis|F[<][<] * [API]doTestDataType1|N|F|T|F|[IVO]doTestDataType1|F|N|[QUY]data|android.content.Context|F|F|F[<]|[RST]B|android.content.Context[<]|TestJavaDataType|F[<][<] * [API]doTestDataType1-2|N|F|T|F|[IVO]doTestDataType1_2|F|N|[QUY]data|android.content.Context?|F|F|F[<]|[RST]B|android.content.Context?[<]|TestJavaDataType|F[<][<] * [API]doTestDataType2|N|F|T|F|[IVO]doTestDataType2|F|N|[QUY]data|Int?|F|F|F[<]|[RST]B|Int?[<]|TestJavaDataType|F[<][<] * [API]doTestDataType2-2|N|F|T|F|[IVO]doTestDataType2_2|F|N|[QUY]data|Int|F|F|F[<]|[RST]B|Int[<]|TestJavaDataType|F[<][<] * [API]doTestDataType3|N|F|T|F|[IVO]doTestDataType3|F|N|[QUY]data|String?|F|F|F[<]|[RST]B|String?[<]|TestJavaDataType|F[<][<] * [API]doTestDataType4|N|F|T|F|[IVO]doTestDataType4|F|N|[QUY]data|TestJavaBean?|F|F|F[<]|[RST]B|TestJavaBean?[<]|TestJavaDataType|F[<][<] * [API]doTestDataType5|N|F|T|F|[IVO]doTestDataType5|F|N|[QUY]data|kotlin.collections.List?|F|F|F[<]|[RST]B|kotlin.collections.List?[<]|TestJavaDataType|F[<][<] * [API]doTestDataType6|N|F|T|F|[IVO]doTestDataType6|F|N|[QUY]data|kotlin.Array?|F|F|F[<]|[RST]B|kotlin.Array?[<]|TestJavaDataType|F[<][<] * [API]doTestDataType7|N|F|T|F|[IVO]doTestDataType7|F|N|[QUY]data|kotlin.LongArray?|F|F|F[<]|[RST]B|kotlin.LongArray?[<]|TestJavaDataType|F[<][<] * [API]1.0/property/property|N|F|F|F|[IVO]property|F|N|E|[RST]B|String[<]|com.mars.component.detail.java.api.Apis|F[<][<] * [API]property/static|N|F|F|F|[IVO]propertyCompanion|T|N|E|[RST]B|String[<]|com.mars.component.detail.java.api.Apis|F[<][<] * [ACT]activity/java_page1|B|F|T|com.mars.component.detail.java.ui.FirstPageActivity|[PRT]key_str4|serializable|kotlin.collections.List?[<]|[PRT]key_str5|value|kotlin.collections.List?[<]|[PRT]key_str6|value|kotlin.Array?[<][<] * [ACT]activity/java_page2/{key_str1}/{key_str2}/{key_str3}|B|F|T|com.mars.component.detail.java.ui.SecondActivity|[PRT]key_str1|N|String?[<]|[PRT]key_str2|N|String?[<]|[PRT]key_str3|N|Int?[<][<] * [VLE]TestJavaBean|E|E|[FLD]Int|[ANT]com.google.gson.annotations.SerializedName|value = "ddd111"[<]|N|F[<]|[FLD]String?|[ANT]com.google.gson.annotations.SerializedName|value = "ddd222"[<]|[ANT]androidx.annotation.Nullable|E[<]|N|F[<][<] * [MAP]Int->kotlin.Int[<] * [MAP]String->kotlin.String[<] * [MAP]TestJavaBean->com.mars.component.detail.java.value.TestJavaBean[<] * [MAP]TestJavaDataType->com.mars.component.detail.java.test.TestJavaDataType[<] * version: 0.0.1-DEV */ @RGenerated( kind = "aggregate_Id", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.1-DEV" ) @RAggregate( uri = "demo://com.mars.rubik-test.detail-java", version = "0.0.1-DEV", token = "7c5174bb8aaea699e6ab6eec60230bf7" ) @Keep class DetailJavaAggregateId : RAggregateId(uri = "demo://com.mars.rubik-test.detail-java", version = "0.0.1-DEV", token = "7c5174bb8aaea699e6ab6eec60230bf7") ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/api/Apis.java ================================================ package com.mars.component.detail.java.api; import com.rubik.annotations.route.RRoute; public class Apis extends BaseApis { // 无参无返回值 @RRoute(path = "doSth") public void doSth() { println(" AP DBG JAVA doSth begin !!!"); } // 属性 @RRoute(path = "property/property", version = "1.0") public String property = "vbn"; // static方法 @RRoute(path = "doSthStatic") public static String doSthCompanion(int i, String j, Long k) { println(" AP DBG JAVA doSthCompanion begin !!! i:" + i + " j:" + j + " k:" + k); return "result = i:" + i + " j:" + j + " k:" + k; } /** * static属性 */ @RRoute(path = "property/static") public static String propertyCompanion = "bnm3"; } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/api/ApisAsyncReturn.java ================================================ package com.mars.component.detail.java.api; import com.mars.component.detail.java.api.callback.Callback; import com.mars.component.detail.java.api.callback.Callbackable; import com.rubik.annotations.route.RResult; import com.rubik.annotations.route.RRoute; public class ApisAsyncReturn extends BaseApis { // 接口异步返回 @RRoute(path = "do-sth-async-open") public void doSthAsyncOpen(@RResult Callback onResult) { println(" AP DBG JAVA doSthAsyncOpen begin !!!"); onResult.onCall("zxc", 33); } @RRoute(path = "do-sth-async-interface") public void doSthAsyncInterface(@RResult Callbackable onResult) { println(" AP DBG JAVA doSthAsyncInterface begin !!!"); onResult.onCall("zxc", 33); } } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/api/ApisForInstance.java ================================================ package com.mars.component.detail.java.api; import com.mars.component.detail.java.value.TestJavaBean; import com.rubik.annotations.route.RRoute; import com.rubik.annotations.route.instance.RRouteInstance; public class ApisForInstance extends BaseApis { private final String value; @RRouteInstance(provideForPath = "do-sth-bean-provide-instance-by-func") public ApisForInstance(String value) { this.value = value; } // Bean参数返回值 @RRoute(path = "do-sth-bean-provide-instance-by-func") public TestJavaBean doSthBean(TestJavaBean d1) { println(" AP DBG doSthBean value " + value + " begin d1:" + d1.d1 + "!!!"); return new TestJavaBean(55, "dd"); } } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/api/BaseApis.java ================================================ package com.mars.component.detail.java.api; public class BaseApis { public static void println(String msg) { System.out.println(msg); } } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/api/callback/Callback.java ================================================ package com.mars.component.detail.java.api.callback; import androidx.annotation.Nullable; import com.rubik.annotations.route.RResult; public class Callback { public void onCallNone(String v1, int v2) { // nothing } @RResult public void onCall(@Nullable String v1, int v2) { // nothing } } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/api/callback/Callbackable.java ================================================ package com.mars.component.detail.java.api.callback; import androidx.annotation.Nullable; public interface Callbackable { void onCall(@Nullable String v1, int v2); } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/test/TestJavaDataType.java ================================================ package com.mars.component.detail.java.test; import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.mars.component.detail.java.value.TestJavaBean; import com.rubik.annotations.route.RRoute; import java.util.List; public class TestJavaDataType { private static void println(String msg) { System.out.println(msg); } @RRoute(path = "doTestDataType1", forResult = true) @NonNull public Context doTestDataType1(@NonNull Context data) { println(" AP DBG JAVA doTestDataType1 Context !!!"); return data; } @RRoute(path = "doTestDataType1-2", forResult = true) @Nullable public Context doTestDataType1_2(@Nullable Context data) { println(" AP DBG JAVA doTestDataType1 Context !!!"); return data; } @RRoute(path = "doTestDataType2", forResult = true) @Nullable public Integer doTestDataType2(@Nullable Integer data) { println(" AP DBG JAVA doTestDataType2 Int !!!"); return data; } @RRoute(path = "doTestDataType2-2", forResult = true) public int doTestDataType2_2(int data) { println(" AP DBG JAVA doTestDataType2 Int !!!"); return data; } @RRoute(path = "doTestDataType3", forResult = true) @Nullable public String doTestDataType3(@Nullable String data) { println(" AP DBG JAVA doTestDataType3 String !!!"); return data; } @RRoute(path = "doTestDataType4", forResult = true) @Nullable public TestJavaBean doTestDataType4(@Nullable TestJavaBean data) { println(" AP DBG JAVA doTestDataType4 A1Bean!!!"); return data; } @RRoute(path = "doTestDataType5", forResult = true) @Nullable public List doTestDataType5( @Nullable List data){ println(" AP DBG JAVA doTestDataType5 List!!!"); return data; } @RRoute(path = "doTestDataType6", forResult = true) @Nullable public Long[] doTestDataType6(@Nullable Long[] data) { println(" AP DBG JAVA doTestDataType6 Long[] !!!"); return data; } @RRoute(path = "doTestDataType7", forResult = true) @Nullable public long[] doTestDataType7(@Nullable long[] data) { println(" AP DBG JAVA doTestDataType7long[] !!!"); return data; } } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/ui/FirstPageActivity.java ================================================ package com.mars.component.detail.java.ui; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.widget.TextView; import com.google.gson.reflect.TypeToken; import com.mars.component.detail.java.R; import com.mars.component.detail.java.value.TestJavaBean; import com.rubik.annotations.route.RProperty; import com.rubik.annotations.route.page.RPage; import com.rubik.router.Router; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; //import com.mars.util_library.TestClassB; @RPage(path = "activity/java_page1") public class FirstPageActivity extends AppCompatActivity { @Nullable @RProperty(name = "key_str4", extra = "serializable") private List str4; @Nullable @RProperty(name = "key_str5", extra = "value") private List str5; @Nullable @RProperty(name = "key_str6", extra = "value") private TestJavaBean[] str6; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_d1); str4 = (ArrayList) getIntent().getExtras().get("key_str4"); str5 = Router.valueProperty(getIntent(), "key_str5", new TypeToken>() { } . getType()); str6 = Router.valueProperty(getIntent(), "key_str6", new TypeToken() { } . getType()); ((TextView) findViewById(R.id.text_hello)).setText("Hello D1 !!\n" + str4.get(0) + "\n" + str5.get(0).d1 + "\n" + str6[0].d1 + "\n"); // ((TextView) findViewById(R.id.text_modules)).setText("A : "+ new TestClassA().getTestTag() +"\n" + "B : "+ new TestClassB().getTestTag() + "\n" ); } } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/ui/SecondActivity.java ================================================ package com.mars.component.detail.java.ui; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import com.mars.component.detail.java.R; import com.rubik.annotations.route.RProperty; import com.rubik.annotations.route.page.RPage; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @RPage(path = "activity/java_page2/{key_str1}/{key_str2}/{key_str3}") public class SecondActivity extends AppCompatActivity { @Nullable @RProperty(name = "key_str1") private String str1; @Nullable @RProperty(name = "key_str2") private String str2; @Nullable @RProperty(name = "key_str3") private int str3; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_d1); str1 = getIntent().getStringExtra("key_str1"); str2 = getIntent().getStringExtra("key_str2"); String str3_3 = getIntent().getExtras().get("key_str3") + ""; ((TextView) findViewById(R.id.text_hello)).setText("Hello D2 !!\n" + str1 + "\n" + str2 + "\n" + str3_3 + "\n"); Intent intent = new Intent(); intent.putExtra("data", "data from D2"); setResult(200, intent); } } ================================================ FILE: demo/demo_component_detail_java/src/main/java/com/mars/component/detail/java/value/TestJavaBean.java ================================================ package com.mars.component.detail.java.value; import androidx.annotation.Nullable; import com.google.gson.annotations.SerializedName; import com.rubik.annotations.route.RValue; @RValue public class TestJavaBean { public TestJavaBean(int d1, String d2) { this.d1 = d1; this.d2 = d2; } @SerializedName("ddd111") public int d1; @SerializedName("ddd222") @Nullable private String d2; } ================================================ FILE: demo/demo_component_detail_java/src/main/res/layout/activity_d1.xml ================================================ ================================================ FILE: demo/demo_component_detail_java/src/main/res/values/strings.xml ================================================ ComponentD ================================================ FILE: demo/demo_component_home/build.gradle ================================================ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 30 buildToolsVersion "30.0.0" defaultConfig { minSdkVersion 23 targetSdkVersion 30 versionCode 1 versionName "1.0" consumerProguardFiles 'consumer-rules.pro' } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } androidExtensions { experimental = true } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' api 'com.google.code.gson:gson:2.8.5' implementation project(path: ':demo:demo_until_library_a') } ================================================ FILE: demo/demo_component_home/consumer-rules.pro ================================================ ================================================ FILE: demo/demo_component_home/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ================================================ FILE: demo/demo_component_home/src/main/AndroidManifest.xml ================================================ ================================================ FILE: demo/demo_component_home/src/main/aggregate/rubik/generate/aggregate/demo_com_mars_rubik_test_home/HomeAggregate.kt ================================================ package rubik.generate.aggregate.demo_com_mars_rubik_test_home import androidx.annotation.Keep import com.mars.component.home.api.TestOne import com.mars.component.home.event.Events import com.rubik.annotations.source.RAggregate import com.rubik.annotations.source.RGenerated import com.rubik.context.Aggregatable import com.rubik.context.AggregateFactory import com.rubik.identity.RAggregateId import com.rubik.route.mapping.castToTypeOfT import com.rubik.route.mapping.mapToType import com.rubik.route.mapping.toTypeOfT import kotlin.Function0 import kotlin.String import kotlin.collections.List import rubik.generate.context.demo_com_mars_rubik_test_home.HomeRouteActions import com.rubik.activity.Launcher as RubikLauncher import com.rubik.route.Queries as RubikQueries import com.rubik.route.ResultGroups as RubikResultGroups import com.rubik.route.Result as RubikResult import com.rubik.router.uri.Path as RubikPath /** * aggregate router function and router event of Rubik Context. * * uri: [demo://com.mars.rubik-test.home] * version: 0.0.2 */ @RGenerated( kind = "aggregate", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.2" ) @Keep class HomeAggregate : Aggregatable, HomeRouteActions { override fun onEvent(msg: String, queries: RubikQueries) { when (msg){ "LifeCycleEvent_Init" -> { // com.mars.component.home.event.Events.myInit // - resultType: // --- null Events().myInit()} "MY" -> { // com.mars.component.home.event.Events.myDestory // - resultType: // --- null Events().myDestory()} "LifeCycleEvent_Destroy" -> { // com.mars.component.home.event.Events.myDestory // - resultType: // --- null Events().myDestory()} else -> { } } } override fun onRoute( path: String, queries: RubikQueries, results: RubikResultGroups ) { when { "getName" == path -> { getName().apply { results.set(0, RubikResult(this)) } } "getName1" == path -> { getName1().apply { results.set(0, RubikResult(this)) } } else -> { throw com.rubik.route.exception.BadPathOrVersionException(path) } } } override fun getName(): String? { // com.mars.component.home.api.TestOne.getName // - resultType: // --- kotlin.String return TestOne().getName() /* -> NO NEED TO MAPPING :[kotlin.String] */ } override fun getName1(): String? { // com.mars.component.home.api.TestOne.getName1 // - resultType: // --- kotlin.String return TestOne().getName1() /* -> NO NEED TO MAPPING :[kotlin.String] */ } @RGenerated( kind = "aggregate_companion", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.2" ) @Keep companion object : AggregateFactory() { override val URI: String = "demo://com.mars.rubik-test.home" override val EVENT_MSGS: List = listOf( "LifeCycleEvent_Init", "MY", "LifeCycleEvent_Destroy" ) override val CREATOR: Function0 = {HomeAggregate()} } } /** * generated Rubik AggregateId. * * uri: [demo://com.mars.rubik-test.home] * originalToken: * [API]getName|N|F|T|T|[IVO]getName|F|N|E|[RST]B|kotlin.String[<]|com.mars.component.home.api.TestOne|F[<][<] * [API]getName1|N|F|T|T|[IVO]getName1|F|N|E|[RST]B|kotlin.String[<]|com.mars.component.home.api.TestOne|F[<][<] * [EVT]LifeCycleEvent_Destroy|B|[IVO]myDestory|F|N|E|N|com.mars.component.home.event.Events|F[<][<] * [EVT]LifeCycleEvent_Init|B|[IVO]myInit|F|N|E|N|com.mars.component.home.event.Events|F[<][<] * [EVT]MY|B|[IVO]myDestory|F|N|E|N|com.mars.component.home.event.Events|F[<][<] * version: 0.0.2 */ @RGenerated( kind = "aggregate_Id", by = "rubik-kapt:1.10.0.0-K1_5-LOCAL", version = "0.0.2" ) @RAggregate( uri = "demo://com.mars.rubik-test.home", version = "0.0.2", token = "271a57ab84a08d315a9eb178127a6776" ) @Keep class HomeAggregateId : RAggregateId(uri = "demo://com.mars.rubik-test.home", version = "0.0.2", token = "271a57ab84a08d315a9eb178127a6776") ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/api/TestOne.kt ================================================ package com.mars.component.home.api import com.rubik.annotations.route.function.RFunction class TestOne { @RFunction(path = "getName") fun getName() = "name" @RFunction(path = "getName1") fun getName1() = "name1" } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/event/Events.kt ================================================ package com.mars.component.home.event import com.rubik.annotations.context.REvent import com.rubik.context.LifeCycleEvent class Events { @REvent(msg = LifeCycleEvent.INIT) fun myInit(){ println(" CT DBG init HOME begin !!!") } @REvent(msg = LifeCycleEvent.DESTROY) @REvent(msg = "MY") fun myDestory(){ println(" CT DBG destroy HOME begin !!!") } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/java/TestJavaInvokeBuilderTask.java ================================================ package com.mars.component.home.test.java; import android.content.Context; import com.rubik.router.Router; import kotlin.Unit; import kotlin.jvm.functions.Function1; import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext; import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean; import rubik.generate.context.demo_com_mars_rubik_test_detail.TestListBean; public class TestJavaInvokeBuilderTask { public void invoke(Context context, Function1 onFinish) { String tag = " B JAVA BUILDER TASK "; Router.touch(DetailContext.URI, () -> { onFinish.invoke(" XX DBG B touch AContext.URI:touch!!!"); return null; }).miss(() -> { onFinish.invoke(" XX DBG B touch AContext.URI:miss!!!"); return null; }); Router.touch("yyyyy", () -> { onFinish.invoke(" XX DBG B touch yyyyy:touch!!!"); return null; }).miss(() -> { onFinish.invoke(" XX DBG B touch yyyyy:miss!!!"); return null; }); Object results1 = Router.builder() .uri(DetailContext.Uris.DO_STH_HOF) .with("a0", 10) .with("a1", "889") .with("a2", new TestDataBean(2, "567")) .build() .routeForResult(Integer.TYPE); onFinish.invoke(tag + " NA DBG doSthHOF doSthHOFResult1:" + results1); Router.builder() .uri(DetailContext.Uris.DO_STH_BEAN) .with("a1", new TestDataBean(33, "xxx")) .result(value -> { onFinish.invoke(tag + " NA DBG doSthBean value:" + ((TestListBean) value).getD1()); return null; }) .build() .route(); } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/java/TestJavaInvokeFunctionTask.java ================================================ package com.mars.component.home.test.java; import android.content.Context; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import kotlin.Unit; import kotlin.jvm.functions.Function1; import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext; import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean; public class TestJavaInvokeFunctionTask { public void invoke(Context context, Function1 onFinish) { // 无参无返回值 String tag = " B JAVA FUNCTION TASK "; DetailContext.touch(() -> { onFinish.invoke(" XX DBG B touch AContext.URI:touch!!!"); return null; }).miss(() -> { onFinish.invoke(" XX DBG B touch AContext.URI:miss!!!"); return null; }); DetailContext.doSth(); // 高阶函数 @Nullable Integer doSthHOFResult = DetailContext.doSthHof(3, "123", new TestDataBean(1, "456")); onFinish.invoke(tag+" NA DBG doSthHOF doSthHOFResult:"+doSthHOFResult); // 属性 DetailContext.propertyProperty(value -> { onFinish.invoke(tag+" NA DBG propertyProperty value:"+value); return null; }); // 高阶函数异步返回 DetailContext.doSthAsync2HOF((v1, v2) -> { onFinish.invoke(tag + " NA DBG doSthAsyncHOF 1 value:" + v1 + "," + v2); return null; },(v1, v2) -> { onFinish.invoke(tag + " NA DBG doSthAsyncHOF 2 value:" + v1 + "," + v2); return null; }); // 接口异步返回 DetailContext.doSthAsyncOpen("textUri", (v1, v2) -> { onFinish.invoke(tag + " NA DBG doSthAsyncOpen value:" + v1 + "," + v2); return null; }); DetailContext.doSthAsyncInterface ((v1, v2) -> { onFinish.invoke(tag + " NA DBG doSthAsyncInterface value:" + v1 + "," + v2); return null; }); // 返回View DetailContext.viewGet(context, view -> { onFinish.invoke(tag + " NA DBG getView value:" + view); return null; }); // Companion方法 DetailContext.doSthCompanion(8, "asd", 22L, value -> { onFinish.invoke(tag + " NA DBG doSthCompanion value:" + value); return null; }); // Companion属性 DetailContext.propertyCompanion(value -> { onFinish.invoke(tag + " NA DBG propertyCompanion value:" + value); return null; }); // Companion高阶函数 DetailContext.doSthHOFCompanion(6, value -> { onFinish.invoke(tag + " NA DBG doSthHOFCompanion value:" + value); return null; }); // Bean参数返回值 DetailContext.doSthBean(new TestDataBean(8, null), value -> { onFinish.invoke(tag + " NA DBG doSthBean:" + value.getD1()); return null; }); // 指定返回类型 Fragment result = DetailContext.Fragment.page1(); onFinish.invoke(tag + " NA DBG makeApiFragment value:" + result); } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/java/TestJavaInvokeJavaFunctionTask.java ================================================ package com.mars.component.home.test.java; import android.content.Context; import kotlin.Unit; import kotlin.jvm.functions.Function1; import rubik.generate.context.demo_com_mars_rubik_test_detail_java.DetailJavaContext; import rubik.generate.context.demo_com_mars_rubik_test_detail_java.TestJavaBean; public class TestJavaInvokeJavaFunctionTask { public void invoke(Context context, Function1 onFinish) { // 无参无返回值 String tag = " B JAVA FUNCTION TASK "; DetailJavaContext.touch(() -> { onFinish.invoke(" XX DBG B touch DJavaContext.URI:touch!!!"); return null; }).miss(() -> { onFinish.invoke(" XX DBG B touch DJavaContext.URI:miss!!!"); return null; }); // 无参无返回值 DetailJavaContext.doSth(); // 属性 DetailJavaContext.propertyProperty(value -> { onFinish.invoke(tag+" NA DBG JAVA propertyProperty value:"+value); return null; }); // 接口异步返回 DetailJavaContext.doSthAsyncOpen((v1, v2) -> { onFinish.invoke(tag + " NA DBG JAVA doSthAsyncOpen value:" + v1 + "," + v2); return null; }); DetailJavaContext.doSthAsyncInterface ((v1, v2) -> { onFinish.invoke(tag + " NA DBG JAVA doSthAsyncInterface value:" + v1 + "," + v2); return null; }); // Companion方法 DetailJavaContext.doSthStatic(8, "asd", 22L, value -> { onFinish.invoke(tag + " NA DBG JAVA doSthCompanion value:" + value); return null; }); // Companion属性 DetailJavaContext.propertyStatic(value -> { onFinish.invoke(tag + " NA DBG JAVA propertyCompanion value:" + value); return null; }); // Bean参数返回值 DetailJavaContext.doSthBeanProvideInstanceByFunc("msg from HOME", new TestJavaBean(8, null), value -> { onFinish.invoke(tag + " NA DBG JAVA doSthBean:" + value.getD1()); return null; }); } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/kotlin/TestBigData.kt ================================================ package com.mars.component.home.test.kotlin import android.content.Context import com.ktnail.x.Logger import com.mars.util_library.TestLibDataBean import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean import rubik.generate.context.demo_com_mars_rubik_test_detail.TestParcelizeBean class TestBigData { fun invoke(context: Context, onFinish: (String) -> Unit) { // 无参无返回值 val tag = " B FUNCTION TASK " val testArraySize = 199999 val testListSize = 199999 val startTimeAL = System.currentTimeMillis() val resultAL = DetailContext.Api.Bigdata.libArray(Array(testArraySize){ TestDataBean(it, "from home! array:$it") }) val alCost = System.currentTimeMillis() - startTimeAL "$tag TestBigData ARRAY LIB size:${resultAL?.size} cost:$alCost ".let { log-> Logger.d(log) onFinish(log) } val startTimeAP = System.currentTimeMillis() val resultAP =DetailContext.Api.Bigdata.parcelArray(Array(testArraySize){ TestParcelizeBean(it, "from home! array:$it") }) val apCost = System.currentTimeMillis() - startTimeAP "$tag TestBigData ARRAY PARCEL size:${resultAP?.size} cost:$apCost ".let { log-> Logger.d(log) onFinish(log) } val startTimeAJ = System.currentTimeMillis() val resultAJ = DetailContext.Api.Bigdata.jsonArray(Array(testArraySize){ TestDataBean(it, "from home! array:$it") }) val ajCost = System.currentTimeMillis() - startTimeAJ "$tag TestBigData ARRAY JSON size:${resultAJ?.size} cost:$ajCost ".let { log-> Logger.d(log) onFinish(log) } val startTimeLL = System.currentTimeMillis() val resultLL = DetailContext.Api.Bigdata.libList(MutableList(testListSize){ TestDataBean(it, "from home! list:$it") }) val llCost = System.currentTimeMillis() - startTimeLL "$tag TestBigData List LIB size:${resultLL?.size} cost:$llCost ".let { log-> Logger.d(log) onFinish(log) } val startTimeLP = System.currentTimeMillis() val resultLP = DetailContext.Api.Bigdata.parcelList(List(testListSize){ TestParcelizeBean(it, "from home! list:$it") }) val lpCost = System.currentTimeMillis() - startTimeLP "$tag TestBigData List PARCEL size:${resultLP?.size} cost:$lpCost ".let { log-> Logger.d(log) onFinish(log) } val startTimeALP = System.currentTimeMillis() val resultALP = DetailContext.Api.Bigdata.parcelArraylist(MutableList(testListSize){ TestParcelizeBean(it, "from home! arrayList:$it") }) val alpCost = System.currentTimeMillis() - startTimeALP "$tag TestBigData ArrayList PARCEL size:${resultALP?.size} cost:$alpCost ".let { log-> Logger.d(log) onFinish(log) } val startTimeLJ = System.currentTimeMillis() val resultLJ = DetailContext.Api.Bigdata.jsonList(List(testListSize){ TestDataBean(it, "from home! list:$it") }) val ljCost = System.currentTimeMillis() - startTimeLJ "$tag TestBigData List JSON size:${resultLJ?.size} cost:$ljCost ".let { log-> Logger.d(log) onFinish(log) } } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/kotlin/TestDataType.kt ================================================ package com.mars.component.home.test.kotlin import android.content.Context import com.rubik.logger.Logger import com.rubik.router.navigate import com.rubik.router.navigateForResult import com.rubik.router.result import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext import rubik.generate.context.demo_com_mars_rubik_test_detail.TestNullableBean fun invokeDataType(context: Context) { Logger.d(" AP DBG doTestDataType1 result: ${DetailContext.doTestDataType1(null)}") Logger.d(" AP DBG doTestDataType2 result: ${DetailContext.doTestDataType2(null)}") Logger.d(" AP DBG doTestDataType3 result: ${DetailContext.doTestDataType3(null)}") Logger.d(" AP DBG doTestDataType4 result: ${DetailContext.doTestDataType4(null)}") Logger.d(" AP DBG doTestDataType5 result: ${DetailContext.doTestDataType5(null)}") Logger.d(" AP DBG doTestDataType6 result: ${DetailContext.doTestDataType6(null)}") Logger.d(" AP DBG doTestDataType7 result: ${DetailContext.doTestDataType7(null)}") Logger.d(" AP DBG doTestDataType8 result: ${DetailContext.doTestDataType8(null)}") Logger.d(" AP DBG doTestDataType9 result: ${DetailContext.doTestDataType9(null)}") Logger.d(" AP DBG doTestDataType1 result: ${DetailContext.doTestDataType1(context)}") Logger.d(" AP DBG doTestDataType2 result: ${DetailContext.doTestDataType2(101)}") Logger.d(" AP DBG doTestDataType3 result: ${DetailContext.doTestDataType3("102")}") Logger.d(" AP DBG doTestDataType4 result: ${DetailContext.doTestDataType4(TestNullableBean(202, "203"))}") Logger.d( " AP DBG doTestDataType5 result: ${DetailContext.doTestDataType5( mutableListOf( "AA11", "BB22" ) )}" ) Logger.d(" AP DBG doTestDataType6 result: ${DetailContext.doTestDataType6(arrayOf(111L, 222L))}") Logger.d(" AP DBG doTestDataType7 result: ${DetailContext.doTestDataType7(longArrayOf(111L, 222L))}") Logger.d(" AP DBG doTestDataType7-2 result: ${navigateForResult { uri = DetailContext.Uris.DO_TEST_DATA_TYPE7 query { "data" with longArrayOf(111L, 222L) } }}") Logger.d(" AP DBG doTestDataType8 result: ${DetailContext.doTestDataType8(intArrayOf(11, 22))}") Logger.d( " AP DBG doTestDataType9 result: ${DetailContext.doTestDataType9( booleanArrayOf( true, false ) )}" ) navigate { uri=DetailContext.Uris.DO_TEST_DATA_TYPE10 query { "1" with object : Function1 { override fun invoke(p1: Int) { Logger.d(" AP DBG HOF doTestDataType10_1 result: $p1 dsl!! ") } } "2" with object : Function1 { override fun invoke(p1: String) { Logger.d(" AP DBG HOF doTestDataType10_2 result: $p1 dsl!! ") } } } } DetailContext.doTestDataType10 ({ Logger.d(" AP DBG HOF doTestDataType10_1 result: $it !! ") },{ Logger.d(" AP DBG HOF doTestDataType10_2 result: $it !! ") }) navigate { uri = DetailContext.Uris.DO_TEST_DATA_TYPE11 result { d1, d2 -> Logger.d(" AP DBG HOF doTestDataType11_1 result: $d1 ${d2.d2} dsl!! ") } result { Logger.d(" AP DBG HOF doTestDataType11_1 result: ${it?.d2} dsl!! ") } } DetailContext.doTestDataType11({ d1, d2 -> Logger.d(" AP DBG HOF doTestDataType11_1 result: $d1 ${d2.d2} !! ") }, { Logger.d(" AP DBG HOF doTestDataType11_1 result: ${it?.d2} !! ") }) } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/kotlin/TestKotlinInvokeActionFunctionJavaTask.kt ================================================ package com.mars.component.home.test.kotlin import android.content.Context import rubik.generate.context.demo_com_mars_rubik_test_detail_java.DetailJavaContext import rubik.generate.context.demo_com_mars_rubik_test_detail_java.TestJavaBean class TestKotlinInvokeActionFunctionJavaTask { fun invoke(context: Context, onFinish: (String) -> Unit) { val tag = " B FUNCTION TASK " DetailJavaContext.touch { onFinish(" XX DBG B touch DetailJavaContext.URI:touch!!!") }.miss { onFinish(" XX DBG B touch DetailJavaContext.URI:miss!!!") } // 无参无返回值 DetailJavaContext.doSth() // 属性 DetailJavaContext.propertyProperty { value -> onFinish("$tag NA DBG JAVA propertyProperty value:$value") } // 接口异步返回 DetailJavaContext.doSthAsyncOpen { v1, v2 -> onFinish("$tag NA DBG JAVA doSthAsyncOpen value:$v1,$v2") } DetailJavaContext.doSthAsyncInterface { v1, v2 -> onFinish("$tag NA DBG JAVA doSthAsyncInterface value:$v1,$v2") } // Companion方法 DetailJavaContext.doSthStatic(8,"asd",22L){value -> onFinish("$tag NA DBG JAVA doSthCompanion value:$value") } // Companion属性 DetailJavaContext.propertyStatic { value -> onFinish("$tag NA DBG JAVA propertyCompanion value:$value") } // Bean参数返回值 DetailJavaContext.doSthBeanProvideInstanceByFunc("msg from HOME", TestJavaBean(8, null)) { value -> onFinish("$tag NA DBG JAVA doSthBean value:${value.d1}") } } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/kotlin/TestKotlinInvokeActionFunctionTask.kt ================================================ package com.mars.component.home.test.kotlin import android.content.Context import android.os.Bundle import android.os.Handler import android.os.ResultReceiver import com.rubik.router.bundleQueries import com.rubik.router.property import rubik.generate.context.demo_com_mars_rubik_test_detail.* import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext.Companion.doSthExt import rubik.generate.context.demo_com_mars_rubik_test_detail.callback.CallbackTestInterface import rubik.generate.context.demo_com_mars_rubik_test_detail.objekt.ObjectTest class TestKotlinInvokeActionFunctionTask { fun invoke(context: Context, onFinish: (String) -> Unit) { // 无参无返回值 val tag = " B FUNCTION TASK " DetailContext.touch { onFinish(" XX DBG B touch DetailContext:touch!!!") }.miss { onFinish(" XX DBG B touch DetailContext:miss!!!") } DetailContext.doSth() // 高阶函数 val doSthHOFResult = DetailContext.doSthHof(3, "123", TestDataBean(1, "456")) onFinish("$tag NA DBG doSthHOF doSthHOFResult:$doSthHOFResult") // 属性 DetailContext.propertyProperty { value -> onFinish("$tag NA DBG propertyProperty value:$value") } // 高阶函数异步返回 DetailContext.doSthAsync2HOF({ v1, v2 -> onFinish("$tag NA DBG doSthAsyncHOF 1 value:$v1,$v2") }, { v1, v2 -> onFinish("$tag NA DBG doSthAsyncHOF 2 value:$v1,$v2") }) // 接口异步返回 DetailContext.doSthAsyncOpen("textUri") { v1, v2 -> onFinish("$tag NA DBG doSthAsyncOpen value:$v1,$v2") } DetailContext.doSthAsyncInterface { v1, v2 -> onFinish("$tag NA DBG doSthAsyncInterface value:$v1,$v2") } // 返回View DetailContext.viewGet(context) { view -> onFinish("$tag NA DBG getView value:$view") } // Companion方法 DetailContext.doSthCompanion(8, "asd", 22L) { value -> onFinish("$tag NA DBG doSthCompanion value:$value") } // Companion属性 DetailContext.propertyCompanion { value -> onFinish("$tag NA DBG propertyCompanion value:$value") } // Companion高阶函数 DetailContext.doSthHOFCompanion(6) { value -> onFinish("$tag NA DBG doSthHOFCompanion value:$value") } // 顶层方法 DetailContext.doSthTop( arrayOf(1), listOf(2, 3), arrayOf("asd"), listOf("ghj", "zxc"), arrayOf(TestDataBean(100, "101")), listOf(TestDataBean(101, "102"), TestDataBean(103, "104")) ) { list -> list.forEach { onFinish("$tag NA DBG doSthTop d1:${it.d1} d1:${it.d2}") } } // 顶层高阶函数 DetailContext.doSthHOFTop(Unit) { } // 顶层属性 DetailContext.propertyTop { value -> onFinish("$tag NA DBG propertyTop value:$value") } // 通过assist获取实例 DetailContext.doSthProvideInstanceByFunc() DetailContext.doSthProvideInstanceByParameterFunc( "2 value_ST 2", null, v1 = "2 value_ST- 2", v2 = 2888, v3 = 2999 ) DetailContext.doSthProvideInstanceByConstructor( "2 value_ST 3", v1 = "2 value_ST- 3", v2 = 3888, v3 = 3999 ) // Bean参数返回值 DetailContext.doSthBean(TestDataBean(8, null)) { value -> onFinish("$tag NA DBG doSthBean value:${value.d1}") } // 调用构造函数 DetailContext.testBeanCreate(55, "ggghhh") { value -> onFinish("$tag NA DBG makeApiBean value:(${value.d1},${value.d2})") } // 指定返回类型 val result = DetailContext.Fragment.page1() onFinish("$tag NA DBG makeApiFragment value:$result") // uri传递参数 DetailContext.sthIdAName("vbn", "ghj", "yui", "987") { value -> onFinish("$tag NA DBG getSth value:$value") } //扩展函数 100.doSthExt("tmp") { onFinish("$tag NA DBG doSthExt value:$it") } // 传递ResultReceiver DetailContext.doSthResultReceiver( object : ResultReceiver(Handler()) { override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { super.onReceiveResult(resultCode, resultData) onFinish( "$tag NA DBG doSthResultReceiver resultCode:$resultCode resultData1:${ resultData?.property( "fromA" ) } resultData2:${ resultData?.property( "BEAN_fromA" )?.d2 }" ) } } ) { value -> value.send(1010, bundleQueries { "fromB" with " this is B " "BEAN_fromB" with TestDataBean(333, "B3w3w3w") }) onFinish("$tag NA DBG doSthResultReceiver value:$value") } // 变长参数 DetailContext.doSthVararg(1, "qwe111", "asd2") val parcelizeBean = DetailContext.Api.Serialization.parcelBean(TestParcelizeBean(1, "from home!")) onFinish("$tag NA DBG Serialization value:${parcelizeBean?.d2}") // // 原始value // DetailContext.doKeepOriginalValue(A4Bean(135,"135X")){ // onFinish("$tag NA DBG doKeepOriginalValue d1:${it.d1} d2:${it.d2}") // } // 传递实例 val commonInstance = ObjectTest("asd") onFinish("$tag NA DBG getCommonInstance commonInstance:${commonInstance?.originalObject.hashCode()} ") commonInstance?.doSthInCommonInstance { bean-> onFinish("$tag NA DBG doSthInCommonInstance bean:${bean.d1} ${bean.d2}") } commonInstance?.let { DetailContext.sendBackCommonInstance(commonInstance) onFinish("$tag NA DBG sendBackCommonInstance commonInstance:${commonInstance.originalObject.hashCode()}") } DetailContext.getAOtherCommonInstance(425) { instance -> onFinish("$tag NA DBG getAOtherCommonInstance instance:${instance.originalObject.hashCode()} ") DetailContext.sendBackCommonInstance(instance) onFinish("$tag NA DBG sendBackCommonInstance instance:${instance.originalObject.hashCode()}") instance.doSthInCommonInstanceParameter("xx", 123, 345) instance.doSthInCommonInstanceParameter("xx", 123, 345) } val commonInstanceList = DetailContext.getALotOfCommonInstance(523) onFinish( "$tag NA DBG getALotOfCommonInstance commonInstance:${ commonInstanceList?.joinToString("~") { ins -> ins.originalObject.hashCode().toString() } }" ) DetailContext.sendBackALotOfCommonInstance(mutableMapOf().apply { commonInstanceList?.forEachIndexed { index, value -> put("xxz${index}", value) } }) DetailContext.getAOtherCommonInstanceNull(23425) { instance -> onFinish("$tag NA DBG getAOtherCommonInstanceNull instance:${instance?.originalObject.hashCode()} ") instance?.let { DetailContext.sendBackCommonInstanceNull(null) onFinish("$tag NA DBG sendBackCommonInstanceNull instance:${instance.originalObject.hashCode()}") } } val commonInstanceListNull = DetailContext.getALotOfCommonInstanceNull(523) onFinish( "$tag NA DBG getALotOfCommonInstanceNull commonInstance:${ commonInstanceListNull?.joinToString("~") { ins -> ins?.originalObject.hashCode().toString() } }" ) DetailContext.sendBackALotOfCommonInstanceNull(mutableMapOf().apply { commonInstanceList?.forEachIndexed { index, value -> put("wd${index}", if (index == 1) null else value) } }) // 传递callback DetailContext.doSthCallbackObject(object : CallbackTestInterface { override fun callbackBean(bean: TestDataBean) { onFinish( "$tag NA DBG doSthCallbackObject callbackBean:${bean.d1} ${bean.d2}" ) } override fun callbackBeanReBean(bean: TestDataBean?) { onFinish( "$tag NA DBG doSthCallbackObject callbackBeanReBean:${bean?.d1} ${bean?.d2}" ) } override fun callbackInt(i: Int) { onFinish( "$tag NA DBG doSthCallbackObject callbackInt:${i}" ) } }) // 传递mapping value DetailContext.doSthMappingBean(TestDataMappingBean(555,"asd")) { bean-> onFinish( "$tag NA DBG doSthMappingBean :${bean.d1} ${bean.d2}" ) } DetailContext.doSthTestNestDataMappingBean( TestNestDataMappingBean( TestDataBean(123, "AAsdsd"), TestDataMappingBean(155, "AAsdsd"), TestNestDataMappingBean( TestDataBean(2223, "BBsdsd"), TestDataMappingBean(2255, "BBsdsd"), null, listOf(TestDataBean(2223, "BBsdsd")), listOf(TestDataMappingBean(2255, "BBsdsd")) ), listOf(TestDataBean(123, "AAsdsd")), listOf(TestDataMappingBean(155, "AAsdsd")) ) ) { bean -> onFinish( "$tag NA DBG doSthTestNestDataMappingBean :${bean.d1?.d2} ${bean.d2?.d2} ${bean.d3?.d2} ${bean.d4} ${bean.d5}" ) } } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/kotlin/TestKotlinInvokeDSLTask.kt ================================================ package com.mars.component.home.test.kotlin import android.content.Context import android.os.Bundle import android.os.Handler import android.os.ResultReceiver import android.view.View import androidx.fragment.app.Fragment import com.rubik.route.mapping.query import com.rubik.router.* import rubik.generate.context.demo_com_mars_rubik_test_detail.* class TestKotlinInvokeDSLTask { fun invoke(context: Context, onFinish: (String) -> Unit) { val tag = " HOME DSL TASK " touch(uri = DetailContext.URI) { onFinish(" XX DBG HOME touch DetailContext.URI:touch!!!") }.miss { onFinish(" XX DBG HOME touch DetailContext.URI:miss!!!") } touch("xxx") { onFinish(" XX DBG HOME touch xxx:touch!!!") }.miss { onFinish(" XX DBG HOME touch xxx:miss!!!") } // 无参无返回值 navigate { uri = DetailContext.Uris.DO_STH } // 高阶函数 navigate { uri = DetailContext.Uris.DO_STH_HOF query { "a0" with 4 "a1" with "123" "a2" with TestDataBean(1, "456") } result { value -> onFinish("$tag NA DBG doSthHOF value:$value") } } // 同步调用 val doSthHOFResult1: Int? = navigateForResult { uri = DetailContext.Uris.DO_STH_HOF query { "a0" with 9 "a1" with "456" "a2" with TestDataBean(2, "567") } } val doSthHOFResult2 = navigateForResult { uri = DetailContext.Uris.DO_STH_HOF query { "a0" with 9 "a1" with "456" "a2" with TestDataBean(2, "567") } } onFinish("$tag NA DBG doSthHOF doSthHOFResult1:$doSthHOFResult1 doSthHOFResult2:$doSthHOFResult2") // 属性 navigate { uri = DetailContext.Uris.PROPERTY_PROPERTY result { value -> onFinish("$tag NA DBG propertyProperty value:$value") } } // 高阶函数异步返回 navigate { uri = DetailContext.Uris.DO_STH_ASYNC_HOF result { v1, v2 -> onFinish("$tag NA DBG doSthAsyncHOF value:$v1,${v2.d2}") } } // 接口异步返回 navigate { uri = DetailContext.Uris.DO_STH_ASYNC_OPEN query { "uri" with "textUri" } result { v1, v2 -> onFinish("$tag NA DBG doSthAsyncOpen value:$v1,$v2") } } navigate { uri = DetailContext.Uris.DO_STH_ASYNC_INTERFACE result { v1, v2 -> onFinish("$tag NA DBG doSthAsyncInterface value:$v1,$v2") } } // 返回View navigate { uri = DetailContext.Uris.VIEW_GET query { "context" with context } result { view -> onFinish("$tag NA DBG getView value:$view") } } // Companion方法 navigate { uri = DetailContext.Uris.DO_STH_COMPANION query { "i" with 5 "j" with "abcdef" "k" with 99L } result { value -> onFinish("$tag NA DBG doSthCompanion value:$value") } } // Companion属性 navigate { uri = DetailContext.Uris.PROPERTY_COMPANION result { value -> onFinish("$tag NA DBG propertyCompanion value:$value") } } // Companion高阶函数 navigate { uri = DetailContext.Uris.DO_STH_HOF_COMPANION query { "tmp" with 4 } result { value -> onFinish("$tag NA DBG doSthHOFCompanion value:$value") } } // 顶层方法 navigate { uri = DetailContext.Uris.DO_STH_TOP query { "1" with arrayOf(1) "2" with listOf(2, 3) "3" with arrayOf("asd") "4" with listOf("ghj", "zxc") "5" with arrayOf(TestDataBean(100, "101")) "6" with listOf(TestDataBean(101, "102"), TestDataBean(103, "104")) } result> { list -> list.forEach { onFinish("$tag NA DBG doSthTop b1:${it.d1} d1:${it.d2}") } } } // 顶层高阶函数 navigate { uri = DetailContext.Uris.DO_STH_HOF_TOP query { "tmp" with Unit } } // 顶层属性 navigate { uri = DetailContext.Uris.PROPERTY_TOP result { value -> onFinish("$tag NA DBG propertyTop value:$value") } } // 通过assist获取实例 navigate { uri = DetailContext.Uris.DO_STH_PROVIDE_INSTANCE_BY_FUNC } navigate { uri = DetailContext.Uris.DO_STH_PROVIDE_INSTANCE_BY_PARAMETER_FUNC query { "value" with "value_ST 2" "v0" with 255 "v1" with "value_ST- 2" "v2" with 266 "v3" with 277 } } navigate { uri = DetailContext.Uris.DO_STH_PROVIDE_INSTANCE_BY_CONSTRUCTOR query { "value" with "value_ST 3" "v1" with "value_ST- 3" "v2" with 366 "v3" with 377 } } // Bean参数返回值 navigate { uri = DetailContext.Uris.DO_STH_BEAN query { "a1" with TestDataBean(99, "asd") } result { value -> onFinish("$tag NA DBG doSthBean value:${value.d1}") } } // 调用构造函数 navigate { uri = DetailContext.Uris.TEST_BEAN_CREATE query { "a" with 55 "b" with "dddfff" } result { value -> onFinish("$tag NA DBG makeApiBean value:(${value.d1},${value.d2})") } } // 指定返回类型 navigate { uri = DetailContext.Uris.Fragment.PAGE1 result { value -> onFinish("$tag NA DBG makeApiFragment value:$value") } } // uri传递参数 navigate { uri = DetailContext.Uris.STH_ID_A_NAME("123", "456", "qwe", "asd", "zxc", "tyu") result { value -> onFinish("$tag NA DBG getSth value:$value") } } //扩展函数 navigate { uri = DetailContext.Uris.DO_STH_EXT query { "i" with 99 "s" with "tmp" } result { value -> onFinish("$tag NA DBG doSthExt value:$value") } } // navigate { // uri = "app://com.kc.a/sth/234/a-567?code1=wer&code2=sdf" // result { value -> // onFinish("$tag NA DBG getSth value:$value") // } // } // // // navigateOnly // navigate { // uri = "app://com.kc.a/sthNavigationOnly/9090" // result { value -> // onFinish("$tag NA DBG getSth value:$value") // } // } // 传递ResultReceiver navigate { uri = DetailContext.Uris.DO_STH_RESULT_RECEIVER query { "result" with object : ResultReceiver(Handler()) { override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { super.onReceiveResult(resultCode, resultData) onFinish( "$tag NA DBG doSthResultReceiver resultCode:$resultCode " + "resultData:${resultData?.property( "fromA" )} resultData2:${resultData?.property( "BEAN_fromA" )?.d2}" ) } } } result { value -> value.send(1010, bundleQueries { "fromB" with " this is HOME " "BEAN_fromB" with TestDataBean(777,"B7y7y7y") }) onFinish("$tag NA DBG doSthResultReceiver value:$value") } } // 变长参数 navigate { uri = DetailContext.Uris.DO_STH_VARARG query { "no" with 2 "strings" with arrayOf("qwe3", "asd4") } } // 序列化 navigate { uri = DetailContext.Uris.Api.Serialization.SERIALIZABLE_BEAN query { "bean" with TestSerializableBean(2, "from home!") } result { value -> onFinish("$tag NA DBG SERIALIZABLE_BEAN value:${value.d2}") } } navigate { uri = DetailContext.Uris.Api.Serialization.PARCEL_BEAN query { "bean" with TestParcelizeBean(1, "from home!") } result { value -> onFinish("$tag NA DBG PARCEL_BEAN value:${value?.d2}") } } navigate { uri = DetailContext.Uris.Api.Serialization.PARCEL_ARRAY query { "array" with arrayOf(TestParcelizeBean(1, "from home!")) } result?> { value -> onFinish("$tag NA DBG PARCEL_ARRAY value size:${value?.size} 0 :${value?.getOrNull(0)?.d2}") } } navigate { uri = DetailContext.Uris.Api.Serialization.PARCEL_LIST query { "list" with listOf(TestParcelizeBean(1, "from home!")) } result?> { value -> onFinish("$tag NA DBG PARCEL_LIST value size:${value?.size} 0 :${value?.getOrNull(0)?.d2}") } } // // 原始value // navigate { // uri = DetailContext.Uris.DO_KEEP_ORIGINAL_VALUE // query { // "value " with A4Bean(135, "135X") // } // result { // onFinish("$tag NA DBG doKeepOriginalValue d1:${it.d1} d2:${it.d2}") // } // } } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/test/kotlin/TestKotlinInvokeRouteFunctionTask.kt ================================================ package com.mars.component.home.test.kotlin import android.content.Context import android.os.Bundle import android.os.Handler import android.os.ResultReceiver import com.rubik.router.bundleQueries import com.rubik.router.property import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailRouteContext import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailRouteContext.Companion.doSthExt import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean import rubik.generate.context.demo_com_mars_rubik_test_detail.TestParcelizeBean class TestKotlinInvokeRouteFunctionTask { fun invoke(context: Context, onFinish: (String) -> Unit) { // 无参无返回值 val tag = " B FUNCTION TASK " DetailContext.touch { onFinish(" XX DBG B touch DetailContext:touch!!!") }.miss { onFinish(" XX DBG B touch DetailContext:miss!!!") } DetailRouteContext.doSth() // 高阶函数 val doSthHOFResult = DetailRouteContext.doSthHof(3, "123", TestDataBean(1, "456")) onFinish("$tag NA DBG doSthHOF doSthHOFResult:$doSthHOFResult") // 属性 DetailRouteContext.propertyProperty { value -> onFinish("$tag NA DBG propertyProperty value:$value") } // 高阶函数异步返回 DetailRouteContext.doSthAsync2HOF({ v1, v2 -> onFinish("$tag NA DBG doSthAsyncHOF 1 value:$v1,$v2") }, { v1, v2 -> onFinish("$tag NA DBG doSthAsyncHOF 2 value:$v1,$v2") }) // 接口异步返回 DetailRouteContext.doSthAsyncOpen("textUri") { v1, v2 -> onFinish("$tag NA DBG doSthAsyncOpen value:$v1,$v2") } DetailRouteContext.doSthAsyncInterface { v1, v2 -> onFinish("$tag NA DBG doSthAsyncInterface value:$v1,$v2") } DetailContext.doSthAsync3Interface({ v1, v2 -> onFinish("$tag NA DBG doSthAsync3Interface value:$v1,$v2") }, { v1, v2 -> onFinish("$tag NA DBG doSthAsync3Interface value:$v1,$v2") }, { data -> onFinish("$tag NA DBG doSthAsync3Interface value:${data?.d1},${data?.d2}") }) DetailContext.doSthAsyncInterfaceMultiFunc({ v1, v2 -> onFinish("$tag NA DBG doSthAsyncInterfaceMultiFunc value:$v1,$v2") }, { data -> onFinish("$tag NA DBG doSthAsyncInterfaceMultiFunc data:${data?.d1},${data?.d2}") }, { v1, v2 -> onFinish("$tag NA DBG doSthAsyncInterfaceMultiFunc value:${v1},${v2}") }) // 返回View DetailRouteContext.viewGet(context) { view -> onFinish("$tag NA DBG getView value:$view") } // Companion方法 DetailRouteContext.doSthCompanion(8,"asd",22L){value -> onFinish("$tag NA DBG doSthCompanion value:$value") } // Companion属性 DetailRouteContext.propertyCompanion { value -> onFinish("$tag NA DBG propertyCompanion value:$value")} // Companion高阶函数 DetailRouteContext.doSthHOFCompanion(6){ value -> onFinish("$tag NA DBG doSthHOFCompanion value:$value") } // 顶层方法 DetailRouteContext.doSthTop( arrayOf(1), listOf(2, 3), arrayOf("asd"), listOf("ghj", "zxc"), arrayOf(TestDataBean(100, "101")), listOf(TestDataBean(101, "102"),TestDataBean(103, "104")) ) { list -> list.forEach { onFinish("$tag NA DBG doSthTop d1:${it.d1} d1:${it.d2}") } } // 顶层高阶函数 DetailRouteContext.doSthHOFTop(Unit) { } // 顶层属性 DetailRouteContext.propertyTop { value -> onFinish("$tag NA DBG propertyTop value:$value") } // 通过assist获取实例 DetailRouteContext.doSthProvideInstanceByFunc() DetailRouteContext.doSthProvideInstanceByParameterFunc("2 value_ST 2", null, v1 = "2 value_ST- 2", v2 = 2888, v3 = 2999) DetailRouteContext.doSthProvideInstanceByConstructor("2 value_ST 3", v1 = "2 value_ST- 3", v2 = 3888, v3 = 3999) // Bean参数返回值 DetailRouteContext.doSthBean(TestDataBean(8, null)) { value -> onFinish("$tag NA DBG doSthBean value:${value.d1}") } // 调用构造函数 DetailRouteContext.testBeanCreate(55, "ggghhh") { value -> onFinish("$tag NA DBG makeApiBean value:(${value.d1},${value.d2})") } // 指定返回类型 val result = DetailRouteContext.Fragment.page1() onFinish("$tag NA DBG makeApiFragment value:$result") // uri传递参数 DetailRouteContext.sthIdAName("vbn", "ghj", "yui", "987") { value -> onFinish("$tag NA DBG getSth value:$value") } //扩展函数 100.doSthExt("tmp"){ onFinish("$tag NA DBG doSthExt value:$it") } // 传递ResultReceiver DetailRouteContext.doSthResultReceiver( object : ResultReceiver(Handler()) { override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { super.onReceiveResult(resultCode, resultData) onFinish("$tag NA DBG doSthResultReceiver resultCode:$resultCode resultData1:${resultData?.property( "fromA" )} resultData2:${resultData?.property( "BEAN_fromA" )?.d2}") } } ) { value -> value.send(1010, bundleQueries { "fromB" with " this is B " "BEAN_fromB" with TestDataBean(333,"B3w3w3w") }) onFinish("$tag NA DBG doSthResultReceiver value:$value") } // 变长参数 DetailRouteContext.doSthVararg(1, "qwe111", "asd2") val parcelizeBean = DetailRouteContext.Api.Serialization.parcelBean(TestParcelizeBean(1, "from home!")) onFinish("$tag NA DBG Serialization value:${parcelizeBean?.d2}") // // 原始value // DetailContext.doKeepOriginalValue(A4Bean(135,"135X")){ // onFinish("$tag NA DBG doKeepOriginalValue d1:${it.d1} d2:${it.d2}") // } } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/ui/HomeActivity.kt ================================================ package com.mars.component.home.ui import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import com.mars.component.home.R import com.mars.component.home.test.kotlin.TestKotlinInvokeDSLTask import com.mars.component.home.test.kotlin.TestKotlinInvokeActionFunctionTask import com.mars.component.home.test.kotlin.TestKotlinInvokeActionFunctionJavaTask import com.mars.component.home.test.kotlin.TestKotlinInvokeRouteFunctionTask import com.rubik.router.navigate import com.rubik.router.result import kotlinx.android.synthetic.main.activity_kotlin.* import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext import rubik.generate.context.demo_com_mars_rubik_test_detail.TestCompanionBean import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean import rubik.generate.context.demo_com_mars_rubik_test_detail.TestListBean import rubik.generate.context.demo_com_mars_rubik_test_detail_java.DetailJavaContext import rubik.generate.context.demo_com_mars_rubik_test_detail_java.TestJavaBean class HomeActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_kotlin) supportFragmentManager.beginTransaction().replace(R.id.container, HomeFragment(), "").commit() button_navigation_k_2_k.setOnClickListener { text_hello.text = "" TestKotlinInvokeDSLTask().invoke(applicationContext) { result -> println(result) text_hello.text = "${text_hello.text}\n$result" } } button_context_k_2_k_action.setOnClickListener { text_hello.text = "" val timeAction = System.currentTimeMillis() TestKotlinInvokeActionFunctionTask().invoke(applicationContext) { result -> println(result) text_hello.text = "${text_hello.text}\n$result" } text_hello.text = "${text_hello.text}\n\naction cost:${System.currentTimeMillis()-timeAction}" } button_context_k_2_k_router.setOnClickListener { text_hello.text = "" val timeRoute = System.currentTimeMillis() TestKotlinInvokeRouteFunctionTask().invoke(applicationContext) { result -> println(result) text_hello.text = "${text_hello.text}\n$result" } text_hello.text = "${text_hello.text}\n\nroute cost:${System.currentTimeMillis()-timeRoute}" } button_context_k_2_j.setOnClickListener{ text_hello.text = "" TestKotlinInvokeActionFunctionJavaTask().invoke(applicationContext) { result -> println(result) text_hello.text = "${text_hello.text}\n$result" } } button_navigation_livedata_k_2_k.setOnClickListener { text_hello.text = "" navigate { uri = DetailContext.Uris.LIVE_DATA_GET result> { data -> data.observe(this@HomeActivity, Observer { text_hello.text = "${text_hello.text}\nobs:$it" }) } } navigate { uri = DetailContext.Uris.LIVE_DATA_BEAN_GET result> { data -> data.observe(this@HomeActivity, Observer { text_hello.text = "${text_hello.text}\nobs:${it.d2}" text_hello.text = "${text_hello.text}\nget:${data.value?.d2}" }) } } navigate { uri = DetailContext.Uris.LIVE_DATA_BEAN_LIST_GET result>> { data -> data.observe(this@HomeActivity, Observer { text_hello.text = "${text_hello.text}\nobs:${it.toLog()}" text_hello.text = "${text_hello.text}\nget:${data.value?.toLog()}" }) } } } button_context_livedata_k_2_k.setOnClickListener { text_hello.text = "" DetailContext.liveDataGet { data -> data.observe(this@HomeActivity, Observer { text_hello.text = "${text_hello.text}\nobs:$it" }) } DetailContext.liveDataBeanGet { data -> data.observe(this@HomeActivity, Observer { text_hello.text = "${text_hello.text}\nobs:${it.d1}" text_hello.text = "${text_hello.text}\nget:${data.value?.d2}" }) } DetailContext.liveDataBeanListGet { data -> data.observe(this@HomeActivity, Observer { text_hello.text = "${text_hello.text}\nobs:${it.toLog()}" text_hello.text = "${text_hello.text}\nget:${data.value?.toLog()}" }) } // MutableLiveData().apply { // this.observe(this@B1Activity, Observer { // text_hello.text = "${text_hello.text}\nobs3:${it.b1}" // text_hello.text = "${text_hello.text}\nobs3:${it.b2}" // }) // DetailContext.sthWithLiveData(this) // } } button_navigation_start_k_2_k.setOnClickListener { navigate { uri = DetailContext.Uris.Activity.PAGE1 query { flags = Intent.FLAG_ACTIVITY_SINGLE_TOP "key_3_int" with 33.toInt() "key_b_str" with "i am from b" "key_4_strs" withSerializable ArrayList().apply { add(("i am from b list")) } "key_a_ints" with ArrayList().apply { add(123) } "key_5_bean" with TestDataBean(203, "203") "key_1_pa" with TestCompanionBean(303, "303303") "key_2_pa_ar" with arrayOf(TestCompanionBean(304, "304304")) "key_c_pa_li" with ArrayList().apply { add(TestCompanionBean(305, "305305")) } // "key_pa_p" withParcelable TmpA3Bean(1303, "303303") // "key_pa_ar_p" withParcelable arrayOf(TmpA3Bean(1304, "304304")) // "key_pa_li_p" withParcelable ArrayList().apply { add(TmpA3Bean(1305, "305305")) } // // "key_ser" withSerializable TmpA4Bean(2303, "23032303") } } } button_context_start_k_2_k.setOnClickListener { DetailContext.Activity.page1( this, TestCompanionBean(5303, "303303"), arrayOf(TestCompanionBean(5304, "304304")), 533, ArrayList().apply { add(("i am from b DetailContext list")) }, TestDataBean(5203, "203"), ArrayList().apply { add(5123) }, ArrayList().apply { add(TestCompanionBean(5305, "305305")) }, "i am from b DetailContext" ) } button_navigation_start_for_result_k_2_k.setOnClickListener { navigate { uri = DetailContext.Uris.Activity.Page2.KeyStr1.KeyStr2.KEY_STR3("fff", "ggg", "hhh") query { requestCode = 101 } } } button_context_start_for_result_k_2_k.setOnClickListener { DetailContext.Activity.Page2.KeyStr1.KeyStr2.keyStr3( this, "ccc", "vvv", "bbb", null, 102 ) } button_navigation_start_k_2_j.setOnClickListener { navigate { uri = DetailJavaContext.Uris.Activity.JAVA_PAGE1 query { flags = Intent.FLAG_ACTIVITY_SINGLE_TOP "key_str4" withSerializable ArrayList().apply { add(("i am from b list")) } "key_str5" with ArrayList().apply { add(TestJavaBean(505, "505505")) } "key_str6" with arrayOf(TestJavaBean(504, "504504")) } } } button_context_start_k_2_j.setOnClickListener { DetailJavaContext.Activity.javaPage1( this, ArrayList().apply { add(("i am from b list")) }, ArrayList().apply { add(TestJavaBean(505, "505505")) }, arrayOf(TestJavaBean(504, "504504")) ) } button_navigation_start_for_result_k_2_j.setOnClickListener { navigate { uri = DetailJavaContext.Uris.Activity.JavaPage2.KeyStr1.KeyStr2.KEY_STR3("rrr", "ttt", "90") query { requestCode = 103 } } } button_context_start_for_result_k_2_j.setOnClickListener { DetailJavaContext.Activity.JavaPage2.KeyStr1.KeyStr2.keyStr3( this, "ccc", "vvv", 90, null, 104 ) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) text_hello.text = "onActivityResult requestCode:$requestCode resultCode:$resultCode data:${data?.getStringExtra("data")}" } private fun List.toLog() = fold("") { str, bean -> "$str/${bean?.d2?.fold("") { beanStr, value -> "$beanStr|$value" }}" } override fun onDestroy() { super.onDestroy() } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/ui/HomeFragment.kt ================================================ package com.mars.component.home.ui; import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import com.mars.component.home.R import com.rubik.router.navigate import kotlinx.android.synthetic.main.fragment_b1.* import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext import rubik.generate.context.demo_com_mars_rubik_test_detail_java.DetailJavaContext class HomeFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_b1, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { button_navigation_fragment_start_for_result_k_2_k.setOnClickListener { navigate { uri = DetailContext.Uris.Activity.Page2.KeyStr1.KeyStr2.KEY_STR3( "fff33", "ggg3", "hhh3" ) query { requestCode = 301 } } } button_context_fragment_start_for_result_k_2_k.setOnClickListener { DetailContext.Activity.Page2.KeyStr1.KeyStr2.keyStr3( this, "ccc3", "vvv3", "bbb3", null, 302 ) } button_navigation_fragment_start_for_result_k_2_j.setOnClickListener { navigate { uri = DetailJavaContext.Uris.Activity.JavaPage2.KeyStr1.KeyStr2.KEY_STR3( "ccc55", "vvv55", 88.toString() ) query { requestCode = 303 } } } button_context_fragment_start_for_result_k_2_j.setOnClickListener { DetailJavaContext.Activity.JavaPage2.KeyStr1.KeyStr2.keyStr3( this, "ccc55", "vvv55", 88, null, 304 ) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) text_hello_fragment.text = "onFragmentResult requestCode:$requestCode resultCode:$resultCode data:${data?.getStringExtra("data")}" } } ================================================ FILE: demo/demo_component_home/src/main/java/com/mars/component/home/ui/java/JavaHomeActivity.java ================================================ package com.mars.component.home.ui.java; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.mars.component.home.R; import com.mars.component.home.test.java.TestJavaInvokeBuilderTask; import com.mars.component.home.test.java.TestJavaInvokeFunctionTask; import com.mars.component.home.test.java.TestJavaInvokeJavaFunctionTask; import com.rubik.router.Router; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import rubik.generate.context.demo_com_mars_rubik_test_detail.DetailContext; import rubik.generate.context.demo_com_mars_rubik_test_detail.TestCompanionBean; import rubik.generate.context.demo_com_mars_rubik_test_detail.TestDataBean; import rubik.generate.context.demo_com_mars_rubik_test_detail_java.DetailJavaContext; import rubik.generate.context.demo_com_mars_rubik_test_detail_java.TestJavaBean; public class JavaHomeActivity extends AppCompatActivity{ private TextView textHello; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_java); textHello = findViewById(R.id.text_hello); findViewById(R.id.button_builder_j_2_k).setOnClickListener(view -> { textHello.setText(""); new TestJavaInvokeBuilderTask().invoke(getApplicationContext(), (result) -> { System.out.println(result); textHello.setText(textHello.getText() + "\n" + result); return null; }); }); findViewById(R.id.button_context_j_2_k).setOnClickListener(view -> { textHello.setText(""); new TestJavaInvokeFunctionTask().invoke(getApplicationContext(), (result) -> { System.out.println(result); textHello.setText(textHello.getText() + "\n" + result); return null; }); }); findViewById(R.id.button_context_j_2_j).setOnClickListener(view -> { textHello.setText(""); new TestJavaInvokeJavaFunctionTask().invoke(getApplicationContext(), (result) -> { System.out.println(result); textHello.setText(textHello.getText() + "\n" + result); return null; }); }); findViewById(R.id.button_builder_start_j_2_j).setOnClickListener(view -> { List strs = new ArrayList<>(); strs.add("i am from b java list"); List cPaLi = new ArrayList<>(); cPaLi.add(new TestJavaBean(405, "405405")); Router.builder(JavaHomeActivity.this).uri(DetailJavaContext.Uris.Activity.JAVA_PAGE1) .launchFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) .withSerializable("key_str4", strs) .with("key_str5", cPaLi) .with("key_str6", new TestJavaBean[] {new TestJavaBean(404, "404404")}) .build().route(); }); findViewById(R.id.button_context_start_j_2_j).setOnClickListener(view -> { List strs = new ArrayList<>(); strs.add("i am from b java list"); List cPaLi = new ArrayList<>(); cPaLi.add(new TestJavaBean(405, "405405")); DetailJavaContext.Activity.javaPage1( JavaHomeActivity.this, strs, cPaLi, new TestJavaBean[] {new TestJavaBean(404, "404404")}, null, null); }); findViewById(R.id.button_builder_start_j_2_k).setOnClickListener(view -> { List strs = new ArrayList<>(); strs.add("i am from b java list"); List ints = new ArrayList<>(); ints.add(456); List cPaLi = new ArrayList<>(); cPaLi.add(new TestCompanionBean(405, "405405")); Router.builder(JavaHomeActivity.this).uri(DetailContext.Uris.Activity.PAGE1) .launchFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) .with("key_3_int", 55) .with("key_b_str", "i am from b java") .withSerializable("key_4_strs", strs) .with("key_a_ints", ints) .with("key_5_bean", new TestDataBean(205, "205")) .with("key_1_pa", new TestCompanionBean(403, "403403")) .with("key_2_pa_ar", new TestCompanionBean[] {new TestCompanionBean(404, "404404")}) .with("key_c_pa_li", cPaLi) .build().route(); }); findViewById(R.id.button_context_start_j_2_k).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { List strs = new ArrayList<>(); strs.add("i am from b java list"); List ints = new ArrayList<>(); ints.add(456); List cPaLi = new ArrayList<>(); cPaLi.add(new TestCompanionBean(405, "405405")); DetailContext.Activity.page1(JavaHomeActivity.this, new TestCompanionBean(7303, "303303"), new TestCompanionBean[] {new TestCompanionBean(404, "404404")}, 733, strs, new TestDataBean(205, "205"), ints, cPaLi, "i am from b java", null, null); } }); } } ================================================ FILE: demo/demo_component_home/src/main/res/layout/activity_java.xml ================================================