/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.sys.context; import java.util.Collection; import java.util.Set; import java.util.TreeSet; import org.apache.log4j.Logger; import org.kuali.kfs.integration.UnimplementedKfsModuleServiceImpl; import org.kuali.kfs.sys.ConfigureContext; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.suite.AnnotationTestSuite; import org.kuali.kfs.sys.suite.PreCommitSuite; import org.kuali.rice.coreservice.api.component.Component; import org.kuali.rice.coreservice.api.component.ComponentService; import org.kuali.rice.coreservice.impl.component.ComponentBo; import org.kuali.rice.coreservice.impl.parameter.ParameterBo; import org.kuali.rice.coreservice.web.parameter.ParameterRule; import org.kuali.rice.krad.service.BusinessObjectService; import org.kuali.rice.krad.service.KualiModuleService; import org.kuali.rice.krad.service.ModuleService; @ConfigureContext(shouldCommitTransactions=true) @AnnotationTestSuite(PreCommitSuite.class) public class ParameterConfigurationTest extends KualiTestBase { private static final Logger LOG = Logger.getLogger(ParameterConfigurationTest.class); /** * * This method... * @throws Exception */ public void testValidateParameterComponents() throws Exception { Collection<ParameterBo> params = SpringContext.getBean(BusinessObjectService.class).findAll(ParameterBo.class); ParameterRule paramRule = new ParameterRule(); StringBuffer badComponents = new StringBuffer(); int failCount = 0; System.out.println("Starting Component Validation"); for (ParameterBo param : params) { // skip unimplemented modules ModuleService moduleService = SpringContext.getBean(KualiModuleService.class).getModuleServiceByNamespaceCode(param.getNamespaceCode()); if ( moduleService == null || moduleService instanceof UnimplementedKfsModuleServiceImpl ) { continue; } try{ if (!paramRule.checkComponent(param)) { if (param.getNamespaceCode().startsWith("KR"))continue; badComponents.append("\n").append(param.getNamespaceCode()).append("\t").append(param.getComponentCode()).append("\t").append(param.getName()).append("\t"); failCount++; } }catch (Exception e){ badComponents.append("\n").append(e.getMessage()).append(param.getNamespaceCode()).append("\t").append(param.getComponentCode()).append("\t").append(param.getName()).append("\t"); failCount++; } } badComponents.insert(0, "The following " + failCount + " parameters have invalid components:"); if (failCount > 0) { Set<String> components = new TreeSet<String>(); for (Component pdt : SpringContext.getBean(ComponentService.class).getDerivedComponentSet(KFSConstants.APPLICATION_NAMESPACE_CODE)) { components.add(pdt.getNamespaceCode() + "/" + pdt.getCode()); } for (ComponentBo pdt : (Collection<ComponentBo>) SpringContext.getBean(BusinessObjectService.class).findAll(ComponentBo.class)) { components.add(pdt.getNamespaceCode() + "/" + pdt.getCode()); } System.out.println("Valid Components: "); for (String component : components) { System.out.println(component); } } assertTrue(badComponents.toString(), failCount == 0); } }