/*******************************************************************************
* (c) Copyright 2016 Hewlett-Packard Development Company, L.P.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License v2.0 which accompany this distribution.
*
* The Apache License is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
*******************************************************************************/
package io.cloudslang.lang.runtime.env;
import io.cloudslang.lang.entities.bindings.values.Value;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
public class Context implements Serializable {
private final Map<String, Value> variables;
private final Map<String, Value> langVariables;
public Context(Map<String, Value> variables) {
this.variables = variables;
langVariables = new HashMap<>();
}
public Value getVariable(String name) {
return variables.get(name);
}
public void putVariable(String name, Value value) {
variables.put(name, value);
}
public void putVariables(Map<String, ? extends Value> newVariables) {
variables.putAll(newVariables);
}
public Map<String, Value> getImmutableViewOfLanguageVariables() {
return Collections.unmodifiableMap(langVariables);
}
public Value getLanguageVariable(String name) {
return langVariables.get(name);
}
public void putLanguageVariable(String name, Value value) {
langVariables.put(name, value);
}
public Map<String, Value> getImmutableViewOfVariables() {
return Collections.unmodifiableMap(variables);
}
public Value removeLanguageVariable(String key) {
return langVariables.remove(key);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Context that = (Context) o;
return new EqualsBuilder()
.append(variables, that.variables)
.append(langVariables, that.langVariables)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(variables)
.append(langVariables)
.toHashCode();
}
}