Skip to content

Commit

Permalink
#36 Separate injector into core and extras module
Browse files Browse the repository at this point in the history
  • Loading branch information
ljacqu committed Jun 12, 2017
1 parent 99a60e2 commit 6a648b8
Show file tree
Hide file tree
Showing 175 changed files with 793 additions and 169 deletions.
39 changes: 39 additions & 0 deletions injector-extras/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>ch.jalu</groupId>
<artifactId>injector-parent</artifactId>
<version>0.5-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>injector-extras</artifactId>

<dependencies>
<dependency>
<groupId>ch.jalu</groupId>
<artifactId>injector</artifactId>
<version>0.5-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>java-hamcrest</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.jalu.injector.annotations;
package ch.jalu.injector.extras;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ch.jalu.injector.annotations;
package ch.jalu.injector.extras;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package ch.jalu.injector.handlers.dependency;
package ch.jalu.injector.extras.handlers;

import ch.jalu.injector.annotations.AllInstances;
import ch.jalu.injector.Injector;
import ch.jalu.injector.context.ResolvedInstantiationContext;
import ch.jalu.injector.exceptions.InjectorException;
import ch.jalu.injector.extras.AllInstances;
import ch.jalu.injector.handlers.dependency.TypeSafeAnnotationHandler;
import ch.jalu.injector.handlers.instantiation.DependencyDescription;
import ch.jalu.injector.utils.InjectorUtils;
import ch.jalu.injector.utils.ReflectionUtils;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package ch.jalu.injector.handlers.dependency;
package ch.jalu.injector.extras.handlers;

import ch.jalu.injector.annotations.AllTypes;
import ch.jalu.injector.context.ResolvedInstantiationContext;
import ch.jalu.injector.extras.AllTypes;
import ch.jalu.injector.handlers.dependency.TypeSafeAnnotationHandler;
import ch.jalu.injector.handlers.instantiation.DependencyDescription;
import ch.jalu.injector.utils.InjectorUtils;
import ch.jalu.injector.utils.ReflectionUtils;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
package ch.jalu.injector.handlers.dependency;
package ch.jalu.injector.extras.handlers;

import ch.jalu.injector.annotations.AllInstances;
import ch.jalu.injector.Injector;
import ch.jalu.injector.InjectorBuilder;
import ch.jalu.injector.annotations.AllTypes;
import ch.jalu.injector.exceptions.InjectorException;
import ch.jalu.injector.samples.AlphaService;
import ch.jalu.injector.samples.ProvidedClass;
import ch.jalu.injector.samples.Reloadable;
import ch.jalu.injector.samples.animals.Animal;
import ch.jalu.injector.samples.animals.AnimalHandler;
import ch.jalu.injector.samples.animals.services.ChirpService;
import ch.jalu.injector.samples.animals.services.Configuration;
import ch.jalu.injector.samples.animals.services.CroakService;
import ch.jalu.injector.samples.animals.services.HissService;
import ch.jalu.injector.samples.animals.services.HissServiceProvider;
import ch.jalu.injector.samples.animals.services.RoarService;
import ch.jalu.injector.samples.animals.services.SoundServiceSupervisor;
import ch.jalu.injector.samples.animals.services.SqueakService;
import ch.jalu.injector.extras.AllInstances;
import ch.jalu.injector.extras.AllTypes;
import ch.jalu.injector.extras.samples.CinnamonService;
import ch.jalu.injector.extras.samples.LilacService;
import ch.jalu.injector.extras.samples.PaprikaService;
import ch.jalu.injector.extras.samples.SpiceService;
import ch.jalu.injector.extras.samples.animals.Animal;
import ch.jalu.injector.extras.samples.animals.AnimalHandler;
import ch.jalu.injector.extras.samples.animals.services.ChirpService;
import ch.jalu.injector.extras.samples.animals.services.Configuration;
import ch.jalu.injector.extras.samples.animals.services.CroakService;
import ch.jalu.injector.extras.samples.animals.services.HissService;
import ch.jalu.injector.extras.samples.animals.services.HissServiceProvider;
import ch.jalu.injector.extras.samples.animals.services.RoarService;
import ch.jalu.injector.extras.samples.animals.services.SoundServiceSupervisor;
import ch.jalu.injector.extras.samples.animals.services.SqueakService;
import org.junit.Before;
import org.junit.Test;

