1 /**
2 *
3 * Copyright 2006 The Apache Software Foundation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.geronimo.system.main;
19
20 import java.io.BufferedReader;
21 import java.io.File;
22 import java.io.FileReader;
23 import java.io.IOException;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.apache.geronimo.kernel.GBeanNotFoundException;
28 import org.apache.geronimo.kernel.Kernel;
29 import org.apache.geronimo.kernel.repository.Artifact;
30 import org.apache.geronimo.system.serverinfo.ServerInfo;
31
32 /**
33 * @version $Rev: 430508 $ $Date: 2006-08-10 12:56:47 -0700 (Thu, 10 Aug 2006) $
34 */
35 public class LocalServer extends CommandLine {
36
37 public LocalServer(String bootModule, String configListLocation) throws Exception {
38 startKernel(Artifact.create(bootModule));
39 Runtime.getRuntime().addShutdownHook(new Thread("Geronimo shutdown thread") {
40 public void run() {
41 getKernel().shutdown();
42 }
43 });
44 List configs = getConfigurationList(configListLocation);
45 loadConfigurations(configs);
46 }
47
48 public Kernel getKernel() {
49 return super.getKernel();
50 }
51
52 protected List getConfigurationList(String path) throws GBeanNotFoundException, IOException {
53 ServerInfo serverInfo = (ServerInfo) getKernel().getGBean(ServerInfo.class);
54 File configFile = serverInfo.resolve(path);
55 List modules = new ArrayList();
56 BufferedReader in = new BufferedReader(new FileReader(configFile));
57 try {
58 String artifactString;
59 while ((artifactString = in.readLine()) != null) {
60 artifactString = artifactString.trim();
61 if (!artifactString.startsWith("#") && artifactString.length() > 0) {
62 Artifact artifact = Artifact.create(artifactString);
63 modules.add(artifact);
64 }
65 }
66 } finally {
67 in.close();
68 }
69 return modules;
70 }
71
72 }