Неправильная ошибка ошибка, которая говорит, чтобы вставить ";" и "}" в Eclipse - PullRequest
0 голосов
/ 16 июня 2019

Я использую Eclipse IDE для разработчиков корпоративных Java. Версия: 2019-03 (4.11.0), идентификатор сборки: 20190314-1200 - последняя версия Eclipse EE.

Я получаю сообщение об ошибке в IDE в строке кода, которая говорит:

Несколько маркеров на этой линии

Синтаксическая ошибка, вставьте ";" завершить ReturnStatement

Синтаксическая ошибка, вставьте "}" для завершения блока

Я проверил все {и} и;. Они все на месте.

Если я вставлю ";" или "}", как указывает ошибка, появляются дополнительные ошибки, говорящие о том же.

Есть ли в Eclipse ошибка, о которой кто-нибудь знает?

Вот код, где происходит ошибка. Я пометил точную строку, в которой произошла ошибка, с комментарием «ошибка здесь»

@SuppressWarnings("unchecked")
public Authentication getAuthentication(HttpServletRequest request) throws ParseException, BadJOSEException, JOSEException {
    String idToken = request.getHeader("Authorization");
    if (null == idToken) {
        //          throw new CognitoException(NO_TOKEN_FOUND,
        //                  CognitoException.NO_TOKEN_PROVIDED_EXCEPTION, 
        //                  "No token found in Http Authorization Header");
        System.out.println("No token found in Http Authorization Header");
    } else {
        idToken = extractAndDecodeJwt(idToken);
        JWTClaimsSet claimsSet = null;
        claimsSet = configurableJWTProcessor.process(idToken, null);
        if (!isIssuedCorrectly(claimsSet)) {
            //                  throw new CognitoException(INVALID_TOKEN,
            //                          CognitoException.INVALID_TOKEN_EXCEPTION_CODE, 
            //                          String.format("Issuer %s in JWT token doesn't match cognito idp %s", 
            //                                  claimsSet.getIssuer(),jwtConfiguration.getCognitoIdentityPoolUrl()));
            System.out.println("Issuer in JWT token doesn't match cognito idp");
        }

        if(!isIdToken(claimsSet)) {
            //                  throw new CognitoException(INVALID_TOKEN,
            //                          CognitoException.NOT_A_TOKEN_EXCEPTION, 
            //                          "JWT Token doesn't seem to be an ID Token");
            System.out.println("JWT Token doesn't seem to be an ID Token");
        }

        String username = claimsSet.getClaims()
                .get("cognito:username").toString();

        @SuppressWarnings("unchecked")
        List<String> groups = (List<String>) claimsSet.getClaims()
        .get("cognito:groups");
        List<String> grantedAuthorities = convertList(groups, group-> new 
                SimpleGrantedAuthority("ROLE_" + group.toUpperCase()));
        User user = new User(username, "", grantedAuthorities);

        return new CognitoJwtAuthentication(user, claimsSet, grantedAuthorities); // error here

              }
}

Я заметил, что оператор return находится в другой области видимости (области действия оператора if) в пределах области действия метода. Похоже, что оператор return должен находиться вне этой внутренней области видимости. Интересно, это как-то связано с ошибкой?

1 Ответ

0 голосов
/ 16 июня 2019

В вашем первом условии if вы ничего не возвращаете из того, что я вижу, это вызовет проблему, так как вы перестанете ничего не возвращать там, где вы должны возвращать "Аутентификацию".

И ваши допоследний "}" не предназначен правильно, вы должны исправить это, чтобы сделать его более понятным!

...