Skip to content

Commit

Permalink
Use ProvisionListener SPI for lifecycle callbacks
Browse files Browse the repository at this point in the history
WIP

This closes #176
  • Loading branch information
kwin committed Sep 30, 2024
1 parent 3a8b268 commit 659189a
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 73 deletions.
49 changes: 2 additions & 47 deletions org.eclipse.sisu.inject/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -137,33 +137,6 @@
<stripVersion>true</stripVersion>
</configuration>
<executions>
<execution>
<id>guice3</id>
<phase>test</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</artifactItem>
<artifactItem>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assistedinject</artifactId>
<version>3.0</version>
</artifactItem>
<artifactItem>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-servlet</artifactId>
<version>3.0</version>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/guice3</outputDirectory>
</configuration>
</execution>
<execution>
<id>guice4</id>
<phase>test</phase>
Expand Down Expand Up @@ -326,6 +299,7 @@
<skip>true</skip>
</configuration>
</execution>
<!--
<execution>
<id>base</id>
<goals>
Expand All @@ -337,26 +311,7 @@
<additionalClasspathElement>${project.build.directory}/guice3/guice.jar</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
<execution>
<id>guice3</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<reportNameSuffix>guice3</reportNameSuffix>
<excludedGroups>base</excludedGroups>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.directory}/guice3/guava.jar</additionalClasspathElement>
<additionalClasspathElement>${project.build.directory}/guice3/guice.jar</additionalClasspathElement>
<additionalClasspathElement>${project.build.directory}/guice3/guice-assistedinject.jar</additionalClasspathElement>
<additionalClasspathElement>${project.build.directory}/guice3/guice-servlet.jar</additionalClasspathElement>
</additionalClasspathElements>
<systemPropertyVariables>
<guiceVersion>guice3</guiceVersion>
</systemPropertyVariables>
</configuration>
</execution>
</execution>-->
<execution>
<id>guice4</id>
<goals>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,8 @@

import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.TypeLiteral;
import com.google.inject.matcher.AbstractMatcher;
import com.google.inject.matcher.Matcher;
import com.google.inject.spi.InjectionListener;
import com.google.inject.spi.TypeEncounter;
import com.google.inject.spi.TypeListener;
import com.google.inject.matcher.Matchers;
import com.google.inject.spi.ProvisionListener;

/**
* Guice {@link Module} that provides lifecycle management by following {@link org.eclipse.sisu.PostConstruct}
Expand All @@ -36,27 +32,11 @@ public final class LifecycleModule

/* These classes map the Guice SPI to the BeanManager SPI */

private final Matcher<TypeLiteral<?>> matcher = new AbstractMatcher<TypeLiteral<?>>()
private final ProvisionListener provisionListener = new ProvisionListener()
{
public boolean matches( final TypeLiteral<?> type )
public <T> void onProvision(final ProvisionInvocation<T> provision)
{
return manager.manage( type.getRawType() );
}
};

private final TypeListener typeListener = new TypeListener()
{
private final InjectionListener<Object> listener = new InjectionListener<Object>()
{
public void afterInjection( final Object bean )
{
manager.manage( bean );
}
};

public <B> void hear( final TypeLiteral<B> type, final TypeEncounter<B> encounter )
{
encounter.register( listener );
manager.manage(provision.provision());
}
};

Expand All @@ -83,6 +63,6 @@ public LifecycleModule( final BeanManager manager )
public void configure( final Binder binder )
{
binder.bind( BeanManager.class ).toInstance( manager );
binder.bindListener( matcher, typeListener );
binder.bindListener( Matchers.any(), provisionListener );
}
}

0 comments on commit 659189a

Please sign in to comment.