in tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java [413:498]
private <T> void addBuiltin(final String serviceId, final Class<T> serviceInterface, T service)
{
builtinTypes.put(serviceId, serviceInterface);
builtinServices.put(serviceId, service);
// Make sure each of the builtin services is also available via the Builtin annotation
// marker.
ServiceDef2 serviceDef = new ServiceDef2()
{
@Override
public ObjectCreator createServiceCreator(ServiceBuilderResources resources)
{
return null;
}
@Override
public Set<Class> getMarkers()
{
return BUILTIN;
}
@Override
public String getServiceId()
{
return serviceId;
}
@Override
public Class getServiceInterface()
{
return serviceInterface;
}
@Override
public String getServiceScope()
{
return ScopeConstants.DEFAULT;
}
@Override
public boolean isEagerLoad()
{
return false;
}
@Override
public boolean isPreventDecoration()
{
return true;
}
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((serviceId == null) ? 0 : serviceId.hashCode());
return result;
}
@Override
public boolean equals(Object obj)
{
if (this == obj) { return true; }
if (obj == null) { return false; }
if (!(obj instanceof ServiceDefImpl)) { return false; }
ServiceDef other = (ServiceDef) obj;
if (serviceId == null)
{
if (other.getServiceId() != null) { return false; }
}
else if (!serviceId.equals(other.getServiceId())) { return false; }
return true;
}
};
for (Class marker : serviceDef.getMarkers())
{
InternalUtils.addToMapList(markerToServiceDef, marker, serviceDef);
allServiceDefs.add(serviceDef);
}
tracker.define(serviceDef, Status.BUILTIN);
}