/* * Copyright (c) 2010-2012 Grid Dynamics Consulting Services, Inc, All Rights Reserved * http://www.griddynamics.com * * This library is free software; you can redistribute it and/or modify it under the terms of * the Apache License; either * version 2.0 of the License, or any later version. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.griddynamics.jagger.agent.model; import com.google.common.collect.Lists; import com.griddynamics.jagger.coordinator.Command; import com.griddynamics.jagger.coordinator.VoidResult; import java.io.Serializable; import java.util.ArrayList; import java.util.Map; /** * @author Alexey Kiselyov * Date: 05.09.11 */ public class ManageAgent implements Command<VoidResult> { public enum ActionProp { WAIT_BEFORE(Long.class, 60000L), NEW_MESSAGE_SERVICE_URL(String.class, ""), SET_JMX_METRICS(ArrayList.class, Lists.newArrayListWithExpectedSize(0)), HALT(Boolean.class, false); private Class clazz; private Serializable defaultValue; public Class getClazz() { return clazz; } public Serializable getDefaultValue() { return defaultValue; } <S extends Serializable> ActionProp(Class<S> clazz, S defaultValue) { this.clazz = clazz; this.defaultValue = defaultValue; } } public static Serializable extractParameter(Map<ActionProp, Serializable> parameters, ActionProp actionProp) { return extractParameter(parameters, actionProp, actionProp.getDefaultValue()); } public static Serializable extractParameter(Map<ActionProp, Serializable> parameters, ActionProp actionProp, Serializable defaultValue) { return parameters == null ? defaultValue : parameters.containsKey(actionProp) ? parameters.get(actionProp) : defaultValue; } private Map<ActionProp, Serializable> params; private String sessionId; public ManageAgent(String sessionId, Map<ActionProp, Serializable> params) { this.sessionId = sessionId; this.params = params; } public ManageAgent() { } @Override public String getSessionId() { return this.sessionId; } public void setSessionId(String sessionId) { this.sessionId = sessionId; } public Map<ActionProp, Serializable> getParams() { return this.params; } @Override public String toString() { return "ManageAgent{" + "params=" + params + ", sessionId='" + sessionId + '\'' + '}'; } }