All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jd.blockchain.ledger.resolver.AbstractBytesValueResolver Maven / Gradle / Ivy

There is a newer version: 1.6.5.RELEASE
Show newest version
package com.jd.blockchain.ledger.resolver;

import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.DataType;

import utils.Bytes;

public abstract class AbstractBytesValueResolver implements BytesValueResolver {

    protected boolean isSupport(Class type) {
        if (type == null) {
            return false;
        }
        Class[] supports = supportClasses();
        if (supports != null && supports.length > 0) {
            for (Class clazz : supports) {
                if (type.equals(clazz)) {
                    return true;
                }
            }
        }
        return false;
    }

    protected boolean isSupport(DataType dataType) {
        if (dataType == null) {
            return false;
        }
        DataType[] supports = supportDataTypes();
        if (supports != null && supports.length > 0) {
            for (DataType dt : supports) {
                if (dataType.equals(dt)) {
                    return true;
                }
            }
        }
        return false;
    }

    @Override
    public BytesValue encode(Object value) {
        return encode(value, value.getClass());
    }

    @Override
    public Object decode(BytesValue value) {
        DataType dataType = value.getType();
        if (!isSupport(dataType)) {
            throw new IllegalStateException(String.format("Un-support encode DataType[%s] Object !!!", dataType.name()));
        }
        return decode(value.getBytes());
    }

    protected abstract Object decode(Bytes value);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy