/* * 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.ivy.plugins.repository.ssh; import java.io.IOException; import java.io.InputStream; import org.apache.ivy.plugins.repository.Resource; import org.apache.ivy.util.Message; /** * Resource for SSH Ivy Repository */ public class SshResource implements Resource { private boolean resolved = false; private String uri = null; private boolean bExists = false; private long len = 0; private long lastModified = 0; private SshRepository repository = null; public SshResource() { resolved = true; } public SshResource(SshRepository repository, String uri) { this.uri = uri; this.repository = repository; resolved = false; } public SshResource(SshRepository repository, String uri, boolean bExists, long len, long lastModified) { this.uri = uri; this.bExists = bExists; this.len = len; this.lastModified = lastModified; this.repository = repository; resolved = true; } /* * (non-Javadoc) * * @see org.apache.ivy.repository.Resource#exists() */ public boolean exists() { if (!resolved) { resolve(); } return bExists; } /* * (non-Javadoc) * * @see org.apache.ivy.repository.Resource#getContentLength() */ public long getContentLength() { if (!resolved) { resolve(); } return len; } /* * (non-Javadoc) * * @see org.apache.ivy.repository.Resource#getLastModified() */ public long getLastModified() { if (!resolved) { resolve(); } return lastModified; } private void resolve() { Message.debug("SShResource: resolving " + uri); SshResource res = repository.resolveResource(uri); len = res.getContentLength(); lastModified = res.getLastModified(); bExists = res.exists(); resolved = true; Message.debug("SShResource: resolved " + this); } /* * (non-Javadoc) * * @see org.apache.ivy.repository.Resource#getName() */ public String getName() { return uri; } public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("SshResource:"); buffer.append(uri); buffer.append(" ("); buffer.append(len); buffer.append(")]"); return buffer.toString(); } public boolean isLocal() { return false; } public Resource clone(String cloneName) { return new SshResource(repository, cloneName); } public InputStream openStream() throws IOException { return repository.openStream(this); } }