http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java deleted file mode 100644 index c524b1f..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java +++ /dev/null @@ -1,730 +0,0 @@ -/* - * 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. - */ -package org.apache.solr.client.solrj.impl; - -import org.apache.http.client.HttpClient; -import org.apache.solr.client.solrj.*; -import org.apache.solr.client.solrj.request.IsUpdateRequest; -import org.apache.solr.client.solrj.request.RequestWriter; -import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.common.params.CommonParams; -import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.params.SolrParams; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.common.util.SolrjNamedThreadFactory; -import org.apache.solr.common.SolrException; - -import java.io.IOException; -import java.lang.ref.WeakReference; -import java.net.ConnectException; -import java.net.MalformedURLException; -import java.net.SocketException; -import java.net.SocketTimeoutException; -import java.net.URL; -import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.*; - -/** - * LBHttpSolrClient or "LoadBalanced HttpSolrClient" is a load balancing wrapper around - * {@link HttpSolrClient}. This is useful when you - * have multiple Solr servers and the requests need to be Load Balanced among them. - * - * Do <b>NOT</b> use this class for indexing in master/slave scenarios since documents must be sent to the - * correct master; no inter-node routing is done. - * - * In SolrCloud (leader/replica) scenarios, it is usually better to use - * {@link CloudSolrClient}, but this class may be used - * for updates because the server will forward them to the appropriate leader. - * - * <p> - * It offers automatic failover when a server goes down and it detects when the server comes back up. - * <p> - * Load balancing is done using a simple round-robin on the list of servers. - * <p> - * If a request to a server fails by an IOException due to a connection timeout or read timeout then the host is taken - * off the list of live servers and moved to a 'dead server list' and the request is resent to the next live server. - * This process is continued till it tries all the live servers. If at least one server is alive, the request succeeds, - * and if not it fails. - * <blockquote><pre> - * SolrClient lbHttpSolrClient = new LBHttpSolrClient("http://host1:8080/solr/", "http://host2:8080/solr", "http://host2:8080/solr"); - * //or if you wish to pass the HttpClient do as follows - * httpClient httpClient = new HttpClient(); - * SolrClient lbHttpSolrClient = new LBHttpSolrClient(httpClient, "http://host1:8080/solr/", "http://host2:8080/solr", "http://host2:8080/solr"); - * </pre></blockquote> - * This detects if a dead server comes alive automatically. The check is done in fixed intervals in a dedicated thread. - * This interval can be set using {@link #setAliveCheckInterval} , the default is set to one minute. - * <p> - * <b>When to use this?</b><br> This can be used as a software load balancer when you do not wish to setup an external - * load balancer. Alternatives to this code are to use - * a dedicated hardware load balancer or using Apache httpd with mod_proxy_balancer as a load balancer. See <a - * href="http://en.wikipedia.org/wiki/Load_balancing_(computing)">Load balancing on Wikipedia</a> - * - * @since solr 1.4 - */ -public class LBHttpSolrClient extends SolrClient { - private static Set<Integer> RETRY_CODES = new HashSet<>(4); - - static { - RETRY_CODES.add(404); - RETRY_CODES.add(403); - RETRY_CODES.add(503); - RETRY_CODES.add(500); - } - - // keys to the maps are currently of the form "http://localhost:8983/solr" - // which should be equivalent to HttpSolrServer.getBaseURL() - private final Map<String, ServerWrapper> aliveServers = new LinkedHashMap<>(); - // access to aliveServers should be synchronized on itself - - protected final Map<String, ServerWrapper> zombieServers = new ConcurrentHashMap<>(); - - // changes to aliveServers are reflected in this array, no need to synchronize - private volatile ServerWrapper[] aliveServerList = new ServerWrapper[0]; - - - private ScheduledExecutorService aliveCheckExecutor; - - private final HttpClient httpClient; - private final boolean clientIsInternal; - private final AtomicInteger counter = new AtomicInteger(-1); - - private static final SolrQuery solrQuery = new SolrQuery("*:*"); - private volatile ResponseParser parser; - private volatile RequestWriter requestWriter; - - private Set<String> queryParams = new HashSet<>(); - - static { - solrQuery.setRows(0); - /** - * Default sort (if we don't supply a sort) is by score and since - * we request 0 rows any sorting and scoring is not necessary. - * SolrQuery.DOCID schema-independently specifies a non-scoring sort. - * <code>_docid_ asc</code> sort is efficient, - * <code>_docid_ desc</code> sort is not, so choose ascending DOCID sort. - */ - solrQuery.setSort(SolrQuery.DOCID, SolrQuery.ORDER.asc); - // not a top-level request, we are interested only in the server being sent to i.e. it need not distribute our request to further servers - solrQuery.setDistrib(false); - } - - protected static class ServerWrapper { - - final HttpSolrClient client; - - long lastUsed; // last time used for a real request - long lastChecked; // last time checked for liveness - - // "standard" servers are used by default. They normally live in the alive list - // and move to the zombie list when unavailable. When they become available again, - // they move back to the alive list. - boolean standard = true; - - int failedPings = 0; - - public ServerWrapper(HttpSolrClient client) { - this.client = client; - } - - @Override - public String toString() { - return client.getBaseURL(); - } - - public String getKey() { - return client.getBaseURL(); - } - - @Override - public int hashCode() { - return this.getKey().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (!(obj instanceof ServerWrapper)) return false; - return this.getKey().equals(((ServerWrapper)obj).getKey()); - } - } - - public static class Req { - protected SolrRequest request; - protected List<String> servers; - protected int numDeadServersToTry; - - public Req(SolrRequest request, List<String> servers) { - this.request = request; - this.servers = servers; - this.numDeadServersToTry = servers.size(); - } - - public SolrRequest getRequest() { - return request; - } - public List<String> getServers() { - return servers; - } - - /** @return the number of dead servers to try if there are no live servers left */ - public int getNumDeadServersToTry() { - return numDeadServersToTry; - } - - /** @param numDeadServersToTry The number of dead servers to try if there are no live servers left. - * Defaults to the number of servers in this request. */ - public void setNumDeadServersToTry(int numDeadServersToTry) { - this.numDeadServersToTry = numDeadServersToTry; - } - } - - public static class Rsp { - protected String server; - protected NamedList<Object> rsp; - - /** The response from the server */ - public NamedList<Object> getResponse() { - return rsp; - } - - /** The server that returned the response */ - public String getServer() { - return server; - } - } - - public LBHttpSolrClient(String... solrServerUrls) throws MalformedURLException { - this(null, solrServerUrls); - } - - /** The provided httpClient should use a multi-threaded connection manager */ - public LBHttpSolrClient(HttpClient httpClient, String... solrServerUrl) { - this(httpClient, new BinaryResponseParser(), solrServerUrl); - } - - /** The provided httpClient should use a multi-threaded connection manager */ - public LBHttpSolrClient(HttpClient httpClient, ResponseParser parser, String... solrServerUrl) { - clientIsInternal = (httpClient == null); - this.parser = parser; - if (httpClient == null) { - ModifiableSolrParams params = new ModifiableSolrParams(); - if (solrServerUrl.length > 1) { - // we prefer retrying another server - params.set(HttpClientUtil.PROP_USE_RETRY, false); - } else { - params.set(HttpClientUtil.PROP_USE_RETRY, true); - } - this.httpClient = HttpClientUtil.createClient(params); - } else { - this.httpClient = httpClient; - } - for (String s : solrServerUrl) { - ServerWrapper wrapper = new ServerWrapper(makeSolrClient(s)); - aliveServers.put(wrapper.getKey(), wrapper); - } - updateAliveList(); - } - - public Set<String> getQueryParams() { - return queryParams; - } - - /** - * Expert Method. - * @param queryParams set of param keys to only send via the query string - */ - public void setQueryParams(Set<String> queryParams) { - this.queryParams = queryParams; - } - public void addQueryParams(String queryOnlyParam) { - this.queryParams.add(queryOnlyParam) ; - } - - public static String normalize(String server) { - if (server.endsWith("/")) - server = server.substring(0, server.length() - 1); - return server; - } - - protected HttpSolrClient makeSolrClient(String server) { - HttpSolrClient client = new HttpSolrClient(server, httpClient, parser); - if (requestWriter != null) { - client.setRequestWriter(requestWriter); - } - if (queryParams != null) { - client.setQueryParams(queryParams); - } - return client; - } - - /** - * Tries to query a live server from the list provided in Req. Servers in the dead pool are skipped. - * If a request fails due to an IOException, the server is moved to the dead pool for a certain period of - * time, or until a test request on that server succeeds. - * - * Servers are queried in the exact order given (except servers currently in the dead pool are skipped). - * If no live servers from the provided list remain to be tried, a number of previously skipped dead servers will be tried. - * Req.getNumDeadServersToTry() controls how many dead servers will be tried. - * - * If no live servers are found a SolrServerException is thrown. - * - * @param req contains both the request as well as the list of servers to query - * - * @return the result of the request - * - * @throws IOException If there is a low-level I/O error. - */ - public Rsp request(Req req) throws SolrServerException, IOException { - Rsp rsp = new Rsp(); - Exception ex = null; - boolean isUpdate = req.request instanceof IsUpdateRequest; - List<ServerWrapper> skipped = null; - - long timeAllowedNano = getTimeAllowedInNanos(req.getRequest()); - long timeOutTime = System.nanoTime() + timeAllowedNano; - for (String serverStr : req.getServers()) { - if(isTimeExceeded(timeAllowedNano, timeOutTime)) { - break; - } - - serverStr = normalize(serverStr); - // if the server is currently a zombie, just skip to the next one - ServerWrapper wrapper = zombieServers.get(serverStr); - if (wrapper != null) { - // System.out.println("ZOMBIE SERVER QUERIED: " + serverStr); - final int numDeadServersToTry = req.getNumDeadServersToTry(); - if (numDeadServersToTry > 0) { - if (skipped == null) { - skipped = new ArrayList<>(numDeadServersToTry); - skipped.add(wrapper); - } - else if (skipped.size() < numDeadServersToTry) { - skipped.add(wrapper); - } - } - continue; - } - rsp.server = serverStr; - HttpSolrClient client = makeSolrClient(serverStr); - - ex = doRequest(client, req, rsp, isUpdate, false, null); - if (ex == null) { - return rsp; // SUCCESS - } - } - - // try the servers we previously skipped - if (skipped != null) { - for (ServerWrapper wrapper : skipped) { - if(isTimeExceeded(timeAllowedNano, timeOutTime)) { - break; - } - - ex = doRequest(wrapper.client, req, rsp, isUpdate, true, wrapper.getKey()); - if (ex == null) { - return rsp; // SUCCESS - } - } - } - - - if (ex == null) { - throw new SolrServerException("No live SolrServers available to handle this request"); - } else { - throw new SolrServerException("No live SolrServers available to handle this request:" + zombieServers.keySet(), ex); - } - - } - - protected Exception addZombie(HttpSolrClient server, Exception e) { - - ServerWrapper wrapper; - - wrapper = new ServerWrapper(server); - wrapper.lastUsed = System.currentTimeMillis(); - wrapper.standard = false; - zombieServers.put(wrapper.getKey(), wrapper); - startAliveCheckExecutor(); - return e; - } - - protected Exception doRequest(HttpSolrClient client, Req req, Rsp rsp, boolean isUpdate, - boolean isZombie, String zombieKey) throws SolrServerException, IOException { - Exception ex = null; - try { - rsp.rsp = client.request(req.getRequest()); - if (isZombie) { - zombieServers.remove(zombieKey); - } - } catch (SolrException e) { - // we retry on 404 or 403 or 503 or 500 - // unless it's an update - then we only retry on connect exception - if (!isUpdate && RETRY_CODES.contains(e.code())) { - ex = (!isZombie) ? addZombie(client, e) : e; - } else { - // Server is alive but the request was likely malformed or invalid - if (isZombie) { - zombieServers.remove(zombieKey); - } - throw e; - } - } catch (SocketException e) { - if (!isUpdate || e instanceof ConnectException) { - ex = (!isZombie) ? addZombie(client, e) : e; - } else { - throw e; - } - } catch (SocketTimeoutException e) { - if (!isUpdate) { - ex = (!isZombie) ? addZombie(client, e) : e; - } else { - throw e; - } - } catch (SolrServerException e) { - Throwable rootCause = e.getRootCause(); - if (!isUpdate && rootCause instanceof IOException) { - ex = (!isZombie) ? addZombie(client, e) : e; - } else if (isUpdate && rootCause instanceof ConnectException) { - ex = (!isZombie) ? addZombie(client, e) : e; - } else { - throw e; - } - } catch (Exception e) { - throw new SolrServerException(e); - } - - return ex; - } - - private void updateAliveList() { - synchronized (aliveServers) { - aliveServerList = aliveServers.values().toArray(new ServerWrapper[aliveServers.size()]); - } - } - - private ServerWrapper removeFromAlive(String key) { - synchronized (aliveServers) { - ServerWrapper wrapper = aliveServers.remove(key); - if (wrapper != null) - updateAliveList(); - return wrapper; - } - } - - private void addToAlive(ServerWrapper wrapper) { - synchronized (aliveServers) { - ServerWrapper prev = aliveServers.put(wrapper.getKey(), wrapper); - // TODO: warn if there was a previous entry? - updateAliveList(); - } - } - - public void addSolrServer(String server) throws MalformedURLException { - HttpSolrClient client = makeSolrClient(server); - addToAlive(new ServerWrapper(client)); - } - - public String removeSolrServer(String server) { - try { - server = new URL(server).toExternalForm(); - } catch (MalformedURLException e) { - throw new RuntimeException(e); - } - if (server.endsWith("/")) { - server = server.substring(0, server.length() - 1); - } - - // there is a small race condition here - if the server is in the process of being moved between - // lists, we could fail to remove it. - removeFromAlive(server); - zombieServers.remove(server); - return null; - } - - public void setConnectionTimeout(int timeout) { - HttpClientUtil.setConnectionTimeout(httpClient, timeout); - } - - /** - * set soTimeout (read timeout) on the underlying HttpConnectionManager. This is desirable for queries, but probably - * not for indexing. - */ - public void setSoTimeout(int timeout) { - HttpClientUtil.setSoTimeout(httpClient, timeout); - } - - @Override - public void close() { - shutdown(); - } - - @Override - @Deprecated - public void shutdown() { - if (aliveCheckExecutor != null) { - aliveCheckExecutor.shutdownNow(); - } - if(clientIsInternal) { - HttpClientUtil.close(httpClient); - } - } - - /** - * Tries to query a live server. A SolrServerException is thrown if all servers are dead. - * If the request failed due to IOException then the live server is moved to dead pool and the request is - * retried on another live server. After live servers are exhausted, any servers previously marked as dead - * will be tried before failing the request. - * - * @param request the SolrRequest. - * - * @return response - * - * @throws IOException If there is a low-level I/O error. - */ - @Override - public NamedList<Object> request(final SolrRequest request) - throws SolrServerException, IOException { - Exception ex = null; - ServerWrapper[] serverList = aliveServerList; - - int maxTries = serverList.length; - Map<String,ServerWrapper> justFailed = null; - - long timeAllowedNano = getTimeAllowedInNanos(request); - long timeOutTime = System.nanoTime() + timeAllowedNano; - for (int attempts=0; attempts<maxTries; attempts++) { - if(isTimeExceeded(timeAllowedNano, timeOutTime)) { - break; - } - - int count = counter.incrementAndGet() & Integer.MAX_VALUE; - ServerWrapper wrapper = serverList[count % serverList.length]; - wrapper.lastUsed = System.currentTimeMillis(); - - try { - return wrapper.client.request(request); - } catch (SolrException e) { - // Server is alive but the request was malformed or invalid - throw e; - } catch (SolrServerException e) { - if (e.getRootCause() instanceof IOException) { - ex = e; - moveAliveToDead(wrapper); - if (justFailed == null) justFailed = new HashMap<>(); - justFailed.put(wrapper.getKey(), wrapper); - } else { - throw e; - } - } catch (Exception e) { - throw new SolrServerException(e); - } - } - - // try other standard servers that we didn't try just now - for (ServerWrapper wrapper : zombieServers.values()) { - if(isTimeExceeded(timeAllowedNano, timeOutTime)) { - break; - } - - if (wrapper.standard==false || justFailed!=null && justFailed.containsKey(wrapper.getKey())) continue; - try { - NamedList<Object> rsp = wrapper.client.request(request); - // remove from zombie list *before* adding to alive to avoid a race that could lose a server - zombieServers.remove(wrapper.getKey()); - addToAlive(wrapper); - return rsp; - } catch (SolrException e) { - // Server is alive but the request was malformed or invalid - throw e; - } catch (SolrServerException e) { - if (e.getRootCause() instanceof IOException) { - ex = e; - // still dead - } else { - throw e; - } - } catch (Exception e) { - throw new SolrServerException(e); - } - } - - - if (ex == null) { - throw new SolrServerException("No live SolrServers available to handle this request"); - } else { - throw new SolrServerException("No live SolrServers available to handle this request", ex); - } - } - - /** - * @return time allowed in nanos, returns -1 if no time_allowed is specified. - */ - private long getTimeAllowedInNanos(final SolrRequest req) { - SolrParams reqParams = req.getParams(); - return reqParams == null ? -1 : - TimeUnit.NANOSECONDS.convert(reqParams.getInt(CommonParams.TIME_ALLOWED, -1), TimeUnit.MILLISECONDS); - } - - private boolean isTimeExceeded(long timeAllowedNano, long timeOutTime) { - return timeAllowedNano > 0 && System.nanoTime() > timeOutTime; - } - - /** - * Takes up one dead server and check for aliveness. The check is done in a roundrobin. Each server is checked for - * aliveness once in 'x' millis where x is decided by the setAliveCheckinterval() or it is defaulted to 1 minute - * - * @param zombieServer a server in the dead pool - */ - private void checkAZombieServer(ServerWrapper zombieServer) { - long currTime = System.currentTimeMillis(); - try { - zombieServer.lastChecked = currTime; - QueryResponse resp = zombieServer.client.query(solrQuery); - if (resp.getStatus() == 0) { - // server has come back up. - // make sure to remove from zombies before adding to alive to avoid a race condition - // where another thread could mark it down, move it back to zombie, and then we delete - // from zombie and lose it forever. - ServerWrapper wrapper = zombieServers.remove(zombieServer.getKey()); - if (wrapper != null) { - wrapper.failedPings = 0; - if (wrapper.standard) { - addToAlive(wrapper); - } - } else { - // something else already moved the server from zombie to alive - } - } - } catch (Exception e) { - //Expected. The server is still down. - zombieServer.failedPings++; - - // If the server doesn't belong in the standard set belonging to this load balancer - // then simply drop it after a certain number of failed pings. - if (!zombieServer.standard && zombieServer.failedPings >= NONSTANDARD_PING_LIMIT) { - zombieServers.remove(zombieServer.getKey()); - } - } - } - - private void moveAliveToDead(ServerWrapper wrapper) { - wrapper = removeFromAlive(wrapper.getKey()); - if (wrapper == null) - return; // another thread already detected the failure and removed it - zombieServers.put(wrapper.getKey(), wrapper); - startAliveCheckExecutor(); - } - - private int interval = CHECK_INTERVAL; - - /** - * LBHttpSolrServer keeps pinging the dead servers at fixed interval to find if it is alive. Use this to set that - * interval - * - * @param interval time in milliseconds - */ - public void setAliveCheckInterval(int interval) { - if (interval <= 0) { - throw new IllegalArgumentException("Alive check interval must be " + - "positive, specified value = " + interval); - } - this.interval = interval; - } - - private void startAliveCheckExecutor() { - // double-checked locking, but it's OK because we don't *do* anything with aliveCheckExecutor - // if it's not null. - if (aliveCheckExecutor == null) { - synchronized (this) { - if (aliveCheckExecutor == null) { - aliveCheckExecutor = Executors.newSingleThreadScheduledExecutor( - new SolrjNamedThreadFactory("aliveCheckExecutor")); - aliveCheckExecutor.scheduleAtFixedRate( - getAliveCheckRunner(new WeakReference<>(this)), - this.interval, this.interval, TimeUnit.MILLISECONDS); - } - } - } - } - - private static Runnable getAliveCheckRunner(final WeakReference<LBHttpSolrClient> lbRef) { - return new Runnable() { - @Override - public void run() { - LBHttpSolrClient lb = lbRef.get(); - if (lb != null && lb.zombieServers != null) { - for (ServerWrapper zombieServer : lb.zombieServers.values()) { - lb.checkAZombieServer(zombieServer); - } - } - } - }; - } - - /** - * Return the HttpClient this instance uses. - */ - public HttpClient getHttpClient() { - return httpClient; - } - - public ResponseParser getParser() { - return parser; - } - - /** - * Changes the {@link ResponseParser} that will be used for the internal - * SolrServer objects. - * - * @param parser Default Response Parser chosen to parse the response if the parser - * were not specified as part of the request. - * @see org.apache.solr.client.solrj.SolrRequest#getResponseParser() - */ - public void setParser(ResponseParser parser) { - this.parser = parser; - } - - /** - * Changes the {@link RequestWriter} that will be used for the internal - * SolrServer objects. - * - * @param requestWriter Default RequestWriter, used to encode requests sent to the server. - */ - public void setRequestWriter(RequestWriter requestWriter) { - this.requestWriter = requestWriter; - } - - public RequestWriter getRequestWriter() { - return requestWriter; - } - - @Override - protected void finalize() throws Throwable { - try { - if(this.aliveCheckExecutor!=null) - this.aliveCheckExecutor.shutdownNow(); - } finally { - super.finalize(); - } - } - - // defaults - private static final int CHECK_INTERVAL = 60 * 1000; //1 minute between checks - private static final int NONSTANDARD_PING_LIMIT = 5; // number of times we'll ping dead servers not in the server list - -}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java deleted file mode 100644 index ee28241..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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. - */ - -package org.apache.solr.client.solrj.impl; - -import org.apache.http.client.HttpClient; -import org.apache.solr.client.solrj.ResponseParser; - -import java.net.MalformedURLException; - -/** - * @deprecated Use {@link org.apache.solr.client.solrj.impl.LBHttpSolrClient} - */ -@Deprecated -public class LBHttpSolrServer extends LBHttpSolrClient { - - public LBHttpSolrServer(String... solrServerUrls) throws MalformedURLException { - super(solrServerUrls); - } - - public LBHttpSolrServer(HttpClient httpClient, String... solrServerUrl) { - super(httpClient, solrServerUrl); - } - - public LBHttpSolrServer(HttpClient httpClient, ResponseParser parser, String... solrServerUrl) { - super(httpClient, parser, solrServerUrl); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/NoOpResponseParser.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/NoOpResponseParser.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/NoOpResponseParser.java deleted file mode 100644 index e9a346c..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/NoOpResponseParser.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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. - */ - -package org.apache.solr.client.solrj.impl; - -import org.apache.commons.io.IOUtils; -import org.apache.solr.client.solrj.ResponseParser; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.util.NamedList; - -import java.io.IOException; -import java.io.InputStream; -import java.io.Reader; -import java.io.StringWriter; - -/** - * Simply puts the entire response into an entry in a NamedList. - * This parser isn't parse response into a QueryResponse. - */ -public class NoOpResponseParser extends ResponseParser { - - private String writerType = "xml"; - - public NoOpResponseParser() { - } - - public NoOpResponseParser(String writerType) { - this.writerType = writerType; - } - - @Override - public String getWriterType() { - return writerType; - } - - public void setWriterType(String writerType) { - this.writerType = writerType; - } - - @Override - public NamedList<Object> processResponse(Reader reader) { - try { - StringWriter writer = new StringWriter(); - IOUtils.copy(reader, writer); - String output = writer.toString(); - NamedList<Object> list = new NamedList<>(); - list.add("response", output); - return list; - } catch (IOException e) { - throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "parsing error", e); - } - } - - @Override - public NamedList<Object> processResponse(InputStream body, String encoding) { - try { - StringWriter writer = new StringWriter(); - IOUtils.copy(body, writer, encoding); - String output = writer.toString(); - NamedList<Object> list = new NamedList<>(); - list.add("response", output); - return list; - } catch (IOException e) { - throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "parsing error", e); - } - } - -} - http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java deleted file mode 100644 index 14be1f3..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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. - */ -package org.apache.solr.client.solrj.impl; - -import java.io.IOException; -import java.io.InputStream; -import java.util.List; - -import org.apache.solr.client.solrj.StreamingResponseCallback; -import org.apache.solr.common.SolrDocument; -import org.apache.solr.common.SolrDocumentList; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.util.DataInputInputStream; -import org.apache.solr.common.util.JavaBinCodec; -import org.apache.solr.common.util.NamedList; - -/** - * A BinaryResponseParser that sends callback events rather then build - * a large response - * - * - * @since solr 4.0 - */ -public class StreamingBinaryResponseParser extends BinaryResponseParser { - final StreamingResponseCallback callback; - - public StreamingBinaryResponseParser( StreamingResponseCallback cb ) - { - this.callback = cb; - } - - @Override - public NamedList<Object> processResponse(InputStream body, String encoding) { - try { - JavaBinCodec codec = new JavaBinCodec() { - - @Override - public SolrDocument readSolrDocument(DataInputInputStream dis) throws IOException { - SolrDocument doc = super.readSolrDocument(dis); - callback.streamSolrDocument( doc ); - return null; - } - - @Override - public SolrDocumentList readSolrDocumentList(DataInputInputStream dis) throws IOException { - SolrDocumentList solrDocs = new SolrDocumentList(); - List list = (List) readVal(dis); - solrDocs.setNumFound((Long) list.get(0)); - solrDocs.setStart((Long) list.get(1)); - solrDocs.setMaxScore((Float) list.get(2)); - - callback.streamDocListInfo( - solrDocs.getNumFound(), - solrDocs.getStart(), - solrDocs.getMaxScore() ); - - // Read the Array - tagByte = dis.readByte(); - if( (tagByte >>> 5) != (ARR >>> 5) ) { - throw new RuntimeException( "doclist must have an array" ); - } - int sz = readSize(dis); - for (int i = 0; i < sz; i++) { - // must be a SolrDocument - readVal( dis ); - } - return solrDocs; - } - }; - - return (NamedList<Object>) codec.unmarshal(body); - } - catch (IOException e) { - throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "parsing error", e); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java deleted file mode 100644 index f9177c8..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java +++ /dev/null @@ -1,465 +0,0 @@ -/* - * 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. - */ - -package org.apache.solr.client.solrj.impl; - -import org.apache.solr.client.solrj.ResponseParser; -import org.apache.solr.common.SolrDocument; -import org.apache.solr.common.SolrDocumentList; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.util.DateUtil; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.common.util.SimpleOrderedMap; -import org.apache.solr.common.util.XMLErrorLogger; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import java.io.InputStream; -import java.io.Reader; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Locale; - -/** - * - * - * @since solr 1.3 - */ -public class XMLResponseParser extends ResponseParser -{ - public static final String XML_CONTENT_TYPE = "application/xml; charset=UTF-8"; - public static Logger log = LoggerFactory.getLogger(XMLResponseParser.class); - private static final XMLErrorLogger xmllog = new XMLErrorLogger(log); - - // reuse the factory among all parser instances so things like string caches - // won't be duplicated - static final XMLInputFactory factory; - static { - factory = XMLInputFactory.newInstance(); - try { - // The java 1.6 bundled stax parser (sjsxp) does not currently have a thread-safe - // XMLInputFactory, as that implementation tries to cache and reuse the - // XMLStreamReader. Setting the parser-specific "reuse-instance" property to false - // prevents this. - // All other known open-source stax parsers (and the bea ref impl) - // have thread-safe factories. - factory.setProperty("reuse-instance", Boolean.FALSE); - } - catch( IllegalArgumentException ex ) { - // Other implementations will likely throw this exception since "reuse-instance" - // isimplementation specific. - log.debug( "Unable to set the 'reuse-instance' property for the input factory: "+factory ); - } - factory.setXMLReporter(xmllog); - } - - public XMLResponseParser() {} - - @Override - public String getWriterType() - { - return "xml"; - } - - @Override - public String getContentType() { - return XML_CONTENT_TYPE; - } - - @Override - public NamedList<Object> processResponse(Reader in) { - XMLStreamReader parser = null; - try { - parser = factory.createXMLStreamReader(in); - } catch (XMLStreamException e) { - throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, "parsing error", e); - } - - return processResponse(parser); - } - - @Override - public NamedList<Object> processResponse(InputStream in, String encoding) - { - XMLStreamReader parser = null; - try { - parser = factory.createXMLStreamReader(in, encoding); - } catch (XMLStreamException e) { - throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, "parsing error", e); - } - - return processResponse(parser); - } - - /** - * parse the text into a named list... - */ - private NamedList<Object> processResponse(XMLStreamReader parser) - { - try { - NamedList<Object> response = null; - for (int event = parser.next(); - event != XMLStreamConstants.END_DOCUMENT; - event = parser.next()) - { - switch (event) { - case XMLStreamConstants.START_ELEMENT: - - if( response != null ) { - throw new Exception( "already read the response!" ); - } - - // only top-level element is "response - String name = parser.getLocalName(); - if( name.equals( "response" ) || name.equals( "result" ) ) { - response = readNamedList( parser ); - } - else if( name.equals( "solr" ) ) { - return new SimpleOrderedMap<>(); - } - else { - throw new Exception( "really needs to be response or result. " + - "not:"+parser.getLocalName() ); - } - break; - } - } - return response; - } - catch( Exception ex ) { - throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, "parsing error", ex ); - } - finally { - try { - parser.close(); - } - catch( Exception ex ){} - } - } - - - protected enum KnownType { - STR (true) { @Override public String read( String txt ) { return txt; } }, - INT (true) { @Override public Integer read( String txt ) { return Integer.valueOf(txt); } }, - FLOAT (true) { @Override public Float read( String txt ) { return Float.valueOf(txt); } }, - DOUBLE (true) { @Override public Double read( String txt ) { return Double.valueOf(txt); } }, - LONG (true) { @Override public Long read( String txt ) { return Long.valueOf(txt); } }, - BOOL (true) { @Override public Boolean read( String txt ) { return Boolean.valueOf(txt); } }, - NULL (true) { @Override public Object read( String txt ) { return null; } }, - DATE (true) { - @Override - public Date read( String txt ) { - try { - return DateUtil.parseDate(txt); - } - catch( Exception ex ) { - ex.printStackTrace(); - } - return null; - } - }, - - ARR (false) { @Override public Object read( String txt ) { return null; } }, - LST (false) { @Override public Object read( String txt ) { return null; } }, - RESULT (false) { @Override public Object read( String txt ) { return null; } }, - DOC (false) { @Override public Object read( String txt ) { return null; } }; - - final boolean isLeaf; - - KnownType( boolean isLeaf ) - { - this.isLeaf = isLeaf; - } - - public abstract Object read( String txt ); - - public static KnownType get( String v ) - { - if( v != null ) { - try { - return KnownType.valueOf( v.toUpperCase(Locale.ROOT) ); - } - catch( Exception ex ) {} - } - return null; - } - }; - - protected NamedList<Object> readNamedList( XMLStreamReader parser ) throws XMLStreamException - { - if( XMLStreamConstants.START_ELEMENT != parser.getEventType() ) { - throw new RuntimeException( "must be start element, not: "+parser.getEventType() ); - } - - StringBuilder builder = new StringBuilder(); - NamedList<Object> nl = new SimpleOrderedMap<>(); - KnownType type = null; - String name = null; - - // just eat up the events... - int depth = 0; - while( true ) - { - switch (parser.next()) { - case XMLStreamConstants.START_ELEMENT: - depth++; - builder.setLength( 0 ); // reset the text - type = KnownType.get( parser.getLocalName() ); - if( type == null ) { - throw new RuntimeException( "this must be known type! not: "+parser.getLocalName() ); - } - - name = null; - int cnt = parser.getAttributeCount(); - for( int i=0; i<cnt; i++ ) { - if( "name".equals( parser.getAttributeLocalName( i ) ) ) { - name = parser.getAttributeValue( i ); - break; - } - } - - /** The name in a NamedList can actually be null - if( name == null ) { - throw new XMLStreamException( "requires 'name' attribute: "+parser.getLocalName(), parser.getLocation() ); - } - **/ - - if( !type.isLeaf ) { - switch( type ) { - case LST: nl.add( name, readNamedList( parser ) ); depth--; continue; - case ARR: nl.add( name, readArray( parser ) ); depth--; continue; - case RESULT: nl.add( name, readDocuments( parser ) ); depth--; continue; - case DOC: nl.add( name, readDocument( parser ) ); depth--; continue; - } - throw new XMLStreamException( "branch element not handled!", parser.getLocation() ); - } - break; - - case XMLStreamConstants.END_ELEMENT: - if( --depth < 0 ) { - return nl; - } - //System.out.println( "NL:ELEM:"+type+"::"+name+"::"+builder ); - nl.add( name, type.read( builder.toString().trim() ) ); - break; - - case XMLStreamConstants.SPACE: // TODO? should this be trimmed? make sure it only gets one/two space? - case XMLStreamConstants.CDATA: - case XMLStreamConstants.CHARACTERS: - builder.append( parser.getText() ); - break; - } - } - } - - protected List<Object> readArray( XMLStreamReader parser ) throws XMLStreamException - { - if( XMLStreamConstants.START_ELEMENT != parser.getEventType() ) { - throw new RuntimeException( "must be start element, not: "+parser.getEventType() ); - } - if( !"arr".equals( parser.getLocalName().toLowerCase(Locale.ROOT) ) ) { - throw new RuntimeException( "must be 'arr', not: "+parser.getLocalName() ); - } - - StringBuilder builder = new StringBuilder(); - KnownType type = null; - - List<Object> vals = new ArrayList<>(); - - int depth = 0; - while( true ) - { - switch (parser.next()) { - case XMLStreamConstants.START_ELEMENT: - depth++; - KnownType t = KnownType.get( parser.getLocalName() ); - if( t == null ) { - throw new RuntimeException( "this must be known type! not: "+parser.getLocalName() ); - } - if( type == null ) { - type = t; - } - /*** actually, there is no rule that arrays need the same type - else if( type != t && !(t == KnownType.NULL || type == KnownType.NULL)) { - throw new RuntimeException( "arrays must have the same type! ("+type+"!="+t+") "+parser.getLocalName() ); - } - ***/ - type = t; - - builder.setLength( 0 ); // reset the text - - if( !type.isLeaf ) { - switch( type ) { - case LST: vals.add( readNamedList( parser ) ); depth--; continue; - case ARR: vals.add( readArray( parser ) ); depth--; continue; - case RESULT: vals.add( readDocuments( parser ) ); depth--; continue; - case DOC: vals.add( readDocument( parser ) ); depth--; continue; - } - throw new XMLStreamException( "branch element not handled!", parser.getLocation() ); - } - break; - - case XMLStreamConstants.END_ELEMENT: - if( --depth < 0 ) { - return vals; // the last element is itself - } - //System.out.println( "ARR:"+type+"::"+builder ); - Object val = type.read( builder.toString().trim() ); - if( val == null && type != KnownType.NULL) { - throw new XMLStreamException( "error reading value:"+type, parser.getLocation() ); - } - vals.add( val ); - break; - - case XMLStreamConstants.SPACE: // TODO? should this be trimmed? make sure it only gets one/two space? - case XMLStreamConstants.CDATA: - case XMLStreamConstants.CHARACTERS: - builder.append( parser.getText() ); - break; - } - } - } - - protected SolrDocumentList readDocuments( XMLStreamReader parser ) throws XMLStreamException - { - SolrDocumentList docs = new SolrDocumentList(); - - // Parse the attributes - for( int i=0; i<parser.getAttributeCount(); i++ ) { - String n = parser.getAttributeLocalName( i ); - String v = parser.getAttributeValue( i ); - if( "numFound".equals( n ) ) { - docs.setNumFound( Long.parseLong( v ) ); - } - else if( "start".equals( n ) ) { - docs.setStart( Long.parseLong( v ) ); - } - else if( "maxScore".equals( n ) ) { - docs.setMaxScore( Float.parseFloat( v ) ); - } - } - - // Read through each document - int event; - while( true ) { - event = parser.next(); - if( XMLStreamConstants.START_ELEMENT == event ) { - if( !"doc".equals( parser.getLocalName() ) ) { - throw new RuntimeException( "should be doc! "+parser.getLocalName() + " :: " + parser.getLocation() ); - } - docs.add( readDocument( parser ) ); - } - else if ( XMLStreamConstants.END_ELEMENT == event ) { - return docs; // only happens once - } - } - } - - protected SolrDocument readDocument( XMLStreamReader parser ) throws XMLStreamException - { - if( XMLStreamConstants.START_ELEMENT != parser.getEventType() ) { - throw new RuntimeException( "must be start element, not: "+parser.getEventType() ); - } - if( !"doc".equals( parser.getLocalName().toLowerCase(Locale.ROOT) ) ) { - throw new RuntimeException( "must be 'lst', not: "+parser.getLocalName() ); - } - - SolrDocument doc = new SolrDocument(); - StringBuilder builder = new StringBuilder(); - KnownType type = null; - String name = null; - - // just eat up the events... - int depth = 0; - while( true ) - { - switch (parser.next()) { - case XMLStreamConstants.START_ELEMENT: - depth++; - builder.setLength( 0 ); // reset the text - type = KnownType.get( parser.getLocalName() ); - if( type == null ) { - throw new RuntimeException( "this must be known type! not: "+parser.getLocalName() ); - } - - name = null; - int cnt = parser.getAttributeCount(); - for( int i=0; i<cnt; i++ ) { - if( "name".equals( parser.getAttributeLocalName( i ) ) ) { - name = parser.getAttributeValue( i ); - break; - } - } - - //Nested documents - while( type == KnownType.DOC) { - doc.addChildDocument(readDocument(parser)); - int event = parser.next(); - if (event == XMLStreamConstants.END_ELEMENT) { //Doc ends - return doc; - } - } - - if( name == null ) { - throw new XMLStreamException( "requires 'name' attribute: "+parser.getLocalName(), parser.getLocation() ); - } - - // Handle multi-valued fields - if( type == KnownType.ARR ) { - for( Object val : readArray( parser ) ) { - doc.addField( name, val ); - } - depth--; // the array reading clears out the 'endElement' - } else if( type == KnownType.LST ) { - doc.addField( name, readNamedList( parser ) ); - depth--; - } else if( !type.isLeaf ) { - System.out.println("nbot leaf!:" + type); - - throw new XMLStreamException( "must be value or array", parser.getLocation() ); - } - break; - - case XMLStreamConstants.END_ELEMENT: - if( --depth < 0 ) { - return doc; - } - //System.out.println( "FIELD:"+type+"::"+name+"::"+builder ); - Object val = type.read( builder.toString().trim() ); - if( val == null ) { - throw new XMLStreamException( "error reading value:"+type, parser.getLocation() ); - } - doc.addField( name, val ); - break; - - case XMLStreamConstants.SPACE: // TODO? should this be trimmed? make sure it only gets one/two space? - case XMLStreamConstants.CDATA: - case XMLStreamConstants.CHARACTERS: - builder.append( parser.getText() ); - break; - } - } - } - - -} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/package-info.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/package-info.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/package-info.java deleted file mode 100644 index 491ef05..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/impl/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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. - */ - -/** - * Concrete implementations of client API classes. - - */ -package org.apache.solr.client.solrj.impl; - - http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/package-info.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/package-info.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/package-info.java deleted file mode 100644 index b88918e..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/package-info.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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. - */ - -/** - * Primary APIs for communicating with a Solr Server from a Java client. - */ -package org.apache.solr.client.solrj; - - http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java deleted file mode 100644 index 0588fc1..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * 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. - */ - -package org.apache.solr.client.solrj.request; - -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrRequest; -import org.apache.solr.client.solrj.response.UpdateResponse; -import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.params.UpdateParams; - - -/** - * - * - **/ -public abstract class AbstractUpdateRequest extends SolrRequest<UpdateResponse> implements IsUpdateRequest { - protected ModifiableSolrParams params; - protected int commitWithin = -1; - - public enum ACTION { - COMMIT, - OPTIMIZE - } - - public AbstractUpdateRequest(METHOD m, String path) { - super(m, path); - } - - /** Sets appropriate parameters for the given ACTION */ - public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher ) { - return setAction(action, waitFlush, waitSearcher, 1); - } - - public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher, boolean softCommit ) { - return setAction(action, waitFlush, waitSearcher, softCommit, 1); - } - - public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher, int maxSegments ) { - return setAction(action, waitFlush, waitSearcher, false, maxSegments); - } - - public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher, boolean softCommit, int maxSegments ) { - if (params == null) - params = new ModifiableSolrParams(); - - if( action == ACTION.OPTIMIZE ) { - params.set( UpdateParams.OPTIMIZE, "true" ); - params.set(UpdateParams.MAX_OPTIMIZE_SEGMENTS, maxSegments); - } - else if( action == ACTION.COMMIT ) { - params.set( UpdateParams.COMMIT, "true" ); - params.set( UpdateParams.SOFT_COMMIT, String.valueOf(softCommit)); - } - params.set( UpdateParams.WAIT_SEARCHER, String.valueOf(waitSearcher)); - return this; - } - - public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher, int maxSegments , boolean softCommit, boolean expungeDeletes) { - setAction(action, waitFlush, waitSearcher,softCommit,maxSegments) ; - params.set(UpdateParams.EXPUNGE_DELETES, String.valueOf(expungeDeletes)); - return this; - } - - public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher, int maxSegments , boolean expungeDeletes) { - return setAction(action, waitFlush, waitSearcher,maxSegments,false,expungeDeletes); - } - - public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher, int maxSegments, boolean softCommit, boolean expungeDeletes, boolean openSearcher) { - setAction(action, waitFlush, waitSearcher, maxSegments, softCommit, expungeDeletes); - params.set(UpdateParams.OPEN_SEARCHER, String.valueOf(openSearcher)); - return this; - } - - /** - * @since Solr 1.4 - */ - public AbstractUpdateRequest rollback() { - if (params == null) - params = new ModifiableSolrParams(); - - params.set( UpdateParams.ROLLBACK, "true" ); - return this; - } - - public void setParam(String param, String value) { - if (params == null) - params = new ModifiableSolrParams(); - params.set(param, value); - } - - /** Sets the parameters for this update request, overwriting any previous */ - public void setParams(ModifiableSolrParams params) { - this.params = params; - } - - @Override - public ModifiableSolrParams getParams() { - return params; - } - - @Override - protected UpdateResponse createResponse(SolrClient client) { - return new UpdateResponse(); - } - - public boolean isWaitSearcher() { - return params != null && params.getBool(UpdateParams.WAIT_SEARCHER, false); - } - - public ACTION getAction() { - if (params==null) return null; - if (params.getBool(UpdateParams.COMMIT, false)) return ACTION.COMMIT; - if (params.getBool(UpdateParams.OPTIMIZE, false)) return ACTION.OPTIMIZE; - return null; - } - - public void setWaitSearcher(boolean waitSearcher) { - setParam( UpdateParams.WAIT_SEARCHER, waitSearcher+"" ); - } - - public int getCommitWithin() { - return commitWithin; - } - - public void setCommitWithin(int commitWithin) { - this.commitWithin = commitWithin; - } - - -} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java deleted file mode 100644 index 1ad0b26..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java +++ /dev/null @@ -1,860 +0,0 @@ -/* - * 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. - */ - -package org.apache.solr.client.solrj.request; - -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrRequest; -import org.apache.solr.client.solrj.response.CollectionAdminResponse; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.cloud.DocCollection; -import org.apache.solr.common.cloud.ZkStateReader; -import org.apache.solr.common.params.CollectionParams.CollectionAction; -import org.apache.solr.common.params.CoreAdminParams; -import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.params.ShardParams; -import org.apache.solr.common.params.SolrParams; -import org.apache.solr.common.util.ContentStream; - -import java.io.IOException; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; -import java.util.Properties; - -/** - * This class is experimental and subject to change. - * - * @since solr 4.5 - */ -public class CollectionAdminRequest extends SolrRequest<CollectionAdminResponse> { - - protected CollectionAction action = null; - - private static String PROPERTY_PREFIX = "property."; - - protected void setAction( CollectionAction action ) { - this.action = action; - } - - public CollectionAdminRequest() - { - super( METHOD.GET, "/admin/collections" ); - } - - public CollectionAdminRequest( String path ) - { - super( METHOD.GET, path ); - } - - @Override - public SolrParams getParams() { - if( action == null ) { - throw new RuntimeException( "no action specified!" ); - } - ModifiableSolrParams params = new ModifiableSolrParams(); - params.set( CoreAdminParams.ACTION, action.toString() ); - return params; - } - - @Override - public Collection<ContentStream> getContentStreams() throws IOException { - return null; - } - - @Override - protected CollectionAdminResponse createResponse(SolrClient client) { - return new CollectionAdminResponse(); - } - - protected void addProperties(ModifiableSolrParams params, Properties props) { - Iterator<Map.Entry<Object, Object>> iter = props.entrySet().iterator(); - while(iter.hasNext()) { - Map.Entry<Object, Object> prop = iter.next(); - String key = (String) prop.getKey(); - String value = (String) prop.getValue(); - params.set(PROPERTY_PREFIX + key, value); - } - } - - //--------------------------------------------------------------------------------------- - // - //--------------------------------------------------------------------------------------- - - protected static class CollectionSpecificAdminRequest extends CollectionAdminRequest { - protected String collection = null; - - public final void setCollectionName( String collectionName ) - { - this.collection = collectionName; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set( CoreAdminParams.NAME, collection ); - return params; - } - - - } - - protected static class CollectionShardAdminRequest extends CollectionSpecificAdminRequest { - protected String shardName = null; - - public void setShardName(String shard) { this.shardName = shard; } - public String getShardName() { return this.shardName; } - - public ModifiableSolrParams getCommonParams() { - ModifiableSolrParams params = (ModifiableSolrParams) super.getParams(); - params.set( "collection", collection ); - params.set( "shard", shardName); - return params; - } - - @Override - public SolrParams getParams() { - return getCommonParams(); - } - } - - protected static class CollectionAdminRoleRequest extends CollectionAdminRequest { - private String node; - private String role; - - public void setNode(String node) { - this.node = node; - } - - public String getNode() { - return this.node; - } - - public void setRole(String role) { - this.role = role; - } - - public String getRole() { - return this.role; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set("role", this.role); - params.set("node", this.node); - return params; - } - - } - - /** Specific Collection API call implementations **/ - - // CREATE request - public static class Create extends CollectionSpecificAdminRequest { - protected String configName = null; - protected String createNodeSet = null; - protected String routerName; - protected String shards; - protected String routerField; - protected Integer numShards; - protected Integer maxShardsPerNode; - protected Integer replicationFactor; - - private Properties properties; - protected Boolean autoAddReplicas; - protected Integer stateFormat; - protected String asyncId; - - - public Create() { - action = CollectionAction.CREATE; - } - - public void setConfigName(String config) { this.configName = config; } - public void setCreateNodeSet(String nodeSet) { this.createNodeSet = nodeSet; } - public void setRouterName(String routerName) { this.routerName = routerName; } - public void setShards(String shards) { this.shards = shards; } - public void setRouterField(String routerField) { this.routerField = routerField; } - public void setNumShards(Integer numShards) {this.numShards = numShards;} - public void setMaxShardsPerNode(Integer numShards) { this.maxShardsPerNode = numShards; } - public void setAutoAddReplicas(boolean autoAddReplicas) { this.autoAddReplicas = autoAddReplicas; } - public void setReplicationFactor(Integer repl) { this.replicationFactor = repl; } - public void setStateFormat(Integer stateFormat) { this.stateFormat = stateFormat; } - public void setAsyncId(String asyncId) { - this.asyncId = asyncId; - } - - public String getConfigName() { return configName; } - public String getCreateNodeSet() { return createNodeSet; } - public String getRouterName() { return routerName; } - public String getShards() { return shards; } - public Integer getNumShards() { return numShards; } - public Integer getMaxShardsPerNode() { return maxShardsPerNode; } - public Integer getReplicationFactor() { return replicationFactor; } - public Boolean getAutoAddReplicas() { return autoAddReplicas; } - public Integer getStateFormat() { return stateFormat; } - public String getAsyncId() { - return asyncId; - } - - public Properties getProperties() { - return properties; - } - - public void setProperties(Properties properties) { - this.properties = properties; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = (ModifiableSolrParams) super.getParams(); - - params.set( "collection.configName", configName); - params.set( "createNodeSet", createNodeSet); - if (numShards != null) { - params.set( ZkStateReader.NUM_SHARDS_PROP, numShards); - } - if (maxShardsPerNode != null) { - params.set( "maxShardsPerNode", maxShardsPerNode); - } - params.set( "router.name", routerName); - params.set("shards", shards); - if (routerField != null) { - params.set("router.field", routerField); - } - if (replicationFactor != null) { - params.set( "replicationFactor", replicationFactor); - } - params.set("async", asyncId); - if (autoAddReplicas != null) { - params.set(ZkStateReader.AUTO_ADD_REPLICAS, autoAddReplicas); - } - if(properties != null) { - addProperties(params, properties); - } - if (stateFormat != null) { - params.set(DocCollection.STATE_FORMAT, stateFormat); - } - return params; - } - - } - - // RELOAD request - public static class Reload extends CollectionSpecificAdminRequest { - public Reload() { - action = CollectionAction.RELOAD; - } - } - - // DELETE request - public static class Delete extends CollectionSpecificAdminRequest { - public Delete() { - action = CollectionAction.DELETE; - } - } - - // CREATESHARD request - public static class CreateShard extends CollectionShardAdminRequest { - protected String nodeSet; - private Properties properties; - - public void setNodeSet(String nodeSet) { - this.nodeSet = nodeSet; - } - - public String getNodeSet() { - return nodeSet; - } - - public Properties getProperties() { - return properties; - } - - public void setProperties(Properties properties) { - this.properties = properties; - } - - public CreateShard() { - action = CollectionAction.CREATESHARD; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = getCommonParams(); - params.set( "createNodeSet", nodeSet); - if(properties != null) { - addProperties(params, properties); - } - return params; - } - } - - // SPLITSHARD request - public static class SplitShard extends CollectionShardAdminRequest { - protected String ranges; - protected String splitKey; - protected String asyncId; - - private Properties properties; - - public SplitShard() { - action = CollectionAction.SPLITSHARD; - } - - public void setRanges(String ranges) { this.ranges = ranges; } - public String getRanges() { return ranges; } - - public void setSplitKey(String splitKey) { - this.splitKey = splitKey; - } - - public String getSplitKey() { - return this.splitKey; - } - - public Properties getProperties() { - return properties; - } - - public void setProperties(Properties properties) { - this.properties = properties; - } - - public void setAsyncId(String asyncId) { - this.asyncId = asyncId; - } - - public String getAsyncId() { - return asyncId; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = getCommonParams(); - params.set( "ranges", ranges); - - if(splitKey != null) - params.set("split.key", this.splitKey); - - if(properties != null) { - addProperties(params, properties); - } - - params.set("async", asyncId); - return params; - } - } - - // DELETESHARD request - public static class DeleteShard extends CollectionShardAdminRequest { - public DeleteShard() { - action = CollectionAction.DELETESHARD; - } - } - - // REQUESTSTATUS request - public static class RequestStatus extends CollectionAdminRequest { - protected String requestId = null; - - public RequestStatus() { - action = CollectionAction.REQUESTSTATUS; - } - - public void setRequestId(String requestId) {this.requestId = requestId; } - public String getRequestId() { return this.requestId; } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = (ModifiableSolrParams) super.getParams(); - params.set("requestid", requestId); - return params; - } - } - - // CREATEALIAS request - public static class CreateAlias extends CollectionAdminRequest { - protected String aliasName; - protected String aliasedCollections; - - public CreateAlias() { - action = CollectionAction.CREATEALIAS; - } - - public void setAliasName(String aliasName) { - this.aliasName = aliasName; - } - - public String getAliasName() { - return aliasName; - } - - public void setAliasedCollections(String alias) { this.aliasedCollections = alias; } - public String getAliasedCollections() { return this.aliasedCollections; } - - @Deprecated - public void setCollectionName(String aliasName) { - this.aliasName = aliasName; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = (ModifiableSolrParams) super.getParams(); - params.set("name", aliasName); - params.set( "collections", aliasedCollections ); - return params; - } - } - - // DELETEALIAS request - public static class DeleteAlias extends CollectionAdminRequest { - protected String aliasName; - - public DeleteAlias() { - action = CollectionAction.DELETEALIAS; - } - - public void setAliasName(String aliasName) { - this.aliasName = aliasName; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set("name", aliasName); - return params; - } - } - - // ADDREPLICA request - public static class AddReplica extends CollectionShardAdminRequest { - private String node; - private String routeKey; - private String instanceDir; - private String dataDir; - private Properties properties; - private String asyncId; - - public AddReplica() { - action = CollectionAction.ADDREPLICA; - } - - public Properties getProperties() { - return properties; - } - - public void setProperties(Properties properties) { - this.properties = properties; - } - - public String getNode() { - return node; - } - - public void setNode(String node) { - this.node = node; - } - - public String getRouteKey() { - return routeKey; - } - - public void setRouteKey(String routeKey) { - this.routeKey = routeKey; - } - - public String getInstanceDir() { - return instanceDir; - } - - public void setInstanceDir(String instanceDir) { - this.instanceDir = instanceDir; - } - - public String getDataDir() { - return dataDir; - } - - public void setDataDir(String dataDir) { - this.dataDir = dataDir; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - if (shardName == null || shardName.isEmpty()) { - params.remove("shard"); - if (routeKey == null) { - throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Either shard or routeKey must be provided"); - } - params.add(ShardParams._ROUTE_, routeKey); - } - params.set("async", asyncId); - if (node != null) { - params.add("node", node); - } - if (instanceDir != null) { - params.add("instanceDir", instanceDir); - } - if (dataDir != null) { - params.add("dataDir", dataDir); - } - if (properties != null) { - addProperties(params, properties); - } - return params; - } - - public void setAsyncId(String asyncId) { - this.asyncId = asyncId; - } - - public String getAsyncId() { - return asyncId; - } - } - - // DELETEREPLICA request - public static class DeleteReplica extends CollectionShardAdminRequest { - private String replica; - private Boolean onlyIfDown; - - public DeleteReplica() { - action = CollectionAction.DELETEREPLICA; - } - - public void setReplica(String replica) { - this.replica = replica; - } - - public String getReplica() { - return this.replica; - } - - public void setOnlyIfDown(boolean onlyIfDown) { - this.onlyIfDown = onlyIfDown; - } - - public Boolean getOnlyIfDown() { - return this.onlyIfDown; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set(ZkStateReader.REPLICA_PROP, this.replica); - - if(onlyIfDown != null) { - params.set("onlyIfDown", this.onlyIfDown); - } - return params; - } - } - - // CLUSTERPROP request - public static class ClusterProp extends CollectionAdminRequest { - private String propertyName; - private String propertyValue; - - public ClusterProp() { - this.action = CollectionAction.CLUSTERPROP; - } - - public void setPropertyName(String propertyName) { - this.propertyName = propertyName; - } - - public String getPropertyName() { - return this.propertyName; - } - - public void setPropertyValue(String propertyValue) { - this.propertyValue = propertyValue; - } - - public String getPropertyValue() { - return this.propertyValue; - } - - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.add("name", propertyName); - params.add("val", propertyValue); - - return params; - } - - } - - // MIGRATE request - public static class Migrate extends CollectionSpecificAdminRequest { - private String targetCollection; - private String splitKey; - private Integer forwardTimeout; - private Properties properties; - private String asyncId; - - public Migrate() { - action = CollectionAction.MIGRATE; - } - - public void setTargetCollection(String targetCollection) { - this.targetCollection = targetCollection; - } - - public String getTargetCollection() { - return this.targetCollection; - } - - public void setSplitKey(String splitKey) { - this.splitKey = splitKey; - } - - public String getSplitKey() { - return this.splitKey; - } - - public void setForwardTimeout(int forwardTimeout) { - this.forwardTimeout = forwardTimeout; - } - - public Integer getForwardTimeout() { - return this.forwardTimeout; - } - - public void setProperties(Properties properties) { - this.properties = properties; - } - - public Properties getProperties() { - return this.properties; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set( "collection", collection ); - params.set("target.collection", targetCollection); - params.set("split.key", splitKey); - if(forwardTimeout != null) { - params.set("forward.timeout", forwardTimeout); - } - params.set("async", asyncId); - - if(properties != null) { - addProperties(params, properties); - } - - return params; - } - - public void setAsyncId(String asyncId) { - this.asyncId = asyncId; - } - - public String getAsyncId() { - return asyncId; - } - } - - // ADDROLE request - public static class AddRole extends CollectionAdminRoleRequest { - public AddRole() { - action = CollectionAction.ADDROLE; - } - } - - // REMOVEROLE request - public static class RemoveRole extends CollectionAdminRoleRequest { - public RemoveRole() { - action = CollectionAction.REMOVEROLE; - } - } - - // OVERSEERSTATUS request - public static class OverseerStatus extends CollectionAdminRequest { - public OverseerStatus () { - action = CollectionAction.OVERSEERSTATUS; - } - } - - // CLUSTERSTATUS request - public static class ClusterStatus extends CollectionShardAdminRequest { - - public ClusterStatus () { - action = CollectionAction.CLUSTERSTATUS; - } - - } - - // LIST request - public static class List extends CollectionAdminRequest { - public List () { - action = CollectionAction.LIST; - } - } - - // ADDREPLICAPROP request - public static class AddReplicaProp extends CollectionShardAdminRequest { - private String replica; - private String propertyName; - private String propertyValue; - private Boolean shardUnique; - - public AddReplicaProp() { - action = CollectionAction.ADDREPLICAPROP; - } - - public String getReplica() { - return replica; - } - - public void setReplica(String replica) { - this.replica = replica; - } - - public String getPropertyName() { - return propertyName; - } - - public void setPropertyName(String propertyName) { - this.propertyName = propertyName; - } - - public String getPropertyValue() { - return propertyValue; - } - - public void setPropertyValue(String propertyValue) { - this.propertyValue = propertyValue; - } - - public Boolean getShardUnique() { - return shardUnique; - } - - public void setShardUnique(Boolean shardUnique) { - this.shardUnique = shardUnique; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set("replica", replica); - params.set("property", propertyName); - params.set("property.value", propertyValue); - - if(shardUnique != null) - params.set("shardUnique", shardUnique); - - return params; - } - - } - - // DELETEREPLICAPROP request - public static class DeleteReplicaProp extends CollectionShardAdminRequest { - private String replica; - private String propertyName; - - public DeleteReplicaProp() { - this.action = CollectionAction.DELETEREPLICAPROP; - } - - public String getReplica() { - return replica; - } - - public void setReplica(String replica) { - this.replica = replica; - } - - public String getPropertyName() { - return propertyName; - } - - public void setPropertyName(String propertyName) { - this.propertyName = propertyName; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set("replica", replica); - params.set("property", propertyName); - return params; - } - } - - // BALANCESHARDUNIQUE request - public static class BalanceShardUnique extends CollectionAdminRequest { - private String collection; - private String propertyName; - private Boolean onlyActiveNodes; - private Boolean shardUnique; - - public BalanceShardUnique() { - this.action = CollectionAction.BALANCESHARDUNIQUE; - } - - public String getPropertyName() { - return propertyName; - } - - public void setPropertyName(String propertyName) { - this.propertyName = propertyName; - } - - public Boolean getOnlyActiveNodes() { - return onlyActiveNodes; - } - - public void setOnlyActiveNodes(Boolean onlyActiveNodes) { - this.onlyActiveNodes = onlyActiveNodes; - } - - public Boolean getShardUnique() { - return shardUnique; - } - - public void setShardUnique(Boolean shardUnique) { - this.shardUnique = shardUnique; - } - - public void setCollection(String collection) { - this.collection = collection; - } - - public String getCollection() { - return collection; - } - - @Override - public SolrParams getParams() { - ModifiableSolrParams params = new ModifiableSolrParams(super.getParams()); - params.set("collection", collection); - params.set("property", propertyName); - if(onlyActiveNodes != null) - params.set("onlyactivenodes", onlyActiveNodes); - if(shardUnique != null) - params.set("shardUnique", shardUnique); - return params; - } - - } -} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d9a661cf/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java ---------------------------------------------------------------------- diff --git a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java b/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java deleted file mode 100644 index 44e37c9..0000000 --- a/ranger_solrj/src/main/java/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * 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. - */ - -package org.apache.solr.client.solrj.request; - -import org.apache.solr.common.util.ContentStream; -import org.apache.solr.common.util.ContentStreamBase; - -import java.io.IOException; -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - - -/** - * Basic functionality to upload a File or {@link org.apache.solr.common.util.ContentStream} to a Solr Cell or some - * other handler that takes ContentStreams (CSV) - * <p> - * See http://wiki.apache.org/solr/ExtractingRequestHandler<br> - * See http://wiki.apache.org/solr/UpdateCSV - * - * - **/ -public class ContentStreamUpdateRequest extends AbstractUpdateRequest { - List<ContentStream> contentStreams; - - /** - * - * @param url The URL to send the {@link org.apache.solr.common.util.ContentStream} to in Solr. - */ - public ContentStreamUpdateRequest(String url) { - super(METHOD.POST, url); - contentStreams = new ArrayList<>(); - } - - @Override - public Collection<ContentStream> getContentStreams() throws IOException { - return contentStreams; - } - - /** - * Add a File to the {@link org.apache.solr.common.util.ContentStream}s. - * @param file The File to add. - * @throws IOException if there was an error with the file. - * - * @see #getContentStreams() - * @see org.apache.solr.common.util.ContentStreamBase.FileStream - */ - public void addFile(File file, String contentType) throws IOException { - ContentStreamBase cs = new ContentStreamBase.FileStream(file); - cs.setContentType(contentType); - addContentStream(cs); - } - - /** - * Add a {@link org.apache.solr.common.util.ContentStream} to {@link #getContentStreams()} - * @param contentStream The {@link org.apache.solr.common.util.ContentStream} - */ - public void addContentStream(ContentStream contentStream){ - contentStreams.add(contentStream); - } - -}
