package ee.telekom.workflow.graph.core; import java.util.Collections; import java.util.HashMap; import java.util.Map; import ee.telekom.workflow.graph.Environment; import ee.telekom.workflow.graph.el.ElUtil; public class EnvironmentImpl implements Environment{ private Map<String, Object> attributes = new HashMap<String, Object>(); @Override public Object getAttribute( String name ){ return attributes.get( name ); } @Override public void removeAttribute( final String name ){ attributes.remove( name ); } @Override public void setAttribute( String name, Object value ){ if( ElUtil.isReservedVariable( name ) ){ throw new IllegalArgumentException( "Variable '" + name + "' is a reserved keyword and SHOULD NOT be used as a key for an Environment attribute." ); } attributes.put( name, value ); } @Override public void importEnvironment( Environment environment ){ for( String name : environment.getAttributeNames() ){ setAttribute( name, environment.getAttribute( name ) ); } } @Override public Iterable<String> getAttributeNames(){ return Collections.unmodifiableSet( attributes.keySet() ); } @Override public boolean containsAttribute( String name ){ return attributes.containsKey( name ); } @Override public Map<String, Object> getAttributesAsMap(){ return Collections.unmodifiableMap( attributes ); } @Override public void clear(){ attributes.clear(); } public Map<String, Object> getAttributes(){ return attributes; } public void setAttributes( Map<String, Object> attributes ){ this.attributes = attributes; } }