ClassDeclaration.java类的状态

本文详细介绍了Java中类从未定义到被发现的8种状态,包括CLASS_UNDEFINED、CLASS_UNDECIDED等,并解释了这些状态如何反映了类在Java运行时环境中的加载过程。

ClassDeclaration.java

Java中类的8种状态

1. CLASS_UNDEFINED=0     //类定义尚未装载

2. CLASS_UNDECIDED=1    //二进制定义被装载,但是源文件的定义是否被装载尚未知道

3. CLASS_BINARY=2             // 二进制文件已经被装载

4. CLASS_SOURCE=3          //该类从源文件中被装载, 也知道类型信息

5. CLASS_PARSED=4         //该类是从java源文件装载而来,类型信息可以获得,但是该类尚未被解析

6. CLASS_CHECKED=5     //该类是从java源文件中被装载,并且已经经过类型检查

7. CLASS_COMPILED=6   //该类已经经过类型检查,编译和写入到常量池

8. CLASS_NOTFOUND=7  //未发现类定义

 

 ClassDefinition.java

是关于Java源文件的内容(顶层类,静态嵌套类,内部类)以及成员、匿名类、局部类等等

アプリがクラッシュしました java.lang.NoSuchMethodError: No virtual method updateSuccess(Lkotlin/jvm/functions/Function3;)V in class Ljp/or/jaf/syg/feature/jafrsho01/jafrsho01020/JAFRSHO01020ViewModel; or its super classes (declaration of 'jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020ViewModel' appears in /data/data/jp.or.jaf.syg/code_cache/.overlay/base.apk/classes9.dex) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020ViewModel.onNewPwDspSwitch(JAFRSHO01020ViewModel.kt:410) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020ViewModel.onAction(JAFRSHO01020ViewModel.kt:111) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020PopupKt$ContentView$1$1.invoke(JAFRSHO01020Popup.kt:56) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020PopupKt$ContentView$1$1.invoke(JAFRSHO01020Popup.kt:56) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.components.JAFRSHO01020ContentKt.JAFRSHO01020Content$lambda$14$lambda$3$lambda$2(JAFRSHO01020Content.kt:46) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.components.JAFRSHO01020ContentKt.$r8$lambda$fzBcZZICWk_wMGd0W3tzT7R9qto(Unknown Source:0) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.components.JAFRSHO01020ContentKt$$ExternalSyntheticLambda1.invoke(D8$$SyntheticClass:0) at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke-k-4lQ0M(Clickable.kt:639) at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke(Clickable.kt:633) at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(TapGestureDetector.kt:255) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:179) at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:168) at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:474) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:508) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:497) at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:368) at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:719) at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(SuspendingPointerInputFilter.kt:598) at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:620) at androidx.compose.foundation.AbstractClickableNode.onPointerEvent-H0pRuoY(Clickable.kt:1044) at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:387) at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:373) at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:229) at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:144) at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:120) at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1994) at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1945) at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1829) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) 2025-09-29 16:22:29.691 21401-21401 CrashHandler jp.or.jaf.syg E at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:458) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1980) at android.app.Dialog.dispatchTouchEvent(Dialog.java:935) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:416) at android.view.View.dispatchPointerEvent(View.java:16729) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7947) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7710) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7106) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7163) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7129) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7295) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7137) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7352) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7110) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7163) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7129) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7137) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7110) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:10214) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10165) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10134) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:10356) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:295) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:346) at android.os.Looper.loopOnce(Looper.java:189) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8705) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@ea443a4, androidx.compose.runtime.BroadcastFrameClock@d64f50d, StandaloneCoroutine{Cancelling}@bb47cc2, AndroidUiDispatcher@9e86ad3] 2025-09-29 16:22:29.697 21401-21438 EGL_emulation jp.or.jaf.syg D app_time_stats: avg=3681.39ms min=6.55ms max=32232.14ms count=9 2025-09-29 16:22:29.699 21401-21401 AndroidRuntime jp.or.jaf.syg E FATAL EXCEPTION: main Process: jp.or.jaf.syg, PID: 21401 java.lang.NoSuchMethodError: No virtual method updateSuccess(Lkotlin/jvm/functions/Function3;)V in class Ljp/or/jaf/syg/feature/jafrsho01/jafrsho01020/JAFRSHO01020ViewModel; or its super classes (declaration of 'jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020ViewModel' appears in /data/data/jp.or.jaf.syg/code_cache/.overlay/base.apk/classes9.dex) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020ViewModel.onNewPwDspSwitch(JAFRSHO01020ViewModel.kt:410) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020ViewModel.onAction(JAFRSHO01020ViewModel.kt:111) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020PopupKt$ContentView$1$1.invoke(JAFRSHO01020Popup.kt:56) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.JAFRSHO01020PopupKt$ContentView$1$1.invoke(JAFRSHO01020Popup.kt:56) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.components.JAFRSHO01020ContentKt.JAFRSHO01020Content$lambda$14$lambda$3$lambda$2(JAFRSHO01020Content.kt:46) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.components.JAFRSHO01020ContentKt.$r8$lambda$fzBcZZICWk_wMGd0W3tzT7R9qto(Unknown Source:0) at jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.components.JAFRSHO01020ContentKt$$ExternalSyntheticLambda1.invoke(D8$$SyntheticClass:0) at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke-k-4lQ0M(Clickable.kt:639) at androidx.compose.foundation.ClickableNode$clickPointerInput$3.invoke(Clickable.kt:633) at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(TapGestureDetector.kt:255) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:179) at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:168) at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:474) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:508) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:497) at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:368) at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:719) at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(SuspendingPointerInputFilter.kt:598) at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:620) at androidx.compose.foundation.AbstractClickableNode.onPointerEvent-H0pRuoY(Clickable.kt:1044) at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:387) at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:373) at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:229) at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:144) at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:120) at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1994) at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1945) at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1829) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) 2025-09-29 16:22:29.701 21401-21401 AndroidRuntime jp.or.jaf.syg E at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3122) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:458) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1980) at android.app.Dialog.dispatchTouchEvent(Dialog.java:935) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:416) at android.view.View.dispatchPointerEvent(View.java:16729) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7947) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7710) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7106) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7163) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7129) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7295) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7137) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7352) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7110) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7163) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7129) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7137) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7110) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:10214) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10165) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10134) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:10356) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:295) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:346) at android.os.Looper.loopOnce(Looper.java:189) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8705) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@ea443a4, androidx.compose.runtime.BroadcastFrameClock@d64f50d, StandaloneCoroutine{Cancelling}@bb47cc2, AndroidUiDispatcher@9e86ad3] 下面的代码报上面的错误,是哪里错了,应该怎么改? package jp.or.jaf.syg.feature.jafrsho01.jafrsho01020 import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import dagger.hilt.android.lifecycle.HiltViewModel import jp.or.jaf.syg.core.common.base.JafViewModel import jp.or.jaf.syg.core.common.event.JafAction import jp.or.jaf.syg.core.common.event.JafEvent import jp.or.jaf.syg.core.common.util.JsonUtils import jp.or.jaf.syg.core.designsystem.R import jp.or.jaf.syg.core.designsystem.theme.resources import jp.or.jaf.syg.domain.exception.StandardBusinessException.BusinessException import jp.or.jaf.syg.domain.message.Message import jp.or.jaf.syg.domain.model.jafrshs99.SendIFInfo import jp.or.jaf.syg.domain.model.jafrshs99.SendResultModel import jp.or.jaf.syg.domain.model.request.JAFRSJS05580IF01Req import jp.or.jaf.syg.domain.repository.jafrsho01.IJAFRSHO01020Repository import jp.or.jaf.syg.domain.usecase.jafrsho01.jafrsho01020.IJAFRSHO01020E004UseCase import jp.or.jaf.syg.domain.usecase.jafrshs99.jafrshs99020.IJAFRSHS99020P001UseCase import jp.or.jaf.syg.feature.jafrsho01.jafrsho01020.mappers.toPwModifyInfoInModel import javax.inject.Inject /** * 【画面仕様: JAFRSHO01020】パスワード変更ポップアップのViewModel実装 */ @HiltViewModel class JAFRSHO01020ViewModel @Inject constructor( /** IF送信処理UseCase */ private val jAFRSHS99020P001UseCase: IJAFRSHS99020P001UseCase, /** 確定 - 押下UseCase */ private val jAFRSHO01020E004UseCase: IJAFRSHO01020E004UseCase, /** JAFRSHO01020 パスワード変更リポジトリ */ private val jAFRSHO01020Repository: IJAFRSHO01020Repository, ) : JafViewModel<JAFRSHO01020UiStateData>() { /** * 定数(設計書準拠) */ companion object { /** 最小パスワード入力桁数 */ private const val MIN_INPUT_LENGTH = 8 /** 最大パスワード入力桁数 */ private const val MAX_INPUT_LENGTH = 20 /** 連続文字制限 */ private const val RENZOKU_SEIGEN_LENGTH: Int = 3 } /** * パスワード表示モード列挙型 * 設計書の定数に対応 */ enum class PasswordDisplayMode { /** マスク表示 */ MASK_DSP, /** パスワード表示 */ PW_DSP } /** * システムイベント処理 * @param event 基本イベントクラス */ override fun onEvent(event: JafEvent) { when (event) { is JafEvent.Companion.InitializeWithParameters<*> -> { // パラメータ付き初期化(編集画面等) // 画面設計書記載のパラメータ付き初期表示処理 val params = event.params as? JAFRSHO01020Model onPopupDisplay( params?.userCdParam ?: "", params?.henkouMaePwParam ?: "", params?.pwValidKigenDaysParam ?: 0, ) } } } /** * アクション処理 * * @param action 基本アクションクラス */ override fun onAction(action: JafAction) { when (action) { // JAFRSHO01020E002 ×(閉じる) - 押下 is JAFRSHO01020Action.WindowClose -> { onWindowClose() } // JAFRSHO01020E003 閉じる - 押下 is JAFRSHO01020Action.Close -> { onClose() } // JAFRSHO01020E004 確定 - 押下 is JAFRSHO01020Action.Confirm -> { launchWithLoading { onConfirm( action.userCdParam, action.henkouMaePwParam, action.pwValidKigenDaysParam, ) } } // JAFRSHO01020E005 新パスワード表示切替アイコン - 押下 is JAFRSHO01020Action.NewPwDspSwitch -> { onNewPwDspSwitch() } // JAFRSHO01020E006 確認用パスワード表示切替アイコン - 押下 is JAFRSHO01020Action.ConfirmPwDspSwitch -> { onConfirmPwDspSwitch() } // JAFRSHO01020E007 - 新パスワード - 入力 is JAFRSHO01020Action.UpdateNewPassword -> { val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() onNewPasswordUpdate(currentData.txtboxNewPw) } // JAFRSHO01020E008 - 確認用パスワード - 入力 is JAFRSHO01020Action.UpdateConfirmPassword -> { val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() onConfirmPasswordUpdate(currentData.txtboxConfirmPw) } } } /** * 【処理仕様: JAFRSHO01020E001】画面表示処理 * @param userCdParam ユーザーコード * @param henkouMaePwParam 変更前パスワード * @param pwValidKigenDaysParam パスワード有効期限日数 */ private fun onPopupDisplay( userCdParam: String, henkouMaePwParam: String, pwValidKigenDaysParam: Int ) { val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() // パラメータ付き初期化を実行 setSuccess( currentData.copy( txtboxNewPw = "", txtboxConfirmPw = "", newPwDspSwitch = PasswordDisplayMode.MASK_DSP, confirmPwDspSwitch = PasswordDisplayMode.MASK_DSP, newPwDspSwitchIcon = R.drawable.dark_pwdsp_button.toString(), txtboxNewPwDspInfo = VisualTransformation.None, confirmPwDspSwitchIcon = R.drawable.dark_pwdsp_button.toString(), txtboxConfirmPwDspInfo = VisualTransformation.None ) ) } /** * 【処理仕様: JAFRSHO01020E002】×(閉じる) - 押下処理 */ private fun onWindowClose() { // パスワード変更ポップアップを閉じる navigateBack() } /** * 【処理仕様: JAFRSHO01020E003】閉じる - 押下処理 */ private fun onClose() { // パスワード変更ポップアップを閉じる navigateBack() } /** * 【処理仕様: JAFRSHO01020E004】確定 - 押下処理 * * @param userCdParam ユーザーコード * @param henkouMaePwParam 変更前パスワード * @param pwValidKigenDaysParam パスワード有効期限日数 */ private suspend fun onConfirm( userCdParam: String, henkouMaePwParam: String, pwValidKigenDaysParam: Int ) { // 入力チェックを実施する。 val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() val txtboxNewPw = currentData.txtboxNewPw val txtboxConfirmPw = currentData.txtboxConfirmPw val userCdParam = userCdParam val henkouMaePwParam = henkouMaePwParam // 新パスワード未入力チェック if (txtboxNewPw.isNullOrEmpty()) { showMessage( Message.JAFRSHO99010WC00005.id, listOf("新パスワード"), onOk = { // 「OK」ボタンを押下した場合、処理を終了する。 } ) return } // 新パスワード桁数チェック if (txtboxNewPw.length < MIN_INPUT_LENGTH || txtboxNewPw.length > MAX_INPUT_LENGTH) { showMessage( Message.JAFRSHO99010WC00110.id, listOf(""), onOk = { // 「OK」ボタンを押下した場合、処理を終了する。 } ) return } // 新パスワード強度チェック // 項目定義.txtboxNewPw(新パスワード)に 引数.userCdParam(ユーザーコード)の連続する3文字以上が含まれる var isConsecutiveCharactersFlg = false if (userCdParam.length < RENZOKU_SEIGEN_LENGTH) { isConsecutiveCharactersFlg = false } for (i in 0..userCdParam.length - RENZOKU_SEIGEN_LENGTH) { val sequence = userCdParam.substring(i, i + RENZOKU_SEIGEN_LENGTH) if (txtboxNewPw.contains(sequence, ignoreCase = true)) { isConsecutiveCharactersFlg = true } } // 項目定義.txtboxNewPw(新パスワード).matches(Regex("^[^a-zA-Z0-9]+$")) || // ※(英小文字 OR 英大文字 OR 数字)が含まれていない // 項目定義.txtboxNewPw(新パスワード)に 引数.userCdParam(ユーザーコード)の連続する3文字以上が含まれる // 項目定義.txtboxNewPw(新パスワード) == 引数.henkouMaePwParam(変更前パスワード) if ((txtboxNewPw.matches(Regex("^[^a-zA-Z0-9]+$"))) || isConsecutiveCharactersFlg || txtboxNewPw == henkouMaePwParam ) { showMessage( Message.JAFRSHO99010WC00111.id, listOf(""), onOk = { // 「OK」ボタンを押下した場合、処理を終了する。 } ) return } // 確認用パスワード未入力チェック if (txtboxConfirmPw.isEmpty()) { showMessage( Message.JAFRSHO99010WC00005.id, listOf("確認用パスワード"), onOk = { // 「OK」ボタンを押下した場合、処理を終了する。 } ) return } // 新パスワードと一致するかチェック if (txtboxNewPw != txtboxConfirmPw) { showMessage( Message.JAFRSHO99010WC00112.id, listOf(""), onOk = { // 「OK」ボタンを押下した場合、処理を終了する。 } ) return } try { val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() val txtboxNewPw = currentData.txtboxNewPw val userCdParam = userCdParam // 車載連携アプリにパスワード世代確認処理を送信する。 val sendIFInfoTmp1: SendIFInfo<JAFRSJS05580IF01Req> = SendIFInfo( cdIf = "JAFRSJS05580IF01", JSON = JAFRSJS05580IF01Req( // ユーザーコード cdUser = userCdParam, // パスワード password = txtboxNewPw, ), serializer = JAFRSJS05580IF01Req.serializer() ) // IF送信処理を実施する。 // TODO IF送信処理に問題がありますので、一旦送信処理コメント val sendResultModelTmp1: SendResultModel = invoke { jAFRSHS99020P001UseCase(sendIFInfoTmp1) } if (sendResultModelTmp1.isIfSendSuccess) { if (JsonUtils.getJsonValue( sendResultModelTmp1.resultJSON, "searchResult", ) == "0" ) { // 何もしない } else { // 業務共通部品(メッセージダイアログ)を呼び出す showMessage( Message.JAFRSHO99010WC00111.id, listOf(""), onOk = { // 「OK」ボタンを押下した場合、処理を終了する。 } ) return } } else { throw BusinessException( messageId = sendResultModelTmp1.messageID, params = listOf(sendResultModelTmp1.errCd), operator = "IF送信処理失敗" ) } // 有効なユーザーか確認用件数を取得する。 // 有効なユーザーであるか確認する。 // 有効なユーザーか確認用件数を取得する。 val validUserCntTmp: Int = jAFRSHO01020Repository.getValidUserCnt(userCdParam) if (validUserCntTmp < 1) { // 業務共通部品(メッセージダイアログ)を呼び出す showMessage( Message.JAFRSHO99010WC00113.id, listOf(""), onOk = { // 「OK」ボタンを押下した場合、処理を終了する。 } ) } else { // 業務共通部品(メッセージダイアログ)を呼び出す showMessage( Message.JAFRSHO99010IC00228.id, // 「いいえ」ボタンを押下した場合 onNo = { // その他操作ボタンポップアップを閉じる。 }, // 「はい」ボタンを押下した場合 onYes = { launchWithLoading("") { val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() val txtboxNewPw = currentData.txtboxNewPw // JAFRSHO01020E004UseCaseに渡す引数を設定する。 val pwModifyInfoInModel = currentData.toPwModifyInfoInModel( userCdParam, txtboxNewPw, pwValidKigenDaysParam ) // パスワード更新処理を行う。 invoke { jAFRSHO01020E004UseCase(pwModifyInfoInModel) } } } ) } // パスワード更新処理を行う。 val pwModifyInfoInModel = currentData.toPwModifyInfoInModel( userCdParam, txtboxNewPw, pwValidKigenDaysParam ) invoke { jAFRSHO01020E004UseCase(pwModifyInfoInModel) } // パスワード変更ポップアップを閉じる navigateBack() } catch (ex: BusinessException) { showMessage( ex.messageId, ex.message?.let { listOf(it) } ?: emptyList() ) return } } /** * 【処理仕様: JAFRSHO01020E005】新パスワード表示切替アイコン - 押下処理 */ private fun onNewPwDspSwitch() { val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() // インスタンス変数.新パスワード表示切替が定数.マスク表示の場合 if (currentData.newPwDspSwitch == PasswordDisplayMode.MASK_DSP) { updateSuccess { currentData -> currentData.copy( newPwDspSwitch = PasswordDisplayMode.PW_DSP, newPwDspSwitchIcon = R.drawable.dark_pwdsp_button.toString(), txtboxNewPwDspInfo = VisualTransformation.None ) } // インスタンス変数.新パスワード表示切替が定数.パスワード表示の場合 } else if (currentData.newPwDspSwitch == PasswordDisplayMode.PW_DSP) { updateSuccess { currentData -> currentData.copy( newPwDspSwitch = PasswordDisplayMode.MASK_DSP, newPwDspSwitchIcon = R.drawable.dark_pwdsp_button.toString(), txtboxNewPwDspInfo = PasswordVisualTransformation('※') ) } } else { // 何もしない } } /** * 【処理仕様: JAFRSHO01020E006】確認用パスワード表示切替アイコン - 押下処理 */ private fun onConfirmPwDspSwitch() { val currentData: JAFRSHO01020UiStateData = getCurrentData() ?: JAFRSHO01020UiStateData() // インスタンス変数.確認用パスワード表示切替が定数.マスク表示の場合 if (currentData.confirmPwDspSwitch == PasswordDisplayMode.MASK_DSP) { updateSuccess { currentData -> currentData.copy( confirmPwDspSwitch = PasswordDisplayMode.PW_DSP, confirmPwDspSwitchIcon = R.drawable.dark_pwdsp_button.toString(), txtboxConfirmPwDspInfo = VisualTransformation.None ) } // インスタンス変数.確認用パスワード表示切替が定数.パスワード表示の場合 } else if (currentData.confirmPwDspSwitch == PasswordDisplayMode.PW_DSP) { updateSuccess { currentData -> currentData.copy( confirmPwDspSwitch = PasswordDisplayMode.MASK_DSP, confirmPwDspSwitchIcon = R.drawable.dark_pwdsp_button.toString(), txtboxConfirmPwDspInfo = PasswordVisualTransformation('※') ) } } else { // 何もしない } } /** * 新パスワード入力更新 * @param newPassword 新パスワード */ private fun onNewPasswordUpdate(newPassword: String) { val currentData = getCurrentData() if (currentData != null) { setSuccess(currentData.copy(txtboxNewPw = newPassword)) } } /** * 確認用パスワード入力更新 * @param confirmPassword 確認用パスワード */ private fun onConfirmPasswordUpdate(confirmPassword: String) { val currentData = getCurrentData() if (currentData != null) { setSuccess(currentData.copy(txtboxConfirmPw = confirmPassword)) } } }
09-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值