use of org.apache.sling.models.spi.ViaProvider in project sling by apache.
the class ModelConfigurationPrinter method printConfiguration.
public void printConfiguration(PrintWriter printWriter) {
// injectors
printWriter.println("Sling Models Injectors:");
Collection<Injector> injectors = modelAdapterFactory.getInjectors();
if (injectors.isEmpty()) {
printWriter.println("none");
} else {
for (Injector injector : injectors) {
printWriter.printf("%s - %s", injector.getName(), injector.getClass().getName());
printWriter.println();
}
}
printWriter.println();
// inject annotations processor factories
printWriter.println("Sling Models Inject Annotation Processor Factories:");
Collection<InjectAnnotationProcessorFactory> factories = modelAdapterFactory.getInjectAnnotationProcessorFactories();
Collection<InjectAnnotationProcessorFactory2> factories2 = modelAdapterFactory.getInjectAnnotationProcessorFactories2();
Collection<StaticInjectAnnotationProcessorFactory> staticFactories = modelAdapterFactory.getStaticInjectAnnotationProcessorFactories();
if ((factories.isEmpty()) && (factories2.isEmpty()) && (staticFactories.isEmpty())) {
printWriter.println("none");
} else {
for (StaticInjectAnnotationProcessorFactory factory : staticFactories) {
printWriter.printf("%s", factory.getClass().getName());
printWriter.println();
}
for (InjectAnnotationProcessorFactory2 factory : factories2) {
printWriter.printf("%s", factory.getClass().getName());
printWriter.println();
}
for (InjectAnnotationProcessorFactory factory : factories) {
printWriter.printf("%s", factory.getClass().getName());
printWriter.println();
}
}
printWriter.println();
// implementation pickers
printWriter.println("Sling Models Implementation Pickers:");
ImplementationPicker[] pickers = modelAdapterFactory.getImplementationPickers();
if (pickers == null || pickers.length == 0) {
printWriter.println("none");
} else {
for (ImplementationPicker picker : pickers) {
printWriter.printf("%s", picker.getClass().getName());
printWriter.println();
}
}
printWriter.println();
// implementation pickers
printWriter.println("Sling Models Via Providers:");
Map<Class<? extends ViaProviderType>, ViaProvider> viaProviders = modelAdapterFactory.getViaProviders();
if (viaProviders == null || viaProviders.size() == 0) {
printWriter.println("none");
} else {
for (Map.Entry<Class<? extends ViaProviderType>, ViaProvider> entry : viaProviders.entrySet()) {
printWriter.printf("%s (Type: %s)", entry.getValue().getClass().getName(), entry.getKey().getName());
printWriter.println();
}
}
printWriter.println();
// models bound to resource types
printWriter.println("Sling Models Bound to Resource Types *For Resources*:");
for (Map.Entry<String, Class<?>> entry : adapterImplementations.getResourceTypeMappingsForResources().entrySet()) {
printWriter.print(entry.getValue().getName());
printWriter.print(" - ");
printWriter.println(entry.getKey());
}
printWriter.println();
printWriter.println("Sling Models Bound to Resource Types *For Requests*:");
for (Map.Entry<String, Class<?>> entry : adapterImplementations.getResourceTypeMappingsForRequests().entrySet()) {
printWriter.print(entry.getValue().getName());
printWriter.print(" - ");
printWriter.println(entry.getKey());
}
printWriter.println();
// registered exporter servlets
printWriter.println("Sling Models Exporter Servlets:");
try {
ServiceReference[] servlets = bundleContext.getServiceReferences(Servlet.class.getName(), EXPORT_SERVLET_FILTER);
if (servlets != null) {
for (ServiceReference ref : servlets) {
printWriter.print(ref.getProperty(ModelPackageBundleListener.PROP_EXPORTER_SERVLET_CLASS));
printWriter.print(" exports '");
printWriter.print(ref.getProperty("sling.servlet.resourceTypes"));
printWriter.print("' with selector '");
printWriter.print(ref.getProperty("sling.servlet.selectors"));
printWriter.print("' and extension '");
printWriter.print(ref.getProperty("sling.servlet.extensions"));
printWriter.print("' with exporter '");
printWriter.print(ref.getProperty(ModelPackageBundleListener.PROP_EXPORTER_SERVLET_NAME));
printWriter.println("'");
}
}
} catch (InvalidSyntaxException e) {
// ignore
}
}
use of org.apache.sling.models.spi.ViaProvider in project sling by apache.
the class ModelAdapterFactory method getAdaptable.
private Object getAdaptable(Object adaptable, InjectableElement point, InjectAnnotationProcessor processor) {
String viaValue = null;
Class<? extends ViaProviderType> viaProviderType = null;
if (processor != null) {
viaValue = processor.getVia();
// processors don't support via provider type
viaProviderType = BeanProperty.class;
}
if (StringUtils.isBlank(viaValue)) {
viaValue = point.getVia();
viaProviderType = point.getViaProviderType();
}
if (viaProviderType == null || viaValue == null) {
return adaptable;
}
ViaProvider viaProvider = viaProviders.get(viaProviderType);
if (viaProvider == null) {
log.error("Unable to find Via provider type {}.", viaProviderType);
return null;
}
final Object viaResult = viaProvider.getAdaptable(adaptable, viaValue);
if (viaResult == ViaProvider.ORIGINAL) {
return adaptable;
} else {
return viaResult;
}
}
Aggregations