Java tutorial
/** * Copyright (C) 2013 Red Hat, Inc. (jdcasey@commonjava.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.commonjava.cartographer.discover.indy; import org.apache.commons.lang.StringUtils; import org.commonjava.cartographer.CartoException; import org.commonjava.cartographer.INTERNAL.graph.discover.SourceManagerImpl; import org.commonjava.cartographer.conf.CartoAliasConfig; import org.commonjava.cartographer.spi.graph.discover.DiscoverySourceManager; import org.commonjava.indy.client.core.Indy; import org.commonjava.indy.client.core.IndyClientException; import org.commonjava.indy.model.core.dto.EndpointView; import org.commonjava.indy.model.core.dto.EndpointViewListing; import org.commonjava.propulsor.lifecycle.AppLifecycleException; import org.commonjava.propulsor.lifecycle.StartupAction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.net.www.ApplicationLaunchException; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import java.util.ArrayList; import java.util.List; import java.util.Map; import static org.apache.commons.lang.StringUtils.isEmpty; import static org.commonjava.cartographer.rest.util.ResponseUtils.throwError; @ApplicationScoped public class CartoAliasingStartupAction implements StartupAction { @Inject private CartoAliasConfig config; @Inject private DiscoverySourceManager sourceManager; @Override public void start() throws AppLifecycleException { Logger logger = LoggerFactory.getLogger(getClass()); logger.info("STARTUP/begin: Alias initialization"); String baseUrl = config.getIndyUrl(); if (!isEmpty(baseUrl)) { logger.info("Retrieving endpoints from Indy at: {} in order to auto-alias...", baseUrl); try { Indy indy = new Indy(baseUrl).connect(); EndpointViewListing endpoints = indy.stats().getAllEndpoints(); for (EndpointView epv : endpoints.getItems()) { logger.info("Alias Indy '{}' => {}", epv.getKey(), epv.getResourceUri()); sourceManager.addSourceAlias(epv.getKey(), epv.getResourceUri()); } } catch (IndyClientException e) { throw new AppLifecycleException("Failed to read repositories from Indy at: %s. Reason: %s", e, baseUrl, e.getMessage()); } catch (CartoException e) { throw new AppLifecycleException("Failed to add alias from Indy at: %s. Reason: %s", e, baseUrl, e.getMessage()); } } else { logger.info("No Indy server configured. Skipping auto-aliasing step."); } Map<String, String> explicitAliases = config.getExplicitAliases(); List<String> errors = new ArrayList<>(); if (explicitAliases != null) { logger.info("Adding explicit aliases from configuration..."); explicitAliases.forEach((alias, url) -> { logger.info("Alias '{}' => {}", alias, url); try { sourceManager.addSourceAlias(alias, url); } catch (CartoException e) { errors.add(String.format("%s -> %s (Reason: %s)", e, alias, url, e.getMessage())); } }); } if (!errors.isEmpty()) { throw new AppLifecycleException("Failed to add aliases:\n %s", StringUtils.join(errors, "\n ")); } logger.info("STARTUP/done: Alias initialization complete."); } @Override public String getId() { return null; } @Override public int getPriority() { return 0; } }