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

box / box-java-sdk / #6244

10 Feb 2026 05:27PM UTC coverage: 40.749% (+22.6%) from 18.192%
#6244

push

github

web-flow
fix(boxsdkgen): Move assigning default values from builder constructor to `build()` method (box/box-codegen#922) (#1712)

0 of 1677 new or added lines in 569 files covered. (0.0%)

2146 existing lines in 544 files now uncovered.

7382 of 18116 relevant lines covered (40.75%)

0.46 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/developertokenauth/BoxDeveloperTokenAuth.java
1
package com.box.sdkgen.box.developertokenauth;
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.PostOAuth2TokenGrantTypeField;
13
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenSubjectTokenTypeField;
14
import java.util.List;
15

16
public class BoxDeveloperTokenAuth implements Authentication {
17

18
  public final String token;
19

20
  /** Configuration object of DeveloperTokenAuth. */
21
  public DeveloperTokenConfig config;
22

23
  /**
24
   * An object responsible for storing token. If no custom implementation provided, the token will
25
   * be stored in memory.
26
   */
27
  public final TokenStorage tokenStorage;
28

29
  public BoxDeveloperTokenAuth(String token) {
×
30
    this.token = token;
×
31
    this.config = new DeveloperTokenConfig();
×
32
    this.tokenStorage =
×
33
        new InMemoryTokenStorage.Builder()
34
            .token(new AccessToken.Builder().accessToken(this.token).build())
×
35
            .build();
×
36
  }
×
37

38
  protected BoxDeveloperTokenAuth(Builder builder) {
×
39
    this.token = builder.token;
×
40
    this.config = builder.config;
×
41
    this.tokenStorage =
×
42
        new InMemoryTokenStorage.Builder()
43
            .token(new AccessToken.Builder().accessToken(this.token).build())
×
44
            .build();
×
45
  }
×
46

47
  /** Retrieves stored developer token */
48
  public AccessToken retrieveToken() {
49
    return retrieveToken(null);
×
50
  }
51

52
  /**
53
   * Retrieves stored developer token
54
   *
55
   * @param networkSession An object to keep network session state
56
   */
57
  @Override
58
  public AccessToken retrieveToken(NetworkSession networkSession) {
59
    AccessToken token = this.tokenStorage.get();
×
60
    if (token == null) {
×
61
      throw new BoxSDKError("No access token is available.");
×
62
    }
63
    return token;
×
64
  }
65

66
  /** Developer token cannot be refreshed */
67
  public AccessToken refreshToken() {
68
    return refreshToken(null);
×
69
  }
70

71
  /**
72
   * Developer token cannot be refreshed
73
   *
74
   * @param networkSession An object to keep network session state
75
   */
76
  @Override
77
  public AccessToken refreshToken(NetworkSession networkSession) {
78
    throw new BoxSDKError("Developer token has expired. Please provide a new one.");
×
79
  }
80

81
  public String retrieveAuthorizationHeader() {
82
    return retrieveAuthorizationHeader(null);
×
83
  }
84

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

91
  /**
92
   * Revoke an active Access Token, effectively logging a user out that has been previously
93
   * authenticated.
94
   */
95
  public void revokeToken() {
96
    revokeToken(null);
×
97
  }
×
98

99
  /**
100
   * Revoke an active Access Token, effectively logging a user out that has been previously
101
   * authenticated.
102
   *
103
   * @param networkSession An object to keep network session state
104
   */
105
  @Override
106
  public void revokeToken(NetworkSession networkSession) {
107
    AccessToken token = this.tokenStorage.get();
×
108
    if (token == null) {
×
109
      return;
×
110
    }
111
    AuthorizationManager authManager =
×
112
        new AuthorizationManager.Builder()
113
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
×
114
            .build();
×
115
    authManager.revokeAccessToken(
×
116
        new PostOAuth2Revoke.Builder()
117
            .clientId(this.config.getClientId())
×
118
            .clientSecret(this.config.getClientSecret())
×
119
            .token(token.getAccessToken())
×
120
            .build());
×
121
    this.tokenStorage.clear();
×
122
  }
×
123

124
  /**
125
   * Downscope access token to the provided scopes. Returning a new access token with the provided
126
   * scopes, with the original access token unchanged.
127
   *
128
   * @param scopes The scope(s) to apply to the resulting token.
129
   * @param resource The file or folder to get a downscoped token for. If None and shared_link None,
130
   *     the resulting token will not be scoped down to just a single item. The resource should be a
131
   *     full URL to an item, e.g. https://api.box.com/2.0/files/123456.
132
   * @param sharedLink The shared link to get a downscoped token for. If None and item None, the
133
   *     resulting token will not be scoped down to just a single item.
134
   * @param networkSession An object to keep network session state
135
   */
136
  @Override
137
  public AccessToken downscopeToken(
138
      List<String> scopes, String resource, String sharedLink, NetworkSession networkSession) {
139
    AccessToken token = this.retrieveToken(networkSession);
×
140
    if (token == null || token.getAccessToken() == null) {
×
141
      throw new BoxSDKError("No access token is available.");
×
142
    }
143
    AuthorizationManager authManager =
×
144
        new AuthorizationManager.Builder()
145
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
×
146
            .build();
×
147
    AccessToken downscopedToken =
×
148
        authManager.requestAccessToken(
×
149
            new PostOAuth2Token.Builder(
150
                    PostOAuth2TokenGrantTypeField.URN_IETF_PARAMS_OAUTH_GRANT_TYPE_TOKEN_EXCHANGE)
151
                .subjectToken(token.getAccessToken())
×
152
                .subjectTokenType(
×
153
                    PostOAuth2TokenSubjectTokenTypeField
154
                        .URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ACCESS_TOKEN)
155
                .resource(resource)
×
156
                .scope(String.join(" ", scopes))
×
157
                .boxSharedLink(sharedLink)
×
158
                .build());
×
159
    return downscopedToken;
×
160
  }
161

162
  public TokenStorage getTokenStorage() {
163
    return tokenStorage;
×
164
  }
165

166
  public static class Builder {
167

168
    protected final String token;
169

170
    protected DeveloperTokenConfig config;
171

172
    public Builder(String token) {
×
173
      this.token = token;
×
174
    }
×
175

176
    public Builder config(DeveloperTokenConfig config) {
177
      this.config = config;
×
UNCOV
178
      return this;
×
179
    }
180

181
    public BoxDeveloperTokenAuth build() {
NEW
182
      if (this.config == null) {
×
NEW
183
        this.config = new DeveloperTokenConfig();
×
184
      }
UNCOV
185
      return new BoxDeveloperTokenAuth(this);
×
186
    }
187
  }
188
}
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