@Override public Project createTempProject(Iterable<Class<? extends ProjectFacet>> facetTypes) throws IllegalStateException { Imported<ProjectProvider> buildSystems = getAddonRegistry().getServices(ProjectProvider.class); if (buildSystems.isAmbiguous()) throw new IllegalStateException( "Cannot create generic temporary project in environment where multiple build systems are available. " + "A single build system must be selected."); ProjectProvider buildSystem = buildSystems.get(); return createTempProject(buildSystem, facetTypes); }
if (services.isAmbiguous() || services.isUnsatisfied())
private <FACETEDTYPE extends Faceted<?>, FACETTYPE extends Facet<FACETEDTYPE>> FACETTYPE create( Class<FACETTYPE> type) { Assert.notNull(type, "Facet type must not be null."); Imported<FACETTYPE> instance = getAddonRegistry().getServices(type); if (instance.isAmbiguous()) { if (!type.isInterface() && !Modifier.isAbstract(type.getModifiers())) { FACETTYPE facet = instance.selectExact(type); return facet; } throw new FacetIsAmbiguousException("Cannot resolve ambiguous facet type [" + type.getName() + "] because multiple matching types were found: \n" + instance); } else if (instance.isUnsatisfied()) throw new FacetNotFoundException("Could not find Facet of type [" + type.getName() + "]"); else return instance.get(); }
@Override public void initializeUI(UIBuilder builder) throws Exception { InputComponentFactory factory = builder.getInputComponentFactory(); provider = factory.createSelectOne("provider", ScaffoldProvider.class).setLabel("Scaffold Type") .setRequired(true); webRoot = factory.createInput("webRoot", String.class).setLabel("Web Root Path").setDefaultValue("/") .setDescription( "The web root path where the scaffolding will be placed/accessible from the client browser (default '/')."); Imported<ScaffoldProvider> scaffoldProviders = SimpleContainer.getServices(getClass().getClassLoader(), ScaffoldProvider.class); if (!scaffoldProviders.isUnsatisfied() && !scaffoldProviders.isAmbiguous()) { provider.setDefaultValue(scaffoldProviders.get()); } provider.setValueChoices(scaffoldProviders); provider.setItemLabelConverter((source) -> source.getName()); builder.add(provider).add(webRoot); }
@Override public void initializeUI(UIBuilder builder) throws Exception { InputComponentFactory factory = builder.getInputComponentFactory(); provider = factory.createSelectOne("provider", ScaffoldProvider.class).setLabel("Scaffold Type") .setRequired(true); webRoot = factory.createInput("webRoot", String.class).setLabel("Web Root Path").setDefaultValue("/") .setDescription( "The web root path where the scaffolding will be placed/accessible from the client browser (default '/')."); Imported<ScaffoldProvider> scaffoldProviders = SimpleContainer.getServices(getClass().getClassLoader(), ScaffoldProvider.class); if (!scaffoldProviders.isUnsatisfied() && !scaffoldProviders.isAmbiguous()) { provider.setDefaultValue(scaffoldProviders.get()); } provider.setValueChoices(scaffoldProviders); provider.setItemLabelConverter(new Converter<ScaffoldProvider, String>() { @Override public String convert(ScaffoldProvider source) { return source == null ? null : source.getName(); } }); builder.add(provider).add(webRoot); }