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 }