Guest User

Untitled

a guest
Jan 23rd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.37 KB | None | 0 0
  1. public class ServiceFactory implements FactoryBean {
  2.     @Autowired
  3.     private List<AbstractService> services;
  4.  
  5.     private List<Class> additionalInterfaces = new ArrayList<Class>();
  6.  
  7.     @Override
  8.     public Object getObject() throws Exception {
  9.         if (services == null || services.isEmpty()) {
  10.             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.");
  11.         }
  12.  
  13.         List<Class> interfaces = new ArrayList<Class>();
  14.         for (AbstractService service : services) {
  15.             for (Class<?> intf : service.getClass().getInterfaces()) {
  16.                 if (!AbstractService.class.equals(intf) && (AbstractService.class.isAssignableFrom(intf) || additionalInterfaces.contains(intf))) {
  17.                     interfaces.add(intf);
  18.                 }
  19.             }
  20.         }
  21.         interfaces.add(Service.class);
  22.         return Mixin.create(interfaces.toArray(new Class[0]), services.toArray());
  23.     }
  24.  
  25.     @Override
  26.     public Class getObjectType() {
  27.         return Service.class;
  28.     }
  29.  
  30.     @Override
  31.     public boolean isSingleton() {
  32.         return true;
  33.     }
  34.  
  35.     public void setAdditionalInterfaces(List<Class> additionalInterfaces) {
  36.         this.additionalInterfaces = additionalInterfaces;
  37.     }
  38. }
Add Comment
Please, Sign In to add comment