Revision created by MOE tool push_codebase.
[gae.git] / java / src / main / com / google / appengine / tools / development / ManualServer.java
blob169fc355ddba7322591fa4bc5fc72dd21739c7d3
1 package com.google.appengine.tools.development;
3 import com.google.appengine.tools.development.ApplicationConfigurationManager.ServerConfigurationHandle;
4 import com.google.apphosting.utils.config.AppEngineConfigException;
5 import com.google.apphosting.utils.config.AppEngineWebXml;
6 import com.google.common.collect.ImmutableList;
8 import java.io.File;
9 import java.util.List;
10 import java.util.Map;
12 /**
13 * {@link Server} implementation for manual servers.
15 public class ManualServer extends AbstractServer {
16 ManualServer(ServerConfigurationHandle serverConfigurationHandle, String serverInfo,
17 String address, Map<String, Object> containerConfigProperties, DevAppServerImpl devAppServer,
18 AppEngineWebXml appEngineWebXml) {
19 super(serverConfigurationHandle, serverInfo, null, address,
20 containerConfigProperties, devAppServer, makeInstanceHolders(serverConfigurationHandle,
21 appEngineWebXml));
24 private static List<InstanceHolder> makeInstanceHolders(
25 ServerConfigurationHandle serverConfigurationHandle, AppEngineWebXml appEngineWebXml) {
26 String instancesString = appEngineWebXml.getManualScaling().getInstances();
27 int instances = instancesString == null ? 0 : Integer.parseInt(instancesString);
28 if (instances < 0) {
29 throw new AppEngineConfigException("Invalid instances " + instances + " in file "
30 + serverConfigurationHandle.getModule().getAppEngineWebXmlFile());
33 ImmutableList.Builder<InstanceHolder> listBuilder = ImmutableList.builder();
34 for (int ix = LocalEnvironment.MAIN_INSTANCE; ix < instances; ix++) {
35 listBuilder.add(new InstanceHolder(ContainerUtils.loadContainer(), ix));
37 return listBuilder.build();
40 @Override
41 public LocalServerEnvironment doConfigure(
42 ServerConfigurationHandle serverConfigurationHandle, String serverInfo,
43 File externalResourceDir, String address, Map<String, Object> containerConfigProperties,
44 DevAppServerImpl devAppServer) throws Exception {
45 LocalServerEnvironment result = null;
46 for (InstanceHolder instanceHolder : getInstanceHolders()) {
47 int port = DevAppServerPortPropertyHelper.getPort(getServerName(),
48 instanceHolder.getInstance(), devAppServer.getServiceProperties());
49 LocalServerEnvironment thisEnvironment = instanceHolder.getContainerService().configure(
50 serverInfo, address, port, serverConfigurationHandle, externalResourceDir,
51 containerConfigProperties, instanceHolder.getInstance(), devAppServer);
52 if (result == null) {
53 result = thisEnvironment;
56 return result;