/******************************************************************************* * Copyright (c) 2008 Borland Software Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Borland Software Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.m2m.qvt.oml.util; /** * @noimplement * @noextend * @since 3.0 */ public interface ISessionData { interface Entry<T> { T defaultValue(); } /** * @throws ClassCastException * if the stored value is not of the type specified for the * given data entry */ <T> T getValue(Entry<T> entry); <T> void setValue(Entry<T> key, T value); class SimpleEntry<T> implements Entry<T> { private T fDefaultVal; public SimpleEntry() { super(); } public SimpleEntry(T defaultVal) { fDefaultVal = defaultVal; } public T defaultValue() { return fDefaultVal; } } class NamedEntry<T> implements Entry<T> { private String fName; private T fDefaultVal; public NamedEntry(String name) { this(name, null); } public NamedEntry(String name, T defaultValue) { if(name == null) throw new IllegalArgumentException(); fName = name; } public T defaultValue() { return fDefaultVal; } @Override public boolean equals(Object obj) { if(obj instanceof NamedEntry<?>) { @SuppressWarnings("unchecked") NamedEntry<T> namedEntry = (NamedEntry<T>) obj; return fName.equals(namedEntry.fName); } return false; } @Override public int hashCode() { return fName.hashCode(); } @Override public String toString() { return fName; } } }