You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/09/11 07:27:59 UTC
svn commit: r694138 - in /geronimo/gshell/trunk: ./
gshell-assembly/src/main/underlay/etc/
gshell-commands/gshell-builtins/src/main/resources/META-INF/gshell/
gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/
gshell-wisdom/src/...
Author: jdillon
Date: Wed Sep 10 22:27:58 2008
New Revision: 694138
URL: http://svn.apache.org/viewvc?rev=694138&view=rev
Log:
Use events to configure components which require a configured application
Added:
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java (with props)
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java (with props)
Modified:
geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml
geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-log4j.properties
geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/gshell/commands.xml
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/SettingsManagerImpl.java
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineBuilderImpl.java
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineExecutorImpl.java
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/HistoryImpl.java
geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java
geronimo/gshell/trunk/pom.xml
Modified: geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml (original)
+++ geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/application.xml Wed Sep 10 22:27:58 2008
@@ -46,11 +46,11 @@
<dependencyGroups>
<dependencyGroup>
- <groupId>org.apache.geronimo.gshell.rapture</groupId>
+ <groupId>org.apache.geronimo.gshell</groupId>
<version>1.0-alpha-2-SNAPSHOT</version>
<dependency>
- <artifactId>gshell-rapture-core</artifactId>
+ <artifactId>gshell-wisdom</artifactId>
</dependency>
</dependencyGroup>
@@ -62,6 +62,7 @@
<artifactId>gshell-builtins</artifactId>
</dependency>
+ <!--
<dependency>
<artifactId>gshell-optional</artifactId>
</dependency>
@@ -77,8 +78,10 @@
<dependency>
<artifactId>gshell-vfs</artifactId>
</dependency>
+ -->
</dependencyGroup>
+ <!--
<dependencyGroup>
<groupId>org.apache.geronimo.gshell.remote</groupId>
<version>1.0-alpha-2-SNAPSHOT</version>
@@ -91,6 +94,7 @@
<artifactId>gshell-remote-server</artifactId>
</dependency>
</dependencyGroup>
+ -->
</dependencyGroups>
<!--
Modified: geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-log4j.properties
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-log4j.properties?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-log4j.properties (original)
+++ geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-log4j.properties Wed Sep 10 22:27:58 2008
@@ -58,4 +58,7 @@
# Keep some of the bits used to handle artifacts + repository muck quieter
log4j.logger.org.apache.maven=INFO
log4j.logger.org.apache.maven.artifact.manager=ERROR
-log4j.logger.org.apache.maven.artifact.repository.metadata=WARN
\ No newline at end of file
+log4j.logger.org.apache.maven.artifact.repository.metadata=WARN
+
+# Make spring be terse
+log4j.logger.org.springframework=INFO
\ No newline at end of file
Modified: geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/gshell/commands.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/gshell/commands.xml?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/gshell/commands.xml (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/gshell/commands.xml Wed Sep 10 22:27:58 2008
@@ -46,8 +46,10 @@
<property name="documenter">
<bean class="org.apache.geronimo.gshell.wisdom.command.CommandDocumenterImpl">
+ <!--
<property name="name" value="echo"/>
<property name="description" value="Blah, blah, blah"/>
+ -->
</bean>
</property>
</bean>
Modified: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/ApplicationManagerImpl.java Wed Sep 10 22:27:58 2008
@@ -35,6 +35,9 @@
import org.apache.geronimo.gshell.model.interpolate.InterpolatorSupport;
import org.apache.geronimo.gshell.model.settings.Settings;
import org.apache.geronimo.gshell.shell.Shell;
+import org.apache.geronimo.gshell.spring.BeanContainer;
+import org.apache.geronimo.gshell.spring.BeanContainerAware;
+import org.apache.geronimo.gshell.wisdom.application.event.ApplicationConfiguredEvent;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
@@ -63,7 +66,7 @@
* @version $Rev$ $Date$
*/
public class ApplicationManagerImpl
- implements ApplicationManager
+ implements ApplicationManager, BeanContainerAware
{
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -75,6 +78,16 @@
private ApplicationContext applicationContext;
+ private BeanContainer container;
+
+ private BeanContainer applicationContainer;
+
+ public void setBeanContainer(final BeanContainer container) {
+ assert container != null;
+
+ this.container = container;
+ }
+
public ApplicationContext getContext() {
if (applicationContext == null) {
throw new IllegalStateException("Application has not been configured");
@@ -111,6 +124,10 @@
return config.getApplication();
}
};
+
+ log.debug("Application configured");
+
+ applicationContainer.publish(new ApplicationConfiguredEvent(this));
}
private void interpolate(final ApplicationConfiguration config) throws Exception {
@@ -148,8 +165,7 @@
configureArtifactManager(application);
// Create the application container
- // FIXME:
- // container = createContainer(application);
+ applicationContainer = createContainer(application);
}
private void configureArtifactManager(final Application application) throws Exception {
@@ -169,36 +185,19 @@
}
}
- /*
- private GShellPlexusContainer createContainer(final Application application) throws Exception {
+ private BeanContainer createContainer(final Application application) throws Exception {
assert application != null;
log.debug("Creating application container");
List<URL> classPath = createClassPath(application);
- ClassWorld world = new ClassWorld();
- ClassRealm realm = world.newRealm("gshell.application[" + application.getId().replace(".", "/") + "]");
- realm.setParentRealm(parentContainer.getContainerRealm());
-
- for (URL url : classPath) {
- realm.addURL(url);
- }
-
- ContainerConfiguration config = new DefaultContainerConfiguration();
- config.setName(application.getId());
- config.setClassWorld(world);
- config.setRealm(realm);
- config.addComponentDiscoverer(new PluginDiscoverer());
- config.addComponentDiscoveryListener(new PluginCollector());
-
- GShellPlexusContainer child = parentContainer.createChild(config);
+ BeanContainer child = container.createChild(application.getId(), classPath);
log.debug("Application container: {}", child);
return child;
}
- */
private List<URL> createClassPath(final Application application) throws Exception {
assert application != null;
@@ -246,8 +245,10 @@
"gshell-i18n",
"gshell-io",
"gshell-model",
- "gshell-plexus",
- "gshell-rapture-bootstrap",
+ // "gshell-plexus",
+ // "gshell-rapture-bootstrap",
+ "gshell-spring",
+ "gshell-wisdom",
"gshell-yarn",
"jcl104-over-slf4j",
"jline",
@@ -271,6 +272,11 @@
"xbean-reflect",
"xpp3_min",
"xstream-",
+ "geronimo-annotation_1.0_spec",
+ "spring-core",
+ "spring-context",
+ "spring-beans",
+ "aopalliance",
});
if (resolvedArtifacts != null && !resolvedArtifacts.isEmpty()) {
@@ -296,7 +302,7 @@
// Make sure that we have a valid context
getContext();
- final Shell shell = null; // FIXME: container.lookupComponent(Shell.class);
+ final Shell shell = applicationContainer.getBean(Shell.class);
log.debug("Created shell instance: {}", shell);
Modified: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/SettingsManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/SettingsManagerImpl.java?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/SettingsManagerImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/SettingsManagerImpl.java Wed Sep 10 22:27:58 2008
@@ -26,6 +26,9 @@
import org.apache.geronimo.gshell.model.interpolate.Interpolator;
import org.apache.geronimo.gshell.model.interpolate.InterpolatorSupport;
import org.apache.geronimo.gshell.model.settings.Settings;
+import org.apache.geronimo.gshell.spring.BeanContainerAware;
+import org.apache.geronimo.gshell.spring.BeanContainer;
+import org.apache.geronimo.gshell.wisdom.application.event.SettingsConfiguredEvent;
import org.codehaus.plexus.interpolation.PropertiesBasedValueSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,7 +40,7 @@
* @version $Rev$ $Date$
*/
public class SettingsManagerImpl
- implements SettingsManager
+ implements SettingsManager, BeanContainerAware
{
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -46,6 +49,14 @@
private SettingsConfiguration settingsConfiguration;
+ private BeanContainer container;
+
+ public void setBeanContainer(final BeanContainer container) {
+ assert container != null;
+
+ this.container = container;
+ }
+
public Settings getSettings() {
if (settingsConfiguration == null) {
throw new IllegalStateException("Not configured");
@@ -73,6 +84,10 @@
// TODO: Merge in some default settings or something?
settingsConfiguration = config;
+
+ log.debug("Settings configured");
+
+ container.publish(new SettingsConfiguredEvent(this));
}
private void interpolate(final SettingsConfiguration config) throws Exception {
Added: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java?rev=694138&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java (added)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java Wed Sep 10 22:27:58 2008
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.gshell.wisdom.application.event;
+
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * ???
+ *
+ * @version $Rev$ $Date$
+ */
+public class ApplicationConfiguredEvent
+ extends ApplicationEvent
+{
+ public ApplicationConfiguredEvent(Object source) {
+ super(source);
+ }
+}
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/ApplicationConfiguredEvent.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java?rev=694138&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java (added)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java Wed Sep 10 22:27:58 2008
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.gshell.wisdom.application.event;
+
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * ???
+ *
+ * @version $Rev$ $Date$
+ */
+public class SettingsConfiguredEvent
+ extends ApplicationEvent
+{
+ public SettingsConfiguredEvent(Object source) {
+ super(source);
+ }
+}
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/application/event/SettingsConfiguredEvent.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineBuilderImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineBuilderImpl.java?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineBuilderImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineBuilderImpl.java Wed Sep 10 22:27:58 2008
@@ -28,13 +28,21 @@
import org.apache.geronimo.gshell.parser.CommandLineParser;
import org.apache.geronimo.gshell.parser.ParseException;
import org.apache.geronimo.gshell.command.Variables;
+import org.apache.geronimo.gshell.spring.BeanContainerAware;
+import org.apache.geronimo.gshell.spring.BeanContainer;
+import org.apache.geronimo.gshell.wisdom.application.event.ApplicationConfiguredEvent;
import org.codehaus.plexus.util.IOUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.ApplicationEvent;
+import javax.annotation.PostConstruct;
import java.io.Reader;
import java.io.StringReader;
+import java.io.File;
+import java.io.IOException;
/**
* Builds {@link CommandLine} instances ready for executing.
@@ -42,20 +50,39 @@
* @version $Rev$ $Date$
*/
public class CommandLineBuilderImpl
- implements CommandLineBuilder
+ implements CommandLineBuilder, BeanContainerAware
{
private final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private ApplicationManager applicationManager;
- @Autowired
+ private BeanContainer container;
+
private CommandLineExecutor executor;
private final CommandLineParser parser = new CommandLineParser();
public CommandLineBuilderImpl() {}
+ public void setBeanContainer(final BeanContainer container) {
+ assert container != null;
+
+ this.container = container;
+ }
+
+ @PostConstruct
+ public void init() {
+ container.addListener(new ApplicationListener()
+ {
+ public void onApplicationEvent(final ApplicationEvent event) {
+ if (event instanceof ApplicationConfiguredEvent) {
+ executor = container.getBean(CommandLineExecutor.class);
+ }
+ }
+ });
+ }
+
private ASTCommandLine parse(final String input) throws ParseException {
assert input != null;
Modified: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineExecutorImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineExecutorImpl.java?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineExecutorImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/CommandLineExecutorImpl.java Wed Sep 10 22:27:58 2008
@@ -41,8 +41,6 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import javax.annotation.Resource;
-import javax.annotation.PostConstruct;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
@@ -71,20 +69,6 @@
@Autowired
private CommandLineBuilder commandLineBuilder;
- private Variables variables;
-
- private IO io;
-
- public CommandLineExecutorImpl() {}
-
- @PostConstruct
- public void init() {
- assert applicationManager != null;
-
- this.variables = applicationManager.getContext().getVariables();
- this.io = applicationManager.getContext().getIo();
- }
-
public Object execute(final String line) throws Exception {
assert line != null;
@@ -118,7 +102,7 @@
log.info("Executing (Object...): [{}]", Arguments.asString(args));
- return execute(String.valueOf(args[0]), Arguments.shift(args), io);
+ return execute(String.valueOf(args[0]), Arguments.shift(args), applicationManager.getContext().getIo());
}
public Object execute(final String path, final Object[] args) throws Exception {
@@ -127,7 +111,7 @@
log.info("Executing ({}): [{}]", path, Arguments.asString(args));
- return execute(path, args, io);
+ return execute(path, args, applicationManager.getContext().getIo());
}
public Object execute(final Object[][] commands) throws Exception {
@@ -137,6 +121,8 @@
final IO[] ios = new IO[commands.length];
PipedOutputStream pos = null;
+ IO io = applicationManager.getContext().getIo();
+
for (int i = 0; i < ios.length; i++) {
InputStream is = (i == 0) ? io.inputStream : new PipedInputStream(pos);
OutputStream os;
@@ -214,6 +200,8 @@
protected Object execute(final String path, final Object[] args, final IO io) throws Exception {
log.debug("Executing");
+ final Variables variables = applicationManager.getContext().getVariables();
+
final Command command = commandResolver.resolve(variables, path);
// Setup the command context and pass it to the command instance
Modified: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/HistoryImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/HistoryImpl.java?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/HistoryImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/HistoryImpl.java Wed Sep 10 22:27:58 2008
@@ -23,7 +23,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.geronimo.gshell.application.ApplicationManager;
+import org.apache.geronimo.gshell.spring.BeanContainerAware;
+import org.apache.geronimo.gshell.spring.BeanContainer;
+import org.apache.geronimo.gshell.wisdom.application.event.ApplicationConfiguredEvent;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.ApplicationEvent;
import javax.annotation.PostConstruct;
import java.io.IOException;
@@ -36,26 +41,47 @@
*/
public class HistoryImpl
extends History
+ implements BeanContainerAware
{
private final Logger log = LoggerFactory.getLogger(getClass());
+ private BeanContainer container;
+
@Autowired
private ApplicationManager applicationManager;
public HistoryImpl() {}
+ public void setBeanContainer(BeanContainer container) {
+ assert container != null;
+ this.container = container;
+ }
+
@PostConstruct
public void init() {
- assert applicationManager != null;
-
- try {
- setHistoryFile(applicationManager.getContext().getApplication().getBranding().getHistoryFile());
- }
- catch (IOException e) {
- throw new RuntimeException("Failed to set history file", e);
- }
+ container.addListener(new ApplicationListener()
+ {
+ public void onApplicationEvent(final ApplicationEvent event) {
+ log.debug("Processing application event: {}", event);
+
+ if (event instanceof ApplicationConfiguredEvent) {
+ assert applicationManager != null;
+
+ try {
+ File file = applicationManager.getContext().getApplication().getBranding().getHistoryFile();
+
+ log.debug("Application configured, setting history file: {}", file);
+
+ setHistoryFile(file);
+ }
+ catch (IOException e) {
+ throw new RuntimeException("Failed to set history file", e);
+ }
+ }
+ }
+ });
}
-
+
public void setHistoryFile(final File file) throws IOException {
assert file != null;
Modified: geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java Wed Sep 10 22:27:58 2008
@@ -35,15 +35,21 @@
import org.apache.geronimo.gshell.notification.ExitNotification;
import org.apache.geronimo.gshell.shell.Shell;
import org.apache.geronimo.gshell.shell.ShellInfo;
+import org.apache.geronimo.gshell.wisdom.application.event.ApplicationConfiguredEvent;
+import org.apache.geronimo.gshell.spring.BeanContainerAware;
+import org.apache.geronimo.gshell.spring.BeanContainer;
import org.codehaus.plexus.util.IOUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.ApplicationEvent;
import javax.annotation.PostConstruct;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
+import java.io.IOException;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -52,7 +58,7 @@
* @version $Rev$ $Date$
*/
public class ShellImpl
- implements Shell
+ implements Shell, BeanContainerAware
{
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -68,6 +74,8 @@
@Autowired
private History history;
+ private BeanContainer container;
+
private Variables variables;
private IO io;
@@ -92,24 +100,39 @@
return true;
}
- @PostConstruct
- public void init() {
- assert applicationManager != null;
-
- // Dereference some bits from the applciation context
- ApplicationContext context = applicationManager.getContext();
- this.io = context.getIo();
- this.variables = context.getVariables();
- this.branding = context.getApplication().getBranding();
+ public void setBeanContainer(BeanContainer container) {
+ assert container != null;
- try {
- loadProfileScripts();
- }
- catch (Exception e) {
- throw new RuntimeException(e.getMessage(), e);
- }
+ this.container = container;
}
+ @PostConstruct
+ public void init() {
+ container.addListener(new ApplicationListener()
+ {
+ public void onApplicationEvent(final ApplicationEvent event) {
+ log.debug("Processing application event: {}", event);
+
+ if (event instanceof ApplicationConfiguredEvent) {
+ assert applicationManager != null;
+
+ // Dereference some bits from the applciation context
+ ApplicationContext context = applicationManager.getContext();
+ io = context.getIo();
+ variables = context.getVariables();
+ branding = context.getApplication().getBranding();
+
+ try {
+ loadProfileScripts();
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+ }
+ });
+ }
+
//
// Command Execution (all delegates)
//
@@ -139,6 +162,7 @@
log.debug("Starting interactive console; args: {}", args);
+
assert branding != null;
loadUserScript(branding.getInteractiveScriptName());
Modified: geronimo/gshell/trunk/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/pom.xml?rev=694138&r1=694137&r2=694138&view=diff
==============================================================================
--- geronimo/gshell/trunk/pom.xml (original)
+++ geronimo/gshell/trunk/pom.xml Wed Sep 10 22:27:58 2008
@@ -165,6 +165,16 @@
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact-manager</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>