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}