private OAuthContext getOAuthContext() {
   OAuthContext oauth = mc.getContent(OAuthContext.class);
   if (oauth == null || oauth.getSubject() == null || oauth.getSubject().getLogin() == null) {
     throw new WebApplicationException(403);
   }
   return oauth;
 }
  @POST
  public void updateCalendar(
      @FormParam("hour") int hour, @FormParam("description") String description) {
    // This permission check can be done in a custom filter; it can be simpler to do
    // in the actual service code if the context data (such as an hour in this case)
    // are not available in the request URI but in the message payload
    OAuthContext oauth = getOAuthContext();
    List<OAuthPermission> perms = oauth.getPermissions();
    boolean checkPassed = false;
    for (OAuthPermission perm : perms) {
      if (perm.getPermission().startsWith(OAuthConstants.UPDATE_CALENDAR_SCOPE)) {
        int authorizedHour =
            Integer.valueOf(
                perm.getPermission().substring(OAuthConstants.UPDATE_CALENDAR_SCOPE.length()));
        if (authorizedHour == 24 || authorizedHour == hour) {
          checkPassed = true;
        }
      }
    }
    if (!checkPassed) {
      throw new WebApplicationException(403);
    }
    // end of the check

    Calendar calendar = getUserCalendar();
    calendar.getEntry(hour).setEventDescription(description);
  }
 @GET
 public Calendar getUserCalendar() {
   OAuthContext oauth = getOAuthContext();
   String userName = oauth.getSubject().getLogin();
   UserAccount account = accounts.getAccount(userName);
   if (account == null) {
     account = accounts.getAccountWithAlias(userName);
   }
   Calendar calendar = new Calendar();
   return calendar;
 }
 @GET
 @Produces({"application/json", "application/jwt"})
 public Response getUserInfo() {
   OAuthContext oauth = OAuthContextUtils.getContext(mc);
   UserInfo userInfo =
       userInfoProvider.getUserInfo(
           oauth.getClientId(), oauth.getSubject(), oauth.getPermissions());
   if (userInfo != null) {
     userInfo.setIssuer(issuer);
   }
   userInfo.setAudience(oauth.getClientId());
   Object responseEntity = userInfo;
   if (super.isJwsRequired() || super.isJweRequired()) {
     responseEntity =
         super.processJwt(
             new JwtToken(userInfo), oauthDataProvider.getClient(oauth.getClientId()));
   }
   return Response.ok(responseEntity).build();
 }