Author: rwesten
Date: Fri Jun  7 10:28:58 2013
New Revision: 1490571

URL: http://svn.apache.org/r1490571
Log:
STANBOL-1081: fixed two other small issues with the unregistration of 
registered components. ServiceRegistrations where unregistered twice (via the 
API and the Solr CloseHook#preClose) if the close was originating from an API 
call the the SolrServerAdapter.

Modified:
    
stanbol/trunk/commons/solr/core/src/main/java/org/apache/stanbol/commons/solr/SolrServerAdapter.java

Modified: 
stanbol/trunk/commons/solr/core/src/main/java/org/apache/stanbol/commons/solr/SolrServerAdapter.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/commons/solr/core/src/main/java/org/apache/stanbol/commons/solr/SolrServerAdapter.java?rev=1490571&r1=1490570&r2=1490571&view=diff
==============================================================================
--- 
stanbol/trunk/commons/solr/core/src/main/java/org/apache/stanbol/commons/solr/SolrServerAdapter.java
 (original)
+++ 
stanbol/trunk/commons/solr/core/src/main/java/org/apache/stanbol/commons/solr/SolrServerAdapter.java
 Fri Jun  7 10:28:58 2013
@@ -164,21 +164,27 @@ public class SolrServerAdapter {
                     for(String name : names){
                         CoreRegistration coreRegistration = 
registrations.get(name);
                         //we need to check if the core registered for the 
-                        //parsed name is still the same as parsed 
-                        if(coreRegistration.getCore().equals(core)){
-                            log.info("unregister Core with name '{}' based on 
call to" +
-                                " CloseHook#close()",name);
-                            registrations.remove(name);
-                            coreRegistration.unregister();
-                        } else {
-                            log.info("Core registered for name '{}' is not the 
same as" +
-                                    " parsed to CloseHook#close()",name);
-                        }
+                        //parsed name is still the same as parsed
+                        if(coreRegistration != null){
+                            if(coreRegistration.getCore().equals(core)){
+                                log.info("unregister Core with name '{}' based 
on call to" +
+                                    " CloseHook#close()",name);
+                                registrations.remove(name);
+                                coreRegistration.unregister();
+                            } else {
+                                log.info("Core registered for name '{}' is not 
the same as" +
+                                        " parsed to CloseHook#close()",name);
+                            }
+                        } //else the core was removed by using the API of the 
SolrServerAdapter
                     }
                 }
             }
             //update the OSGI service for the CoreContainer
-            updateServerRegistration();
+            try {
+                updateServerRegistration();
+            } catch (IllegalStateException e) {
+                log.debug("Server Registration already unregistered ",e);
+            }
         }
 
         @Override


Reply via email to