Hi guys, just saw how javax.enterprise.inject.se.SeContainerInitializer#newInstance has been implemented. I'm not sure it was based on the ref implementation but - ignoring for now the OSGi issues - I don't think it works:
long exactSize = serviceLoader.spliterator().getExactSizeIfKnown(); if(exactSize == 0) { throw new IllegalStateException("No valid implementation of SeContainerInitializer found via ServiceLoader"); } else if(exactSize > 1) { throw new IllegalStateException("Multiple implementations ("+exactSize+") of SeContainerInitializer found via ServiceLoader"); } return serviceLoader.iterator().next(); exactSize will be -1 since the splititerator doesnt have the size as a characteristic so we'll always be not deterministic which seems not intended. Am I missing anything? Do we want to use the old instance = next(); if (hasNext()) fail(); pattern? Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com>