On Tue, 2013-02-05 at 12:39, Dennis Reedy wrote: > This also happens with updates to Java 1.6 (u39). The fix looks to be simple. > The Levels class seems to be the issue. Unless I'm missing something, it > seems straight forward enough the create a custom level without using the > ClassReplacingObjectOutputStream and the LevelData approach. I modified > Levels (attached on my reply), rebuilt and everything seems to load > successfully. Without this fix I have a complete show stopper for some of my > installations. > > I'd like to request that this gets fixed ASAP and a new release produced. >
Any committers on the list? Oh wait, aren't you one, Dennis :-) Actually, could you open a Jira ticket for this and attach your patch? I suspect that since it's a core library, we might be best to "Review then commit" on this one. I agree that a quick release is in order. Perhaps we should branch from the last stable release and patch/release that? Opinions anyone? Cheers, Greg, > Thanks > > Dennis > > > /* > * 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. > */ > > package com.sun.jini.logging; > > import java.io.ByteArrayInputStream; > import java.io.ByteArrayOutputStream; > import java.io.IOException; > import java.io.ObjectInputStream; > import java.io.ObjectOutputStream; > import java.io.ObjectStreamClass; > import java.io.OutputStream; > import java.io.Serializable; > import java.lang.String; > import java.util.logging.Level; > > /** > * Defines additional {@link Level} values. <p> > * <p/> > * See the {@link LogManager} class for one way to use the <code>FAILED</code> > * and <code>HANDLED</code> logging levels in standard logging configuration > * files. > * > * @author Sun Microsystems, Inc. > * @since 2.0 > */ > public class Levels { > > /** > * <code>FAILED</code> is a message level indicating that a facility has > * experienced a failure that it will reflect to its caller. <p> > * <p/> > * <code>FAILED</code> messages are intended to provide users with > * information about failures produced by internal components in order to > * assist with debugging problems in systems with multiple components. > This > * level is initialized to <code>600</code>. > */ > public static final Level FAILED = createLevel("FAILED", 600, null); > > /** > * <code>HANDLED</code> is a message level indicating that a facility has > * detected a failure that it will take steps to handle without reflecting > * the failure to its caller. <p> > * <p/> > * <code>HANDLED</code> messages are intended to provide users with > * information about failures detected by internal components in order to > * assist with debugging problems in systems with multiple components. > This > * level is initialized to <code>550</code>. > */ > public static final Level HANDLED = createLevel("HANDLED", 550, null); > > /** > * This class cannot be instantiated. > */ > private Levels() { > throw new AssertionError("This class cannot be instantiated"); > } > > > /** > * Creates an instance of the Level class. This method works around the > * fact that there is no public constructor for the Level class by > * constructing the serialized form for an instance with the specified > * field values and deserializing it. > */ > private static Level createLevel(String name, > int value, > String resourceBundleName) { > return new CustomLevel(name, value, resourceBundleName); > } > > static class CustomLevel extends Level { > CustomLevel(String name, int value, String resourceBundleName) { > super(name, value, resourceBundleName); > } > } > } >
