Revision created by MOE tool push_codebase.
[gae.git] / java / src / main / com / google / appengine / tools / util / ActionsAndOptions.java
blob65aad93bc5dffc8c87c14e9998b07bfe75331606
1 // Copyright 2012 Google Inc. All Rights Reserved.
3 package com.google.appengine.tools.util;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
9 /**
10 * A container for the collection of {@link Action Actions} and {@link Option Options} that may be
11 * passed to the {@code AppCfg} command-line tool.
12 * <p>
13 * This class is not thread-safe. An instance should only be accessed by one thread at-a-time.
16 public class ActionsAndOptions {
18 /**
19 * All {@link Action Actions} in processing order
21 public List<Action> actions;
23 /**
25 public List<Option> options;
27 /**
28 * Action names in help-string order
30 public List<String> actionNames;
32 /**
33 * Option names in help-string order
35 public List<String> optionNames;
37 /**
38 * General option names in help-string order
40 public List<String> generalOptionNames;
42 /**
43 * Name to object caches
45 private Map<String, Option> nameToOptionMap;
46 private Map<String, Action> nameToActionMap;
48 /**
49 * After {@link #options} has been set, this method may be invoked to lookup an option by its
50 * long name.
52 public Option getOption(String name) {
53 if (options == null) {
54 throw new IllegalStateException("options must be set first");
56 if (nameToOptionMap == null) {
57 nameToOptionMap = new HashMap<String, Option>(options.size() * 2);
58 for (Option option : options) {
59 nameToOptionMap.put(option.getLongName(), option);
62 return nameToOptionMap.get(name);
66 /**
67 * After {@link #actions} has been set, this method may be invoked to lookup an option by its
68 * name string.
70 public Action getAction(String name) {
71 if (actions == null) {
72 throw new IllegalStateException("actions must be set first");
74 if (nameToActionMap == null) {
75 nameToActionMap = new HashMap<String, Action>(actions.size() * 2);
76 for (Action action : actions) {
77 nameToActionMap.put(action.getNameString(), action);
80 return nameToActionMap.get(name);