You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gn...@apache.org on 2008/10/15 20:05:37 UTC

svn commit: r704977 - in /geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry: AliasMetaMapper.java CommandMetaMapper.java

Author: gnodet
Date: Wed Oct 15 11:05:36 2008
New Revision: 704977

URL: http://svn.apache.org/viewvc?rev=704977&view=rev
Log:
Fix race problem if commands/aliases are registered before the meta mappers

Modified:
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java?rev=704977&r1=704976&r2=704977&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/AliasMetaMapper.java Wed Oct 15 11:05:36 2008
@@ -25,6 +25,7 @@
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaData;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRegistry;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.support.MetaDataRegistryConfigurer;
+import org.apache.geronimo.gshell.registry.AliasRegistry;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.PostConstruct;
@@ -43,18 +44,27 @@
     @Autowired
     private MetaDataRegistry metaRegistry;
 
+    @Autowired
+    private AliasRegistry aliasRegistry;
+
     private MetaDataRegistryConfigurer metaConfig;
 
     @PostConstruct
-    public void init() {
+    public synchronized void init() throws Exception {
         assert metaRegistry != null;
         metaConfig = new MetaDataRegistryConfigurer(metaRegistry);
 
         assert eventManager != null;
         eventManager.addListener(this);
+
+        // Add existing aliases in case some have already been registered
+        for (String name : aliasRegistry.getAliasNames()) {
+            MetaData data = metaConfig.addFile("/aliases/" + name);
+            data.addAttribute("ALIAS", aliasRegistry.getAlias(name));
+        }
     }
 
-    public void onEvent(final Event event) throws Exception {
+    public synchronized void onEvent(final Event event) throws Exception {
         assert event != null;
 
         if (event instanceof AliasRegisteredEvent) {

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java?rev=704977&r1=704976&r2=704977&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/registry/CommandMetaMapper.java Wed Oct 15 11:05:36 2008
@@ -25,6 +25,7 @@
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaData;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRegistry;
 import org.apache.geronimo.gshell.vfs.provider.meta.data.support.MetaDataRegistryConfigurer;
+import org.apache.geronimo.gshell.registry.CommandRegistry;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.PostConstruct;
@@ -43,18 +44,27 @@
     @Autowired
     private MetaDataRegistry metaRegistry;
 
+    @Autowired
+    private CommandRegistry commandRegistry;
+
     private MetaDataRegistryConfigurer metaConfig;
 
     @PostConstruct
-    public void init() {
+    public synchronized void init() throws Exception {
         assert metaRegistry != null;
         metaConfig = new MetaDataRegistryConfigurer(metaRegistry);
 
         assert eventManager != null;
         eventManager.addListener(this);
+
+        // Add existing commands in case some have already been registered
+        for (String name : commandRegistry.getCommandNames()) {
+            MetaData data = metaConfig.addFile("/commands/" + name);
+            data.addAttribute("COMMAND", commandRegistry.getCommand(name));
+        }
     }
 
-    public void onEvent(final Event event) throws Exception {
+    public synchronized void onEvent(final Event event) throws Exception {
         assert event != null;
 
         if (event instanceof CommandRegisteredEvent) {