blob: 6eab50cd3a79a8aacd433c2f2cd7685010f8c429 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.v23.security;
import io.v.v23.vdl.NativeTypes;
import io.v.v23.vdl.VdlValue;
/**
* Converts blessing patterns into their wire representations and vice-versa.
* <p>
* This class is used by the VOM encoder to automatically convert the wire
* type into its Java native type and vice-versa.
*/
public final class BlessingPatternNativeConverter extends NativeTypes.Converter {
/**
* Singleton instance of the {@link BlessingPatternNativeConverter}.
*/
public static final BlessingPatternNativeConverter INSTANCE =
new BlessingPatternNativeConverter();
private BlessingPatternNativeConverter() {
super(WireBlessingPattern.class);
}
@Override
public VdlValue vdlValueFromNative(Object nativeValue) {
assertInstanceOf(nativeValue, BlessingPattern.class);
// Can't simply cast here as the VOM encoder expects the returned
// value's getClass() method to return WireBlessingPattern. (With
// casting it would return BlessingPattern.)
return new WireBlessingPattern(((BlessingPattern) nativeValue).getValue());
}
@Override
public Object nativeFromVdlValue(VdlValue value) {
assertInstanceOf(value, WireBlessingPattern.class);
return new BlessingPattern((WireBlessingPattern) value);
}
}