Skip to content

Commit eed9f0c

Browse files
Adding setBearerAuth(String) to RestClientHeaders interface
1 parent 017b589 commit eed9f0c

2 files changed

Lines changed: 39 additions & 7 deletions

File tree

  • AndroidAnnotations

‎AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/api/rest/RestClientHeaders.java‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,11 @@ public interface RestClientHeaders {
6969
* @param password
7070
*/
7171
void setHttpBasicAuth(String user, String password);
72+
73+
/**
74+
* Sets the Authorization: Bearer header as documented in RFC6750
75+
*
76+
* @param token
77+
*/
78+
void setBearerAuth(String token);
7279
}

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/RestHolder.java‎

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
*/
1616
package org.androidannotations.holder;
1717

18-
import static com.sun.codemodel.JExpr._new;
1918
import static com.sun.codemodel.JExpr._this;
19+
import static com.sun.codemodel.JExpr.lit;
20+
import static com.sun.codemodel.JExpr.ref;
21+
import static com.sun.codemodel.JExpr._new;
2022
import static com.sun.codemodel.JMod.FINAL;
2123
import static com.sun.codemodel.JMod.PUBLIC;
2224
import static org.androidannotations.helper.CanonicalNameConstants.REST_TEMPLATE;
@@ -28,19 +30,20 @@
2830
import javax.lang.model.element.TypeElement;
2931
import javax.lang.model.type.TypeKind;
3032

31-
import org.androidannotations.api.rest.RestErrorHandler;
32-
import org.androidannotations.helper.APTCodeModelHelper;
33-
import org.androidannotations.helper.CanonicalNameConstants;
34-
import org.androidannotations.helper.ModelConstants;
35-
import org.androidannotations.process.ProcessHolder;
36-
3733
import com.sun.codemodel.ClassType;
34+
import com.sun.codemodel.JBlock;
3835
import com.sun.codemodel.JClass;
36+
import com.sun.codemodel.JDefinedClass;
3937
import com.sun.codemodel.JExpr;
4038
import com.sun.codemodel.JFieldVar;
4139
import com.sun.codemodel.JInvocation;
4240
import com.sun.codemodel.JMethod;
4341
import com.sun.codemodel.JMod;
42+
import org.androidannotations.api.rest.RestErrorHandler;
43+
import org.androidannotations.helper.APTCodeModelHelper;
44+
import org.androidannotations.helper.CanonicalNameConstants;
45+
import org.androidannotations.helper.ModelConstants;
46+
import org.androidannotations.process.ProcessHolder;
4447

4548
public class RestHolder extends BaseGeneratedClassHolder {
4649

@@ -82,6 +85,7 @@ private void implementMethods() {
8285

8386
// authentication
8487
implementSetBasicAuth(methods);
88+
implementSetBearerAuth(methods);
8589
implementSetAuthentication(methods);
8690

8791
// cookies and headers
@@ -136,6 +140,27 @@ private void implementSetBasicAuth(List<ExecutableElement> methods) {
136140
}
137141
}
138142

143+
private void implementSetBearerAuth(List<ExecutableElement> methods) {
144+
JMethod setBearerMethod = codeModelHelper.implementMethod(this, methods, "setBearerAuth", TypeKind.VOID.toString(), STRING);
145+
146+
if (setBearerMethod != null) {
147+
JClass authClass = classes().HTTP_AUTHENTICATION;
148+
JDefinedClass anonymousHttpAuthClass = codeModel().anonymousClass(authClass);
149+
150+
JMethod getHeaderValueMethod = anonymousHttpAuthClass.method(JMod.PUBLIC, String.class, "getHeaderValue");
151+
getHeaderValueMethod.annotate(Override.class);
152+
JBlock getHeaderValueMethodBody = getHeaderValueMethod.body();
153+
154+
JBlock setBearerBody = setBearerMethod.body();
155+
156+
setBearerBody.decl(FINAL, refClass(String.class), "bearerHeader", lit("Bearer ").plus(setBearerMethod.params().get(0)));
157+
158+
getHeaderValueMethodBody._return(ref("bearerHeader"));
159+
160+
setBearerBody.assign(_this().ref(getAuthenticationField()), _new(anonymousHttpAuthClass));
161+
}
162+
}
163+
139164
private void implementSetAuthentication(List<ExecutableElement> methods) {
140165
JMethod setAuthMethod = codeModelHelper.implementMethod(this, methods, "setAuthentication", TypeKind.VOID.toString(), CanonicalNameConstants.HTTP_AUTHENTICATION);
141166

0 commit comments

Comments
 (0)