App Engine 1.8.4.
[gae.git] / java / src / main / com / google / apphosting / utils / config / ApplicationXml.java
blob83d54cf0966d8a3402363ced5b1c00f0ab02e15d
1 package com.google.apphosting.utils.config;
3 import com.google.common.collect.ImmutableList;
5 import java.util.List;
7 /**
8 * Holder for application.xml properties. Only properties needed to upload
9 * an application or run it in the Java Development Server are included.
12 public class ApplicationXml {
13 private final Modules modules;
15 private ApplicationXml(Modules modules) {
16 this.modules = modules;
19 public Modules getModules() {
20 return modules;
23 @Override
24 public int hashCode() {
25 final int prime = 31;
26 int result = 1;
27 result = prime * result + ((modules == null) ? 0 : modules.hashCode());
28 return result;
31 @Override
32 public boolean equals(Object obj) {
33 if (this == obj) {
34 return true;
36 if (obj == null) {
37 return false;
39 if (getClass() != obj.getClass()) {
40 return false;
42 ApplicationXml other = (ApplicationXml) obj;
43 if (modules == null) {
44 if (other.modules != null) {
45 return false;
47 } else if (!modules.equals(other.modules)) {
48 return false;
50 return true;
53 @Override
54 public String toString() {
55 return "ApplicationXml: modules=" + modules;
58 /**
59 * Returns a {@link Builder}.
61 static Builder builder() {
62 return new Builder();
65 /**
66 * Builder for an {@link ApplicationXml}.
68 public static class Builder {
69 Modules.Builder modulesBuilder = Modules.Builder.builder();
71 private Builder() {
74 /**
75 * Returns a {@link Modules.Builder} for adding modules.
77 public Modules.Builder getModulesBuilder() {
78 return modulesBuilder;
81 /**
82 * Builds and returns a new {@link ApplicationXml}.
84 public ApplicationXml build() {
85 return new ApplicationXml(modulesBuilder.build());
89 /**
90 * Holder for an application's modules properties.
92 public static class Modules {
93 private final ImmutableList<Web> web;
95 private Modules(ImmutableList<Web> web) {
96 this.web = web;
99 public List<Web> getWeb() {
100 return web;
103 @Override
104 public int hashCode() {
105 final int prime = 31;
106 int result = 1;
107 result = prime * result + ((web == null) ? 0 : web.hashCode());
108 return result;
111 @Override
112 public boolean equals(Object obj) {
113 if (this == obj) {
114 return true;
116 if (obj == null) {
117 return false;
119 if (getClass() != obj.getClass()) {
120 return false;
122 Modules other = (Modules) obj;
123 if (web == null) {
124 if (other.web != null) {
125 return false;
127 } else if (!web.equals(other.web)) {
128 return false;
130 return true;
133 @Override
134 public String toString() {
135 return "Modules: web=" + web;
139 * Builder for {@link Modules}.
141 static class Builder {
142 ImmutableList.Builder<Web> webBuilder = ImmutableList.builder();
144 private Builder() {
148 * Returns a new {@link Builder}.
150 private static Builder builder() {
151 return new Builder();
155 * Adds a {@link Web}.
157 Builder addWeb(Web web) {
158 webBuilder.add(web);
159 return this;
163 * Builds and returns the newly constructed {@link Modules}.
165 Modules build() {
166 return new Modules(webBuilder.build());
171 * Holder for properties for a web module.
173 public static class Web {
175 @Override
176 public int hashCode() {
177 final int prime = 31;
178 int result = 1;
179 result = prime * result + ((contextRoot == null) ? 0 : contextRoot.hashCode());
180 result = prime * result + ((webUri == null) ? 0 : webUri.hashCode());
181 return result;
184 @Override
185 public boolean equals(Object obj) {
186 if (this == obj) {
187 return true;
189 if (obj == null) {
190 return false;
192 if (getClass() != obj.getClass()) {
193 return false;
195 Web other = (Web) obj;
196 if (contextRoot == null) {
197 if (other.contextRoot != null) {
198 return false;
200 } else if (!contextRoot.equals(other.contextRoot)) {
201 return false;
203 if (webUri == null) {
204 if (other.webUri != null) {
205 return false;
207 } else if (!webUri.equals(other.webUri)) {
208 return false;
210 return true;
213 private final String webUri;
214 private final String contextRoot;
216 Web(String webUri, String contextRoot) {
217 this.webUri = webUri;
218 this.contextRoot = contextRoot;
221 public String getWebUri() {
222 return webUri;
225 public String getContextRoot() {
226 return contextRoot;
229 @Override
230 public String toString() {
231 return "Web: webUri=" + webUri + " contextRoot=" + contextRoot;