/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.home; import java.io.File; import java.util.Map; import java.util.Properties; import com.google.common.base.Strings; public final class HomeResolver { private final Properties systemProperties; public HomeResolver() { this.systemProperties = new Properties(); } public void addSystemProperties( final Properties props ) { this.systemProperties.putAll( props ); } public void addSystemProperties( final Map<String, String> map ) { this.systemProperties.putAll( map ); } public HomeDir resolve() { final File dir = validatePath( resolvePath() ); return new HomeDir( dir ); } private String resolvePath() { String path = this.systemProperties.getProperty( "cms.home" ); if ( !Strings.isNullOrEmpty( path ) ) { return path; } path = this.systemProperties.getProperty( "CMS_HOME" ); if ( !Strings.isNullOrEmpty( path ) ) { return path; } throw new IllegalArgumentException( "Home directory not set. Please set either [cms.home] system property or [CMS_HOME] environment variable." ); } private File validatePath( final String path ) { final File dir = new File( path ).getAbsoluteFile(); if ( !dir.exists() || !dir.isDirectory() ) { throw new IllegalArgumentException( "Invalid home directory: [" + path + "] is not a directory" ); } return dir; } }