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

org.glassfish.jersey.internal.guava.Serialization Maven / Gradle / Ivy

Go to download

A bundle project producing JAX-RS RI bundles. The primary artifact is an "all-in-one" OSGi-fied JAX-RS RI bundle (jaxrs-ri.jar). Attached to that are two compressed JAX-RS RI archives. The first archive (jaxrs-ri.zip) consists of binary RI bits and contains the API jar (under "api" directory), RI libraries (under "lib" directory) as well as all external RI dependencies (under "ext" directory). The secondary archive (jaxrs-ri-src.zip) contains buildable JAX-RS RI source bundle and contains the API jar (under "api" directory), RI sources (under "src" directory) as well as all external RI dependencies (under "ext" directory). The second archive also contains "build.xml" ANT script that builds the RI sources. To build the JAX-RS RI simply unzip the archive, cd to the created jaxrs-ri directory and invoke "ant" from the command line.

There is a newer version: 3.1.6
Show newest version
/*
 * Copyright (C) 2008 The Guava Authors
 *
 * 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 org.glassfish.jersey.internal.guava;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Collection;
import java.util.Map;

/**
 * Provides static methods for serializing collection classes.
 * 

*

This class assists the implementation of collection classes. Do not use * this class to serialize collections that are defined elsewhere. * * @author Jared Levy */ final class Serialization { private Serialization() { } /** * Reads a count corresponding to a serialized map, multiset, or multimap. It * returns the size of a map serialized by {@link * #writeMap(Map, ObjectOutputStream)}, the number of distinct elements in a * multiset serialized by {@link * #writeMultiset(Multiset, ObjectOutputStream)}, or the number of distinct * keys in a multimap serialized by {@link * #writeMultimap(Multimap, ObjectOutputStream)}. *

*

The returned count may be used to construct an empty collection of the * appropriate capacity before calling any of the {@code populate} methods. */ static int readCount(ObjectInputStream stream) throws IOException { return stream.readInt(); } /** * Stores the contents of a multimap in an output stream, as part of * serialization. It does not support concurrent multimaps whose content may * change while the method is running. The {@link Multimap#asMap} view * determines the ordering in which data is written to the stream. *

*

The serialized output consists of the number of distinct keys, and then * for each distinct key: the key, the number of values for that key, and the * key's values. */ static void writeMultimap( Multimap multimap, ObjectOutputStream stream) throws IOException { stream.writeInt(multimap.asMap().size()); for (Map.Entry> entry : multimap.asMap().entrySet()) { stream.writeObject(entry.getKey()); stream.writeInt(entry.getValue().size()); for (V value : entry.getValue()) { stream.writeObject(value); } } } /** * Populates a multimap by reading an input stream, as part of * deserialization. See {@link #writeMultimap} for the data format. */ static void populateMultimap( Multimap multimap, ObjectInputStream stream) throws IOException, ClassNotFoundException { int distinctKeys = stream.readInt(); populateMultimap(multimap, stream, distinctKeys); } /** * Populates a multimap by reading an input stream, as part of * deserialization. See {@link #writeMultimap} for the data format. The number * of distinct keys is determined by a prior call to {@link #readCount}. */ static void populateMultimap( Multimap multimap, ObjectInputStream stream, int distinctKeys) throws IOException, ClassNotFoundException { for (int i = 0; i < distinctKeys; i++) { @SuppressWarnings("unchecked") // reading data stored by writeMultimap K key = (K) stream.readObject(); Collection values = multimap.get(key); int valueCount = stream.readInt(); for (int j = 0; j < valueCount; j++) { @SuppressWarnings("unchecked") // reading data stored by writeMultimap V value = (V) stream.readObject(); values.add(value); } } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy