private void removeResourceMethods(Object theProvider) { ourLog.info("Removing RESTful methods for: {}", theProvider.getClass()); Class<?> clazz = theProvider.getClass(); Class<?> supertype = clazz.getSuperclass(); Collection<String> resourceNames = new ArrayList<>(); while (!Object.class.equals(supertype)) { removeResourceMethods(theProvider, supertype, resourceNames); supertype = supertype.getSuperclass(); } removeResourceMethods(theProvider, clazz, resourceNames); for (String resourceName : resourceNames) { myResourceNameToBinding.remove(resourceName); } }
/** * Unregister a {@code Collection} of providers */ public void unregisterProviders(Collection<?> providers) { ProvidedResourceScanner providedResourceScanner = new ProvidedResourceScanner(getFhirContext()); if (providers != null) { for (Object provider : providers) { removeResourceMethods(provider); if (provider instanceof IResourceProvider) { myResourceProviders.remove(provider); IResourceProvider rsrcProvider = (IResourceProvider) provider; Class<? extends IBaseResource> resourceType = rsrcProvider.getResourceType(); String resourceName = getFhirContext().getResourceDefinition(resourceType).getName(); providedResourceScanner.removeProvidedResources(rsrcProvider); } else { myPlainProviders.remove(provider); } invokeDestroy(provider); } } }
private void removeResourceMethods(Object theProvider) { ourLog.info("Removing RESTful methods for: {}", theProvider.getClass()); Class<?> clazz = theProvider.getClass(); Class<?> supertype = clazz.getSuperclass(); Collection<String> resourceNames = new ArrayList<>(); while (!Object.class.equals(supertype)) { removeResourceMethods(theProvider, supertype, resourceNames); supertype = supertype.getSuperclass(); } removeResourceMethods(theProvider, clazz, resourceNames); for (String resourceName : resourceNames) { myResourceNameToBinding.remove(resourceName); } }
/** * Unregister a {@code Collection} of providers */ public void unregisterProviders(Collection<?> providers) { ProvidedResourceScanner providedResourceScanner = new ProvidedResourceScanner(getFhirContext()); if (providers != null) { for (Object provider : providers) { removeResourceMethods(provider); if (provider instanceof IResourceProvider) { myResourceProviders.remove(provider); IResourceProvider rsrcProvider = (IResourceProvider) provider; Class<? extends IBaseResource> resourceType = rsrcProvider.getResourceType(); String resourceName = getFhirContext().getResourceDefinition(resourceType).getName(); providedResourceScanner.removeProvidedResources(rsrcProvider); } else { myPlainProviders.remove(provider); } invokeDestroy(provider); } } }