• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

box / box-java-sdk / #4922

29 Sep 2025 02:13PM UTC coverage: 13.663% (+0.009%) from 13.654%
#4922

push

github

web-flow
chore: Adjust build process (#1444)

8374 of 61291 relevant lines covered (13.66%)

0.14 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/com/box/sdkgen/box/ccgauth/BoxCCGAuth.java
1
package com.box.sdkgen.box.ccgauth;
2

3
import com.box.sdkgen.box.errors.BoxSDKError;
4
import com.box.sdkgen.box.tokenstorage.InMemoryTokenStorage;
5
import com.box.sdkgen.box.tokenstorage.TokenStorage;
6
import com.box.sdkgen.managers.authorization.AuthorizationManager;
7
import com.box.sdkgen.networking.auth.Authentication;
8
import com.box.sdkgen.networking.network.NetworkSession;
9
import com.box.sdkgen.schemas.accesstoken.AccessToken;
10
import com.box.sdkgen.schemas.postoauth2revoke.PostOAuth2Revoke;
11
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2Token;
12
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenBoxSubjectTypeField;
13
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenGrantTypeField;
14
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenSubjectTokenTypeField;
15
import com.box.sdkgen.serialization.json.EnumWrapper;
16
import java.util.List;
17

18
public class BoxCCGAuth implements Authentication {
19

20
  public final CCGConfig config;
21

22
  public final TokenStorage tokenStorage;
23

24
  public String subjectId;
25

26
  public EnumWrapper<PostOAuth2TokenBoxSubjectTypeField> subjectType;
27

28
  public BoxCCGAuth(CCGConfig config) {
×
29
    this.config = config;
×
30
    this.tokenStorage = this.config.getTokenStorage();
×
31
    this.subjectId =
×
32
        (!(this.config.getUserId() == null)
×
33
            ? this.config.getUserId()
×
34
            : this.config.getEnterpriseId());
×
35
    this.subjectType =
×
36
        new EnumWrapper<PostOAuth2TokenBoxSubjectTypeField>(
37
            (!(this.config.getUserId() == null)
×
38
                ? PostOAuth2TokenBoxSubjectTypeField.USER
×
39
                : PostOAuth2TokenBoxSubjectTypeField.ENTERPRISE));
×
40
  }
×
41

42
  public AccessToken refreshToken() {
43
    return refreshToken(null);
×
44
  }
45

46
  @Override
47
  public AccessToken refreshToken(NetworkSession networkSession) {
48
    AuthorizationManager authManager =
×
49
        new AuthorizationManager.Builder()
50
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
×
51
            .build();
×
52
    AccessToken token =
×
53
        authManager.requestAccessToken(
×
54
            new PostOAuth2Token.Builder(PostOAuth2TokenGrantTypeField.CLIENT_CREDENTIALS)
55
                .clientId(this.config.getClientId())
×
56
                .clientSecret(this.config.getClientSecret())
×
57
                .boxSubjectType(this.subjectType)
×
58
                .boxSubjectId(this.subjectId)
×
59
                .build());
×
60
    this.tokenStorage.store(token);
×
61
    return token;
×
62
  }
63

64
  public AccessToken retrieveToken() {
65
    return retrieveToken(null);
×
66
  }
67

68
  @Override
69
  public AccessToken retrieveToken(NetworkSession networkSession) {
70
    AccessToken oldToken = this.tokenStorage.get();
×
71
    if (oldToken == null) {
×
72
      AccessToken newToken = this.refreshToken(networkSession);
×
73
      return newToken;
×
74
    }
75
    return oldToken;
×
76
  }
77

78
  public String retrieveAuthorizationHeader() {
79
    return retrieveAuthorizationHeader(null);
×
80
  }
81

82
  @Override
83
  public String retrieveAuthorizationHeader(NetworkSession networkSession) {
84
    AccessToken token = this.retrieveToken(networkSession);
×
85
    return String.join("", "Bearer ", token.getAccessToken());
×
86
  }
87

88
  public BoxCCGAuth withUserSubject(String userId) {
89
    return withUserSubject(userId, new InMemoryTokenStorage());
×
90
  }
91

92
  public BoxCCGAuth withUserSubject(String userId, TokenStorage tokenStorage) {
93
    CCGConfig newConfig =
×
94
        new CCGConfig.Builder(this.config.getClientId(), this.config.getClientSecret())
×
95
            .enterpriseId(this.config.getEnterpriseId())
×
96
            .userId(userId)
×
97
            .tokenStorage(tokenStorage)
×
98
            .build();
×
99
    return new BoxCCGAuth(newConfig);
×
100
  }
101

102
  public BoxCCGAuth withEnterpriseSubject(String enterpriseId) {
103
    return withEnterpriseSubject(enterpriseId, new InMemoryTokenStorage());
×
104
  }
105

106
  public BoxCCGAuth withEnterpriseSubject(String enterpriseId, TokenStorage tokenStorage) {
107
    CCGConfig newConfig =
×
108
        new CCGConfig.Builder(this.config.getClientId(), this.config.getClientSecret())
×
109
            .enterpriseId(enterpriseId)
×
110
            .userId(null)
×
111
            .tokenStorage(tokenStorage)
×
112
            .build();
×
113
    return new BoxCCGAuth(newConfig);
×
114
  }
115

116
  @Override
117
  public AccessToken downscopeToken(
118
      List<String> scopes, String resource, String sharedLink, NetworkSession networkSession) {
119
    AccessToken token = this.retrieveToken(networkSession);
×
120
    if (token == null) {
×
121
      throw new BoxSDKError(
×
122
          "No access token is available. Make an API call to retrieve a token before calling this method.");
123
    }
124
    AuthorizationManager authManager =
×
125
        new AuthorizationManager.Builder()
126
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
×
127
            .build();
×
128
    AccessToken downscopedToken =
×
129
        authManager.requestAccessToken(
×
130
            new PostOAuth2Token.Builder(
131
                    PostOAuth2TokenGrantTypeField.URN_IETF_PARAMS_OAUTH_GRANT_TYPE_TOKEN_EXCHANGE)
132
                .subjectToken(token.getAccessToken())
×
133
                .subjectTokenType(
×
134
                    PostOAuth2TokenSubjectTokenTypeField
135
                        .URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ACCESS_TOKEN)
136
                .resource(resource)
×
137
                .scope(String.join(" ", scopes))
×
138
                .boxSharedLink(sharedLink)
×
139
                .build());
×
140
    return downscopedToken;
×
141
  }
142

143
  public void revokeToken() {
144
    revokeToken(null);
×
145
  }
×
146

147
  @Override
148
  public void revokeToken(NetworkSession networkSession) {
149
    AccessToken oldToken = this.tokenStorage.get();
×
150
    if (oldToken == null) {
×
151
      return;
×
152
    }
153
    AuthorizationManager authManager =
×
154
        new AuthorizationManager.Builder()
155
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
×
156
            .build();
×
157
    authManager.revokeAccessToken(
×
158
        new PostOAuth2Revoke.Builder()
159
            .clientId(this.config.getClientId())
×
160
            .clientSecret(this.config.getClientSecret())
×
161
            .token(oldToken.getAccessToken())
×
162
            .build());
×
163
    this.tokenStorage.clear();
×
164
  }
×
165

166
  public TokenStorage getTokenStorage() {
167
    return tokenStorage;
×
168
  }
169
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc