| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| */ |
| /** |
| * Abstracts a minimal subset of Kryo types and methods. |
| * <p> |
| * Kryo is often shaded. For instance, TinkerPop's Gryo |
| * serializer relies on a shaded Kryo package. |
| * TinkerPop serializers written against a particular shaded |
| * Kryo package (or an unshaded Kryo package) are compatible |
| * only with that package. In contrast, TinkerPop serializers written |
| * against this abstraction can be used with any shaded or |
| * unshaded Kryo package, so long as the signatures and behavior |
| * of the methods in this package remain stable. |
| * <p> |
| * To show how this is useful, consider |
| * {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraphSerializer}. |
| * This class has logic unique to TinkerPop that performs |
| * efficient and forward-compatible serialization of |
| * {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraph} |
| * instances. It takes advantage of package-level visibility |
| * and the fact that it shares a package with its target, |
| * so it would be challenging to cleanly and naturally replicate |
| * (i.e. without package spoofing or runtime visibility overrides). |
| * By implementing |
| * {@link org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim} |
| * instead of, say, Gryo's shaded |
| * {@link org.apache.tinkerpop.shaded.kryo.Serializer}, |
| * such a serializer can be used with anybody's Kryo package, |
| * regardless of whether |
| * that package is shaded or not. This lets third-parties reuse |
| * TinkerPop's efficient, internals-aware StarGraph serializer on |
| * their own serialization platform (and without altering |
| * TinkerPop's bytecode, let alone its source). |
| * <p> |
| * The number of types and methods in this |
| * package is deliberately small to reduce the likelihood of a |
| * new Kryo release introducing an incompatible change. |
| */ |
| package org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim; |