You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by ry...@apache.org on 2007/12/07 04:49:55 UTC

svn commit: r601975 [2/2] - in /lucene/solr/trunk: client/java/solrj/src/org/apache/solr/client/solrj/ client/java/solrj/src/org/apache/solr/client/solrj/embedded/ client/java/solrj/src/org/apache/solr/client/solrj/impl/ client/java/solrj/src/org/apach...

Modified: lucene/solr/trunk/src/webapp/resources/admin/_info.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/_info.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/_info.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/_info.jsp Thu Dec  6 19:49:52 2007
@@ -24,9 +24,17 @@
 <%@ page import="org.apache.solr.util.XML"%>
 <%@ page import="org.apache.lucene.LucenePackage"%>
 
+
 <%
-  Object ocore = request.getAttribute("org.apache.solr.SolrCore");
-  SolrCore core = ocore instanceof SolrCore? (SolrCore) ocore : SolrCore.getSolrCore();
+  // 
+  SolrCore  core = (SolrCore) request.getAttribute("org.apache.solr.SolrCore");
+  if (core == null) {
+    String coreParam = request.getParameter("core");
+    core = coreParam != null? org.apache.solr.core.MultiCore.getRegistry().getCore(coreParam) : null;
+  }
+  if (core == null)
+    core = SolrCore.getSolrCore();
+    
   SolrConfig solrConfig = core.getSolrConfig();
   int port = request.getServerPort();
   IndexSchema schema = core.getSchema();

Modified: lucene/solr/trunk/src/webapp/resources/admin/action.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/action.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/action.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/action.jsp Thu Dec  6 19:49:52 2007
@@ -111,6 +111,6 @@
   </tr>
 </table>
 <br><br>
-    <a href=".">Return to Admin Page</a>
+    <a href=".?core=<%=core.getName()%>">Return to Admin Page</a>
 </body>
 </html>

Modified: lucene/solr/trunk/src/webapp/resources/admin/analysis.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/analysis.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/analysis.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/analysis.jsp Thu Dec  6 19:49:52 2007
@@ -60,6 +60,7 @@
 <h2>Field Analysis</h2>
 
 <form method="GET" action="analysis.jsp">
+<input type='hidden' name='core' value='<%=core.getName()%>'>
 <table>
 <tr>
   <td>

Modified: lucene/solr/trunk/src/webapp/resources/admin/distributiondump.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/distributiondump.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/distributiondump.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/distributiondump.jsp Thu Dec  6 19:49:52 2007
@@ -153,6 +153,6 @@
 <%= buffer %>
 </table>
 <br><br>
-    <a href=".">Return to Admin Page</a>
+    <a href=".?<%=core.getName()%>">Return to Admin Page</a>
 </body>
 </html>

Modified: lucene/solr/trunk/src/webapp/resources/admin/form.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/form.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/form.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/form.jsp Thu Dec  6 19:49:52 2007
@@ -19,7 +19,7 @@
 
 <br clear="all">
 <form name="queryForm" method="GET" action="../select">
-
+<input name='core' type='hidden' value='<%=core.getName()%>'>
 <!-- these are good defaults to have if people bookmark the resulting
      URLs, but they should not show up in the form since they are very
      output type specific.

Modified: lucene/solr/trunk/src/webapp/resources/admin/header.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/header.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/header.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/header.jsp Thu Dec  6 19:49:52 2007
@@ -29,7 +29,7 @@
 </head>
 
 <body>
-<a href="."><img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="Solr"></a>
+<a href="?core=<%=core.getName()%>"><img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="Solr"></a>
 <h1>Solr Admin (<%= collectionName %>)
 <%= enabledStatus==null ? "" : (isEnabled ? " - Enabled" : " - Disabled") %> </h1>
 

Modified: lucene/solr/trunk/src/webapp/resources/admin/index.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/index.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/index.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/index.jsp Thu Dec  6 19:49:52 2007
@@ -34,42 +34,53 @@
 	<h3>Solr</h3>
   </td>
   <td>
