001package co.codewizards.cloudstore.ls.core.invoke;
002
003import static java.util.Objects.*;
004
005import java.util.HashMap;
006import java.util.Map;
007
008public class ClassInfoMap {
009
010        // class-info on the proxies' side. the ClassManager is used on the real objects' side.
011        private final Map<Integer, ClassInfo> classId2ClassInfo = new HashMap<>();
012
013        public ClassInfoMap() {
014        }
015
016        public ClassInfo getClassInfoOrFail(int classId) {
017                final ClassInfo classInfo = getClassInfo(classId);
018                if (classInfo == null)
019                        throw new IllegalArgumentException("There is no ClassInfo for classId=" + classId);
020
021                return classInfo;
022        }
023
024        public synchronized ClassInfo getClassInfo(final int classId) {
025                return classId2ClassInfo.get(classId);
026        }
027
028        public synchronized ClassInfo putClassInfo(final ClassInfo classInfo) {
029                requireNonNull(classInfo, "classInfo");
030                return classId2ClassInfo.put(classInfo.getClassId(), classInfo);
031        }
032}