@OnActivityResult(SECOND_REQUEST) void onActivityResultWithDataAndResultCode(Intent intentData, int result) { onActivityResultWithDataAndResultCodeCalled = true; }
@Override public void process(Element element, HasOnActivityResult holder) throws Exception { String methodName = element.getSimpleName().toString(); ExecutableElement executableElement = (ExecutableElement) element; List<? extends VariableElement> parameters = executableElement.getParameters(); int requestCode = executableElement.getAnnotation(OnActivityResult.class).value(); JBlock onResultBlock = holder.getOnActivityResultCaseBlock(requestCode).blockSimple(); IJExpression activityRef = holder.getGeneratedClass().staticRef("this"); JInvocation onResultInvocation = JExpr.invoke(activityRef, methodName); JVar intent = holder.getOnActivityResultDataParam(); JVar extras = null; for (VariableElement parameter : parameters) { TypeMirror parameterType = parameter.asType(); if (parameter.getAnnotation(OnActivityResult.Extra.class) != null) { if (extras == null) { extras = onResultBlock.decl(getClasses().BUNDLE, "extras_", JOp.cond(intent.ne(_null()).cand(intent.invoke("getExtras").ne(_null())), intent.invoke("getExtras"), _new(getClasses().BUNDLE))); } IJExpression extraParameter = extraHandler.getExtraValue(parameter, extras, onResultBlock, holder); onResultInvocation.arg(extraParameter); } else if (CanonicalNameConstants.INTENT.equals(parameterType.toString())) { onResultInvocation.arg(intent); } else if (parameterType.getKind().equals(TypeKind.INT) // || CanonicalNameConstants.INTEGER.equals(parameterType.toString())) { onResultInvocation.arg(holder.getOnActivityResultResultCodeParam()); } } onResultBlock.add(onResultInvocation); }
@Override public void validate(Element element, ElementValidation validation) { validatorHelper.enclosingElementHasEActivityOrEFragment(element, validation); validatorHelper.isNotPrivate(element, validation); validatorHelper.doesntThrowException(element, validation); OnActivityResult onResultAnnotation = element.getAnnotation(OnActivityResult.class); validatorHelper.annotationValuePositiveAndInAShort(onResultAnnotation.value(), validation); ExecutableElement executableElement = (ExecutableElement) element; validatorHelper.returnTypeIsVoid(executableElement, validation); validatorHelper.param.anyOrder() // .type(CanonicalNameConstants.INTENT).optional() // .primitiveOrWrapper(TypeKind.INT).optional() // .annotatedWith(OnActivityResult.Extra.class).multiple().optional() // .validate((ExecutableElement) element, validation); // }
@OnActivityResult(SECOND_REQUEST) void onActivityResultWithResultCodeAndData(int result, Intent intentData) { onActivityResultWithResultCodeAndDataCalled = true; }
@Override public void process(Element element, HasOnActivityResult holder) throws Exception { String methodName = element.getSimpleName().toString(); ExecutableElement executableElement = (ExecutableElement) element; List<? extends VariableElement> parameters = executableElement.getParameters(); int requestCode = executableElement.getAnnotation(OnActivityResult.class).value(); JBlock onResultBlock = holder.getOnActivityResultCaseBlock(requestCode).blockSimple(); IJExpression activityRef = holder.getGeneratedClass().staticRef("this"); JInvocation onResultInvocation = JExpr.invoke(activityRef, methodName); JVar intent = holder.getOnActivityResultDataParam(); JVar extras = null; for (VariableElement parameter : parameters) { TypeMirror parameterType = parameter.asType(); if (parameter.getAnnotation(OnActivityResult.Extra.class) != null) { if (extras == null) { extras = onResultBlock.decl(getClasses().BUNDLE, "extras_", JOp.cond(intent.ne(_null()).cand(intent.invoke("getExtras").ne(_null())), intent.invoke("getExtras"), _new(getClasses().BUNDLE))); } IJExpression extraParameter = extraHandler.getExtraValue(parameter, extras, onResultBlock, holder); onResultInvocation.arg(extraParameter); } else if (CanonicalNameConstants.INTENT.equals(parameterType.toString())) { onResultInvocation.arg(intent); } else if (parameterType.getKind().equals(TypeKind.INT) // || CanonicalNameConstants.INTEGER.equals(parameterType.toString())) { onResultInvocation.arg(holder.getOnActivityResultResultCodeParam()); } } onResultBlock.add(onResultInvocation); }
@OnActivityResult(THIRD_REQUEST) void onResultWithIntResultCode(int resultCode) { onResultWithIntResultCodeCalled = true; }
@Override public void validate(Element element, ElementValidation validation) { validatorHelper.enclosingElementHasEActivityOrEFragment(element, validation); validatorHelper.isNotPrivate(element, validation); validatorHelper.doesntThrowException(element, validation); OnActivityResult onResultAnnotation = element.getAnnotation(OnActivityResult.class); validatorHelper.annotationValuePositiveAndInAShort(onResultAnnotation.value(), validation); ExecutableElement executableElement = (ExecutableElement) element; validatorHelper.returnTypeIsVoid(executableElement, validation); validatorHelper.param.anyOrder() // .type(CanonicalNameConstants.INTENT).optional() // .primitiveOrWrapper(TypeKind.INT).optional() // .annotatedWith(OnActivityResult.Extra.class).multiple().optional() // .validate((ExecutableElement) element, validation); // }
@OnActivityResult(SECOND_REQUEST) void onResultWithData(Intent intentData) { onResultWithDataCalled = true; }
@OnActivityResult(THIRD_REQUEST) void onResultWithIntResultCode(int resultCode) { onResultWithIntResultCodeCalled = true; }
@OnActivityResult(THIRD_REQUEST) void onResultWithIntegerResultCode(Integer resultCodeInteger) { onResultWithIntegerResultCodeCalled = true; }
@OnActivityResult(FIRST_REQUEST) void onResult() { onResultCalled = true; }
@OnActivityResult(SECOND_REQUEST) void onActivityResultWithResultCodeAndData(int result, Intent intentData) { onActivityResultWithResultCodeAndDataCalled = true; }
@OnActivityResult(THIRD_REQUEST) void onResultWithIntegerResultCode(Integer resultCodeInteger) { onResultWithIntegerResultCodeCalled = true; }
@OnActivityResult(FIRST_REQUEST) void onResult() { onResultCalled = true; }
@OnActivityResult(SECOND_REQUEST) void onResultWithData(Intent intentData) { onResultWithDataCalled = true; }
@OnActivityResult(SECOND_REQUEST) void onActivityResultWithDataAndResultCode(Intent intentData, int result) { onActivityResultWithDataAndResultCodeCalled = true; }
@OnActivityResult(FIFTH_REQUEST) void onResultWithIntentExtras(Intent originalIntent, @OnActivityResult.Extra Intent extraIntent) { this.originalIntent = originalIntent; this.extraIntent = extraIntent; }
@OnActivityResult(SIXTH_REQUEST) void onResultWithIntentExtras(@OnActivityResult.Extra byte bytee, @OnActivityResult.Extra byte[] bytes) { } }
@OnActivityResult(FORTH_REQUEST) void onResultWithResultExtra(int resultCode, @OnActivityResult.Extra("value") int i, @OnActivityResult.Extra String s, @OnActivityResult.Extra Uri uri, @OnActivityResult.Extra ArrayList<Uri> uris, @OnActivityResult.Extra String[] strings) { } }
@OnActivityResult(FORTH_REQUEST) void onResultWithResultExtra(int resultCode, @OnActivityResult.Extra("value") int i, @OnActivityResult.Extra String s, @OnActivityResult.Extra Uri uri, @OnActivityResult.Extra ArrayList<Uri> uris, @OnActivityResult.Extra String[] strings) { onResultWithResultExtraCodeCalled = true; }