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

io.datatree.dom.builtin.AbstractAdapter Maven / Gradle / Ivy

/**
 * This software is licensed under the Apache 2 license, quoted below.
*
* Copyright 2017 Andras Berkes [[email protected]]
*
* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.datatree.dom.builtin; import java.util.Map; import java.util.function.Consumer; import io.datatree.dom.Config; import io.datatree.dom.TreeReader; import io.datatree.dom.TreeWriter; import io.datatree.dom.WriterFunction; /** * Reader / writer class. * * @author Andras Berkes [[email protected]] */ public abstract class AbstractAdapter implements TreeReader, TreeWriter { @SafeVarargs @SuppressWarnings({ "unchecked" }) protected static final boolean tryToAddSerializers(String consumerClass, T... factories) { boolean allInstalled = true; for (T factory : factories) { try { ((Consumer) Class.forName(consumerClass).newInstance()).accept(factory); } catch (Throwable ignored) { // Classes aren't available allInstalled = false; } } return allInstalled; } protected static final byte[] toBinary(Object value, Object meta, boolean insertMeta, WriterFunction implementation) { if (value == null) { return new byte[0]; } Map map = insertMeta(value, meta, insertMeta); try { return implementation.apply(value); } catch (Exception cause) { throw new IllegalArgumentException("Unable to deserialize object!", cause); } finally { removeMeta(map); } } protected static final String toString(Object value, Object meta, boolean insertMeta, WriterFunction implementation) { if (value == null) { return ""; } Map map = insertMeta(value, meta, insertMeta); try { return implementation.apply(value); } catch (Exception cause) { cause.printStackTrace(); throw new IllegalArgumentException("Unable to deserialize object!", cause); } finally { removeMeta(map); } } @SuppressWarnings("unchecked") protected static final Map insertMeta(Object value, Object meta, boolean insertMeta) { if (!insertMeta || value == null || meta == null) { return null; } if (!(value instanceof Map)) { return null; } Map map = (Map) value; map.put(Config.META, meta); return map; } protected static final void removeMeta(Map map) { if (map != null) { map.remove(Config.META); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy