/**
* =========================================================================
* __ ____ ____ __ ____ ___ __ __ ____ ____ ____
* || || \\ || (( \ || \\ // \\ ||\ || || \\ || || \\
* || ||_// ||== \\ ||_// (( )) ||\\|| || )) ||== ||_//
* |__|| || \\ ||___ \_)) || \\_// || \|| ||_// ||___ || \\
* =========================================================================
*
* Copyright 2012 Brad Peabody
*
* 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 org.jresponder.standalone;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.web.context.support.XmlWebApplicationContext;
/**
* Adds a standalone config file to list of context paths, if it exists.
* Also sets the jresponder.basedir system property appropriately if
* external config is found. It also sets the active Spring
* profile to be either "standalone" or "webapp" appropriately.
* <p>
* TODO: make it so a context param can specify a list of other
* possible jresponder base dirs, e.g. "/usr/local/jresponder",
* "/etc/jresponder", etc. - and put those in by default - makes
* the config and templates be easily locatable where people will
* actually want them.
*/
public class JrXmlWebApplicationContext extends XmlWebApplicationContext {
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void setConfigLocations(String[] locations) {
List myLocations = new ArrayList(Arrays.asList(locations));
File myConfigFile = JrContextLoaderListener.getExternalConfigFile();
if (myConfigFile != null) {
//System.out.println(myConfigFile.toURI().toString());
myLocations.add(myConfigFile.toURI().toString());
}
// HACK: this isn't the greatest, but works for now - set the
// Spring profile, so we can make certain Spring context files
// conditional depending on the deployment mode
if (JrContextLoaderListener.isStandaloneMode()) {
System.out.println("JrXmlWebApplication - using 'standalone' Spring profile");
getEnvironment().setActiveProfiles("standalone");
}
else {
System.out.println("JrXmlWebApplication - using 'webapp' Spring profile");
getEnvironment().setActiveProfiles("webapp");
}
super.setConfigLocations((String[])myLocations.toArray(new String[0]));
}
}