mirror of https://github.com/apache/lucene.git
SOLR-1427: fixed registry MBean issue
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@815587 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2ecb6776ad
commit
98eec6bdfe
|
@ -559,6 +559,8 @@ Bug Fixes
|
||||||
|
|
||||||
66. SOLR-1381: Fixed improper handling of fields that have only term positions and not term offsets during Highlighting (Thorsten Fischer, gsingers)
|
66. SOLR-1381: Fixed improper handling of fields that have only term positions and not term offsets during Highlighting (Thorsten Fischer, gsingers)
|
||||||
|
|
||||||
|
67. SOLR-1427: Fixed registry.jsp issue with MBeans (gsingers)
|
||||||
|
|
||||||
Other Changes
|
Other Changes
|
||||||
----------------------
|
----------------------
|
||||||
1. Upgraded to Lucene 2.4.0 (yonik)
|
1. Upgraded to Lucene 2.4.0 (yonik)
|
||||||
|
|
|
@ -574,6 +574,8 @@ public final class SolrCore implements SolrInfoMBean {
|
||||||
// Finally tell anyone who wants to know
|
// Finally tell anyone who wants to know
|
||||||
resourceLoader.inform( resourceLoader );
|
resourceLoader.inform( resourceLoader );
|
||||||
resourceLoader.inform( this );
|
resourceLoader.inform( this );
|
||||||
|
//register any SolrInfoMBeans
|
||||||
|
resourceLoader.inform(infoRegistry);
|
||||||
instance = this; // set singleton for backwards compatibility
|
instance = this; // set singleton for backwards compatibility
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
|
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
|
||||||
|
@ -830,7 +832,11 @@ public final class SolrCore implements SolrInfoMBean {
|
||||||
}
|
}
|
||||||
private <T> void addIfNotPresent(Map<String ,T> registry, String name, Class<? extends T> c){
|
private <T> void addIfNotPresent(Map<String ,T> registry, String name, Class<? extends T> c){
|
||||||
if(!registry.containsKey(name)){
|
if(!registry.containsKey(name)){
|
||||||
registry.put(name, (T) resourceLoader.newInstance(c.getName()));
|
T searchComp = (T) resourceLoader.newInstance(c.getName());
|
||||||
|
registry.put(name, searchComp);
|
||||||
|
if (searchComp instanceof SolrInfoMBean){
|
||||||
|
infoRegistry.put(((SolrInfoMBean)searchComp).getName(), (SolrInfoMBean)searchComp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ public class SolrResourceLoader implements ResourceLoader
|
||||||
private String dataDir;
|
private String dataDir;
|
||||||
|
|
||||||
private final List<SolrCoreAware> waitingForCore = new ArrayList<SolrCoreAware>();
|
private final List<SolrCoreAware> waitingForCore = new ArrayList<SolrCoreAware>();
|
||||||
|
private final List<SolrInfoMBean> infoMBeans = new ArrayList<SolrInfoMBean>();
|
||||||
private final List<ResourceLoaderAware> waitingForResources = new ArrayList<ResourceLoaderAware>();
|
private final List<ResourceLoaderAware> waitingForResources = new ArrayList<ResourceLoaderAware>();
|
||||||
private static final Charset UTF_8 = Charset.forName("UTF-8");
|
private static final Charset UTF_8 = Charset.forName("UTF-8");
|
||||||
|
|
||||||
|
@ -345,6 +346,10 @@ public class SolrResourceLoader implements ResourceLoader
|
||||||
assertAwareCompatibility( ResourceLoaderAware.class, obj );
|
assertAwareCompatibility( ResourceLoaderAware.class, obj );
|
||||||
waitingForResources.add( (ResourceLoaderAware)obj );
|
waitingForResources.add( (ResourceLoaderAware)obj );
|
||||||
}
|
}
|
||||||
|
if (obj instanceof SolrInfoMBean){
|
||||||
|
//TODO: Assert here?
|
||||||
|
infoMBeans.add((SolrInfoMBean) obj);
|
||||||
|
}
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -401,6 +406,10 @@ public class SolrResourceLoader implements ResourceLoader
|
||||||
assertAwareCompatibility( ResourceLoaderAware.class, obj );
|
assertAwareCompatibility( ResourceLoaderAware.class, obj );
|
||||||
waitingForResources.add( (ResourceLoaderAware)obj );
|
waitingForResources.add( (ResourceLoaderAware)obj );
|
||||||
}
|
}
|
||||||
|
if (obj instanceof SolrInfoMBean){
|
||||||
|
//TODO: Assert here?
|
||||||
|
infoMBeans.add((SolrInfoMBean) obj);
|
||||||
|
}
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,6 +436,16 @@ public class SolrResourceLoader implements ResourceLoader
|
||||||
}
|
}
|
||||||
waitingForResources.clear();
|
waitingForResources.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register any {@link org.apache.solr.core.SolrInfoMBean}s
|
||||||
|
* @param infoRegistry The Info Registry
|
||||||
|
*/
|
||||||
|
public void inform(Map<String, SolrInfoMBean> infoRegistry) {
|
||||||
|
for (SolrInfoMBean bean : infoMBeans) {
|
||||||
|
infoRegistry.put(bean.getName(), bean);
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Determines the solrhome from the environment.
|
* Determines the solrhome from the environment.
|
||||||
* Tries JNDI (java:comp/env/solr/home) then system property (solr.solr.home);
|
* Tries JNDI (java:comp/env/solr/home) then system property (solr.solr.home);
|
||||||
|
@ -535,4 +554,5 @@ public class SolrResourceLoader implements ResourceLoader
|
||||||
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, builder.toString() );
|
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, builder.toString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,8 @@
|
||||||
package org.apache.solr.core;
|
package org.apache.solr.core;
|
||||||
|
|
||||||
import org.apache.solr.handler.RequestHandlerBase;
|
import org.apache.solr.handler.RequestHandlerBase;
|
||||||
|
import org.apache.solr.handler.component.SpellCheckComponent;
|
||||||
|
import org.apache.solr.handler.component.QueryComponent;
|
||||||
import org.apache.solr.request.SolrQueryRequest;
|
import org.apache.solr.request.SolrQueryRequest;
|
||||||
import org.apache.solr.request.SolrQueryResponse;
|
import org.apache.solr.request.SolrQueryResponse;
|
||||||
import org.apache.solr.request.SolrRequestHandler;
|
import org.apache.solr.request.SolrRequestHandler;
|
||||||
|
@ -164,6 +166,24 @@ public class SolrCoreTest extends AbstractSolrTestCase {
|
||||||
service.shutdown();
|
service.shutdown();
|
||||||
assertTrue("Running for too long...", service.awaitTermination(60, TimeUnit.SECONDS));
|
assertTrue("Running for too long...", service.awaitTermination(60, TimeUnit.SECONDS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testInfoRegistry() throws Exception {
|
||||||
|
//TEst that SolrInfoMBeans are registered, including SearchComponents
|
||||||
|
SolrCore core = h.getCore();
|
||||||
|
|
||||||
|
Map<String, SolrInfoMBean> infoRegistry = core.getInfoRegistry();
|
||||||
|
assertTrue("infoRegistry Size: " + infoRegistry.size() + " is not greater than: " + 0, infoRegistry.size() > 0);
|
||||||
|
//try out some that we know are in the config
|
||||||
|
SolrInfoMBean bean = infoRegistry.get(SpellCheckComponent.class.getName());
|
||||||
|
assertNotNull("bean not registered", bean);
|
||||||
|
//try a default one
|
||||||
|
bean = infoRegistry.get(QueryComponent.class.getName());
|
||||||
|
assertNotNull("bean not registered", bean);
|
||||||
|
//try a Req Handler, which are stored by name, not clas
|
||||||
|
bean = infoRegistry.get("standard");
|
||||||
|
assertNotNull("bean not registered", bean);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,7 @@
|
||||||
[<a href="#cache">Cache</a>]
|
[<a href="#cache">Cache</a>]
|
||||||
[<a href="#query">Query</a>]
|
[<a href="#query">Query</a>]
|
||||||
[<a href="#update">Update</a>]
|
[<a href="#update">Update</a>]
|
||||||
|
[<a href="#highlighting">Highlighting</a>]
|
||||||
[<a href="#other">Other</a>]
|
[<a href="#other">Other</a>]
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -248,6 +249,39 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
<xsl:template match="solr/solr-info/HIGHLIGHTING">
|
||||||
|
<br />
|
||||||
|
<a name="highlighting"><h2>Highlighting</h2></a>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td align="right">
|
||||||
|
 
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<xsl:apply-templates/>
|
||||||
|
</table>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="solr/solr-info/HIGHLIGHTING/entry">
|
||||||
|
<xsl:for-each select="*">
|
||||||
|
<tr>
|
||||||
|
<td align="right">
|
||||||
|
<strong><xsl:value-of select="name()"/>: </strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<tt><xsl:value-of select="."/> </tt>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
<tr>
|
||||||
|
<td align="right">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
<xsl:template match="solr/solr-info/OTHER">
|
<xsl:template match="solr/solr-info/OTHER">
|
||||||
<br />
|
<br />
|
||||||
|
|
Loading…
Reference in New Issue