@Override @SuppressWarnings({"rawtypes", "unchecked"}) public Converter<?> create(Type type, Genson genson) { Map<Type, CircularConverter<?>> map = _circularConverters.get(); if (map == null) { map = new HashMap<Type, CircularConverter<?>>(); _circularConverters.set(map); } if (_circularConverters.get().containsKey(type)) { return _circularConverters.get().get(type); } else { try { CircularConverter circularConverter = new CircularConverter(); _circularConverters.get().put(type, circularConverter); Converter converter = next().create(type, genson); circularConverter.setDelegateConverter(converter); return converter; } finally { _circularConverters.get().remove(type); } } }
@Override @SuppressWarnings({"rawtypes", "unchecked"}) public Converter<?> create(Type type, Genson genson) { Map<Type, CircularConverter<?>> map = _circularConverters.get(); if (map == null) { map = new HashMap<Type, CircularConverter<?>>(); _circularConverters.set(map); } if (_circularConverters.get().containsKey(type)) { return _circularConverters.get().get(type); } else { try { CircularConverter circularConverter = new CircularConverter(); try { _circularConverters.get().put(type, circularConverter); Converter converter = next().create(type, genson); circularConverter.setDelegateConverter(converter); return converter; } finally { circularConverter.initLatch.countDown(); } } finally { _circularConverters.get().remove(type); } } }