-    [<a href="get-file.jsp?file=<%=core.getSchemaFile()%>">Schema</a>]
-    [<a href="get-file.jsp?file=<%=core.getConfigFile()%>">Config</a>]
-    [<a href="analysis.jsp?highlight=on">Analysis</a>]
+    [<a href="get-file.jsp?core=<%=core.getName()%>&file=<%=core.getSchemaFile()%>">Schema</a>]
+    [<a href="get-file.jsp?core=<%=core.getName()%>&file=<%=core.getConfigFile()%>">Config</a>]
+    [<a href="analysis.jsp?core=<%=core.getName()%>&highlight=on">Analysis</a>]
     <br>
-    [<a href="stats.jsp">Statistics</a>]
-    [<a href="registry.jsp">Info</a>]
-    [<a href="distributiondump.jsp">Distribution</a>]
-    [<a href="ping">Ping</a>]
-    [<a href="logging.jsp">Logging</a>]
+    [<a href="stats.jsp?core=<%=core.getName()%>">Statistics</a>]
+    [<a href="registry.jsp?core=<%=core.getName()%>">Info</a>]
+    [<a href="distributiondump.jsp?core=<%=core.getName()%>">Distribution</a>]
+    [<a href="ping?core=<%=core.getName()%>">Ping</a>]
+    [<a href="logging.jsp?core=<%=core.getName()%>">Logging</a>]
   </td>
 </tr>
 
+<%-- List the cores (that arent this one) so we can switch --%>
+<% java.util.Collection<SolrCore> cores = org.apache.solr.core.MultiCore.getRegistry().getCores();
+if (cores.size() > 1) {%><tr><td><strong>Cores:</strong><br></td><td><%
+  java.util.Iterator<SolrCore> icore = cores.iterator();
+  while (icore.hasNext()) {
+    SolrCore acore = icore.next();
+    if (acore == core) continue;
+    %>[<a href=".?core=<%=acore.getName()%>"><%=acore.getName()%></a>]<%         
+  }%></td></tr><%
+}%>
 
 <tr>
   <td>
     <strong>App server:</strong><br>
   </td>
   <td>
-    [<a href="get-properties.jsp">Java Properties</a>]
-    [<a href="threaddump.jsp">Thread Dump</a>]
+    [<a href="get-properties.jsp?core=<%=core.getName()%>">Java Properties</a>]
+    [<a href="threaddump.jsp?core=<%=core.getName()%>">Thread Dump</a>]
   <%
     if (enabledFile!=null)
     if (isEnabled) {
   %>
-  [<a href="action.jsp?action=Disable">Disable</a>]
+  [<a href="action.jsp?core=<%=core.getName()%>&action=Disable">Disable</a>]
   <%
     } else {
   %>
-  [<a href="action.jsp?action=Enable">Enable</a>]
+  [<a href="action.jsp?core=<%=core.getName()%>&action=Enable">Enable</a>]
   <%
     }
   %>
   </td>
 </tr>
 
-<jsp:include page="get-file.jsp?file=admin-extra.html&optional=y" flush="true"/>
+
+<jsp:include page="get-file.jsp?core=<%=core.getName()%>&file=admin-extra.html&optional=y" flush="true"/>
 
 </table><P>
 
@@ -80,7 +91,7 @@
 	<h3>Make a Query</h3>
   </td>
   <td>
-[<a href="form.jsp">Full Interface</a>]
+[<a href="form.jsp?core=<%=core.getName()%>">Full Interface</a>]
   </td>
   
 </tr>
@@ -91,6 +102,7 @@
   <td colspan=2>
 	<form name=queryForm method="GET" action="../select/">
         <textarea class="std" rows="4" cols="40" name="q"><%= defaultSearch %></textarea>
+        <input name="core" type="hidden" value="<%=core.getName()%>">
         <input name="version" type="hidden" value="2.2">
 	<input name="start" type="hidden" value="0">
 	<input name="rows" type="hidden" value="10">

Modified: lucene/solr/trunk/src/webapp/resources/admin/logging.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/logging.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/logging.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/logging.jsp Thu Dec  6 19:49:52 2007
@@ -28,6 +28,14 @@
 <?xml-stylesheet type="text/xsl" href="logging.xsl"?>
 
 <%
