001 /**
002 * Copyright 2005-2012 The Kuali Foundation
003 *
004 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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 package org.kuali.rice.krad.util;
017
018 import org.kuali.rice.krad.bo.ExternalizableBusinessObject;
019
020 /**
021 * A class with utilities related to externalizable business objects
022 */
023 public final class ExternalizableBusinessObjectUtils {
024 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ExternalizableBusinessObjectUtils.class);
025
026 private ExternalizableBusinessObjectUtils() {
027 throw new UnsupportedOperationException("do not call");
028 }
029
030 /**
031 * Given a class, this method determines which of the interfaces that the class implements extends {@link ExternalizableBusinessObject}
032 *
033 * @param businessObjectClass
034 * @return
035 */
036 public static Class determineExternalizableBusinessObjectSubInterface(Class businessObjectClass) {
037 if (businessObjectClass == null) {
038 return null;
039 }
040 //if (businessObjectClass.isInterface()) {
041 if (!ExternalizableBusinessObject.class.equals(businessObjectClass) && ExternalizableBusinessObject.class.isAssignableFrom(businessObjectClass)) {
042 return businessObjectClass;
043 }
044 if (ExternalizableBusinessObject.class.isAssignableFrom(businessObjectClass)) {
045 Class tempClass = businessObjectClass;
046 while (tempClass != null && !Object.class.equals(tempClass)) {
047 for (Class tempClassInterface : tempClass.getInterfaces()) {
048 if (!ExternalizableBusinessObject.class.equals(tempClassInterface) && ExternalizableBusinessObject.class.isAssignableFrom(tempClassInterface)) {
049 return tempClassInterface;
050 }
051 }
052 tempClass = tempClass.getSuperclass();
053 }
054 }
055 return null;
056 }
057
058 public static boolean isExternalizableBusinessObjectInterface(Class businessObjectClass) {
059 return businessObjectClass != null && businessObjectClass.isInterface() && ExternalizableBusinessObject.class.isAssignableFrom(businessObjectClass);
060 }
061
062 public static boolean isExternalizableBusinessObjectInterface(String businessObjectClassName) {
063 try {
064 Class businessObjectClass = Class.forName( businessObjectClassName );
065 return isExternalizableBusinessObjectInterface(businessObjectClass);
066 } catch ( Exception ex ) {
067 LOG.debug( "Unable to get class object for class name: " + businessObjectClassName, ex );
068 return false;
069 }
070 }
071 }