/**
 * Copyright 2006-2017 the original author or 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.objenesis.instantiator;

import java.io.Serializable;

/**
 * Helper for common serialization-compatible instantiation functions
 * 
 * @author Leonardo Mesquita
 */
public class SerializationInstantiatorHelper {

   /**
    * Returns the first non-serializable superclass of a given class. According to Java Object
    * Serialization Specification, objects read from a stream are initialized by calling an
    * accessible no-arg constructor from the first non-serializable superclass in the object's
    * hierarchy, allowing the state of non-serializable fields to be correctly initialized.
    *
    * @param <T> Type to instantiate
    * @param type Serializable class for which the first non-serializable superclass is to be found
    * @return The first non-serializable superclass of 'type'.
    * @see java.io.Serializable
    */
   public static <T> Class<? super T> getNonSerializableSuperClass(Class<T> type) {
      Class<? super T> result = type;
      while(Serializable.class.isAssignableFrom(result)) {
         result = result.getSuperclass();
         if(result == null) {
            throw new Error("Bad class hierarchy: No non-serializable parents");
         }
      }
      return result;

   }
}
