2
* Licensed to the Apache Software Foundation (ASF) under one or more
3
* contributor license agreements. See the NOTICE file distributed with
4
* this work for additional information regarding copyright ownership.
5
* The ASF licenses this file to You under the Apache License, Version 2.0
6
* (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
9
* http://www.apache.org/licenses/LICENSE-2.0
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
18
package org.apache.solr.client.solrj.request;
20
import java.io.IOException;
21
import java.util.Collection;
22
import java.util.List;
23
import java.util.Arrays;
25
import org.apache.solr.client.solrj.SolrRequest;
26
import org.apache.solr.client.solrj.SolrServer;
27
import org.apache.solr.client.solrj.SolrServerException;
28
import org.apache.solr.client.solrj.response.CoreAdminResponse;
29
import org.apache.solr.common.params.ModifiableSolrParams;
30
import org.apache.solr.common.params.CoreAdminParams;
31
import org.apache.solr.common.params.SolrParams;
32
import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
33
import org.apache.solr.common.util.ContentStream;
36
* This class is experimental and subject to change.
37
* @version $Id: CoreAdminRequest.java 606335 2007-12-21 22:23:39Z ryan $
40
public class CoreAdminRequest extends SolrRequest
42
protected String core = null;
43
protected String other = null;
44
protected CoreAdminParams.CoreAdminAction action = null;
46
//a create core request
47
public static class Create extends CoreAdminRequest {
48
protected String instanceDir;
49
protected String configName = null;
50
protected String schemaName = null;
51
protected String dataDir = null;
54
action = CoreAdminAction.CREATE;
57
public void setInstanceDir(String instanceDir) { this.instanceDir = instanceDir; }
58
public void setSchemaName(String schema) { this.schemaName = schema; }
59
public void setConfigName(String config) { this.configName = config; }
60
public void setDataDir(String dataDir) { this.dataDir = dataDir; }
62
public String getInstanceDir() { return instanceDir; }
63
public String getSchemaName() { return schemaName; }
64
public String getConfigName() { return configName; }
65
public String getDataDir() { return dataDir; }
68
public SolrParams getParams() {
69
if( action == null ) {
70
throw new RuntimeException( "no action specified!" );
72
ModifiableSolrParams params = new ModifiableSolrParams();
73
params.set( CoreAdminParams.ACTION, action.toString() );
74
if( action.equals(CoreAdminAction.CREATE) ) {
75
params.set( CoreAdminParams.NAME, core );
77
params.set( CoreAdminParams.CORE, core );
79
params.set( CoreAdminParams.INSTANCE_DIR, instanceDir);
80
if (configName != null) {
81
params.set( CoreAdminParams.CONFIG, configName);
83
if (schemaName != null) {
84
params.set( CoreAdminParams.SCHEMA, schemaName);
86
if (dataDir != null) {
87
params.set( CoreAdminParams.DATA_DIR, dataDir);
92
//a persist core request
93
public static class Persist extends CoreAdminRequest {
94
protected String fileName = null;
97
action = CoreAdminAction.PERSIST;
100
public void setFileName(String name) {
103
public String getFileName() {
107
public SolrParams getParams() {
108
if( action == null ) {
109
throw new RuntimeException( "no action specified!" );
111
ModifiableSolrParams params = new ModifiableSolrParams();
112
params.set( CoreAdminParams.ACTION, action.toString() );
113
if (fileName != null) {
114
params.set( CoreAdminParams.FILE, fileName);
120
public static class MergeIndexes extends CoreAdminRequest {
121
protected List<String> indexDirs;
122
protected List<String> srcCores;
124
public MergeIndexes() {
125
action = CoreAdminAction.MERGEINDEXES;
128
public void setIndexDirs(List<String> indexDirs) {
129
this.indexDirs = indexDirs;
132
public List<String> getIndexDirs() {
136
public List<String> getSrcCores() {
140
public void setSrcCores(List<String> srcCores) {
141
this.srcCores = srcCores;
145
public SolrParams getParams() {
146
if (action == null) {
147
throw new RuntimeException("no action specified!");
149
ModifiableSolrParams params = new ModifiableSolrParams();
150
params.set(CoreAdminParams.ACTION, action.toString());
151
params.set(CoreAdminParams.CORE, core);
152
if (indexDirs != null) {
153
for (String indexDir : indexDirs) {
154
params.set(CoreAdminParams.INDEX_DIR, indexDir);
157
if (srcCores != null) {
158
for (String srcCore : srcCores) {
159
params.set(CoreAdminParams.SRC_CORE, srcCore);
166
public static class Unload extends CoreAdminRequest {
167
protected boolean deleteIndex;
169
public Unload(boolean deleteIndex) {
170
action = CoreAdminAction.UNLOAD;
171
this.deleteIndex = deleteIndex;
174
public boolean isDeleteIndex() {
178
public void setDeleteIndex(boolean deleteIndex) {
179
this.deleteIndex = deleteIndex;
183
public SolrParams getParams() {
184
ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
185
params.set(CoreAdminParams.DELETE_INDEX, deleteIndex);
190
public CoreAdminRequest()
192
super( METHOD.GET, "/admin/cores" );
195
public CoreAdminRequest( String path )
197
super( METHOD.GET, path );
200
public final void setCoreName( String coreName )
202
this.core = coreName;
205
public final void setOtherCoreName( String otherCoreName )
207
this.other = otherCoreName;
210
//---------------------------------------------------------------------------------------
212
//---------------------------------------------------------------------------------------
214
public void setAction( CoreAdminAction action )
216
this.action = action;
219
//---------------------------------------------------------------------------------------
221
//---------------------------------------------------------------------------------------
224
public SolrParams getParams()
226
if( action == null ) {
227
throw new RuntimeException( "no action specified!" );
229
ModifiableSolrParams params = new ModifiableSolrParams();
230
params.set( CoreAdminParams.ACTION, action.toString() );
231
params.set( CoreAdminParams.CORE, core );
233
params.set(CoreAdminParams.OTHER, other);
238
//---------------------------------------------------------------------------------------
240
//---------------------------------------------------------------------------------------
243
public Collection<ContentStream> getContentStreams() throws IOException {
248
public CoreAdminResponse process(SolrServer server) throws SolrServerException, IOException
250
long startTime = System.currentTimeMillis();
251
CoreAdminResponse res = new CoreAdminResponse();
252
res.setResponse( server.request( this ) );
253
res.setElapsedTime( System.currentTimeMillis()-startTime );
257
//---------------------------------------------------------------------------------------
259
//---------------------------------------------------------------------------------------
261
public static CoreAdminResponse reloadCore( String name, SolrServer server ) throws SolrServerException, IOException
263
CoreAdminRequest req = new CoreAdminRequest();
264
req.setCoreName( name );
265
req.setAction( CoreAdminAction.RELOAD );
266
return req.process( server );
269
public static CoreAdminResponse unloadCore( String name, SolrServer server ) throws SolrServerException, IOException
271
return unloadCore(name, false, server);
274
public static CoreAdminResponse unloadCore( String name, boolean deleteIndex, SolrServer server ) throws SolrServerException, IOException
276
Unload req = new Unload(deleteIndex);
277
req.setCoreName( name );
278
return req.process( server );
281
public static CoreAdminResponse renameCore(String coreName, String newName, SolrServer server ) throws SolrServerException, IOException
283
CoreAdminRequest req = new CoreAdminRequest();
284
req.setCoreName(coreName);
285
req.setOtherCoreName(newName);
286
req.setAction( CoreAdminAction.RENAME );
287
return req.process( server );
290
public static CoreAdminResponse aliasCore(String coreName, String newName, SolrServer server ) throws SolrServerException, IOException
292
CoreAdminRequest req = new CoreAdminRequest();
293
req.setCoreName(coreName);
294
req.setOtherCoreName(newName);
295
req.setAction( CoreAdminAction.ALIAS );
296
return req.process( server );
299
public static CoreAdminResponse getStatus( String name, SolrServer server ) throws SolrServerException, IOException
301
CoreAdminRequest req = new CoreAdminRequest();
302
req.setCoreName( name );
303
req.setAction( CoreAdminAction.STATUS );
304
return req.process( server );
307
public static CoreAdminResponse createCore( String name, String instanceDir, SolrServer server ) throws SolrServerException, IOException
309
return CoreAdminRequest.createCore(name, instanceDir, server, null, null);
312
public static CoreAdminResponse createCore( String name, String instanceDir, SolrServer server, String configFile, String schemaFile ) throws SolrServerException, IOException
314
CoreAdminRequest.Create req = new CoreAdminRequest.Create();
315
req.setCoreName( name );
316
req.setInstanceDir(instanceDir);
317
if(configFile != null){
318
req.setConfigName(configFile);
320
if(schemaFile != null){
321
req.setSchemaName(schemaFile);
323
return req.process( server );
326
public static CoreAdminResponse persist(String fileName, SolrServer server) throws SolrServerException, IOException
328
CoreAdminRequest.Persist req = new CoreAdminRequest.Persist();
329
req.setFileName(fileName);
330
return req.process(server);
333
public static CoreAdminResponse mergeIndexes(String name,
334
String[] indexDirs, String[] srcCores, SolrServer server) throws SolrServerException,
336
CoreAdminRequest.MergeIndexes req = new CoreAdminRequest.MergeIndexes();
337
req.setCoreName(name);
338
req.setIndexDirs(Arrays.asList(indexDirs));
339
req.setSrcCores(Arrays.asList(srcCores));
340
return req.process(server);