/*
 * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.jersey.server;

import java.util.logging.Logger;

import org.glassfish.jersey.internal.BootstrapBag;
import org.glassfish.jersey.internal.BootstrapConfigurator;
import org.glassfish.jersey.internal.inject.InjectionManager;
import org.glassfish.jersey.server.model.Resource;

Configurator which initializes and register ResourceBag instance into BootstrapBag.
Author:Petr Bouda
/** * Configurator which initializes and register {@link ResourceBag} instance into {@link BootstrapBag}. * * @author Petr Bouda */
class ResourceBagConfigurator implements BootstrapConfigurator { private static final Logger LOGGER = Logger.getLogger(ResourceBagConfigurator.class.getName()); @Override public void init(InjectionManager injectionManager, BootstrapBag bootstrapBag) { ServerBootstrapBag serverBag = (ServerBootstrapBag) bootstrapBag; ResourceConfig runtimeConfig = serverBag.getRuntimeConfig(); final boolean disableValidation = ServerProperties.getValue(runtimeConfig.getProperties(), ServerProperties.RESOURCE_VALIDATION_DISABLE, Boolean.FALSE, Boolean.class); final ResourceBag.Builder resourceBagBuilder = new ResourceBag.Builder(); // Adding programmatic resource models for (final Resource programmaticResource : runtimeConfig.getResources()) { resourceBagBuilder.registerProgrammaticResource(programmaticResource); } // Introspecting classes & instances for (final Class<?> c : runtimeConfig.getClasses()) { try { final Resource resource = Resource.from(c, disableValidation); if (resource != null) { resourceBagBuilder.registerResource(c, resource); } } catch (final IllegalArgumentException ex) { LOGGER.warning(ex.getMessage()); } } for (final Object o : runtimeConfig.getSingletons()) { try { final Resource resource = Resource.from(o.getClass(), disableValidation); if (resource != null) { resourceBagBuilder.registerResource(o, resource); } } catch (final IllegalArgumentException ex) { LOGGER.warning(ex.getMessage()); } } serverBag.setResourceBag(resourceBagBuilder.build()); } }