/* * Copyright 2008 Google Inc. * * 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 com.google.gwt.user.client.rpc.core.java.util.logging; import com.google.gwt.core.client.impl.SerializableThrowable; import com.google.gwt.user.client.rpc.SerializationException; import com.google.gwt.user.client.rpc.SerializationStreamReader; import com.google.gwt.user.client.rpc.SerializationStreamWriter; import java.util.logging.Level; import java.util.logging.LogRecord; /** * Custom serializer for LogRecord. */ public class LogRecord_CustomFieldSerializer { public static void deserialize(SerializationStreamReader reader, LogRecord instance) throws SerializationException { String loggerName = reader.readString(); Long millis = reader.readLong(); Object throwable = reader.readObject(); instance.setLoggerName(loggerName); instance.setMillis(millis); if (throwable != null && throwable instanceof SerializableThrowable) { instance.setThrown(((SerializableThrowable) throwable).getThrowable()); } } public static LogRecord instantiate(SerializationStreamReader reader) throws SerializationException { // Note: Fields should be read in the same order that they were written. String levelString = reader.readString(); String msg = reader.readString(); Level level = Level.parse(levelString); LogRecord toReturn = new LogRecord(level, msg); return toReturn; } public static void serialize(SerializationStreamWriter writer, LogRecord lr) throws SerializationException { // Although Level is serializable, the Level in LogRecord is actually a // LevelWithExposedConstructor, which serialization does not like, so we // manually just serialize the name. writer.writeString(lr.getLevel().getName()); writer.writeString(lr.getMessage()); writer.writeString(lr.getLoggerName()); writer.writeLong(lr.getMillis()); if (lr.getThrown() != null) { writer.writeObject(new SerializableThrowable(lr.getThrown())); } else { writer.writeObject(null); } } }