Expand Down Expand Up @@ -73,18 +74,14 @@ public void shouldInstantiateAllSubTypes() {

@Test
public void shouldInstantiateSubTypesWithDeclaredType() {
// given
injector.register(ProvidedClass.class, new ProvidedClass(""));

// when
// given / when
CorrectFields correctFields = injector.getSingleton(CorrectFields.class);

// then
assertThat(correctFields.reloadables, hasSize(2));
assertThat(correctFields.reloadables, not(hasItem(nullValue(Reloadable.class))));
assertThat(correctFields.spiceServices, containsInAnyOrder(instanceOf(CinnamonService.class), instanceOf(PaprikaService.class)));
assertThat(correctFields.animals, hasSize(7));
assertThat(correctFields.animals, not(hasItem(nullValue(Animal.class))));
assertThat(correctFields.alphaServices, empty());
assertThat(correctFields.lilacServices, empty());
}

@Test(expected = InjectorException.class)
Expand All @@ -102,7 +99,7 @@ public void shouldThrowForMissingGenericType() {
/**
* Full integration test with focus on {@link AllInstances} and {@link AllTypes}.
*
* @see ch.jalu.injector.samples.animals.AnimalHandler
* @see AnimalHandler
*/
@Test
@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -145,15 +142,15 @@ public void shouldPerformFullIntegrationTest() {
private static final class CorrectFields {
@Inject
@AllInstances
private Collection<Reloadable> reloadables;
private Collection<SpiceService> spiceServices;

@Inject
@AllInstances
private Set<Animal> animals;

@Inject
@AllInstances
private List<AlphaService> alphaServices;
private List<LilacService> lilacServices;
}

private static final class InvalidFields {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package ch.jalu.injector.handlers.dependency;
package ch.jalu.injector.extras.handlers;

import ch.jalu.injector.Injector;
import ch.jalu.injector.InjectorBuilder;
import ch.jalu.injector.samples.animals.Animal;
import ch.jalu.injector.samples.animals.AnimalLister;
import ch.jalu.injector.samples.animals.Bird;
import ch.jalu.injector.samples.animals.Chicken;
import ch.jalu.injector.samples.animals.Frog;
import ch.jalu.injector.samples.animals.Lion;
import ch.jalu.injector.samples.animals.Ostrich;
import ch.jalu.injector.samples.animals.Reptile;
import ch.jalu.injector.samples.animals.Snake;
import ch.jalu.injector.samples.animals.Sparrow;
import ch.jalu.injector.samples.animals.Turtle;
import ch.jalu.injector.extras.samples.animals.Animal;
import ch.jalu.injector.extras.samples.animals.AnimalLister;
import ch.jalu.injector.extras.samples.animals.Bird;
import ch.jalu.injector.extras.samples.animals.Chicken;
import ch.jalu.injector.extras.samples.animals.Frog;
import ch.jalu.injector.extras.samples.animals.Lion;
import ch.jalu.injector.extras.samples.animals.Ostrich;
import ch.jalu.injector.extras.samples.animals.Reptile;
import ch.jalu.injector.extras.samples.animals.Snake;
import ch.jalu.injector.extras.samples.animals.Sparrow;
import ch.jalu.injector.extras.samples.animals.Turtle;
import org.junit.Before;
import org.junit.Test;

Expand All @@ -30,7 +30,7 @@ public class AllTypesAnnotationHandlerTest {

@Before
public void initializeInjector() {
String rootPackage = "ch.jalu.injector.samples.animals";
String rootPackage = "ch.jalu.injector.extras.samples.animals";
injector = new InjectorBuilder()
.addHandlers(new AllTypesAnnotationHandler(rootPackage))
.addDefaultHandlers(rootPackage)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ch.jalu.injector.extras.samples;

/**
* Cinnamon service.
*/
public class CinnamonService implements SpiceService {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ch.jalu.injector.extras.samples;

/**
* Lilac service.
*/
public class LilacService {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ch.jalu.injector.extras.samples;

/**
* Paprika service.
*/
public class PaprikaService implements SpiceService {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ch.jalu.injector.extras.samples;

/**
* Dummy sample interface.
*/
public interface SpiceService {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ch.jalu.injector.extras.samples.animals;

/**
* Animal interface.
*/
public interface Animal {

String getName();

boolean canFly();

String makeSound();

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ch.jalu.injector.samples.animals;
package ch.jalu.injector.extras.samples.animals;

import ch.jalu.injector.annotations.AllInstances;
import ch.jalu.injector.annotations.AllTypes;
import ch.jalu.injector.samples.animals.services.SoundService;
import ch.jalu.injector.extras.AllInstances;
import ch.jalu.injector.extras.AllTypes;
import ch.jalu.injector.extras.samples.animals.services.SoundService;

import javax.inject.Inject;
import java.util.ArrayList;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package ch.jalu.injector.samples.animals;
package ch.jalu.injector.extras.samples.animals;

import ch.jalu.injector.annotations.AllTypes;
import ch.jalu.injector.extras.AllTypes;

import javax.inject.Inject;
import java.util.Collections;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package ch.jalu.injector.extras.samples.animals;

import ch.jalu.injector.extras.samples.animals.services.ChirpService;

/**
* Bird.
*/
public abstract class Bird implements Animal {

private ChirpService chirpService;

public Bird(ChirpService chirpService) {
this.chirpService = chirpService;
}

@Override
public boolean canFly() {
return true;
}

@Override
public final String makeSound() {
return chirpService.makeSound();
}

public abstract long weightInGramms();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ch.jalu.injector.extras.samples.animals;

import ch.jalu.injector.extras.samples.animals.services.ChirpService;

import javax.inject.Inject;

/**
*
*/
public class Chicken extends Bird {

@Inject
Chicken(ChirpService chirpService) {
super(chirpService);
}

@Override
public long weightInGramms() {
return 2400;
}

@Override
public String getName() {
return "Chicken";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package ch.jalu.injector.extras.samples.animals;

import ch.jalu.injector.extras.samples.animals.services.CroakService;
import ch.jalu.injector.extras.samples.animals.services.NameService;

import javax.inject.Inject;

/**
* Frog.
*/
public class Frog implements Animal {

@Inject
private NameService nameService;
@Inject
private CroakService croakService;

@Override
public String getName() {
return nameService.constructName(this);
}

@Override
public boolean canFly() {
return false;
}

public String makeSound() {
return croakService.makeSound();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package ch.jalu.injector.extras.samples.animals;

import ch.jalu.injector.extras.samples.animals.services.NameService;
import ch.jalu.injector.extras.samples.animals.services.RoarService;

import javax.inject.Inject;

/**
* Lion class.
*/
public class Lion implements Animal {

@Inject
private RoarService roarService;
@Inject
private NameService nameService;

@Override
public boolean canFly() {
return false;
}

@Override
public String makeSound() {
return roarService.makeSound();
}

@Override
public String getName() {
return nameService.constructName(this);
}

}
Loading

0 comments on commit 6a648b8

Please sign in to comment.