All we need is a lenient Base64 decoder. Drop the dependency
on javax.xml.bind and use plain java.base-provided one.
JIRA: YANGTOOLS-1174
Change-Id: If02fce547142f3d5b17d8529716d5b266a50a3a8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
a434c624a2a57ddb213af160bdd7341c7fe39e97)
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
- <dependency>
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- </dependency>
<dependency>
<groupId>javax.inject</groupId>
<dependency>
<groupId>javax.inject</groupId>
import com.google.common.annotations.Beta;
import com.google.common.collect.RangeSet;
import java.util.Base64;
import com.google.common.annotations.Beta;
import com.google.common.collect.RangeSet;
import java.util.Base64;
-import javax.xml.bind.DatatypeConverter;
import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
import org.opendaylight.yangtools.yang.data.api.codec.BinaryCodec;
import org.opendaylight.yangtools.yang.data.api.codec.YangInvalidValueException;
import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
import org.opendaylight.yangtools.yang.data.api.codec.BinaryCodec;
import org.opendaylight.yangtools.yang.data.api.codec.YangInvalidValueException;
@Override
public final byte[] deserializeImpl(final String product) {
@Override
public final byte[] deserializeImpl(final String product) {
- final byte[] ret = DatatypeConverter.parseBase64Binary(product);
+ // https://tools.ietf.org/html/rfc4648#section-4 plus lenient to allow for MIME blocks
+ final byte[] ret = Base64.getMimeDecoder().decode(product);
validate(ret);
return ret;
}
@Override
protected final String serializeImpl(final byte[] data) {
validate(ret);
return ret;
}
@Override
protected final String serializeImpl(final byte[] data) {
+ // We do not split data on 76 characters on output
return Base64.getEncoder().encodeToString(data);
}
return Base64.getEncoder().encodeToString(data);
}