001/* 002 * Copyright (C) 2016 The Guava Authors 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package com.google.common.collect; 018 019import com.google.gwt.user.client.rpc.SerializationException; 020import com.google.gwt.user.client.rpc.SerializationStreamReader; 021import com.google.gwt.user.client.rpc.SerializationStreamWriter; 022 023/** 024 * This class implements the GWT serialization of {@link Range}. 025 * 026 * @author Dean de Bree 027 */ 028public class Range_CustomFieldSerializer { 029 030 public static void deserialize(SerializationStreamReader reader, Range<?> instance) {} 031 032 public static Range<?> instantiate(SerializationStreamReader reader) 033 throws SerializationException { 034 035 Cut lowerBound; 036 boolean hasLowerBound = reader.readBoolean(); 037 if (hasLowerBound) { 038 boolean lowerIsClosed = reader.readBoolean(); 039 Comparable lower = (Comparable) reader.readObject(); 040 041 lowerBound = lowerIsClosed ? Cut.belowValue(lower) : Cut.aboveValue(lower); 042 } else { 043 lowerBound = Cut.belowAll(); 044 } 045 046 Cut upperBound; 047 boolean hasUpperBound = reader.readBoolean(); 048 if (hasUpperBound) { 049 boolean upperIsClosed = reader.readBoolean(); 050 Comparable upper = (Comparable) reader.readObject(); 051 052 upperBound = upperIsClosed ? Cut.aboveValue(upper) : Cut.belowValue(upper); 053 } else { 054 upperBound = Cut.aboveAll(); 055 } 056 057 return Range.create(lowerBound, upperBound); 058 } 059 060 public static void serialize(SerializationStreamWriter writer, Range<?> instance) 061 throws SerializationException { 062 063 if (instance.hasLowerBound()) { 064 writer.writeBoolean(true); 065 writer.writeBoolean(instance.lowerBoundType() == BoundType.CLOSED); 066 writer.writeObject(instance.lowerEndpoint()); 067 } else { 068 writer.writeBoolean(false); 069 } 070 071 if (instance.hasUpperBound()) { 072 writer.writeBoolean(true); 073 writer.writeBoolean(instance.upperBoundType() == BoundType.CLOSED); 074 writer.writeObject(instance.upperEndpoint()); 075 } else { 076 writer.writeBoolean(false); 077 } 078 } 079}