// Path: src/it/e2e/e2e-model/src/main/java/it/test/model/FieldVerifier.java
// public class FieldVerifier {
// 
// 	/**
// 	 * Verifies that the specified name is valid for our service.
// 	 * 
// 	 * In this example, we only require that the name is at least four
// 	 * characters. In your application, you can use more complex checks to ensure
// 	 * that usernames, passwords, email addresses, URLs, and other fields have the
// 	 * proper syntax.
// 	 * 
// 	 * @param name the name to validate
// 	 * @return true if valid, false if invalid
// 	 */
// 	public static boolean isValidName(String name) {
// 		if (name == null) {
// 			return false;
// 		}
// 		return name.length() > 3;
// 	}
// }
// 
// Path: src/it/e2e/e2e-model/src/main/java/it/test/model/GreetingResponse.java
// @SuppressWarnings("serial")
// @AutoValue
// @GwtCompatible(serializable = true)
// public abstract class GreetingResponse {
// 	public static Builder builder() {
// 		return new AutoValue_GreetingResponse.Builder();
// 	}
// 
// 	public abstract String getGreeting();
// 
// 	public abstract String getServerInfo();
// 
// 	public abstract String getUserAgent();
// 
// 	@AutoValue.Builder
// 	public static abstract class Builder {
// 		public abstract Builder setGreeting(String greeting);
// 
// 		public abstract Builder setServerInfo(String serverInfo);
// 
// 		public abstract Builder setUserAgent(String userAgent);
// 
// 		public abstract GreetingResponse build();
// 	}
// }
// 
// Path: src/it/e2e/e2e-shared/src/main/java/it/test/shared/GreetingService.java
// @RemoteServiceRelativePath("greet")
// public interface GreetingService extends RemoteService {
// 	GreetingResponse greetServer(String name) throws IllegalArgumentException;
// }


import it.test.model.FieldVerifier;
import it.test.model.GreetingResponse;
import it.test.shared.GreetingService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
package it.test.server;


/**
 * The server side implementation of the RPC service.
 */
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements
		GreetingService {

	public GreetingResponse greetServer(String input) throws IllegalArgumentException {
		// Verify that the input is valid.
		if (!FieldVerifier.isValidName(input)) {
			// If the input is not valid, throw an IllegalArgumentException back to
			// the client.
			throw new IllegalArgumentException(
					"Name must be at least 4 characters long");
		}

// Path: src/it/e2e/e2e-model/src/main/java/it/test/model/FieldVerifier.java
// public class FieldVerifier {
// 
// 	/**
// 	 * Verifies that the specified name is valid for our service.
// 	 * 
// 	 * In this example, we only require that the name is at least four
// 	 * characters. In your application, you can use more complex checks to ensure
// 	 * that usernames, passwords, email addresses, URLs, and other fields have the
// 	 * proper syntax.
// 	 * 
// 	 * @param name the name to validate
// 	 * @return true if valid, false if invalid
// 	 */
// 	public static boolean isValidName(String name) {
// 		if (name == null) {
// 			return false;
// 		}
// 		return name.length() > 3;
// 	}
// }
// 
// Path: src/it/e2e/e2e-model/src/main/java/it/test/model/GreetingResponse.java
// @SuppressWarnings("serial")
// @AutoValue
// @GwtCompatible(serializable = true)
// public abstract class GreetingResponse {
// 	public static Builder builder() {
// 		return new AutoValue_GreetingResponse.Builder();
// 	}
// 
// 	public abstract String getGreeting();
// 
// 	public abstract String getServerInfo();
// 
// 	public abstract String getUserAgent();
// 
// 	@AutoValue.Builder
// 	public static abstract class Builder {
// 		public abstract Builder setGreeting(String greeting);
// 
// 		public abstract Builder setServerInfo(String serverInfo);
// 
// 		public abstract Builder setUserAgent(String userAgent);
// 
// 		public abstract GreetingResponse build();
// 	}
// }
// 
// Path: src/it/e2e/e2e-shared/src/main/java/it/test/shared/GreetingService.java
// @RemoteServiceRelativePath("greet")
// public interface GreetingService extends RemoteService {
// 	GreetingResponse greetServer(String name) throws IllegalArgumentException;
// }


// Path: src/it/e2e/e2e-server/src/main/java/it/test/server/GreetingServiceImpl.java
import it.test.model.FieldVerifier;
import it.test.model.GreetingResponse;
import it.test.shared.GreetingService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

package it.test.server;


/**
 * The server side implementation of the RPC service.
 */
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements
		GreetingService {

	public GreetingResponse greetServer(String input) throws IllegalArgumentException {
		// Verify that the input is valid.
		if (!FieldVerifier.isValidName(input)) {
			// If the input is not valid, throw an IllegalArgumentException back to
			// the client.
			throw new IllegalArgumentException(
					"Name must be at least 4 characters long");
		}

		GreetingResponse.Builder response = GreetingResponse.builder();