/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.brooklyn.api.entity.drivers.downloads; import java.util.List; import com.google.common.annotations.Beta; /** * Gives download details for an entity or an entity add-on. * Returned by the {@link DownloadResolverManager}, when queried for a specific entity or entity add-on. * * @author aled */ public interface DownloadResolver { /** * The targets (normally URLs) for downloading the artifact. These should be tried in-order * until one works. */ public List<String> getTargets(); /** * The name of the artifact. * The caller is free to use this name, or not. But using this name gives consistency particularly * between brooklyn local-repos and brooklyn install directories. */ public String getFilename(); /** * The name of the directory in the expanded artifact (e.g. if it's a tar.gz file then the name of * the directory within it). If no value is known, the defaultVal will be returned. * * This can return null if the artifact is not an archive (and if defaultVal is null). * * TODO The driver needs to know what will happen when an install archive is unpacked (e.g. an * AS7 install tgz may be automatically expanded into a directory named "jboss-as-7.1.1-FINAL"). * However, it's unclear where the best place to encode that is. The driver supplying the default * seems sensible. */ @Beta public String getUnpackedDirectoryName(String defaultVal); }