+  SolrCore  core = (SolrCore) request.getAttribute("org.apache.solr.SolrCore");
+  if (core == null) {
+    String coreParam = request.getParameter("core");
+    core = coreParam != null? org.apache.solr.core.MultiCore.getRegistry().getCore(coreParam) : null;
+  }
+  if (core == null)
+    core = SolrCore.getSolrCore();
+    
   Logger log = SolrCore.log;
   Logger parent = log.getParent();
   while(parent != null) {
@@ -38,6 +46,7 @@
       
 %>
 <solr>
+  <core><%=core.getName()%></core>
   <logging>
 <% if (lvl != null) {%>
       <logLevel><%= lvl.toString() %></logLevel>

Modified: lucene/solr/trunk/src/webapp/resources/admin/logging.xsl
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/logging.xsl?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/logging.xsl (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/logging.xsl Thu Dec  6 19:49:52 2007
@@ -1,89 +1,119 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-<!-- $Id$ -->
-<!-- $URL$ -->
-
-<xsl:stylesheet
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  version="1.0">
-
-  <xsl:output
-    method="html"
-    indent="yes"
-    doctype-public="-//W3C//DTD HTML 4.01//EN"
-    doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
-
-  <xsl:template match="/">
-    <html>
-      <head>
-        <link rel="stylesheet" type="text/css" href="solr-admin.css"></link>
-	<link rel="icon" href="/favicon.ico" type="image/ico"></link>
-	<link rel="shortcut icon" href="/favicon.ico" type="image/ico"></link>
-        <title>Solr Admin: Logging</title>
-      </head>
-      <body>
-        <a href="">
-	   <img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="SOLR">
-	   </img>
-	</a>
-        <h1>Solr Admin (<xsl:value-of select="solr/meta/collection" />)</h1>
-        <div style="margin-top: 1em;">
-          <xsl:apply-templates/>
-        <div>
-        </div>
-          <a href=".">Return to Admin Page</a>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-
-  <xsl:include href="meta.xsl"/>
-
-  <xsl:template match="solr/logging">
-
-<br clear="all"/>
-<h2>Solr Logging</h2>
-<table>
-  <tr>
-    <td>
-      <H3>Log Level:</H3>
-    </td>
-    <td>
-<xsl:value-of select="logLevel" />
-    </td>
-  </tr>
-  <tr>
-    <td>
-    Set Level
-    </td>
-    <td>
-    [<a href="action.jsp?log=ALL">ALL</a>]
-    [<a href="action.jsp?log=CONFIG">CONFIG</a>]
-    [<a href="action.jsp?log=FINE">FINE</a>]
-    [<a href="action.jsp?log=FINER">FINER</a>]
-    [<a href="action.jsp?log=FINEST">FINEST</a>]
-    [<a href="action.jsp?log=INFO">INFO</a>]
-    [<a href="action.jsp?log=OFF">OFF</a>]
-    [<a href="action.jsp?log=SEVERE">SEVERE</a>]
-    [<a href="action.jsp?log=WARNING">WARNING</a>]
-    </td>
-  </tr>
-</table>
-
-  </xsl:template>
-</xsl:stylesheet>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+<!-- $Id$ -->
+<!-- $URL$ -->
+
+<xsl:stylesheet
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  version="1.0">
+
+  <xsl:output
+    method="html"
+    indent="yes"
+    doctype-public="-//W3C//DTD HTML 4.01//EN"
+    doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
+
+  <xsl:template match="/">
+    <html>
+      <head>
+        <link rel="stylesheet" type="text/css" href="solr-admin.css"></link>
+	<link rel="icon" href="/favicon.ico" type="image/ico"></link>
+	<link rel="shortcut icon" href="/favicon.ico" type="image/ico"></link>
+        <title>Solr Admin: Logging</title>
+      </head>
+      <body>
+        <a href="">
+	   <img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="SOLR">
+	   </img>
+	</a>
+        <h1>Solr Admin (<xsl:value-of select="solr/meta/collection" />)</h1>
+        <div style="margin-top: 1em;">
+          <xsl:apply-templates/>
+        <div>
+        </div>
+          <xsl:element name='a'>
+            <xsl:attribute name='href'>.?core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+            <xsl:text>Return to Admin Page</xsl:text>
+          </xsl:element>
+        </div>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:include href="meta.xsl"/>
+
+  <xsl:template match="solr/logging">
+
+<br clear="all"/>
+<h2>Solr Logging</h2>
+<table>
+  <tr>
+    <td>
+      <H3>Log Level:</H3>
+    </td>
+    <td>
+<xsl:value-of select="logLevel" />
+    </td>
+  </tr>
+  <tr>
+    <td>
+    Set Level
+    </td>
+    <td>
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=ALL&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>ALL</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=CONFIG&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>CONFIG</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=FINE&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>FINE</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=FINER&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>FINER</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=FINEST&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>FINEST</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=INFO&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>INFO</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=OFF&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>OFF</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=SEVERE&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>SEVERE</xsl:text>
+    </xsl:element>]
+    [<xsl:element name='a'>
+    <xsl:attribute name='href'>action.jsp?log=WARNING&amp;core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+      <xsl:text>WARNING</xsl:text>
+    </xsl:element>]
+    </td>
+  </tr>
+</table>
+
+  </xsl:template>
+</xsl:stylesheet>

Modified: lucene/solr/trunk/src/webapp/resources/admin/ping.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/ping.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/ping.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/ping.jsp Thu Dec  6 19:49:52 2007
@@ -24,26 +24,22 @@
 <%@ page import="org.apache.solr.request.ServletSolrParams"%>
 <%@ page import="org.apache.solr.request.SolrQueryRequest"%>
 
+<%
+  SolrCore  core = (SolrCore) request.getAttribute("org.apache.solr.SolrCore");
+  if (core == null) {
+    String coreParam = request.getParameter("core");
+    core = coreParam != null? org.apache.solr.core.MultiCore.getRegistry().getCore(coreParam) : null;
+  }
+  if (core == null)
+    core = SolrCore.getSolrCore();
+%>
 <?xml-stylesheet type="text/xsl" href="ping.xsl"?>
 
 <solr>
+  <core><%=core.getName()%></core>
   <ping>
 <%
-//
-//  Deprecated -- use PingRequestHandler
-// 
-
-  Object ocore = request.getAttribute("org.apache.solr.SolrCore");
-  SolrCore core = ocore instanceof SolrCore? (SolrCore) ocore : SolrCore.getSolrCore();
-
-  SolrQueryRequest req = null;
-
-  if (null == request.getQueryString()) {
-    req = core.getPingQueryRequest();
-  } else {
-    req = new LocalSolrQueryRequest(core, new ServletSolrParams(request));
-  }
-
+  SolrQueryRequest req = core.getPingQueryRequest();
   SolrQueryResponse resp = new SolrQueryResponse();
   try {
     core.execute(req,resp);

Modified: lucene/solr/trunk/src/webapp/resources/admin/ping.xsl
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/ping.xsl?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/ping.xsl (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/ping.xsl Thu Dec  6 19:49:52 2007
@@ -1,69 +1,72 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-<!-- $Id$ -->
-<!-- $URL$ -->
-
-<xsl:stylesheet
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  version="1.0">
-
-  <xsl:output
-    method="html"
-    indent="yes"
-    doctype-public="-//W3C//DTD HTML 4.01//EN"
-    doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
-
-  <xsl:template match="/">
-    <html>
-      <head>
-        <link rel="stylesheet" type="text/css" href="solr-admin.css"></link>
-	<link rel="icon" href="/favicon.ico" type="image/ico"></link>
-	<link rel="shortcut icon" href="/favicon.ico" type="image/ico"></link>
-        <title>Solr Admin: Ping</title>
-      </head>
-      <body>
-        <a href="">
-	   <img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="SOLR">
-	   </img>
-	</a>
-        <h1>Solr Admin (<xsl:value-of select="solr/meta/collection" />)</h1>
-        <div style="margin-top: 1em;">
-          <xsl:apply-templates/>
-        <div>
-        </div>
-          <a href=".">Return to Admin Page</a>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-
-  <xsl:include href="meta.xsl"/>
-
-  <xsl:template match="solr/ping">
-  <table>
-    <tr>
-      <td>
-        <H3>Ping</H3>
-      </td>
-      <td>
-        <xsl:value-of select="error" />
-      </td>
-    </tr>
-  </table>
-  </xsl:template>
-</xsl:stylesheet>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+<!-- $Id$ -->
+<!-- $URL$ -->
+
+<xsl:stylesheet
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  version="1.0">
+
+  <xsl:output
+    method="html"
+    indent="yes"
+    doctype-public="-//W3C//DTD HTML 4.01//EN"
+    doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
+
+  <xsl:template match="/">
+    <html>
+      <head>
+        <link rel="stylesheet" type="text/css" href="solr-admin.css"></link>
+	<link rel="icon" href="/favicon.ico" type="image/ico"></link>
+	<link rel="shortcut icon" href="/favicon.ico" type="image/ico"></link>
+        <title>Solr Admin: Ping</title>
+      </head>
+      <body>
+        <a href="">
+	   <img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="SOLR">
+	   </img>
+	</a>
+        <h1>Solr Admin (<xsl:value-of select="solr/meta/collection" />)</h1>
+        <div style="margin-top: 1em;">
+          <xsl:apply-templates/>
+        <div>
+        </div>
+          <xsl:element name='a'>
+            <xsl:attribute name='href'>.?core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+            <xsl:text>Return to Admin Page (ping)</xsl:text>
+          </xsl:element>
+        </div>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:include href="meta.xsl"/>
+
+  <xsl:template match="solr/ping">
+  <table>
+    <tr>
+      <td>
+        <H3>Ping</H3>
+      </td>
+      <td>
+        <xsl:value-of select="error" />
+      </td>
+    </tr>
+  </table>
+  </xsl:template>
+</xsl:stylesheet>

Modified: lucene/solr/trunk/src/webapp/resources/admin/raw-schema.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/raw-schema.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/raw-schema.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/raw-schema.jsp Thu Dec  6 19:49:52 2007
@@ -20,8 +20,14 @@
 <%@ page import="java.io.Reader"%>
 <%@ page contentType="text/plain;charset=UTF-8" language="java" %>
 <%
-  Object ocore = request.getAttribute("org.apache.solr.SolrCore");
-  SolrCore core = ocore instanceof SolrCore? (SolrCore) ocore : SolrCore.getSolrCore();
+  SolrCore  core = (SolrCore) request.getAttribute("org.apache.solr.SolrCore");
+  if (core == null) {
+    String coreParam = request.getParameter("core");
+    core = coreParam != null? org.apache.solr.core.MultiCore.getRegistry().getCore(coreParam) : null;
+  }
+  if (core == null)
+    core = SolrCore.getSolrCore();
+    
   IndexSchema schema = core.getSchema();
   Reader input = new InputStreamReader(schema.getInputStream());
   char[] buf = new char[4096];

Modified: lucene/solr/trunk/src/webapp/resources/admin/registry.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/registry.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/registry.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/registry.jsp Thu Dec  6 19:49:52 2007
@@ -25,6 +25,7 @@
 <%@include file="_info.jsp" %>
 
 <solr>
+  <core><%= core.getName()%></core>
   <schema><%= collectionName %></schema>
   <host><%= hostname %></host>
   <now><%= new Date().toString() %></now>

Modified: lucene/solr/trunk/src/webapp/resources/admin/registry.xsl
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/registry.xsl?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/registry.xsl (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/registry.xsl Thu Dec  6 19:49:52 2007
@@ -48,7 +48,10 @@
           <br clear="all" />
         <xsl:apply-templates/>
         <br /><br />
-        <a href="">Return to Admin Page</a>
+        <xsl:element name='a'>
+          <xsl:attribute name='href'>.?core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+          <xsl:text>Return to Admin Page</xsl:text>
+        </xsl:element>
       </body>
     </html>
   </xsl:template>

Modified: lucene/solr/trunk/src/webapp/resources/admin/stats.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/stats.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/stats.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/stats.jsp Thu Dec  6 19:49:52 2007
@@ -25,6 +25,7 @@
 
 
 <solr>
+  <core><%=core.getName()%></core>
   <schema><%= collectionName %></schema>
   <host><%= hostname %></host>
   <now><%= new Date().toString() %></now>

Modified: lucene/solr/trunk/src/webapp/resources/admin/stats.xsl
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/stats.xsl?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/stats.xsl (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/stats.xsl Thu Dec  6 19:49:52 2007
@@ -48,7 +48,10 @@
           <br clear="all" />
         <xsl:apply-templates/>
         <br /><br />
-        <a href=".">Return to Admin Page</a>
+          <xsl:element name='a'>
+            <xsl:attribute name='href'>.?core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+            <xsl:text>Return to Admin Page</xsl:text>
+          </xsl:element>
       </body>
     </html>
   </xsl:template>

Modified: lucene/solr/trunk/src/webapp/resources/admin/threaddump.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/threaddump.jsp?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/threaddump.jsp (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/threaddump.jsp Thu Dec  6 19:49:52 2007
@@ -15,18 +15,28 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 --%>
-<%@ page import="java.lang.management.ManagementFactory,
+<%@ page import="org.apache.solr.core.SolrCore,
+                 java.lang.management.ManagementFactory,
                  java.lang.management.ThreadMXBean,
                  java.lang.management.ThreadInfo,
                  java.io.IOException,
                  org.apache.solr.util.XML"%>
 
 <?xml-stylesheet type="text/xsl" href="threaddump.xsl"?>
-
+<%
+  SolrCore  core = (SolrCore) request.getAttribute("org.apache.solr.SolrCore");
+  if (core == null) {
+    String coreParam = request.getParameter("core");
+    core = coreParam != null? org.apache.solr.core.MultiCore.getRegistry().getCore(coreParam) : null;
+  }
+  if (core == null)
+    core = SolrCore.getSolrCore();
+%>
 <%!
   static ThreadMXBean tmbean = ManagementFactory.getThreadMXBean();
 %>
 <solr>
+  <core><%=core.getName()%></core>
   <system>
   <jvm>
     <version><%=System.getProperty("java.vm.version")%></version>

Modified: lucene/solr/trunk/src/webapp/resources/admin/threaddump.xsl
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/resources/admin/threaddump.xsl?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/resources/admin/threaddump.xsl (original)
+++ lucene/solr/trunk/src/webapp/resources/admin/threaddump.xsl Thu Dec  6 19:49:52 2007
@@ -1,101 +1,104 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-<!-- $Id$ -->
-<!-- $URL$ -->
-
-<xsl:stylesheet
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  version="1.0">
-
-  <xsl:output
-    method="html"
-    indent="yes"
-    doctype-public="-//W3C//DTD HTML 4.01//EN"
-    doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
-
-  <xsl:template match="/">
-    <html>
-      <head>
-        <link rel="stylesheet" type="text/css" href="solr-admin.css"></link>
-        <link rel="icon" href="/favicon.ico" type="image/ico"></link>
-        <link rel="shortcut icon" href="/favicon.ico" type="image/ico"></link>
-        <title>SOLR Info</title>
-      </head>
-      <body>
-        <a href="">
-          <img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="SOLR"/>
-        </a>
-        <h1>Solr Admin (<xsl:value-of select="solr/meta/collection" />)</h1>
-        <h2>Thread Dump</h2>
-        <div style="margin-top: 1em;">
-          <table>
-            <xsl:apply-templates/>
-          </table>
-          <a href=".">Return to Admin Page</a>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-
-  <xsl:include href="meta.xsl"/>
-
-  <xsl:template match="solr/system/jvm">
-    <tr>
-      <td><xsl:value-of select="name"/> <xsl:value-of select="version"/></td>
-    </tr>
-  </xsl:template>
-
-  <xsl:template match="solr/system/threadCount">
-    <tr>
-      <td>
-        Thread Count:
-        current=<xsl:value-of select="current"/>,
-        peak=<xsl:value-of select="peak"/>,
-        daemon=<xsl:value-of select="daemon"/></td>
-    </tr>
-  </xsl:template>
-
-  <xsl:template match="solr/system/threadDump">
-    <div>Full Thread Dump:</div>
-    <xsl:for-each select="thread">
-      <!-- OG: TODO: add suspended/native conditionals -->
-      <tr>
-        <td style="margin-left: 1em; font-weight: bold;">
-          '<xsl:value-of select="name"/>' 
-          Id=<xsl:value-of select="id"/>, 
-          <xsl:value-of select="state"/> 
-          on lock=<xsl:value-of select="lock"/>, 
-          total cpu time=<xsl:value-of select="cpuTime"/> 
-          user time=<xsl:value-of select="userTime"/>
-        </td>
-      </tr>
-      <xsl:apply-templates select="stackTrace"/>
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template match="stackTrace">
-    <tr>
-      <td style="margin-left: 1em;">
-        <xsl:for-each select="line">
-          <xsl:value-of select="."/><br/>
-        </xsl:for-each>
-      </td>
-    </tr>
-  </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+<!-- $Id$ -->
+<!-- $URL$ -->
+
+<xsl:stylesheet
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  version="1.0">
+
+  <xsl:output
+    method="html"
+    indent="yes"
+    doctype-public="-//W3C//DTD HTML 4.01//EN"
+    doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
+
+  <xsl:template match="/">
+    <html>
+      <head>
+        <link rel="stylesheet" type="text/css" href="solr-admin.css"></link>
+        <link rel="icon" href="/favicon.ico" type="image/ico"></link>
+        <link rel="shortcut icon" href="/favicon.ico" type="image/ico"></link>
+        <title>SOLR Info</title>
+      </head>
+      <body>
+        <a href="">
+          <img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="SOLR"/>
+        </a>
+        <h1>Solr Admin (<xsl:value-of select="solr/meta/collection" />)</h1>
+        <h2>Thread Dump</h2>
+        <div style="margin-top: 1em;">
+          <table>
+            <xsl:apply-templates/>
+          </table>
+          <xsl:element name='a'>
+            <xsl:attribute name='href'>.?core=<xsl:value-of select="//solr/core"/></xsl:attribute>
+            <xsl:text>Return to Admin Page</xsl:text>
+          </xsl:element>
+        </div>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:include href="meta.xsl"/>
+
+  <xsl:template match="solr/system/jvm">
+    <tr>
+      <td><xsl:value-of select="name"/> <xsl:value-of select="version"/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="solr/system/threadCount">
+    <tr>
+      <td>
+        Thread Count:
+        current=<xsl:value-of select="current"/>,
+        peak=<xsl:value-of select="peak"/>,
+        daemon=<xsl:value-of select="daemon"/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="solr/system/threadDump">
+    <div>Full Thread Dump:</div>
+    <xsl:for-each select="thread">
+      <!-- OG: TODO: add suspended/native conditionals -->
+      <tr>
+        <td style="margin-left: 1em; font-weight: bold;">
+          '<xsl:value-of select="name"/>' 
+          Id=<xsl:value-of select="id"/>, 
+          <xsl:value-of select="state"/> 
+          on lock=<xsl:value-of select="lock"/>, 
+          total cpu time=<xsl:value-of select="cpuTime"/> 
+          user time=<xsl:value-of select="userTime"/>
+        </td>
+      </tr>
+      <xsl:apply-templates select="stackTrace"/>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template match="stackTrace">
+    <tr>
+      <td style="margin-left: 1em;">
+        <xsl:for-each select="line">
+          <xsl:value-of select="."/><br/>
+        </xsl:for-each>
+      </td>
+    </tr>
+  </xsl:template>
+
+</xsl:stylesheet>

Modified: lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java (original)
+++ lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java Thu Dec  6 19:49:52 2007
@@ -107,7 +107,7 @@
 
       // If the Data directory is specified, initialize SolrCore directly
       IndexSchema schema = new IndexSchema(config, instanceDir+"/conf/schema.xml");
-      core = new SolrCore( dataDir, config, schema );
+      core = new SolrCore( "core", dataDir, config, schema );
       parser = new SolrRequestParsers( true, Long.MAX_VALUE );
     } 
     catch (Exception ee) {

Modified: lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java?rev=601975&r1=601974&r2=601975&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/solr/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java Thu Dec  6 19:49:52 2007
@@ -17,6 +17,7 @@
 
 package org.apache.solr.servlet;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -35,8 +36,10 @@
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.core.Config;
+import org.apache.solr.core.MultiCore;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.request.QueryResponseWriter;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryResponse;
@@ -49,7 +52,8 @@
 {
   final Logger log = Logger.getLogger(SolrDispatchFilter.class.getName());
     
-  protected SolrCore core;
+  protected SolrCore singlecore;
+  protected MultiCore multicore;
   protected SolrRequestParsers parsers;
   protected boolean handleSelect = false;
   protected String pathPrefix = null; // strip this from the beginning of a path
@@ -64,10 +68,32 @@
       // web.xml configuration
       this.pathPrefix = config.getInitParameter( "path-prefix" );
       
+      // Find a valid solr core
+      SolrCore core = null;
+      multicore = MultiCore.getRegistry();
+      String instanceDir = SolrResourceLoader.locateInstanceDir();
+      File multiconfig = new File( instanceDir, "multicore.xml" );
+      log.info( "looking for multicore.xml: "+multiconfig.getAbsolutePath() );
+      if( multiconfig.exists() ) {
+        multicore.load( instanceDir, multiconfig );
+      }
+      if( multicore.isEnabled() ) {
+        core = multicore.getDefaultCore();
+        if( core == null ) {
+          throw new SolrException( SolrException.ErrorCode.SERVER_ERROR,
+              "Multicore configuration does not include a default" );
+        }
+        singlecore = null;
+      }
+      else {
+        singlecore = new SolrCore( null, null, new SolrConfig(), null );
+        core = singlecore;
+      }
+      
       log.info("user.dir=" + System.getProperty("user.dir"));
-      core = SolrCore.getSolrCore();
       
-      // Read the configuration
+      // Read global configuration
+      // Only the first registerd core configures the following attributes 
       Config solrConfig = core.getSolrConfig();
 
       long uploadLimitKB = solrConfig.getInt( 
@@ -120,7 +146,10 @@
   }
 
   public void destroy() {
-    core.close();
+    multicore.shutdown();
+    if( singlecore != null ) {
+      singlecore.close();
+    }
   }
   
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
@@ -149,6 +178,32 @@
           path = path.substring( 0, idx );
         }
         
+        // By default use the single core.  If multicore is enabled, look for one.
+        SolrCore core = singlecore;
+        if( core == null ) {
+          // try to get the corename as a request parameter first
+          String corename = request.getParameter("core");
+          if( corename == null && path.startsWith( "/@" ) ) { // multicore
+            idx = path.indexOf( '/', 2 );
+            if( idx < 1 ) {
+              throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, 
+                  "MultiCore path must contain a '/'.  For example: /@corename/handlerpath" );
+            }
+            corename = path.substring( 2, idx );
+            path = path.substring( idx );
+          }
+          if (corename != null) {
+            core = multicore.getCore( corename );
+            if( core == null ) {
+              throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, 
+                "Can not find core: '"+corename+"'" );
+            }
+          }
+          else {
+            core = multicore.getDefaultCore();
+          }
+        }
+        
         SolrRequestHandler handler = null;
         if( path.length() > 1 ) { // don't match "" or "/" as valid path
           handler = core.getRequestHandler( path );
@@ -166,6 +221,12 @@
             }
           }
         }
+
+        // Perhaps this is a muli-core admin page?
+        if( handler == null && path.equals( multicore.getAdminPath() ) ) {
+          handler = multicore.getMultiCoreHandler();
+        } 
+        
         if( handler != null ) {
           if( solrReq == null ) {
             solrReq = parsers.parse( core, path, req );
@@ -184,6 +245,11 @@
           responseWriter.write(out, solrReq, solrRsp);
           return;
         }
+        // otherwise, let's ensure the core is in the SolrCore request attribute so
+        // the servlet can retrieve it
+        else {
+          req.setAttribute("org.apache.solr.SolrCore", core);
+        }
       }
       catch( Throwable ex ) {
         sendError( (HttpServletResponse)response, ex );
@@ -203,7 +269,7 @@
   protected void execute( HttpServletRequest req, SolrRequestHandler handler, SolrQueryRequest sreq, SolrQueryResponse rsp) {
     // a custom filter could add more stuff to the request before passing it on.
     // for example: sreq.getContext().put( "HttpServletRequest", req );
-    core.execute( handler, sreq, rsp );
+    sreq.getCore().execute( handler, sreq, rsp );
   }
   
   protected void sendError(HttpServletResponse res, Throwable ex) throws IOException