@SuppressWarnings("unchecked") private synchronized boolean addProvider(PriorityObjectFactory<?> objectFactory) { Class<? extends Object> cls = objectFactory.getInstanceClass();
@SuppressWarnings("unchecked") synchronized void removeAll() { // order of operations for the next 4 lines matter Entry<MediaType, HashSet<PriorityObjectFactory<T>>>[] oldEntrySet = entrySet; entrySet = data.entrySet().toArray(new Entry[0]); data = new HashMap<MediaType, HashSet<PriorityObjectFactory<T>>>(); providersCache.clear(); for (Entry<MediaType, HashSet<PriorityObjectFactory<T>>> entry : oldEntrySet) { HashSet<PriorityObjectFactory<T>> set = entry.getValue(); for (PriorityObjectFactory<T> of : set) { of.releaseAll(null); } } }
of.releaseAll(context);
private List<OFHolder<T>> internalGetProvidersByMediaType(MediaType mediaType, Class<?> cls) { Set<OFHolder<T>> compatible = new TreeSet<OFHolder<T>>(Collections.reverseOrder()); for (Entry<MediaType, HashSet<PriorityObjectFactory<T>>> entry : entrySet) { if (areMediaTypesCompatible(entry.getKey(), mediaType)) { // media type is compatible, check generic type of the // subset for (PriorityObjectFactory<T> of : entry.getValue()) { if (GenericsUtils.isGenericInterfaceAssignableFrom(cls, of .getInstanceClass(), rawType)) { // Both media type and generic types are compatible. // The assumption here that more specific media // types are added first so replacing the entity // with the same object factory of the different // media type, won't change the map. // This is done via the equals() of the OFHolder // which doesn't compare the MediaType compatible .add(new OFHolder<T>(entry.getKey(), of, of.isSystemProvider)); } } } } @SuppressWarnings("unchecked") OFHolder<T>[] tmp = compatible.toArray(new OFHolder[compatible.size()]); return Arrays.asList(tmp); }
public Set<MediaType> getProvidersMediaTypes(Class<?> type) { Set<MediaType> mediaTypes = new LinkedHashSet<MediaType>(); l1: for (Entry<MediaType, HashSet<PriorityObjectFactory<T>>> entry : entrySet) { MediaType mediaType = entry.getKey(); Set<PriorityObjectFactory<T>> set = entry.getValue(); for (PriorityObjectFactory<T> t : set) { if (GenericsUtils.isGenericInterfaceAssignableFrom(type, t.getInstanceClass(), rawType)) { mediaTypes.add(mediaType); continue l1; } } } return mediaTypes; }
public Collection<ProviderRecord<T>> getProviderRecords() { List<ProviderRecord<T>> compatible = new ArrayList<ProviderRecord<T>>(); Entry<MediaType, HashSet<PriorityObjectFactory<T>>>[] registryEntrySet = entrySet; for (Entry<MediaType, HashSet<PriorityObjectFactory<T>>> entry : registryEntrySet) { TreeSet<PriorityObjectFactory<T>> entries = new TreeSet<PriorityObjectFactory<T>>(Collections.reverseOrder()); entries.addAll(entry.getValue()); for (PriorityObjectFactory<T> of : entries) { compatible.add(new ProviderRecord<T>(of.getInstanceClass(), entry.getKey(), rawType, of.isSystemProvider)); } } return compatible; }
public void putProvider(PriorityObjectFactory<T> objectFactory) { Consumes consumes = objectFactory.getInstanceClass().getAnnotation(Consumes.class); if (consumes == null) { put(MediaType.WILDCARD_TYPE, objectFactory); } else { String[] values = AnnotationUtils.parseConsumesProducesValues(consumes.value()); for (String val : values) { put(MediaType.valueOf(val), objectFactory); } } } }
public List<ProviderRecord<?>> getExceptionMapperRecords() { ArrayList<ProviderRecord<?>> recordList = new ArrayList<ProviderRecord<?>>(); for (PriorityObjectFactory<ExceptionMapper<?>> factory : exceptionMappers) { ProviderRecord<?> record = new ProviderRecord<ExceptionMapper<?>>(factory.getInstanceClass(), null, ExceptionMapper.class, factory.isSystemProvider); recordList.add(record); } return recordList; }
@SuppressWarnings("unchecked") public boolean addProvider(Object provider, double priority, boolean isSystemProvider) { if (provider == null) { throw new NullPointerException(Messages.getMessage("variableIsNull", "provider")); //$NON-NLS-1$ //$NON-NLS-2$ } ObjectFactory<?> objectFactory = factoryFactoryRegistry.getObjectFactory(provider); return addProvider(new PriorityObjectFactory(objectFactory, priority, isSystemProvider)); }
@SuppressWarnings("unchecked") public boolean addProvider(Class<?> cls, double priority, boolean isSystemProvider) { if (cls == null) { throw new NullPointerException(Messages.getMessage("variableIsNull", "cls")); //$NON-NLS-1$ //$NON-NLS-2$ } ObjectFactory<?> objectFactory = factoryFactoryRegistry.getObjectFactory(cls); return addProvider(new PriorityObjectFactory(objectFactory, priority, isSystemProvider)); }
public void putProvider(PriorityObjectFactory<T> objectFactory) { Produces produces = objectFactory.getInstanceClass().getAnnotation(Produces.class); if (produces == null) { put(MediaType.WILDCARD_TYPE, objectFactory); } else { String[] values = AnnotationUtils.parseConsumesProducesValues(produces.value()); for (String val : values) { put(MediaType.valueOf(val), objectFactory); } } } }