Java преобразовать класс из Java 14 в 1,7 - PullRequest
0 голосов
/ 04 августа 2020

Я знаю, что обычно люди делают это наоборот, но как мне преобразовать следующий класс из Java 14 в Java 1.7.

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

/**
 * Creates Jwt token and other util methods.
 */
public class JwtTokenUtil {

    private String SECRET_KEY = "secret-876123";

    public String extractUserName(String token) {
        return extractClaim(token, Claims::getSubject);
    }

    public Date extractExpiration(String token) {
        return extractClaim(token, Claims::getExpiration);
    }

    public <T> T extractClaim(String token, Function<Claims, T> claimsResolver) {
        final Claims claims = extractAllClaims(token);
        return claimsResolver.apply(claims);
    }

    private Claims extractAllClaims(String token) {
        return Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody();
    }

    private Boolean isTokenExpired(String token) {
        return extractExpiration(token).before(new Date());
    }

    /**
     * Pass in user details, and get a Jwt
     * @param userDetails
     * @return
     */
    public String generateToken(UserDetails userDetails) {
        Map<String,Object> claims = new HashMap<>();
        return createToken(claims, userDetails.getUsername());
    }

    private String createToken(Map<String,Object> claims, String subject) {
        return Jwts.builder().setClaims(claims).setSubject(subject).setIssuedAt(new Date(System.currentTimeMillis()))
                .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 10)) // 10 hrs
                .signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact();
    }

    public Boolean validteToken(String token, UserDetails userDetails) {
        final String username = extractUserName(token);
        return (username.equals(userDetails.getUsername()) && !isTokenExpired(token));
    }
}

Есть ошибки компиляции:

  • лямбда-выражения: Claims::getSubject и Claims::getExpiration.
  • следующий импорт не существует в Java 1.7: import java.util.function.Function;

1 Ответ

1 голос
/ 04 августа 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...