1 /* 2 * The Kuali Financial System, a comprehensive financial management system for higher education. 3 * 4 * Copyright 2005-2014 The Kuali Foundation 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU Affero General Public License as 8 * published by the Free Software Foundation, either version 3 of the 9 * License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU Affero General Public License for more details. 15 * 16 * You should have received a copy of the GNU Affero General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 package org.kuali.kfs.sys.context; 20 21 import java.util.HashSet; 22 import java.util.Set; 23 24 import javax.xml.namespace.QName; 25 26 import org.kuali.rice.core.impl.resourceloader.SpringBeanFactoryResourceLoader; 27 28 /** 29 * A custom {@link org.kuali.rice.kew.plugin.ResourceLoader} which wraps a Spring BeanFactory and delegates certain service lookups to 30 * the BeanFactory. 31 */ 32 public class FinancialSystemResourceLoader extends SpringBeanFactoryResourceLoader { 33 34 private static final String CONVERSIONS_DELIMITER = "|"; 35 //private static final String LOOKUPABLE_REGEX = "workflow-.+-Lookupable(.+)"; 36 37 private Set<String> overridableServices = new HashSet<String>(); 38 39 public FinancialSystemResourceLoader() { 40 super(new QName("FinancialSystemResourceLoader")); 41 } 42 43 @Override 44 public Object getService(QName serviceName) { 45 if (overridableServices.contains(serviceName.getLocalPart())) { 46 return super.getService(serviceName); 47 } 48 // else if (isKualiLookupable(serviceName)) { 49 // return fetchKualiLookupable(serviceName); 50 // } 51 else if (serviceName.getLocalPart().indexOf("Lookupable") > -1) { 52 return super.getService(serviceName); 53 } 54 else if (serviceName.getLocalPart().contains("InactivationBlockingDetectionService")) { 55 return super.getService(serviceName); 56 } 57 return null; 58 } 59 60 // protected boolean isKualiLookupable(QName serviceName) { 61 // return serviceName.getLocalPart().matches(LOOKUPABLE_REGEX); 62 // } 63 // 64 // protected Object fetchKualiLookupable(QName serviceName) { 65 // String lookupableName = serviceName.getLocalPart(); 66 // WorkflowLookupable workflowLookupable = null; 67 // if (lookupableName.indexOf(".") > 0) { 68 // String lookupableImplName = lookupableName.substring(0, lookupableName.indexOf("(")); 69 // WorkflowLookupableImpl workflowLookupableImpl = (WorkflowLookupableImpl) getBeanFactory().getBean(lookupableImplName); 70 // String allConversions = lookupableName.substring(lookupableName.indexOf("(") + 1, lookupableName.indexOf(")")); 71 // String fieldConversions = null; 72 // String lookupParameters = null; 73 // if (allConversions.indexOf(CONVERSIONS_DELIMITER) > 0) { 74 // fieldConversions = allConversions.substring(0, allConversions.indexOf(CONVERSIONS_DELIMITER)); 75 // lookupParameters = allConversions.substring(allConversions.indexOf(CONVERSIONS_DELIMITER) + 1); 76 // } 77 // else { 78 // fieldConversions = allConversions; 79 // } 80 // workflowLookupableImpl.setFieldConversions(fieldConversions); 81 // workflowLookupableImpl.setLookupParameters(lookupParameters); 82 // workflowLookupable = (WorkflowLookupable) super.wrap(serviceName, workflowLookupableImpl); 83 // } 84 // else { 85 // workflowLookupable = (WorkflowLookupable) super.getService(serviceName); 86 // } 87 // return workflowLookupable; 88 // } 89 90 public Set<String> getOverridableServices() { 91 return overridableServices; 92 } 93 94 public void setOverridableServices(Set<String> overridableServices) { 95 this.overridableServices = overridableServices; 96 } 97 98 }