java类org.bukkit.configuration.serialization.ConfigurationSerializable的实例源码

ConfigurationSerializableAdapter.java 文件源码 项目:MCLibrary 阅读 21 收藏 0 点赞 0 评论 0
public static ConfigurationSerializable deserialize(Map<String, Object> map) {
    if (map == null)
        return null;

    for (Map.Entry<String, Object> entry : map.entrySet()) {
        String key = entry.getKey();
        Object val = entry.getValue();

        if (!(val instanceof Map))
            continue;

        Map<String, Object> subMap = (Map<String, Object>) val;
        if (subMap.containsKey(SERIALIZED_TYPE_KEY)) {
            map.put(key, deserialize(subMap));
        }
    }
    return ConfigurationSerialization.deserializeObject(map);
}
BukkitTypeAdapterFactory.java 文件源码 项目:MCLibrary 阅读 27 收藏 0 点赞 0 评论 0
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
    Class<?> rawType = type.getRawType();
    TypeAdapter<Map> mapAdapter = gson.getAdapter(Map.class);
    TypeAdapter<Collection> collectionAdapter = gson.getAdapter(Collection.class);
    if (Location.class.isAssignableFrom(rawType)) {
        return (TypeAdapter<T>) new LocationTypeAdapter();
    } else if (ConfigurationSerializable.class.isAssignableFrom(rawType)) {
        return (TypeAdapter<T>) new ConfigurationSerializableAdapter(mapAdapter);
    } else if (GUISignature.class.isAssignableFrom(rawType)) {
        return (TypeAdapter<T>) new GUISignatureTypeAdapter(mapAdapter, collectionAdapter);
    } else if (MaterialAndData.class.isAssignableFrom(rawType)) {
        return (TypeAdapter<T>) new MaterialAndDataAdapter();
    }
    return null;
}
PrimitiveComponent.java 文件源码 项目:GameDispenser 阅读 19 收藏 0 点赞 0 评论 0
public PrimitiveComponent() {
    super(  Integer.class,
            Integer.TYPE,
            String.class,
            Float.class,
            Float.TYPE,
            Boolean.class,
            Boolean.TYPE,
            Double.class,
            Double.TYPE,
            Long.class,
            Long.TYPE,
            Short.class,
            Short.TYPE,
            Byte.class,
            Byte.TYPE,
            Character.class,
            Character.TYPE,
            ConfigurationSerializable.class);
}
FileSerialization.java 文件源码 项目:SwornAPI 阅读 21 收藏 0 点赞 0 评论 0
/**
 * Loads a previously serialized object from a given file using YAML.
 * 
 * @param file File to load from
 * @param clazz Class the object should be of
 * @param exists Whether or not the file exists and the expensive
 *        {@link File#exists()} operation can be skipped
 * @return The deserialized object, or null if the file does not exist
 * @throws IllegalArgumentException If the file or class is null
 * @throws IOException If the file cannot be read
 * @throws InvalidConfigurationException If the given file is not a valid
 *         YAML configuration
 * @see #save(ConfigurationSerializable, File)
 */
@SuppressWarnings("unchecked")
public static <T extends ConfigurationSerializable> T load(File file, Class<T> clazz, boolean exists) throws IOException, InvalidConfigurationException
{
    Validate.notNull(file, "file cannot be null!");
    Validate.notNull(clazz, "clazz cannot be null!");

    if (! exists && ! file.exists())
        return null;

    YamlConfiguration config = new YamlConfiguration();
    config.load(file);

    Map<String, Object> map = config.getValues(true);
    return (T) ConfigurationSerialization.deserializeObject(map, clazz);
}
FileSerialization.java 文件源码 项目:SwornAPI 阅读 23 收藏 0 点赞 0 评论 0
/**
 * Saves a serializable object to a given file.
 * 
 * @param instance Object to seriaize
 * @param file File to save to
 * @throws IllegalArgumentException If the instance or file is null
 * @throws IOException If the file cannot be written to
 * @see #load(File, Class, boolean)
 */
public static void save(ConfigurationSerializable instance, File file) throws IOException
{
    Validate.notNull(instance, "instance cannot be null!");
    Validate.notNull(file, "file cannot be null!");

    file.delete();
    file.createNewFile();

    YamlConfiguration config = new YamlConfiguration();

    for (Entry<String, Object> entry : instance.serialize().entrySet())
    {
        config.set(entry.getKey(), entry.getValue());
    }

    config.save(file);
}
ItemStackFlag.java 文件源码 项目:HeavySpleef 阅读 20 收藏 0 点赞 0 评论 0
static void marshalSerializeable(Element baseElement, ConfigurationSerializable serializeable) {
    Map<String, Object> serialized = serializeable.serialize();
    if (serializeable instanceof ItemMeta) {
        baseElement.addAttribute("itemmeta", String.valueOf(true));
    }

    for (Entry<String, Object> entry : serialized.entrySet()) {
        Element entryElement = baseElement.addElement(entry.getKey());
        Object value = entry.getValue();

        if (value instanceof ItemMeta) {
            marshalSerializeable(entryElement, (ItemMeta) value);
        } else {
            serializeObject(value, entryElement);
        }
    }
}
Serialization.java 文件源码 项目:PlayerVaults 阅读 25 收藏 0 点赞 0 评论 0
@Deprecated
private static Map<String, Object> handleSerialization(Map<String, Object> map) {
    Map<String, Object> serialized = recreateMap(map);
    for (Entry<String, Object> entry : serialized.entrySet()) {
        if (entry.getValue() instanceof ConfigurationSerializable) {
            entry.setValue(serialize((ConfigurationSerializable) entry.getValue()));
        } else if (entry.getValue() instanceof Iterable<?>) {
            List<Object> newList = new ArrayList<>();
            for (Object object : ((Iterable) entry.getValue())) {
                if (object instanceof ConfigurationSerializable) {
                    object = serialize((ConfigurationSerializable) object);
                }
                newList.add(object);
            }
            entry.setValue(newList);
        } else if (entry.getValue() instanceof Map<?, ?>) {
            // unchecked cast here.  If you're serializing to a non-standard Map you deserve ClassCastExceptions
            entry.setValue(handleSerialization((Map<String, Object>) entry.getValue()));
        }
    }
    return serialized;
}
BukkitSerializableAdapterFactory.java 文件源码 项目:helper 阅读 23 收藏 0 点赞 0 评论 0
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
    Class<? super T> clazz = type.getRawType();

    if (!ConfigurationSerializable.class.isAssignableFrom(clazz)) {
        return null;
    }

    //noinspection unchecked
    return (TypeAdapter<T>) new Adapter(gson);
}
BukkitSerializableAdapterFactory.java 文件源码 项目:helper 阅读 20 收藏 0 点赞 0 评论 0
@Override
public void write(JsonWriter out, ConfigurationSerializable value) {
    Map<String, Object> serialized = value.serialize();

    Map<String, Object> map = new LinkedHashMap<>(serialized.size() + 1);
    map.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(value.getClass()));
    map.putAll(serialized);

    gson.toJson(map, RAW_OUTPUT_TYPE, out);
}
ConfigurationSerializableAdapter.java 文件源码 项目:MCLibrary 阅读 19 收藏 0 点赞 0 评论 0
public static Map<String, Object> serialize(ConfigurationSerializable serializable) {
    Map<String, Object> serialized = new HashMap<>();
    serialized.putAll(serializable.serialize());
    for (Map.Entry<String, Object> entry : serialized.entrySet()) {
        String key = entry.getKey();
        Object val = entry.getValue();

        if (val instanceof ConfigurationSerializable) {
            serialized.put(key, serialize((ConfigurationSerializable) val));
        }
    }
    serialized.put(SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(serializable.getClass()));
    return serialized;
}
ConfigurationSerializableAdapter.java 文件源码 项目:MCLibrary 阅读 22 收藏 0 点赞 0 评论 0
@Override
public void write(JsonWriter out, ConfigurationSerializable value) throws IOException {
    if (value != null)
        mapAdapter.write(out, serialize(value));
    else
        out.nullValue();
}
ConfigurationSerializer.java 文件源码 项目:Skript 阅读 20 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
@Nullable
public final static <T extends ConfigurationSerializable> T deserializeCS(final String s, final Class<T> c) {
    final YamlConfiguration y = new YamlConfiguration();
    try {
        y.loadFromString(s);
    } catch (final InvalidConfigurationException e) {
        return null;
    }
    final Object o = y.get("value");
    if (!c.isInstance(o))
        return null;
    return (T) o;
}
ConfigurationSerializer.java 文件源码 项目:Skript 阅读 17 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
@Deprecated
@Nullable
public final static <T extends ConfigurationSerializable> T deserializeCSOld(final String s, final Class<T> c) {
    final YamlConfiguration y = new YamlConfiguration();
    try {
        y.loadFromString(s.replace("\uFEFF", "\n"));
    } catch (final InvalidConfigurationException e) {
        return null;
    }
    final Object o = y.get("value");
    if (!c.isInstance(o))
        return null;
    return (T) o;
}
Variables.java 文件源码 项目:Skript 阅读 25 收藏 0 点赞 0 评论 0
@SuppressWarnings({"unchecked"})
@Override
@Nullable
public String getID(final @NonNull Class<?> c) {
    if (ConfigurationSerializable.class.isAssignableFrom(c) && Classes.getSuperClassInfo(c) == Classes.getExactClassInfo(Object.class))
        return configurationSerializablePrefix + ConfigurationSerialization.getAlias((Class<? extends ConfigurationSerializable>) c);
    return null;
}
Variables.java 文件源码 项目:Skript 阅读 22 收藏 0 点赞 0 评论 0
@Override
@Nullable
public Class<? extends ConfigurationSerializable> getClass(final @NonNull String id) {
    if (id.startsWith(configurationSerializablePrefix))
        return ConfigurationSerialization.getClassByAlias(id.substring(configurationSerializablePrefix.length()));
    return null;
}
JavaPluginLoader.java 文件源码 项目:Thermos-Bukkit 阅读 22 收藏 0 点赞 0 评论 0
void setClass(final String name, final Class<?> clazz) {
    if (!classes.containsKey(name)) {
        classes.put(name, clazz);

        if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
            Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
            ConfigurationSerialization.registerClass(serializable);
        }
    }
}
JavaPluginLoader.java 文件源码 项目:Thermos-Bukkit 阅读 23 收藏 0 点赞 0 评论 0
private void removeClass(String name) {
    Class<?> clazz = classes.remove(name);

    try {
        if ((clazz != null) && (ConfigurationSerializable.class.isAssignableFrom(clazz))) {
            Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
            ConfigurationSerialization.unregisterClass(serializable);
        }
    } catch (NullPointerException ex) {
        // Boggle!
        // (Native methods throwing NPEs is not fun when you can't stop it before-hand)
    }
}
FireworkEffect.java 文件源码 项目:Thermos-Bukkit 阅读 18 收藏 0 点赞 0 评论 0
/**
 * @see ConfigurationSerializable
 */
public static ConfigurationSerializable deserialize(Map<String, Object> map) {
    Type type = Type.valueOf((String) map.get(TYPE));
    if (type == null) {
        throw new IllegalArgumentException(map.get(TYPE) + " is not a valid Type");
    }

    return builder()
        .flicker((Boolean) map.get(FLICKER))
        .trail((Boolean) map.get(TRAIL))
        .withColor((Iterable<?>) map.get(COLORS))
        .withFade((Iterable<?>) map.get(FADE_COLORS))
        .with(type)
        .build();
}
YamlRepresenter.java 文件源码 项目:Thermos-Bukkit 阅读 21 收藏 0 点赞 0 评论 0
@Override
public Node representData(Object data) {
    ConfigurationSerializable serializable = (ConfigurationSerializable) data;
    Map<String, Object> values = new LinkedHashMap<String, Object>();
    values.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(serializable.getClass()));
    values.putAll(serializable.serialize());

    return super.representData(values);
}
BukkitObjectOutputStream.java 文件源码 项目:Thermos-Bukkit 阅读 20 收藏 0 点赞 0 评论 0
@Override
protected Object replaceObject(Object obj) throws IOException {
    if (!(obj instanceof Serializable) && (obj instanceof ConfigurationSerializable)) {
        obj = Wrapper.newWrapper((ConfigurationSerializable) obj);
    }

    return super.replaceObject(obj);
}
JavaPluginLoader.java 文件源码 项目:CauldronGit 阅读 21 收藏 0 点赞 0 评论 0
void setClass(final String name, final Class<?> clazz) {
    if (!classes.containsKey(name)) {
        classes.put(name, clazz);

        if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
            Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
            ConfigurationSerialization.registerClass(serializable);
        }
    }
}
JavaPluginLoader.java 文件源码 项目:CauldronGit 阅读 21 收藏 0 点赞 0 评论 0
private void removeClass(String name) {
    Class<?> clazz = classes.remove(name);

    try {
        if ((clazz != null) && (ConfigurationSerializable.class.isAssignableFrom(clazz))) {
            Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
            ConfigurationSerialization.unregisterClass(serializable);
        }
    } catch (NullPointerException ex) {
        // Boggle!
        // (Native methods throwing NPEs is not fun when you can't stop it before-hand)
    }
}
FireworkEffect.java 文件源码 项目:CauldronGit 阅读 20 收藏 0 点赞 0 评论 0
/**
 * @see ConfigurationSerializable
 */
public static ConfigurationSerializable deserialize(Map<String, Object> map) {
    Type type = Type.valueOf((String) map.get(TYPE));
    if (type == null) {
        throw new IllegalArgumentException(map.get(TYPE) + " is not a valid Type");
    }

    return builder()
        .flicker((Boolean) map.get(FLICKER))
        .trail((Boolean) map.get(TRAIL))
        .withColor((Iterable<?>) map.get(COLORS))
        .withFade((Iterable<?>) map.get(FADE_COLORS))
        .with(type)
        .build();
}
YamlRepresenter.java 文件源码 项目:CauldronGit 阅读 22 收藏 0 点赞 0 评论 0
@Override
public Node representData(Object data) {
    ConfigurationSerializable serializable = (ConfigurationSerializable) data;
    Map<String, Object> values = new LinkedHashMap<String, Object>();
    values.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(serializable.getClass()));
    values.putAll(serializable.serialize());

    return super.representData(values);
}
BukkitObjectOutputStream.java 文件源码 项目:CauldronGit 阅读 20 收藏 0 点赞 0 评论 0
@Override
protected Object replaceObject(Object obj) throws IOException {
    if (!(obj instanceof Serializable) && (obj instanceof ConfigurationSerializable)) {
        obj = Wrapper.newWrapper((ConfigurationSerializable) obj);
    }

    return super.replaceObject(obj);
}
YamlRepresenter.java 文件源码 项目:Peacecraft 阅读 23 收藏 0 点赞 0 评论 0
@Override
public Node representData(Object data) {
    ConfigurationSerializable serializable = (ConfigurationSerializable) data;
    Map<String, Object> values = new LinkedHashMap<String, Object>();
    values.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(serializable.getClass()));
    values.putAll(serializable.serialize());
    return super.representData(values);
}
GameLoader.java 文件源码 项目:GameDispenser 阅读 25 收藏 0 点赞 0 评论 0
void setClass(final String name, final Class<?> clazz) {
    if (!classes.containsKey(name)) {
        classes.put(name, clazz);

        if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
            Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
            ConfigurationSerialization.registerClass(serializable);
        }
    }
}
NBTMetadataStore.java 文件源码 项目:Tweakkit-Server 阅读 18 收藏 0 点赞 0 评论 0
/**
 * A helper method to convert a tag directly to a MetadataValue.
 *
 * @param plugin The owning plugin
 * @param tag The tag to convert
 * @return A new MetadataValue object, or null if the tag could not be converted
 */
public static PersistentMetadataValue convertToMetadata(Plugin plugin, NBTBase tag) {
    if (plugin == null || tag == null) return null;

    Object converted = convert(tag);
    // Note that we don't currently export arrays as metadata
    if (converted instanceof String) {
        return new PersistentMetadataValue(plugin, (String)converted);
    } else if (converted instanceof Integer) {
        return new PersistentMetadataValue(plugin, (Integer)converted);
    } else if (converted instanceof Short) {
        return new PersistentMetadataValue(plugin, (Short)converted);
    } else if (converted instanceof Byte) {
        return new PersistentMetadataValue(plugin, (Byte)converted);
    } else if (converted instanceof Long) {
        return new PersistentMetadataValue(plugin, (Long)converted);
    } else if (converted instanceof Float) {
        return new PersistentMetadataValue(plugin, (Float)converted);
    } else if (converted instanceof Double) {
        return new PersistentMetadataValue(plugin, (Double)converted);
    } else if (converted instanceof Map) {
        return new PersistentMetadataValue(plugin, (Map<String, ?>)converted);
    } else if (converted instanceof List) {
        return new PersistentMetadataValue(plugin, (List<?>)converted);
    } else if (converted instanceof ConfigurationSerializable) {
        return new PersistentMetadataValue(plugin, (ConfigurationSerializable)converted);
    }

    return null;
}
JavaPluginLoader.java 文件源码 项目:Cauldron 阅读 22 收藏 0 点赞 0 评论 0
void setClass(final String name, final Class<?> clazz) {
    if (!classes.containsKey(name)) {
        classes.put(name, clazz);

        if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
            Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
            ConfigurationSerialization.registerClass(serializable);
        }
    }
}
JavaPluginLoader.java 文件源码 项目:Cauldron 阅读 27 收藏 0 点赞 0 评论 0
private void removeClass(String name) {
    Class<?> clazz = classes.remove(name);

    try {
        if ((clazz != null) && (ConfigurationSerializable.class.isAssignableFrom(clazz))) {
            Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
            ConfigurationSerialization.unregisterClass(serializable);
        }
    } catch (NullPointerException ex) {
        // Boggle!
        // (Native methods throwing NPEs is not fun when you can't stop it before-hand)
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号