package immibis.bon; import java.util.ArrayList; import java.util.List; public class JoinMapping extends Mapping { private final Mapping a, b; public JoinMapping(Mapping a, Mapping b) { super(a.fromNS, b.toNS); this.a = a; this.b = b; } @Override public void addPrefix(String old, String new_) { throw new UnsupportedOperationException("Mapping is unmodifiable"); } @Override public String getClass(String in) { return b.getClass(a.getClass(in)); } @Override public List<String> getExceptions(String clazz, String method, String desc) { List<String> rv = new ArrayList<>(); rv.addAll(a.getExceptions(clazz, method, desc)); rv.addAll(b.getExceptions(a.getClass(clazz), a.getMethod(clazz, method, desc), a.mapMethodDescriptor(desc))); return rv; } @Override public String getField(String clazz, String name) { return b.getField(a.getClass(clazz), a.getField(clazz, name)); } @Override public String getMethod(String clazz, String name, String desc) { return b.getMethod(a.getClass(clazz), a.getMethod(clazz, name, desc), a.mapMethodDescriptor(desc)); } @Override public void setClass(String in, String out) { throw new UnsupportedOperationException("Mapping is unmodifiable"); } @Override public void setDefaultPackage(String p) { throw new UnsupportedOperationException("Mapping is unmodifiable"); } @Override public void setExceptions(String clazz, String method, String desc, List<String> exc) { throw new UnsupportedOperationException("Mapping is unmodifiable"); } @Override public void setField(String clazz, String name, String out) { throw new UnsupportedOperationException("Mapping is unmodifiable"); } @Override public void setMethod(String clazz, String name, String desc, String out) { throw new UnsupportedOperationException("Mapping is unmodifiable"); } }