blob: 569d51f590b01b1ba97128c91869f0ad9ea5b7cb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.repository.internal;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.Version;
import org.eclipse.virgo.medic.dump.Dump;
import org.eclipse.virgo.medic.dump.DumpContributionFailedException;
import org.eclipse.virgo.repository.Attribute;
import org.eclipse.virgo.repository.DuplicateArtifactException;
import org.eclipse.virgo.repository.RepositoryAwareArtifactDescriptor;
import org.eclipse.virgo.repository.codec.XMLRepositoryCodec;
import org.eclipse.virgo.repository.internal.ArtifactDescriptorDepository;
import org.eclipse.virgo.repository.internal.RepositoryDumpContributor;
import org.eclipse.virgo.util.io.PathReference;
/**
*/
public class RepositoryDumpContributorTests {
private static final String DUMP_TARGET = "target/dump";
private PathReference target = new PathReference(DUMP_TARGET);
@Before
public void before() {
this.target.delete(true);
}
@Test
public void testDumpEmpty() throws Exception {
RepositoryDumpContributor contributor = new RepositoryDumpContributor(new XMLRepositoryCodec());
contributor.contribute(new StubDump());
assertFalse(target.exists());
}
@Test
public void testDumpWithTwoDepositories() throws Exception {
RepositoryDumpContributor contributor = new RepositoryDumpContributor(new XMLRepositoryCodec());
ArtifactDescriptorDepository one = new StubDepository();
ArtifactDescriptorDepository two = new StubDepository();
contributor.addDepository("one", one);
contributor.addDepository("two", two);
contributor.contribute(new StubDump());
assertTrue(target.exists());
assertTrue(this.target.newChild("repository-one.index").exists());
assertTrue(this.target.newChild("repository-two.index").exists());
}
private static final class StubDepository implements ArtifactDescriptorDepository {
/**
* {@inheritDoc}
*/
public void addArtifactDescriptor(RepositoryAwareArtifactDescriptor artifactDesc) throws DuplicateArtifactException {
}
/**
* {@inheritDoc}
*/
public int getArtifactDescriptorCount() {
return 0;
}
/**
* {@inheritDoc}
*/
public void persist() throws IOException {
}
/**
* {@inheritDoc}
*/
public RepositoryAwareArtifactDescriptor removeArtifactDescriptor(URI uri) {
return null;
}
/**
* {@inheritDoc}
*/
public boolean removeArtifactDescriptor(RepositoryAwareArtifactDescriptor artifactDescriptor) {
return false;
}
/**
* {@inheritDoc}
*/
public Set<RepositoryAwareArtifactDescriptor> resolveArtifactDescriptors(Set<Attribute> filters) {
RepositoryAwareArtifactDescriptor descriptor = new RepositoryAwareArtifactDescriptor() {
public Version getVersion() {
return Version.emptyVersion;
}
public URI getUri() {
try {
return new URI("file:foo.jar");
} catch (URISyntaxException e) {
return null;
}
}
public String getType() {
return "bundle";
}
public String getRepositoryName() {
return "foo";
}
public String getName() {
return "my artifact";
}
public String getFilename() {
return "foo.jar";
}
public Set<Attribute> getAttributes() {
return Collections.<Attribute> emptySet();
}
public Set<Attribute> getAttribute(String name) {
return getAttributes();
}
};
return Collections.<RepositoryAwareArtifactDescriptor> singleton(descriptor);
}
}
private static final class StubDump implements Dump {
/**
* {@inheritDoc}
*/
public File createFile(String arg0) {
return null;
}
/**
* {@inheritDoc}
*/
public FileOutputStream createFileOutputStream(String name) throws DumpContributionFailedException {
File file = new File(DUMP_TARGET, name);
file.getParentFile().mkdirs();
try {
return new FileOutputStream(file);
} catch (FileNotFoundException e) {
throw new DumpContributionFailedException(e.getMessage());
}
}
/**
* {@inheritDoc}
*/
public FileWriter createFileWriter(String arg0) throws DumpContributionFailedException {
return null;
}
/**
* {@inheritDoc}
*/
public String getCause() {
return null;
}
/**
* {@inheritDoc}
*/
public Map<String, Object> getContext() {
return null;
}
/**
* {@inheritDoc}
*/
public Throwable[] getThrowables() {
return null;
}
/**
* {@inheritDoc}
*/
public long getTimestamp() {
return 0;
}
}
}