Skip to content
This repository has been archived by the owner on Jun 7, 2021. It is now read-only.

Commit

Permalink
Add a parser and jar for tcrawley for the fraction-list.
Browse files Browse the repository at this point in the history
  • Loading branch information
bobmcwhirter committed Nov 10, 2015
1 parent e900b23 commit d5d4dd7
Show file tree
Hide file tree
Showing 6 changed files with 147 additions and 7 deletions.
2 changes: 1 addition & 1 deletion archetype/src/main/ruby/generate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
puts "Generating pom.xml list at #{Dir.pwd} for #{ARGV[0]}"

version = ARGV[0];
fractionList = File.open( File.join( '..', 'fraction-list', 'target', 'fraction-list.txt' ) ).read;
fractionList = File.open( File.join( '..', 'fraction-list', 'target', 'classes', 'fraction-list.txt' ) ).read;

outputDir = File.join( '.', 'target', 'classes', 'archetype-resources' );
FileUtils.mkdir_p( outputDir )
Expand Down
12 changes: 9 additions & 3 deletions fraction-list/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<name>WildFly Swarm: Fraction List</name>
<description>WildFly Swarm: Fraction List</description>

<packaging>pom</packaging>
<packaging>jar</packaging>

<properties>
<jruby.file>src/main/ruby/generate.rb</jruby.file>
Expand Down Expand Up @@ -212,6 +212,12 @@
<artifactId>wildfly-swarm-weld</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.easytesting</groupId>
<artifactId>fest-assert</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand All @@ -222,7 +228,7 @@
<executions>
<execution>
<id>generate-fraction-list</id>
<phase>compile</phase>
<phase>generate-sources</phase>
<goals>
<goal>jruby</goal>
</goals>
Expand All @@ -243,7 +249,7 @@
<configuration>
<artifacts>
<artifact>
<file>./target/fraction-list.txt</file>
<file>./target/classes/fraction-list.txt</file>
<type>txt</type>
</artifact>
</artifacts>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.wildfly.swarm.fractionlist;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
* @author Bob McWhirter
*/
public class FractionDescriptor {

private final String groupId;
private final String artifactId;

private Set<FractionDescriptor> dependencies = new HashSet<>();

FractionDescriptor(String groupId, String artifactId) {
this.groupId = groupId;
this.artifactId = artifactId;
}

void addDependency(FractionDescriptor dep) {
this.dependencies.add( dep );
}

public String getGroupId() {
return this.groupId;
}

public String getArtifactId() {
return this.artifactId;
}

public Set<FractionDescriptor> getDependencies() {
return Collections.unmodifiableSet(this.dependencies);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package org.wildfly.swarm.fractionlist;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
* @author Bob McWhirter
*/
public class FractionList {

private Map<String,FractionDescriptor> descriptors = new HashMap<>();

public FractionList() throws IOException {
try (BufferedReader reader = new BufferedReader( new InputStreamReader(getClass().getClassLoader().getResourceAsStream("fraction-list.txt") ))) {

String line = null;

while ( ( line = reader.readLine()) != null ) {
line = line.trim();
if ( line.isEmpty() ) {
continue;
}

String[] sides = line.split("=");

String lhs = sides[0].trim();

FractionDescriptor desc = this.descriptors.get( lhs );
if ( desc == null ) {
String[] gavParts = lhs.split(":");
desc = new FractionDescriptor( gavParts[0], gavParts[1] );
this.descriptors.put( lhs, desc );
}

if ( sides.length > 1 ) {
String rhs = sides[1].trim();
String[] deps = rhs.split(",");

for (String dep : deps) {
dep = dep.trim();
if (dep.isEmpty()) {
continue;
}

FractionDescriptor depDesc = this.descriptors.get(dep);
if (depDesc == null) {
String[] gavParts = dep.split(":");
depDesc = new FractionDescriptor(gavParts[0], gavParts[1]);
}
desc.addDependency(depDesc);
}
}
}
}
}

public Collection<FractionDescriptor> getFractionDescriptors() {
return Collections.unmodifiableCollection(this.descriptors.values());
}
}
6 changes: 3 additions & 3 deletions fraction-list/src/main/ruby/generate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ def generate()
roots << root
end

targetDir = File.join( '.', 'target' );
outputDir = File.join( '.', 'target', 'classes' );

FileUtils.mkdir_p( targetDir )
FileUtils.mkdir_p( outputDir )

File.open( File.join( targetDir, 'fraction-list.txt' ), 'w' ) do |f|
File.open( File.join( outputDir, 'fraction-list.txt' ), 'w' ) do |f|
for root in roots do
name = root['name']
deps = root['deps']
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.wildfly.swarm.fractionlist;

import java.io.IOException;
import java.util.Collection;
import java.util.stream.Collectors;

import org.junit.Test;

import static org.fest.assertions.Assertions.assertThat;

/**
* @author Bob McWhirter
*/
public class FractionListTest {

@Test
public void testList() throws IOException {
FractionList list = new FractionList();

Collection<FractionDescriptor> descriptors = list.getFractionDescriptors();

FractionDescriptor logstash = descriptors.stream().filter(e -> e.getArtifactId().equals("wildfly-swarm-logstash")).findFirst().get();

assertThat( logstash.getGroupId() ).isEqualTo("org.wildfly.swarm" );
assertThat( logstash.getArtifactId() ).isEqualTo("wildfly-swarm-logstash" );
assertThat( logstash.getDependencies() ).hasSize(2);

assertThat( logstash.getDependencies().stream().filter( e->e.getArtifactId().equals ("wildfly-swarm-container" ) ).collect(Collectors.toList())).isNotEmpty();
assertThat( logstash.getDependencies().stream().filter( e->e.getArtifactId().equals ("wildfly-swarm-logging" ) ).collect(Collectors.toList())).isNotEmpty();
}
}

0 comments on commit d5d4dd7

Please sign in to comment.