/sitebricks/src/main/java/com/google/sitebricks/ActionDescriptor.java
http://github.com/dhanji/sitebricks · Java · 94 lines · 72 code · 17 blank · 5 comment · 10 complexity · 2d538bc8983a3144b331c31d91754982 MD5 · raw file
- package com.google.sitebricks;
- import com.google.common.base.Preconditions;
- import com.google.common.collect.Maps;
- import com.google.common.collect.Sets;
- import com.google.inject.Key;
- import com.google.sitebricks.routing.Action;
- import java.lang.annotation.Annotation;
- import java.util.Map;
- import java.util.Set;
- import java.util.regex.Pattern;
- /**
- * Describes an action binding in the SPI for actions.
- * @author dhanji@gmail.com (Dhanji R. Prasanna)
- */
- public class ActionDescriptor implements PageBinder.ActionBinder {
- private final Action action;
- private final Key<? extends Action> actionKey;
- private final Map<String, String> selectParams = Maps.newHashMap();
- private final Map<String, String> selectHeaders = Maps.newHashMap();
- private final Set<Class<? extends Annotation>> methods = Sets.newHashSet();
- // Pass thru for builder config.
- private final PageBinder.PerformBinder performBinder;
- public ActionDescriptor(Action action, PageBinder.PerformBinder performBinder) {
- this.action = action;
- this.performBinder = performBinder;
- this.actionKey = null;
- }
- public ActionDescriptor(Key<? extends Action> action, PageBinder.PerformBinder performBinder) {
- this.performBinder = performBinder;
- this.action = null;
- this.actionKey = action;
- }
- @Override
- public PageBinder.PerformBinder on(Class<? extends Annotation>... method) {
- Preconditions.checkArgument(null != method && method.length > 0,
- "Must specify at least one method");
- methods.addAll(Sets.newHashSet(method));
- return performBinder;
- }
- @Override
- public PageBinder.ActionBinder select(String param, String value) {
- Preconditions.checkArgument(param != null && !param.isEmpty(),
- "Parameter to select() must be a non-empty string");
- Preconditions.checkArgument(value != null && !value.isEmpty(),
- "Value to select() must be a non-empty string");
- selectParams.put(param, value);
- return this;
- }
- @Override
- public PageBinder.ActionBinder selectHeader(String header, String value) {
- Preconditions.checkArgument(header != null && !header.isEmpty(),
- "Header to selectHeader() must be a non-empty string");
- Preconditions.checkArgument(value != null && !value.isEmpty(),
- "Value to selectHeader() must be a non-empty string");
- selectHeaders.put(header, value);
- return this;
- }
- @Override
- public PageBinder.ActionBinder selectHeader(String param, Pattern regex) {
- throw new UnsupportedOperationException("To be implemented");
- }
- public Action getAction() {
- return action;
- }
- public Key<? extends Action> getActionKey() {
- return actionKey;
- }
- public Map<String, String> getSelectParams() {
- return selectParams;
- }
- public Map<String, String> getSelectHeaders() {
- return selectHeaders;
- }
- public Set<Class<? extends Annotation>> getMethods() {
- return methods;
- }
- }