Bug 386446: test lifecycle support
diff --git a/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusBeanMetadataTest.java b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusBeanMetadataTest.java
index cc9d8bc..a3b0a21 100644
--- a/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusBeanMetadataTest.java
+++ b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusBeanMetadataTest.java
@@ -17,8 +17,8 @@
import org.codehaus.plexus.component.annotations.Configuration;
import org.codehaus.plexus.component.annotations.Requirement;
-import org.eclipse.sisu.bean.BeanProperty;
import org.eclipse.sisu.bean.BeanManager;
+import org.eclipse.sisu.bean.BeanProperty;
import org.eclipse.sisu.bean.PropertyBinding;
import org.eclipse.sisu.inject.DeferredClass;
import org.eclipse.sisu.space.URLClassSpace;
diff --git a/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusConfigurationTest.java b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusConfigurationTest.java
index 756f7c8..4a667ad 100644
--- a/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusConfigurationTest.java
+++ b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusConfigurationTest.java
@@ -16,8 +16,8 @@
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Configuration;
-import org.eclipse.sisu.bean.BeanProperty;
import org.eclipse.sisu.bean.BeanManager;
+import org.eclipse.sisu.bean.BeanProperty;
import org.eclipse.sisu.bean.PropertyBinding;
import com.google.inject.AbstractModule;
diff --git a/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusLifecycleTest.java b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusLifecycleTest.java
new file mode 100644
index 0000000..24d00a3
--- /dev/null
+++ b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusLifecycleTest.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2013 Sonatype, 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:
+ * Stuart McCulloch (Sonatype, Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sisu.plexus;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import junit.framework.TestCase;
+
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.DefaultContainerConfiguration;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
+
+import com.google.inject.AbstractModule;
+
+public class PlexusLifecycleTest
+ extends TestCase
+{
+ static class PlexusBean
+ implements Startable
+ {
+ private final StringBuilder results = new StringBuilder();
+
+ public void start()
+ {
+ results.append( "<" );
+ }
+
+ public void stop()
+ {
+ results.append( ">" );
+ }
+
+ @Override
+ public String toString()
+ {
+ return results.toString();
+ }
+ }
+
+ static class Jsr250Bean
+ {
+ private final StringBuilder results = new StringBuilder();
+
+ @PostConstruct
+ public void start()
+ {
+ results.append( "{" );
+ }
+
+ @PreDestroy
+ public void stop()
+ {
+ results.append( "}" );
+ }
+
+ @Override
+ public String toString()
+ {
+ return results.toString();
+ }
+ }
+
+ public void testPlexusLifecycle()
+ throws Exception
+ {
+ // standard Plexus lifecycle is always enabled
+ PlexusContainer container = createContainer( false );
+ PlexusBean bean = container.lookup( PlexusBean.class );
+ assertEquals( "<", bean.toString() );
+ container.dispose();
+ assertEquals( "<>", bean.toString() );
+
+ // same results with JSR250 enabled
+ container = createContainer( true );
+ bean = container.lookup( PlexusBean.class );
+ assertEquals( "<", bean.toString() );
+ container.dispose();
+ assertEquals( "<>", bean.toString() );
+ }
+
+ public void testJsr250Lifecycle()
+ throws Exception
+ {
+ // nothing should happen as JSR250 is off by default
+ PlexusContainer container = createContainer( false );
+ Jsr250Bean bean = container.lookup( Jsr250Bean.class );
+ assertEquals( "", bean.toString() );
+ container.dispose();
+ assertEquals( "", bean.toString() );
+
+ // now try again with JSR250 enabled
+ container = createContainer( true );
+ bean = container.lookup( Jsr250Bean.class );
+ assertEquals( "{", bean.toString() );
+ container.dispose();
+ assertEquals( "{}", bean.toString() );
+ }
+
+ private static PlexusContainer createContainer( final boolean jsr250 )
+ throws Exception
+ {
+ final ContainerConfiguration config = new DefaultContainerConfiguration();
+ return new DefaultPlexusContainer( config.setJSR250Lifecycle( jsr250 ), new AbstractModule()
+ {
+ @Override
+ protected void configure()
+ {
+ bind( PlexusBean.class );
+ bind( Jsr250Bean.class );
+ }
+ } );
+ }
+}
diff --git a/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusLoggingTest.java b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusLoggingTest.java
index aed2d18..f898c78 100644
--- a/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusLoggingTest.java
+++ b/org.eclipse.sisu.plexus.tests/src/org/eclipse/sisu/plexus/PlexusLoggingTest.java
@@ -16,8 +16,8 @@
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
-import org.eclipse.sisu.bean.BeanProperty;
import org.eclipse.sisu.bean.BeanManager;
+import org.eclipse.sisu.bean.BeanProperty;
import org.eclipse.sisu.bean.PropertyBinding;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;