Add Library abstraction

Add a Library class update the LibraryCallback interface and
implementations to use it. This change is in preparation for
an addition `unpack` flag that will be required to allow the
automatic unpacking of certain nested jars.

See gh-1070
This commit is contained in:
Phillip Webb
2014-06-23 11:36:49 -07:00
parent 3d6c8a85f4
commit 5f8fbfd73a
9 changed files with 89 additions and 18 deletions

View File

@@ -24,6 +24,7 @@ import java.util.Set;
import org.apache.maven.artifact.Artifact;
import org.springframework.boot.loader.tools.Libraries;
import org.springframework.boot.loader.tools.Library;
import org.springframework.boot.loader.tools.LibraryCallback;
import org.springframework.boot.loader.tools.LibraryScope;
@@ -55,7 +56,7 @@ public class ArtifactsLibraries implements Libraries {
for (Artifact artifact : this.artifacts) {
LibraryScope scope = SCOPES.get(artifact.getScope());
if (scope != null && artifact.getFile() != null) {
callback.library(artifact.getFile(), scope);
callback.library(new Library(artifact.getFile(), scope));
}
}
}

View File

@@ -23,11 +23,16 @@ import java.util.Set;
import org.apache.maven.artifact.Artifact;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.boot.loader.tools.Library;
import org.springframework.boot.loader.tools.LibraryCallback;
import org.springframework.boot.loader.tools.LibraryScope;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify;
@@ -36,7 +41,7 @@ import static org.mockito.Mockito.verify;
*
* @author Phillip Webb
*/
public class ArtifactsLibrariesTest {
public class ArtifactsLibrariesTests {
@Mock
private Artifact artifact;
@@ -50,6 +55,9 @@ public class ArtifactsLibrariesTest {
@Mock
private LibraryCallback callback;
@Captor
private ArgumentCaptor<Library> libraryCaptor;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
@@ -63,6 +71,10 @@ public class ArtifactsLibrariesTest {
given(this.artifact.getType()).willReturn("jar");
given(this.artifact.getScope()).willReturn("compile");
this.libs.doWithLibraries(this.callback);
verify(this.callback).library(this.file, LibraryScope.COMPILE);
verify(this.callback).library(this.libraryCaptor.capture());
Library library = this.libraryCaptor.getValue();
assertThat(library.getFile(), equalTo(this.file));
assertThat(library.getScope(), equalTo(LibraryScope.COMPILE));
}
}