mirror of
https://github.com/hapifhir/hapi-fhir.git
synced 2025-03-28 10:58:47 +00:00
71 lines
2.5 KiB
Java
71 lines
2.5 KiB
Java
package ca.uhn.fhir.context;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Collection;
|
|
import java.util.Collections;
|
|
import java.util.Map;
|
|
|
|
import ca.uhn.fhir.model.api.IElement;
|
|
import ca.uhn.fhir.model.api.IResource;
|
|
import ca.uhn.fhir.parser.IParser;
|
|
import ca.uhn.fhir.parser.XmlParser;
|
|
import ca.uhn.fhir.rest.client.RestfulClientFactory;
|
|
|
|
public class FhirContext {
|
|
|
|
private Map<Class<? extends IElement>, BaseRuntimeElementDefinition<?>> myClassToElementDefinition;
|
|
private final Map<String, RuntimeResourceDefinition> myNameToElementDefinition;
|
|
private RuntimeChildUndeclaredExtensionDefinition myRuntimeChildUndeclaredExtensionDefinition;
|
|
|
|
public FhirContext(Class<? extends IResource> theResourceType) {
|
|
this(toCollection(theResourceType));
|
|
}
|
|
|
|
public FhirContext(Class<? extends IResource>[] theResourceTypes) {
|
|
this(Arrays.asList(theResourceTypes));
|
|
}
|
|
|
|
public FhirContext(Collection<Class<? extends IResource>> theResourceTypes) {
|
|
ModelScanner scanner = new ModelScanner(theResourceTypes);
|
|
myNameToElementDefinition = Collections.unmodifiableMap(scanner.getNameToResourceDefinitions());
|
|
myClassToElementDefinition = Collections.unmodifiableMap(scanner.getClassToElementDefinitions());
|
|
myRuntimeChildUndeclaredExtensionDefinition = scanner.getRuntimeChildUndeclaredExtensionDefinition();
|
|
}
|
|
|
|
public Map<Class<? extends IElement>, BaseRuntimeElementDefinition<?>> getClassToElementDefinition() {
|
|
return myClassToElementDefinition;
|
|
}
|
|
|
|
public Map<String, RuntimeResourceDefinition> getNameToResourceDefinition() {
|
|
return myNameToElementDefinition;
|
|
}
|
|
|
|
public RuntimeResourceDefinition getResourceDefinition(Class<? extends IResource> theResourceType) {
|
|
return (RuntimeResourceDefinition) myClassToElementDefinition.get(theResourceType);
|
|
}
|
|
|
|
public RuntimeResourceDefinition getResourceDefinition(IResource theResource) {
|
|
return (RuntimeResourceDefinition) myClassToElementDefinition.get(theResource.getClass());
|
|
}
|
|
|
|
public RuntimeChildUndeclaredExtensionDefinition getRuntimeChildUndeclaredExtensionDefinition() {
|
|
return myRuntimeChildUndeclaredExtensionDefinition;
|
|
}
|
|
|
|
public RestfulClientFactory newClientFactory() {
|
|
return new RestfulClientFactory(this);
|
|
}
|
|
|
|
public IParser newXmlParser() {
|
|
return new XmlParser(this);
|
|
}
|
|
|
|
private static Collection<Class<? extends IResource>> toCollection(Class<? extends IResource> theResourceType) {
|
|
ArrayList<Class<? extends IResource>> retVal = new ArrayList<Class<? extends IResource>>(1);
|
|
retVal.add(theResourceType);
|
|
return retVal;
|
|
}
|
|
|
|
}
|