Initial verison of reading config from files
This commit is contained in:
		
							
								
								
									
										56
									
								
								rocket/src/main/scala/config.scala
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								rocket/src/main/scala/config.scala
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| package rocket | ||||
| package config | ||||
|  | ||||
| import java.io.File | ||||
| import java.io.FileInputStream | ||||
| import java.util.Properties | ||||
| import scala.util.{Properties => SProperties} | ||||
|  | ||||
| class Config(props: Properties) { | ||||
|   private val msg = "Configuration is missing requested parameter " | ||||
|   def getInt(name: String): Int = Option(props.getProperty(name).toInt).getOrElse(sys.error(msg+name)) | ||||
|   def getString(name: String): String = Option(props.getProperty(name)).getOrElse(sys.error(msg+name)) | ||||
|   def getBoolean(name: String): Boolean = Option(props.getProperty(name).toBoolean).getOrElse(sys.error(msg+name)) | ||||
|   def apply(name: String): Int = getInt(name) | ||||
| } | ||||
|  | ||||
| object Config { | ||||
|  | ||||
|   lazy val internal_config = getConfig() | ||||
|  | ||||
|   def apply(name: String) = internal_config(name) | ||||
|  | ||||
|   private def getConfig(): Config = { | ||||
|  | ||||
|     val filePath0 =  | ||||
|       SProperties | ||||
|         .envOrNone("ROCKET_CONFIG") | ||||
|         .orElse(SProperties.propOrNone("rocket.config"))   | ||||
|     if (filePath0.isEmpty) | ||||
|       Console.err.println(""" | ||||
|       | WARNING: Could not find configuration file to load.  | ||||
|       | Options are: | ||||
|       |   (1) Set environmental variable ROCKET_CONFIG to the config file path | ||||
|       |   (2) Set system property rocket.config to the config file path | ||||
|       | Using default values for config. | ||||
|       """.stripMargin) | ||||
|  | ||||
|     val filePath = | ||||
|       filePath0.flatMap(fp => { | ||||
|         val f = new File(fp) | ||||
|         if (!f.isFile) { | ||||
|           Console.err.println(""" | ||||
|           | WARNING: File '%s' is not a valid file path | ||||
|           | Using default values for config | ||||
|           """.format(fp).stripMargin) | ||||
|           None | ||||
|         } else Some(fp) | ||||
|       }) | ||||
|  | ||||
|     val props = new Properties() | ||||
|     filePath.map(fp => props.load(new FileInputStream(fp))) | ||||
|     new Config(props) | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
							
								
								
									
										1
									
								
								rocket/src/main/scala/rocket.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								rocket/src/main/scala/rocket.config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| NWAYS 4 | ||||
		Reference in New Issue
	
	Block a user