/* * Copyright [2013] [Cloud4SOA, www.cloud4soa.eu] * * * 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. */ /* * Copyright 2009-2011 the original author or authors. * * 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.cloudfoundry.client.lib.archive; import java.io.IOException; import java.io.InputStream; /** * Interface that represents an application archive (for example a WAR file) that can be uploaded to Cloud Foundry. * Archives consist of a {@link #getFilename() filename} and one or more {@link #getEntries() entries}. * * @author Phillip Webb */ public interface ApplicationArchive { /** * Returns the filename of the archive (excluding any path). * * @return the filename (for example myproject.war) */ String getFilename(); /** * Returns {@link Entry entries} that the archive contains. * * @return a collection of entries. */ Iterable<Entry> getEntries(); /** * A single entry contained within an {@link ApplicationArchive}. Entries are used to represent both files and * directories. */ public static interface Entry { /** * Returns <tt>true</tt> if the entry represents a directory. * * @return if the entry is a directory. */ boolean isDirectory(); /** * Returns the name of entry including a path. The <tt>'/'</tt> character should be used as a path separator. * The name should never start with <tt>'/'</tt>. * * @return the name */ String getName(); /** * Returns the size of entry or <tt>0</tt> if the entry is a {@link #isDirectory() directory}. * * @return the size */ long getSize(); /** * Returns a SHA1 digest over the {@link #getInputStream() contents} of the entry or <tt>null</tt> if the entry * is a {@link #isDirectory() directory}. * * @return the SHA1 digest */ byte[] getSha1Digest(); /** * Returns the content of the entry or <tt>null</tt> if the entry is a {@link #isDirectory() directory}. The * caller is responsible for closing the stream. * * @return the file contents * @throws IOException */ InputStream getInputStream() throws IOException; } }