/* * Copyright 2002-2003,2009 The Apache Software Foundation. * * 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 com.opensymphony.xwork2.config.impl; import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationProvider; import com.opensymphony.xwork2.config.ContainerProvider; import com.opensymphony.xwork2.config.PackageProvider; import com.opensymphony.xwork2.config.RuntimeConfiguration; import com.opensymphony.xwork2.config.entities.PackageConfig; import com.opensymphony.xwork2.config.entities.UnknownHandlerConfig; import com.opensymphony.xwork2.config.providers.XWorkConfigurationProvider; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.ContainerBuilder; import com.opensymphony.xwork2.inject.Scope; import com.opensymphony.xwork2.util.location.LocatableProperties; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * Simple configuration used for unit testing */ public class MockConfiguration implements Configuration { private Map<String, PackageConfig> packages = new HashMap<String, PackageConfig>(); private Set<String> loadedFiles = new HashSet<String>(); private Container container; protected List<UnknownHandlerConfig> unknownHandlerStack; private ContainerBuilder builder; public MockConfiguration() { builder = new ContainerBuilder(); } public void selfRegister() { //this cannot be done in the constructor, as it causes an infinite loop builder.factory(Configuration.class, MockConfiguration.class, Scope.SINGLETON); LocatableProperties props = new LocatableProperties(); new XWorkConfigurationProvider().register(builder, props); builder.constant(XWorkConstants.DEV_MODE, "false"); builder.constant(XWorkConstants.RELOAD_XML_CONFIGURATION, "true"); builder.constant(XWorkConstants.ENABLE_OGNL_EXPRESSION_CACHE, "true"); container = builder.create(true); } public PackageConfig getPackageConfig(String name) { return packages.get(name); } public Set<String> getPackageConfigNames() { return packages.keySet(); } public Map<String, PackageConfig> getPackageConfigs() { return packages; } public RuntimeConfiguration getRuntimeConfiguration() { throw new UnsupportedOperationException(); } public void addPackageConfig(String name, PackageConfig packageContext) { packages.put(name, packageContext); } public void buildRuntimeConfiguration() { throw new UnsupportedOperationException(); } public void destroy() { throw new UnsupportedOperationException(); } public void rebuildRuntimeConfiguration() { throw new UnsupportedOperationException(); } public void reload(List<ConfigurationProvider> providers) throws ConfigurationException { throw new UnsupportedOperationException(); } public PackageConfig removePackageConfig(String name) { return packages.remove(name); } public Container getContainer() { return container; } public Set<String> getLoadedFileNames() { return loadedFiles; } public List<PackageProvider> reloadContainer( List<ContainerProvider> containerProviders) throws ConfigurationException { throw new UnsupportedOperationException(); } public List<UnknownHandlerConfig> getUnknownHandlerStack() { return unknownHandlerStack; } public void setUnknownHandlerStack(List<UnknownHandlerConfig> unknownHandlerStack) { this.unknownHandlerStack = unknownHandlerStack; } }