Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ServiceFactory implements FactoryBean {
- @Autowired
- private List<AbstractService> services;
- private List<Class> additionalInterfaces = new ArrayList<Class>();
- @Override
- public Object getObject() throws Exception {
- if (services == null || services.isEmpty()) {
- throw new RuntimeException("Autowiring of service implementation is broken. Probably you referenced interface Service from the logic context. Use a more specific service interface instead.");
- }
- List<Class> interfaces = new ArrayList<Class>();
- for (AbstractService service : services) {
- for (Class<?> intf : service.getClass().getInterfaces()) {
- if (!AbstractService.class.equals(intf) && (AbstractService.class.isAssignableFrom(intf) || additionalInterfaces.contains(intf))) {
- interfaces.add(intf);
- }
- }
- }
- interfaces.add(Service.class);
- return Mixin.create(interfaces.toArray(new Class[0]), services.toArray());
- }
- @Override
- public Class getObjectType() {
- return Service.class;
- }
- @Override
- public boolean isSingleton() {
- return true;
- }
- public void setAdditionalInterfaces(List<Class> additionalInterfaces) {
- this.additionalInterfaces = additionalInterfaces;
- }
- }
Add Comment
Please, Sign In to add comment