This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch STORM-3988
in repository https://gitbox.apache.org/repos/asf/storm.git

commit 80a29c9255a0ba3220880fd0170cdb7f92a6b6c4
Author: Richard Zowalla <[email protected]>
AuthorDate: Thu Oct 19 09:02:05 2023 +0200

    STORM-3988 - Remove "storm-solr"
---
 examples/storm-solr-examples/pom.xml               | 125 ------------
 .../apache/storm/solr/spout/SolrFieldsSpout.java   |  77 -------
 .../org/apache/storm/solr/spout/SolrJsonSpout.java | 117 -----------
 .../storm/solr/topology/SolrFieldsTopology.java    |  61 ------
 .../storm/solr/topology/SolrJsonTopology.java      |  49 -----
 .../apache/storm/solr/topology/SolrTopology.java   |  71 -------
 .../solr/trident/SolrFieldsTridentTopology.java    |  48 -----
 .../solr/trident/SolrJsonTridentTopology.java      |  46 -----
 .../java/org/apache/storm/solr/util/TestUtil.java  |  30 ---
 external/storm-solr/README.md                      | 224 ---------------------
 external/storm-solr/pom.xml                        | 158 ---------------
 .../org/apache/storm/solr/bolt/SolrUpdateBolt.java | 165 ---------------
 .../apache/storm/solr/config/CountBasedCommit.java |  53 -----
 .../storm/solr/config/SolrCommitStrategy.java      |  24 ---
 .../org/apache/storm/solr/config/SolrConfig.java   |  67 ------
 .../apache/storm/solr/mapper/SolrFieldsMapper.java | 179 ----------------
 .../apache/storm/solr/mapper/SolrJsonMapper.java   | 151 --------------
 .../org/apache/storm/solr/mapper/SolrMapper.java   |  28 ---
 .../storm/solr/mapper/SolrMapperException.java     |  18 --
 .../org/apache/storm/solr/schema/CopyField.java    |  44 ----
 .../java/org/apache/storm/solr/schema/Field.java   |  44 ----
 .../org/apache/storm/solr/schema/FieldType.java    |  56 ------
 .../java/org/apache/storm/solr/schema/Schema.java  | 110 ----------
 .../storm/solr/schema/SolrFieldTypeFinder.java     | 187 -----------------
 .../solr/schema/builder/RestJsonSchemaBuilder.java |  70 -------
 .../schema/builder/RestJsonSchemaBuilderV2.java    | 117 -----------
 .../storm/solr/schema/builder/SchemaBuilder.java   |  23 ---
 .../org/apache/storm/solr/trident/SolrState.java   |  66 ------
 .../storm/solr/trident/SolrStateFactory.java       |  37 ----
 .../org/apache/storm/solr/trident/SolrUpdater.java |  26 ---
 pom.xml                                            |   2 -
 31 files changed, 2473 deletions(-)

diff --git a/examples/storm-solr-examples/pom.xml 
b/examples/storm-solr-examples/pom.xml
deleted file mode 100644
index 18d11e824..000000000
--- a/examples/storm-solr-examples/pom.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <artifactId>storm</artifactId>
-        <groupId>org.apache.storm</groupId>
-        <version>2.6.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
-    </parent>
-
-    <artifactId>storm-solr-examples</artifactId>
-    
-    <properties>
-        <!-- Required downgrade by solr-core 5.5.5 -->
-        <guava.version.downgrade.solr>17.0</guava.version.downgrade.solr>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.storm</groupId>
-            <artifactId>storm-client</artifactId>
-            <version>${project.version}</version>
-            <scope>${provided.scope}</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.storm</groupId>
-            <artifactId>storm-solr</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.httpcomponents</groupId>
-                    <artifactId>httpclient</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-            <version>1.1.3</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>${guava.version.downgrade.solr}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <configuration>
-                    
<createDependencyReducedPom>true</createDependencyReducedPom>
-                    <filters>
-                        <filter>
-                            <artifact>*:*</artifact>
-                            <excludes>
-                                <exclude>META-INF/*.SF</exclude>
-                                <exclude>META-INF/*.sf</exclude>
-                                <exclude>META-INF/*.DSA</exclude>
-                                <exclude>META-INF/*.dsa</exclude>
-                                <exclude>META-INF/*.RSA</exclude>
-                                <exclude>META-INF/*.rsa</exclude>
-                                <exclude>META-INF/*.EC</exclude>
-                                <exclude>META-INF/*.ec</exclude>
-                                <exclude>META-INF/MSFTSIG.SF</exclude>
-                                <exclude>META-INF/MSFTSIG.RSA</exclude>
-                            </excludes>
-                        </filter>
-                    </filters>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <transformers>
-                                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"
 />
-                                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                                </transformer>
-                            </transformers>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <!--Note - the version would be inherited-->
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-pmd-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/spout/SolrFieldsSpout.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/spout/SolrFieldsSpout.java
deleted file mode 100644
index c1c0145ef..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/spout/SolrFieldsSpout.java
+++ /dev/null
@@ -1,77 +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.storm.solr.spout;
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import org.apache.storm.solr.util.TestUtil;
-import org.apache.storm.spout.SpoutOutputCollector;
-import org.apache.storm.task.TopologyContext;
-import org.apache.storm.topology.OutputFieldsDeclarer;
-import org.apache.storm.topology.base.BaseRichSpout;
-import org.apache.storm.tuple.Fields;
-import org.apache.storm.tuple.Values;
-
-public class SolrFieldsSpout extends BaseRichSpout {
-    private SpoutOutputCollector collector;
-    public static final List<Values> listValues = Lists.newArrayList(
-            getValues("1"), getValues("2"), getValues("3"));
-
-    private static Values getValues(String suf) {
-        String suffix = "_fields_test_val_" + suf;
-        return new Values(
-                "id" + suffix,
-                TestUtil.getDate(),
-                "dc_title" + suffix,
-                "Hugo%Miguel%Louro" + suffix,           // Multivalue field 
split by non default token %
-                "dynamic_field" + suffix + "_txt",      // to match dynamic 
fields of the form "*_txt"
-                "non_matching_field" + suffix);         // this field won't be 
indexed by solr
-    }
-
-    @Override
-    public void open(Map<String, Object> conf, TopologyContext context, 
SpoutOutputCollector collector) {
-        this.collector = collector;
-    }
-
-    @Override
-    public void nextTuple() {
-        final Random rand = new Random();
-        final Values values = listValues.get(rand.nextInt(listValues.size()));
-        collector.emit(values);
-        Thread.yield();
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(getOutputFields());
-    }
-
-    public Fields getOutputFields() {
-        return new Fields("id", "date", "dc_title", "author", 
"dynamic_field_txt", "non_matching_field");
-    }
-
-    @Override
-    public void close() {
-        super.close();
-    }
-}
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/spout/SolrJsonSpout.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/spout/SolrJsonSpout.java
deleted file mode 100644
index ed3fa762c..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/spout/SolrJsonSpout.java
+++ /dev/null
@@ -1,117 +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.storm.solr.spout;
-
-import com.google.common.collect.Lists;
-import com.google.gson.Gson;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import org.apache.storm.solr.util.TestUtil;
-import org.apache.storm.spout.SpoutOutputCollector;
-import org.apache.storm.task.TopologyContext;
-import org.apache.storm.topology.OutputFieldsDeclarer;
-import org.apache.storm.topology.base.BaseRichSpout;
-import org.apache.storm.tuple.Fields;
-import org.apache.storm.tuple.Values;
-
-public class SolrJsonSpout extends BaseRichSpout {
-    private SpoutOutputCollector collector;
-    private static final List<Values> listValues = Lists.newArrayList(
-            getJsonValues("1"), getJsonValues("2"), getJsonValues("3"), // 
Tuple contains String Object in JSON format
-            getPojoValues("1"), getPojoValues("2"));    // Tuple contains Java 
object that must be serialized to JSON by SolrJsonMapper
-
-    @Override
-    public void open(Map<String, Object> conf, TopologyContext context, 
SpoutOutputCollector collector) {
-        this.collector = collector;
-    }
-
-    @Override
-    public void nextTuple() {
-        final Random rand = new Random();
-        final Values values = listValues.get(rand.nextInt(listValues.size()));
-        collector.emit(values);
-        Thread.yield();
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(getOutputFields());
-    }
-
-    public Fields getOutputFields() {
-        return new Fields("JSON");
-    }
-
-    @Override
-    public void close() {   //TODO
-        super.close();
-    }
-
-    // ====
-
-    private static Values getJsonValues(String suf) {
-        String suffix = "_json_test_val_" + suf;
-        return new Values((new JsonSchema(suffix)).toJson());
-    }
-
-    private static Values getPojoValues(String suf) {
-        String suffix = "_json_test_val_" + suf;
-        return new Values(new JsonSchema(suffix));
-    }
-
-    public static class JsonSchema {
-        private String id;
-        private String date;
-        private String dcTitle;
-
-        private static final Gson gson = new Gson();
-
-        public JsonSchema(String suffix) {
-            this.id = "id" + suffix;
-            this.date = TestUtil.getDate();
-            this.dcTitle = "dcTitle" + suffix;
-        }
-
-        public JsonSchema(String id, String date, String dcTitle) {
-            this.id = id;
-            this.date = date;
-            this.dcTitle = dcTitle;
-        }
-
-        // copy constructor
-        public JsonSchema(JsonSchema jsonSchema) {
-            this.id = jsonSchema.id;
-            this.date = jsonSchema.date;
-            this.dcTitle = jsonSchema.dcTitle;
-        }
-
-        public String toJson() {
-            String json = gson.toJson(this);
-            System.out.println(json);   // TODO log
-            return json;
-        }
-
-        public static JsonSchema fromJson(String jsonStr) {
-            return new JsonSchema(gson.fromJson(jsonStr, JsonSchema.class));
-        }
-    }
-}
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrFieldsTopology.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrFieldsTopology.java
deleted file mode 100644
index df9b709d3..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrFieldsTopology.java
+++ /dev/null
@@ -1,61 +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.storm.solr.topology;
-
-import java.io.IOException;
-
-import org.apache.storm.generated.StormTopology;
-import org.apache.storm.solr.bolt.SolrUpdateBolt;
-import org.apache.storm.solr.config.CountBasedCommit;
-import org.apache.storm.solr.config.SolrCommitStrategy;
-import org.apache.storm.solr.config.SolrConfig;
-import org.apache.storm.solr.mapper.SolrFieldsMapper;
-import org.apache.storm.solr.mapper.SolrMapper;
-import org.apache.storm.solr.schema.builder.RestJsonSchemaBuilderV2;
-import org.apache.storm.solr.spout.SolrFieldsSpout;
-import org.apache.storm.topology.TopologyBuilder;
-
-public class SolrFieldsTopology extends SolrTopology {
-
-    public static void main(String[] args) throws Exception {
-        SolrFieldsTopology solrFieldsTopology = new SolrFieldsTopology();
-        solrFieldsTopology.run(args);
-    }
-
-    protected SolrMapper getSolrMapper(SolrConfig solrConfig) throws 
IOException {
-        return new SolrFieldsMapper.Builder(
-                new RestJsonSchemaBuilderV2(solrConfig, COLLECTION), 
COLLECTION)
-                    .setMultiValueFieldToken("%").build();
-    }
-
-    @Override
-    protected SolrCommitStrategy getSolrCommitStgy() {
-        return new CountBasedCommit(2);         // To Commit to Solr and Ack 
according to the commit strategy
-    }
-
-    @Override
-    protected StormTopology getTopology() throws IOException {
-        TopologyBuilder builder = new TopologyBuilder();
-        builder.setSpout("SolrFieldsSpout", new SolrFieldsSpout());
-        SolrConfig solrConfig = getSolrConfig();
-        builder.setBolt("SolrUpdateBolt", new SolrUpdateBolt(solrConfig, 
getSolrMapper(solrConfig), getSolrCommitStgy()))
-                .shuffleGrouping("SolrFieldsSpout");
-        return builder.createTopology();
-    }
-}
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrJsonTopology.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrJsonTopology.java
deleted file mode 100644
index 2c0a43148..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrJsonTopology.java
+++ /dev/null
@@ -1,49 +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.storm.solr.topology;
-
-import java.io.IOException;
-
-import org.apache.storm.generated.StormTopology;
-import org.apache.storm.solr.bolt.SolrUpdateBolt;
-import org.apache.storm.solr.mapper.SolrJsonMapper;
-import org.apache.storm.solr.mapper.SolrMapper;
-import org.apache.storm.solr.spout.SolrJsonSpout;
-import org.apache.storm.topology.TopologyBuilder;
-
-public class SolrJsonTopology extends SolrTopology {
-    public static void main(String[] args) throws Exception {
-        SolrJsonTopology solrJsonTopology = new SolrJsonTopology();
-        solrJsonTopology.run(args);
-    }
-
-    protected SolrMapper getSolrMapper() throws IOException {
-        final String jsonTupleField = "JSON";
-        return new SolrJsonMapper.Builder(COLLECTION, jsonTupleField).build();
-    }
-
-    @Override
-    protected StormTopology getTopology() throws IOException {
-        TopologyBuilder builder = new TopologyBuilder();
-        builder.setSpout("SolrJsonSpout", new SolrJsonSpout());
-        builder.setBolt("SolrUpdateBolt", new SolrUpdateBolt(getSolrConfig(), 
getSolrMapper(), getSolrCommitStgy()))
-                .shuffleGrouping("SolrJsonSpout");
-        return builder.createTopology();
-    }
-}
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrTopology.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrTopology.java
deleted file mode 100644
index 6e483d777..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/topology/SolrTopology.java
+++ /dev/null
@@ -1,71 +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.storm.solr.topology;
-
-import java.io.IOException;
-
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.storm.Config;
-import org.apache.storm.StormSubmitter;
-import org.apache.storm.generated.StormTopology;
-import org.apache.storm.solr.config.SolrCommitStrategy;
-import org.apache.storm.solr.config.SolrConfig;
-
-public abstract class SolrTopology {
-    protected static String COLLECTION = "gettingstarted";
-
-    public void run(String[] args) throws Exception {
-        final StormTopology topology = getTopology();
-        final Config config = getConfig();
-
-        String topoName = "test";
-        if (args.length > 0) {
-            topoName = args[0];
-        }
-        submitTopologyRemoteCluster(topoName, topology, config);
-    }
-
-    protected abstract StormTopology getTopology() throws IOException;
-
-    protected void submitTopologyRemoteCluster(String arg, StormTopology 
topology, Config config) throws Exception {
-        StormSubmitter.submitTopology(arg, config, topology);
-    }
-
-    protected Config getConfig() {
-        Config config = new Config();
-        config.setDebug(true);
-        return config;
-    }
-
-    protected SolrCommitStrategy getSolrCommitStgy() {
-        return null;                          // To Commit to Solr and Ack 
every tuple
-    }
-
-    protected static SolrConfig getSolrConfig() {
-        String zkHostString = "127.0.0.1:9983";  // zkHostString for Solr 
gettingstarted example
-        return new SolrConfig(zkHostString);
-    }
-
-    protected static SolrClient getSolrClient() {
-        String zkHostString = "127.0.0.1:9983";  // zkHostString for Solr 
gettingstarted example
-        return new CloudSolrClient(zkHostString);
-    }
-
-}
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/trident/SolrFieldsTridentTopology.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/trident/SolrFieldsTridentTopology.java
deleted file mode 100644
index cd574d7f6..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/trident/SolrFieldsTridentTopology.java
+++ /dev/null
@@ -1,48 +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.storm.solr.trident;
-
-import java.io.IOException;
-
-import org.apache.storm.generated.StormTopology;
-import org.apache.storm.solr.config.SolrConfig;
-import org.apache.storm.solr.spout.SolrFieldsSpout;
-import org.apache.storm.solr.topology.SolrFieldsTopology;
-import org.apache.storm.trident.Stream;
-import org.apache.storm.trident.TridentTopology;
-import org.apache.storm.trident.state.StateFactory;
-import org.apache.storm.tuple.Fields;
-
-public class SolrFieldsTridentTopology extends SolrFieldsTopology {
-    public static void main(String[] args) throws Exception {
-        SolrFieldsTridentTopology solrFieldsTridentTopology = new 
SolrFieldsTridentTopology();
-        solrFieldsTridentTopology.run(args);
-    }
-
-    @Override
-    protected StormTopology getTopology() throws IOException {
-        final TridentTopology tridentTopology = new TridentTopology();
-        final SolrFieldsSpout spout = new SolrFieldsSpout();
-        final Stream stream = tridentTopology.newStream("SolrFieldsSpout", 
spout);
-        SolrConfig solrConfig = getSolrConfig();
-        final StateFactory solrStateFactory = new SolrStateFactory(solrConfig, 
getSolrMapper(solrConfig));
-        stream.partitionPersist(solrStateFactory, spout.getOutputFields(),  
new SolrUpdater(), new Fields());
-        return tridentTopology.build();
-    }
-}
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/trident/SolrJsonTridentTopology.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/trident/SolrJsonTridentTopology.java
deleted file mode 100644
index 0ca96856e..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/trident/SolrJsonTridentTopology.java
+++ /dev/null
@@ -1,46 +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.storm.solr.trident;
-
-import java.io.IOException;
-
-import org.apache.storm.generated.StormTopology;
-import org.apache.storm.solr.spout.SolrJsonSpout;
-import org.apache.storm.solr.topology.SolrJsonTopology;
-import org.apache.storm.trident.Stream;
-import org.apache.storm.trident.TridentTopology;
-import org.apache.storm.trident.state.StateFactory;
-import org.apache.storm.tuple.Fields;
-
-public class SolrJsonTridentTopology extends SolrJsonTopology {
-    public static void main(String[] args) throws Exception {
-        SolrJsonTridentTopology solrJsonTridentTopology = new 
SolrJsonTridentTopology();
-        solrJsonTridentTopology.run(args);
-    }
-
-    @Override
-    protected StormTopology getTopology() throws IOException {
-        final TridentTopology topology = new TridentTopology();
-        final SolrJsonSpout spout = new SolrJsonSpout();
-        final Stream stream = topology.newStream("SolrJsonSpout", spout);
-        final StateFactory solrStateFactory = new 
SolrStateFactory(getSolrConfig(), getSolrMapper());
-        stream.partitionPersist(solrStateFactory, spout.getOutputFields(),  
new SolrUpdater(), new Fields());
-        return topology.build();
-    }
-}
diff --git 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/util/TestUtil.java
 
b/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/util/TestUtil.java
deleted file mode 100644
index 84a866bf1..000000000
--- 
a/examples/storm-solr-examples/src/main/java/org/apache/storm/solr/util/TestUtil.java
+++ /dev/null
@@ -1,30 +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.storm.solr.util;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-public class TestUtil {
-    public static String getDate() {
-        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
-        return df.format(new Date());
-    }
-}
diff --git a/external/storm-solr/README.md b/external/storm-solr/README.md
deleted file mode 100644
index d08449f30..000000000
--- a/external/storm-solr/README.md
+++ /dev/null
@@ -1,224 +0,0 @@
-# Storm Solr
-Storm and Trident integration for Apache Solr. This package includes a bolt 
and a trident state that enable a Storm topology
-stream the contents of storm tuples to index Solr collections.
- 
-# Index Storm tuples into a Solr collection
-The The bolt and trident state provided use one of the supplied mappers to 
build a `SolrRequest` object that is 
-responsible for making the update calls to Solr, thus updating the index of 
the collection specified.
- 
-# Usage Examples 
-In this section we provide some simple code snippets on how to build Storm and 
Trident topologies to index Solr. In subsequent sections we 
-describe in detail the two key components of the Storm Solr integration, the 
`SolrUpdateBolt`, and the `Mappers`, `SolrFieldsMapper`, and `SolrJsonMapper`.
-
-## Storm Bolt With JSON Mapper and Count Based Commit Strategy
-
-```java
-    new SolrUpdateBolt(solrConfig, solrMapper, solrCommitStgy)
-    
-    // zkHostString for Solr 'gettingstarted' example
-    SolrConfig solrConfig = new SolrConfig("127.0.0.1:9983");
-    
-    // JSON Mapper used to generate 'SolrRequest' requests to update the 
"gettingstarted" Solr collection with JSON content declared the tuple field 
with name "JSON"
-    SolrMapper solrMapper = new SolrJsonMapper.Builder("gettingstarted", 
"JSON").build(); 
-     
-    // Acks every other five tuples. Setting to null acks every tuple
-    SolrCommitStrategy solrCommitStgy = new CountBasedCommit(5);          
-```
-
-## Trident Topology With Fields Mapper
-```java
-    new SolrStateFactory(solrConfig, solrMapper);
-    
-    // zkHostString for Solr 'gettingstarted' example
-    SolrConfig solrConfig = new SolrConfig("127.0.0.1:9983");
-    
-    /* Solr Fields Mapper used to generate 'SolrRequest' requests to update 
the "gettingstarted" Solr collection. The Solr index is updated using the field 
values of the tuple fields that match static or dynamic fields declared in the 
schema object build using schemaBuilder */ 
-    SolrMapper solrMapper = new SolrFieldsMapper.Builder(schemaBuilder, 
"gettingstarted").build();
-
-    // builds the Schema object from the JSON representation of the schema as 
returned by the URL http://localhost:8983/solr/gettingstarted/schema/ 
-    SchemaBuilder schemaBuilder = new RestJsonSchemaBuilder("localhost", 
"8983", "gettingstarted")
-```
-
-## SolrUpdateBolt
- `SolrUpdateBolt` streams tuples directly into Apache Solr. The Solr index is 
updated using`SolrRequest` requests. 
- The `SolrUpdateBolt` is configurable using implementations of `SolrConfig`, 
`SolrMapper`, and optionally `SolrCommitStrategy`.
-   
- The data to stream onto Solr is extracted from the tuples using the strategy 
defined in the `SolrMapper` implementation.
- 
- The `SolrRquest` can be sent every tuple, or according to a strategy defined 
by `SolrCommitStrategy` implementations. 
- If a `SolrCommitStrategy` is in place and one of the tuples in the batch 
fails, the batch is not committed, and all the tuples in that 
-  batch are marked as Fail, and retried. On the other hand, if all tuples 
succeed, the `SolrRequest` is committed and all tuples are successfully acked.
- 
- `SolrConfig` is the class containing Solr configuration to be made available 
to Storm Solr bolts. Any configuration needed in the bolts should be put in 
this class.
- 
-
-## SolrMapper
-`SorlMapper` implementations define the strategy to extract information from 
the tuples. The public method
-`toSolrRequest` receives a tuple or a list of tuples and returns a 
`SolrRequest` object that is used to update the Solr index.
-
-
-### SolrJsonMapper
-The `SolrJsonMapper` creates a Solr update request that is sent to the URL 
endpoint defined by Solr as the resource 
-destination for requests in JSON format. 
- 
-To create a `SolrJsonMapper` the client must specify the name of the 
collection to update as well as the 
-tuple field that contains the JSON object used to update the Solr index. If 
the tuple does not contain the field specified, 
-a `SolrMapperException` will be thrown when the method `toSolrRequest`is 
called. If the field exists, its value can either 
-be a String with the contents in JSON format, or a Java object that will be 
serialized to JSON
- 
-Code snippet illustrating how to create a `SolrJsonMapper` object to update 
the `gettingstarted` Solr collection with JSON content 
-declared in the tuple field with name "JSON"
-``` java
-    SolrMapper solrMapper = new SolrJsonMapper.Builder("gettingstarted", 
"JSON").build();
-```
-
-
-### SolrFieldsMapper
-The `SolrFieldsMapper` creates a Solr update request that is sent to the Solr 
URL endpoint that handles the updates of `SolrInputDocument` objects.
-
-To create a `SolrFieldsMapper` the client must specify the name of the 
collection to update as well as the `SolrSchemaBuilder`. 
-The Solr `Schema` is used to extract information about the Solr schema fields 
and corresponding types. This metadata is used
-to get the information from the tuples. Only tuple fields that match a static 
or dynamic Solr fields are added to the document. Tuple fields 
-that do not match the schema are not added to the `SolrInputDocument` being 
prepared for indexing. A debug log message is printed for the 
- tuple fields that do not match the schema and hence are not indexed.
- 
-
-The `SolrFieldsMapper` supports multivalue fields. A multivalue tuple field 
must be tokenized. The default token is |. Any 
-arbitrary token can be specified by calling the method 
`org.apache.storm.solr.mapper.SolrFieldsMapper.Builder.setMultiValueFieldToken`
-that is part of the `SolrFieldsMapper.Builder` builder class. 
-
-Code snippet illustrating how to create a `SolrFieldsMapper` object to update 
the `gettingstarted` Solr collection. The multivalue 
-field separates each value with the token % instead of the default | . To use 
the default token you can ommit the call to the method
-`setMultiValueFieldToken`.
-
-``` java
-    new SolrFieldsMapper.Builder(
-            new RestJsonSchemaBuilder("localhost", "8983", "gettingstarted"), 
"gettingstarted")
-                .setMultiValueFieldToken("%").build();
-```
-
-##Working with Kerberized Solr
-If your topology is going to interact with kerberized Solr, your bolts/states 
need to be authenticated by Solr Server. We can enable
-authentication by distributing keytabs for solr user on all worker hosts. We 
can configure the solr bolt to use keytabs by setting
-SolrConfig.enableKerberos config property.
-
-On worker hosts the bolt/trident-state code will use the keytab file with 
principal provided in the jaas config to authenticate with
-Solr. You need to specify a Kerberos principal for the client and a 
corresponding keytab in the JAAS client configuration file.
-Also make sure the provided principal is configured with required permissions 
to access solr collections.
-
-Here’s an example JAAS config:
-
-`SolrJClient {
-  com.sun.security.auth.module.Krb5LoginModule required
-  useKeyTab=true
-  keyTab="/keytabs/solr.keytab"
-  storeKey=true
-  useTicketCache=true
-  debug=true
-  principal="[email protected]";
-};
-`
-
-
-# Build And Run Bundled Examples  
-To be able to run the examples you must first build the java code in the 
package `storm-solr`, 
-and then generate an uber jar with all the dependencies.
-
-
-## Build the Storm Apache Solr Integration Code
-
-`mvn clean install -f REPO_HOME/storm/external/storm-solr/pom.xml`
- 
-## Use the Maven Shade Plugin to Build the Uber Jar
-
- Add the following to `REPO_HOME/storm/external/storm-solr/pom.xml`
- 
- ```
- <plugin>
-     <groupId>org.apache.maven.plugins</groupId>
-     <artifactId>maven-shade-plugin</artifactId>
-     <version>2.4.1</version>
-     <executions>
-         <execution>
-             <phase>package</phase>
-             <goals>
-                 <goal>shade</goal>
-             </goals>
-             <configuration>
-                 <transformers>
-                     <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                         
<mainClass>org.apache.storm.solr.topology.SolrJsonTopology</mainClass>
-                     </transformer>
-                 </transformers>
-             </configuration>
-         </execution>
-     </executions>
-</plugin>
- ```
-
-create the uber jar by running the commmand:
-
-`mvn package -f REPO_HOME/storm/external/storm-solr/pom.xml`
-
-This will create the uber jar file with the name and location matching the 
following pattern:
- 
-`REPO_HOME/storm/external/storm/target/storm-solr-0.11.0-SNAPSHOT.jar`
-
-## Run Examples
-Copy the file 
`REPO_HOME/storm/external/storm-solr/target/storm-solr-0.11.0-SNAPSHOT.jar` to 
`STORM_HOME/extlib`
-
-**The code examples provided require that you first run the [Solr 
gettingstarted](http://lucene.apache.org/solr/quickstart.html) example** 
-
-### Run Storm Topology
-
-STORM_HOME/bin/storm jar 
REPO_HOME/storm/external/storm-solr/target/storm-solr-0.11.0-SNAPSHOT-tests.jar 
org.apache.storm.solr.topology.SolrFieldsTopology
- 
-STORM_HOME/bin/storm jar 
REPO_HOME/storm/external/storm-solr/target/storm-solr-0.11.0-SNAPSHOT-tests.jar 
org.apache.storm.solr.topology.SolrJsonTopology
-
-### Run Trident Topology
-
-STORM_HOME/bin/storm jar 
REPO_HOME/storm/external/storm-solr/target/storm-solr-0.11.0-SNAPSHOT-tests.jar 
org.apache.storm.solr.trident.SolrFieldsTridentTopology
-
-STORM_HOME/bin/storm jar 
REPO_HOME/storm/external/storm-solr/target/storm-solr-0.11.0-SNAPSHOT-tests.jar 
org.apache.storm.solr.trident.SolrJsonTridentTopology
-
-
-### Verify Results
-
-The aforementioned Storm and Trident topologies index the Solr 
`gettingstarted` collection with objects that have the following `id` pattern:
-
-\*id_fields_test_val\* for `SolrFieldsTopology` and  
`SolrFieldsTridentTopology`
-
-\*json_test_val\* for `SolrJsonTopology` and `SolrJsonTridentTopology`
-
-Querying  Solr for these patterns, you will see the values that have been 
indexed by the Storm Apache Solr integration: 
-
-curl -X GET -H "Content-type:application/json" -H "Accept:application/json" 
http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true
-
-curl -X GET -H "Content-type:application/json" -H "Accept:application/json" 
http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*json_test_val*&wt=json&indent=true
-
-You can also see the results by opening the Apache Solr UI and pasting the 
`id` pattern in the `q` textbox in the queries page
-
-http://localhost:8983/solr/#/gettingstarted_shard1_replica2/query
-
-## License
-
-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.
-
-## Committer Sponsors
- * Sriharsha Chintalapani ([[email protected]](mailto:[email protected]))
- * P. Taylor Goetz ([[email protected]](mailto:[email protected]))
\ No newline at end of file
diff --git a/external/storm-solr/pom.xml b/external/storm-solr/pom.xml
deleted file mode 100644
index 4f69bba65..000000000
--- a/external/storm-solr/pom.xml
+++ /dev/null
@@ -1,158 +0,0 @@
-<?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.
-        */-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <parent>
-        <artifactId>storm</artifactId>
-        <groupId>org.apache.storm</groupId>
-        <version>2.6.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>storm-solr</artifactId>
-
-    <developers>
-        <developer>
-        <id>hmcl</id>
-        <name>Hugo Louro</name>
-        <email>[email protected]</email>
-    </developer>
-    </developers>
-
-    <properties>
-        <solr.version>5.5.5</solr.version>
-        <!-- Required downgrade by solr-core 5.5.5 -->
-        <guava.version.downgrade.solr>17.0</guava.version.downgrade.solr>
-    </properties>
-
-    <dependencies>
-       <dependency>
-            <groupId>org.apache.storm</groupId>
-            <artifactId>storm-client</artifactId>
-            <version>${project.version}</version>
-            <scope>${provided.scope}</scope>
-        </dependency>
-        <!-- Solr and its dependencies -->
-        <dependency>
-            <groupId>org.apache.solr</groupId>
-            <artifactId>solr-solrj</artifactId>
-            <version>${solr.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.httpcomponents</groupId>
-                    <artifactId>httpclient</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>1.3</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons-io.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.solr</groupId>
-            <artifactId>solr-core</artifactId>
-            <version>${solr.version}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.restlet.jee</groupId>
-                    <artifactId>org.restlet</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.restlet.jee</groupId>
-                    <artifactId>org.restlet.ext.servlet</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <!-- This is leaking from hadoop-annotations. -->
-                    <groupId>jdk.tools</groupId>
-                    <artifactId>jdk.tools</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.solr</groupId>
-            <artifactId>solr-test-framework</artifactId>
-            <version>${solr.version}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.restlet.jee</groupId>
-                    <artifactId>org.restlet</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.restlet.jee</groupId>
-                    <artifactId>org.restlet.ext.servlet</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>${guava.version.downgrade.solr}</version>
-        </dependency>
-        <!--test dependencies -->
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-            <version>2.3.1</version>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <!--Note - the version would be inherited-->
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-pmd-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/bolt/SolrUpdateBolt.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/bolt/SolrUpdateBolt.java
deleted file mode 100644
index 670663427..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/bolt/SolrUpdateBolt.java
+++ /dev/null
@@ -1,165 +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.storm.solr.bolt;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
-import org.apache.solr.client.solrj.impl.Krb5HttpClientConfigurer;
-import org.apache.storm.solr.config.CountBasedCommit;
-import org.apache.storm.solr.config.SolrCommitStrategy;
-import org.apache.storm.solr.config.SolrConfig;
-import org.apache.storm.solr.mapper.SolrMapper;
-import org.apache.storm.task.OutputCollector;
-import org.apache.storm.task.TopologyContext;
-import org.apache.storm.topology.OutputFieldsDeclarer;
-import org.apache.storm.topology.base.BaseTickTupleAwareRichBolt;
-import org.apache.storm.tuple.Tuple;
-import org.apache.storm.utils.TupleUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SolrUpdateBolt extends BaseTickTupleAwareRichBolt {
-    private static final Logger LOG = 
LoggerFactory.getLogger(SolrUpdateBolt.class);
-
-    /**
-     * Half of the default Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS
-     */
-    private static final int DEFAULT_TICK_TUPLE_INTERVAL_SECS = 15;
-
-    private final SolrConfig solrConfig;
-    private final SolrMapper solrMapper;
-    private final SolrCommitStrategy commitStgy;    // if null, acks every 
tuple
-
-    private SolrClient solrClient;
-    private OutputCollector collector;
-    private List<Tuple> toCommitTuples;
-    private int tickTupleInterval = DEFAULT_TICK_TUPLE_INTERVAL_SECS;
-
-    public SolrUpdateBolt(SolrConfig solrConfig, SolrMapper solrMapper) {
-        this(solrConfig, solrMapper, null);
-    }
-
-    public SolrUpdateBolt(SolrConfig solrConfig, SolrMapper solrMapper, 
SolrCommitStrategy commitStgy) {
-        this.solrConfig = solrConfig;
-        this.solrMapper = solrMapper;
-        this.commitStgy = commitStgy;
-        LOG.debug("Created {} with the following configuration: "
-                        + "[SolrConfig = {}], [SolrMapper = {}], [CommitStgy = 
{}]",
-                this.getClass().getSimpleName(), solrConfig, solrMapper, 
commitStgy);
-    }
-
-    @Override
-    public void prepare(Map<String, Object> topoConf, TopologyContext context, 
OutputCollector collector) {
-        this.collector = collector;
-        if (solrConfig.isKerberosEnabled()) {
-            HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
-        }
-        solrMapper.configure();
-        this.solrClient = new CloudSolrClient(solrConfig.getZkHostString());
-        this.toCommitTuples = new ArrayList<>(capacity());
-    }
-
-    private int capacity() {
-        final int defArrListCpcty = 10;
-        return (commitStgy instanceof CountBasedCommit)
-                ? ((CountBasedCommit) commitStgy).getThreshold()
-                : defArrListCpcty;
-    }
-
-    @Override
-    protected void process(Tuple tuple) {
-        try {
-            SolrRequest request = solrMapper.toSolrRequest(tuple);
-            solrClient.request(request, solrMapper.getCollection());
-            ack(tuple);
-        } catch (Exception e) {
-            fail(tuple, e);
-        }
-    }
-
-    private void ack(Tuple tuple) throws SolrServerException, IOException {
-        if (commitStgy == null) {
-            collector.ack(tuple);
-        } else {
-            final boolean isTickTuple = TupleUtils.isTick(tuple);
-            if (!isTickTuple) {    // Don't ack tick tuples
-                toCommitTuples.add(tuple);
-                commitStgy.update();
-            }
-            if (isTickTuple || commitStgy.commit()) {
-                solrClient.commit(solrMapper.getCollection());
-                ackCommittedTuples();
-            }
-        }
-    }
-
-    private void ackCommittedTuples() {
-        List<Tuple> toAckTuples = getQueuedTuples();
-        for (Tuple tuple : toAckTuples) {
-            collector.ack(tuple);
-        }
-    }
-
-    private void fail(Tuple tuple, Exception e) {
-        collector.reportError(e);
-
-        if (commitStgy == null) {
-            collector.fail(tuple);
-        } else {
-            List<Tuple> failedTuples = getQueuedTuples();
-            failQueuedTuples(failedTuples);
-        }
-    }
-
-    private void failQueuedTuples(List<Tuple> failedTuples) {
-        for (Tuple failedTuple : failedTuples) {
-            collector.fail(failedTuple);
-        }
-    }
-
-    private List<Tuple> getQueuedTuples() {
-        List<Tuple> queuedTuples = toCommitTuples;
-        toCommitTuples = new ArrayList<>(capacity());
-        return queuedTuples;
-    }
-
-    @Override
-    public Map<String, Object> getComponentConfiguration() {
-        if (solrConfig.getTickTupleInterval() > 0) {
-            this.tickTupleInterval = solrConfig.getTickTupleInterval();
-        }
-        return 
TupleUtils.putTickFrequencyIntoComponentConfig(super.getComponentConfiguration(),
 tickTupleInterval);
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) { }
-
-    @Override
-    public void cleanup() {
-        if (solrClient != null) {
-            try {
-                solrClient.close();
-            } catch (IOException e) {
-                LOG.error("Error while closing solrClient", e);
-            }
-        }
-    }
-
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/config/CountBasedCommit.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/config/CountBasedCommit.java
deleted file mode 100644
index 3fdcc89ad..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/config/CountBasedCommit.java
+++ /dev/null
@@ -1,53 +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.storm.solr.config;
-
-/**
- * Class defining a count based commit strategy. When the count reaches the 
commit threshold,
- * SolrInputDocuments are committed to Solr.
- */
-public class CountBasedCommit implements SolrCommitStrategy {
-    private int threshold;
-    private int count;
-
-    /**
-     * Initializes a count based commit strategy with the specified threshold.
-     *
-     * @param threshold  The commit threshold, defining when 
SolrInputDocuments should be committed to Solr
-     * */
-    public CountBasedCommit(int threshold) {
-        if (threshold < 1) {
-            throw new IllegalArgumentException("Threshold must be a positive 
integer: " + threshold);
-        }
-        this.threshold = threshold;
-    }
-
-    @Override
-    public boolean commit() {
-        return count != 0 && count % threshold == 0;
-    }
-
-
-    @Override
-    public void update() {
-        count++;
-    }
-
-    public int getCount() {
-        return count;
-    }
-
-    public int getThreshold() {
-        return threshold;
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/config/SolrCommitStrategy.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/config/SolrCommitStrategy.java
deleted file mode 100644
index c4a8c3b47..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/config/SolrCommitStrategy.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.
- */
-
-package org.apache.storm.solr.config;
-
-import java.io.Serializable;
-
-/**
- * Strategy defining when the Solr Bolt should commit the request to Solr.
- */
-public interface SolrCommitStrategy extends Serializable {
-    boolean commit();
-
-    void update();
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/config/SolrConfig.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/config/SolrConfig.java
deleted file mode 100644
index 8b36bf2dd..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/config/SolrConfig.java
+++ /dev/null
@@ -1,67 +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.storm.solr.config;
-
-import java.io.Serializable;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-
-/**
- * Class containing Solr configuration to be made available to Storm Solr 
bolts. Any configuration needed in
- * the bolts should be put in this class.
- */
-public class SolrConfig implements Serializable {
-    private final String zkHostString;
-    private final int tickTupleInterval;
-    private final boolean enableKerberos;
-
-    /**
-     * Constructor.
-     * @param zkHostString Zookeeper host string as defined in the {@link 
CloudSolrClient} constructor
-     * */
-    public SolrConfig(String zkHostString) {
-        this(zkHostString, 0);
-    }
-
-    /**
-     * Constructor.
-     * @param zkHostString Zookeeper host string as defined in the {@link 
CloudSolrClient} constructor
-     * @param tickTupleInterval interval for tick tuples
-     * */
-    public SolrConfig(String zkHostString, int tickTupleInterval) {
-        this(zkHostString, tickTupleInterval, false);
-    }
-
-    /**
-     * Constructor.
-     * @param zkHostString Zookeeper host string as defined in the {@link 
CloudSolrClient} constructor
-     * @param tickTupleInterval interval for tick tuples
-     * @param enableKerberos true to enable kerberos else false
-     * */
-    public SolrConfig(String zkHostString, int tickTupleInterval, boolean 
enableKerberos) {
-        this.zkHostString = zkHostString;
-        this.tickTupleInterval = tickTupleInterval;
-        this.enableKerberos = enableKerberos;
-    }
-
-    public String getZkHostString() {
-        return zkHostString;
-    }
-
-    public int getTickTupleInterval() {
-        return tickTupleInterval;
-    }
-
-    public boolean isKerberosEnabled() {
-        return enableKerberos;
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrFieldsMapper.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrFieldsMapper.java
deleted file mode 100644
index f8950c037..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrFieldsMapper.java
+++ /dev/null
@@ -1,179 +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.storm.solr.mapper;
-
-import static 
org.apache.storm.solr.schema.SolrFieldTypeFinder.FieldTypeWrapper;
-
-import java.util.LinkedList;
-import java.util.List;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.storm.solr.schema.FieldType;
-import org.apache.storm.solr.schema.Schema;
-import org.apache.storm.solr.schema.SolrFieldTypeFinder;
-import org.apache.storm.solr.schema.builder.SchemaBuilder;
-import org.apache.storm.tuple.ITuple;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SolrFieldsMapper implements SolrMapper {
-    private static final Logger log = 
LoggerFactory.getLogger(SolrFieldsMapper.class);
-    private String collection;
-    private SolrFieldTypeFinder typeFinder;
-    private String multiValueFieldToken;
-
-    private SolrFieldsMapper(Builder builder) {
-        this.collection = builder.collection;
-        this.typeFinder = builder.typeFinder;
-        this.multiValueFieldToken = builder.multiValueFieldToken;
-        log.debug("Created {} with the following configuration: [{}] "
-                  + this.getClass().getSimpleName(), this.toString());
-    }
-
-    @Override
-    public void configure() {
-        typeFinder.initialize();
-    }
-
-    @Override
-    public String getCollection() {
-        return collection;
-    }
-
-    @Override
-    public SolrRequest toSolrRequest(List<? extends ITuple> tuples) throws 
SolrMapperException {
-        List<SolrInputDocument> docs = new LinkedList<>();
-        for (ITuple tuple : tuples) {
-            docs.add(buildDocument(tuple));
-        }
-        UpdateRequest request = new UpdateRequest();
-        request.add(docs);
-        log.debug("Created SolrRequest with content: {}", docs);
-        return request;
-    }
-
-    @Override
-    public SolrRequest toSolrRequest(ITuple tuple) throws SolrMapperException {
-        SolrInputDocument doc = buildDocument(tuple);
-        UpdateRequest request = new UpdateRequest();
-        request.add(doc);
-        log.debug("Created SolrRequest with content: {}", doc);
-        return request;
-    }
-
-    private SolrInputDocument buildDocument(ITuple tuple) {
-        SolrInputDocument doc = new SolrInputDocument();
-
-        for (String tupleField : tuple.getFields()) {
-            FieldTypeWrapper fieldTypeWrapper = 
typeFinder.getFieldTypeWrapper(tupleField);
-            if (fieldTypeWrapper != null) {
-                FieldType fieldType = fieldTypeWrapper.getType();
-                if (fieldType.isMultiValued()) {
-                    addMultivalueFieldToDoc(doc, tupleField, tuple);
-                } else {
-                    addFieldToDoc(doc, tupleField, tuple);
-                }
-            } else {
-                log.debug("Field [{}] does NOT match static or dynamic field 
declared in schema. Not added to document", tupleField);
-            }
-        }
-        return doc;
-    }
-
-    private void addFieldToDoc(SolrInputDocument doc, String tupleField, 
ITuple tuple) {
-        Object val = getValue(tupleField, tuple);
-        log.debug("Adding to document (field, val) = ({}, {})", tupleField, 
val);
-        doc.addField(tupleField, val);
-    }
-
-    private void addMultivalueFieldToDoc(SolrInputDocument doc, String 
tupleField, ITuple tuple) {
-        String[] values = getValues(tupleField, tuple);
-        for (String value : values) {
-            log.debug("Adding {} to multivalue field document {}", value, 
tupleField);
-            doc.addField(tupleField, value);
-        }
-    }
-
-    private Object getValue(String field, ITuple tuple) {
-        return tuple.getValueByField(field);
-    }
-
-    private String[] getValues(String field, ITuple tuple) {
-        String multiValueField = tuple.getStringByField(field);
-        String[] values = multiValueField.split(multiValueFieldToken);
-        return values;
-    }
-
-    @Override
-    public String toString() {
-        return "SolrFieldsMapper{"
-                + "collection='" + collection + '\''
-                + ", typeFinder=" + typeFinder
-                + ", multiValueFieldToken='" + multiValueFieldToken + '\''
-                + '}';
-    }
-
-    public static class Builder {
-        private String collection;
-        private SolrFieldTypeFinder typeFinder;
-        private String multiValueFieldToken = "|";
-
-        /**
-         * {@link SolrFieldsMapper} builder class.
-         * @param schemaBuilder Solr {@link Schema} builder class
-         * @param collection Name of the Solr collection to update using the 
SolrRequest
-         */
-        public Builder(SchemaBuilder schemaBuilder, String collection) {
-            setTypeFinder(schemaBuilder);
-            this.collection = collection;
-        }
-
-        /**
-         * {@link SolrFieldsMapper} builder class.
-         * @param schemaBuilder Solr {@link Schema} builder class
-         * @param solrClient {@link SolrClient} implementation from where to 
extract the default Solr collection, if any defined.
-         */
-        public Builder(SchemaBuilder schemaBuilder, SolrClient solrClient) {
-            setTypeFinder(schemaBuilder);
-        }
-
-        //TODO Handle the case where there may be no schema
-        private void setTypeFinder(SchemaBuilder schemaBuilder) {
-            typeFinder = new SolrFieldTypeFinder(schemaBuilder);
-        }
-
-        // Sets {@link SolrFieldsMapper} to use the default Solr collection if 
there is one defined
-        private void setDefaultCollection(SolrClient solrClient) {
-            String defaultCollection = null;
-            if (solrClient instanceof CloudSolrClient) {
-                defaultCollection = ((CloudSolrClient) 
solrClient).getDefaultCollection();
-            }
-            this.collection = defaultCollection;
-        }
-
-        /**
-         * Sets the token that separates multivalue fields in tuples. The 
default token is |
-         * */
-        public Builder setMultiValueFieldToken(String multiValueFieldToken) {
-            this.multiValueFieldToken = multiValueFieldToken;
-            return this;
-        }
-
-        public SolrFieldsMapper build() {
-            return new SolrFieldsMapper(this);
-        }
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrJsonMapper.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrJsonMapper.java
deleted file mode 100644
index 3141b4b80..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrJsonMapper.java
+++ /dev/null
@@ -1,151 +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.storm.solr.mapper;
-
-import com.google.gson.Gson;
-import java.util.List;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
-import org.apache.solr.common.util.ContentStream;
-import org.apache.solr.common.util.ContentStreamBase;
-import org.apache.storm.tuple.ITuple;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SolrJsonMapper implements SolrMapper {
-    private static final Logger logger = 
LoggerFactory.getLogger(SolrJsonMapper.class);
-    private static final String CONTENT_TYPE = "application/json";
-
-    private final String jsonUpdateUrl;
-    private final String jsonTupleField;
-    private final String collection;
-
-    private SolrJsonMapper(Builder builder) {
-        jsonTupleField = builder.jsonTupleField;
-        collection = builder.collection;
-        jsonUpdateUrl = builder.jsonUpdateUrl;
-    }
-
-    @Override
-    public String getCollection() {
-        return collection;
-    }
-
-    /**
-     * Maps to Solr request.
-     * @throws SolrMapperException if the tuple does not contain the
-     */
-    @Override
-    public SolrRequest toSolrRequest(List<? extends ITuple> tuples) throws 
SolrMapperException {
-        final String jsonList = getJsonFromTuples(tuples);
-        return createtSolrRequest(jsonList);
-    }
-
-    @Override
-    public SolrRequest toSolrRequest(ITuple tuple) throws SolrMapperException {
-        final String json = getJsonFromTuple(tuple);
-        return createtSolrRequest(json);
-    }
-
-    private SolrRequest createtSolrRequest(String json) {
-        final ContentStreamUpdateRequest request = new 
ContentStreamUpdateRequest(jsonUpdateUrl);
-        final ContentStream cs = new ContentStreamBase.StringStream(json, 
CONTENT_TYPE);
-        request.addContentStream(cs);
-        if (logger.isDebugEnabled()) {
-            logger.debug("Request generated with JSON: " + json);
-        }
-        return request;
-    }
-
-    // Builds a JSON list
-    private String getJsonFromTuples(List<? extends ITuple> tuples) throws 
SolrMapperException {
-        final StringBuilder jsonListBuilder = new StringBuilder("[");
-        for (ITuple tuple : tuples) {
-            final String json = getJsonFromTuple(tuple);
-            jsonListBuilder.append(json).append(",");
-        }
-        jsonListBuilder.setCharAt(jsonListBuilder.length() - 1, ']');
-        return jsonListBuilder.toString();
-    }
-
-    private String getJsonFromTuple(ITuple tuple) throws SolrMapperException {
-        String json = "";
-        if (tuple.contains(jsonTupleField)) {
-            json = doGetJson(tuple.getValueByField(jsonTupleField));
-        } else {
-            throw new SolrMapperException("Tuple does not contain JSON 
object");
-        }
-        return json;
-    }
-
-    private String doGetJson(Object value) {
-        String json = "";
-        if (value instanceof String) {
-            json = (String) value;          // Object associated with JSON 
field is already JSON
-        } else {
-            Gson gson = new Gson();
-            json = gson.toJson(value);      // Serializes a Java object to JSON
-        }
-        return json;
-    }
-
-    public static class Builder {
-        private final String jsonTupleField;
-        private final String collection;
-        private String jsonUpdateUrl = "/update/json/docs";
-
-        /**
-         * {@link SolrJsonMapper} builder class.
-         * @param collection Name of the Solr collection to update using the 
SolrRequest
-         * @param jsonTupleField Name of the tuple field that contains the 
JSON object used to update the Solr index
-         */
-        public Builder(String collection, String jsonTupleField) {
-            this.collection = collection;
-            this.jsonTupleField = jsonTupleField;
-        }
-
-        /**
-         * {@link SolrJsonMapper} builder class.
-         * @param solrClient {@link SolrClient} implementation from where to 
extract the default Solr collection, if any defined.
-         * @param jsonTupleField Name of the tuple field that contains the 
JSON object used to update the Solr index
-         */
-        public Builder(SolrClient solrClient, String jsonTupleField) {
-            String defaultCollection = null;
-            if (solrClient instanceof CloudSolrClient) {
-                defaultCollection = ((CloudSolrClient) 
solrClient).getDefaultCollection();
-            }
-            this.collection = defaultCollection;
-            this.jsonTupleField = jsonTupleField;
-        }
-
-        /**
-         * Sets the URL endpoint where to send {@link SolrRequest} requests in 
JSON format. This URL is defined
-         * by Solr and for the most part you will not have to call this method 
to to override this value.
-         * Currently the default value is /update/json/docs.
-         * This method is available to support future evolutions of the Solr 
API.
-         *
-         * @param jsonUpdateUrl URL endpoint to where send {@link SolrRequest}
-         * @return {@link Builder object} used to build instances of {@link 
SolrJsonMapper}
-         */
-        public Builder setJsonUpdateUrl(String jsonUpdateUrl) {
-            this.jsonUpdateUrl = jsonUpdateUrl;
-            return this;
-        }
-
-        public SolrJsonMapper build() {
-            return new SolrJsonMapper(this);
-        }
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrMapper.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrMapper.java
deleted file mode 100644
index 1a083a2aa..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrMapper.java
+++ /dev/null
@@ -1,28 +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.storm.solr.mapper;
-
-import java.io.Serializable;
-import java.util.List;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.storm.tuple.ITuple;
-
-public interface SolrMapper extends Serializable {
-    default void configure() {}
-
-    String getCollection();
-
-    SolrRequest toSolrRequest(ITuple tuple) throws SolrMapperException;
-
-    SolrRequest toSolrRequest(List<? extends ITuple> tuples) throws 
SolrMapperException;
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrMapperException.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrMapperException.java
deleted file mode 100644
index be3a82a9b..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/mapper/SolrMapperException.java
+++ /dev/null
@@ -1,18 +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.storm.solr.mapper;
-
-public class SolrMapperException extends Exception {
-    public SolrMapperException(String msg) {
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/CopyField.java 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/CopyField.java
deleted file mode 100644
index 1ecffe643..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/CopyField.java
+++ /dev/null
@@ -1,44 +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.storm.solr.schema;
-
-import java.io.Serializable;
-
-public class CopyField implements Serializable {
-    private String source;
-    private String dest;
-
-    public String getSource() {
-        return source;
-    }
-
-    public void setSource(String source) {
-        this.source = source;
-    }
-
-    public String getDest() {
-        return dest;
-    }
-
-    public void setDest(String dest) {
-        this.dest = dest;
-    }
-
-    @Override
-    public String toString() {
-        return "CopyField{"
-                + "source='" + source + '\''
-                + ", dest='" + dest + '\''
-                + '}';
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/Field.java 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/Field.java
deleted file mode 100644
index dffca2afa..000000000
--- a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/Field.java
+++ /dev/null
@@ -1,44 +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.storm.solr.schema;
-
-import java.io.Serializable;
-
-public class Field implements Serializable {
-    private String name;
-    private String type;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return "Field{"
-                + "name='" + name + '\''
-                + ", type='" + type + '\''
-                + '}';
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/FieldType.java 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/FieldType.java
deleted file mode 100644
index 94282b437..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/FieldType.java
+++ /dev/null
@@ -1,56 +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.storm.solr.schema;
-
-import com.google.gson.annotations.SerializedName;
-import java.io.Serializable;
-
-public class FieldType implements Serializable {
-    private String name;
-    @SerializedName("class")
-    private String clazz;
-    private boolean multiValued;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getClazz() {
-        return clazz;
-    }
-
-    public void setClazz(String clazz) {
-        this.clazz = clazz;
-    }
-
-    public boolean isMultiValued() {
-        return multiValued;
-    }
-
-    public void setMultiValued(boolean multiValued) {
-        this.multiValued = multiValued;
-    }
-
-    @Override
-    public String toString() {
-        return "FieldType{"
-                + "name='" + name + '\''
-                + ", clazz='" + clazz + '\''
-                + ", multiValued=" + multiValued
-                + '}';
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/Schema.java 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/Schema.java
deleted file mode 100644
index c32549b54..000000000
--- a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/Schema.java
+++ /dev/null
@@ -1,110 +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.storm.solr.schema;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Class representing the SolrSchema as returned by the REST call to the URL 
of the form
- * http://localhost:8983/solr/gettingstarted/schema. This particular URL 
returns the schema in JSON format for the
- * <a href="http://lucene.apache.org/solr/quickstart.html";>Solr quickstart</a> 
example running locally.
- */
-public class Schema implements Serializable {
-    private String name;
-    private String version;
-    private String uniqueKey;
-    private List<FieldType> fieldTypes;
-    private List<Field> fields;
-    private List<Field> dynamicFields;
-    private List<CopyField> copyFields;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public void setVersion(String version) {
-        this.version = version;
-    }
-
-    public String getUniqueKey() {
-        return uniqueKey;
-    }
-
-    public void setUniqueKey(String uniqueKey) {
-        this.uniqueKey = uniqueKey;
-    }
-
-    public List<FieldType> getFieldTypes() {
-        return Collections.unmodifiableList(fieldTypes);
-    }
-
-    public void setFieldTypes(List<FieldType> fieldTypes) {
-        this.fieldTypes = fieldTypes;
-    }
-
-    public List<Field> getFields() {
-        return Collections.unmodifiableList(fields);
-    }
-
-    public void setFields(List<Field> fields) {
-        this.fields = fields;
-    }
-
-    public List<Field> getDynamicFields() {
-        return Collections.unmodifiableList(dynamicFields);
-    }
-
-    public void setDynamicFields(List<Field> dynamicFields) {
-        this.dynamicFields = dynamicFields;
-    }
-
-    public List<CopyField> getCopyFields() {
-        return Collections.unmodifiableList(copyFields);
-    }
-
-    public void setCopyFields(List<CopyField> copyFields) {
-        this.copyFields = copyFields;
-    }
-
-    @Override
-    public String toString() {
-        return "Schema{"
-                + "name='" + name + '\''
-                + ", version='" + version + '\''
-                + ", uniqueKey='" + uniqueKey + '\''
-                + ", fieldTypes=" + fieldTypes
-                + ", fields=" + fields
-                + ", dynamicFields=" + dynamicFields
-                + ", copyFields=" + copyFields
-                + '}';
-    }
-
-    // Wrapper class handy for the client code to use the JSON parser to build 
to use with JSON parser
-    public static class SchemaWrapper implements Serializable {
-        Schema schema;
-
-        public Schema getSchema() {
-            return schema;
-        }
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/SolrFieldTypeFinder.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/SolrFieldTypeFinder.java
deleted file mode 100644
index 1e8f547de..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/SolrFieldTypeFinder.java
+++ /dev/null
@@ -1,187 +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.storm.solr.schema;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-import org.apache.storm.solr.schema.builder.SchemaBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Class containing all the information relating fields with their types. This 
information is wrapped in the class
- * {@link FieldTypeWrapper}
- */
-public class SolrFieldTypeFinder implements Serializable {
-    private static final Logger log = 
LoggerFactory.getLogger(SolrFieldTypeFinder.class);
-    private SchemaBuilder schemaBuilder;
-    private Schema schema;
-    private Map<String, FieldTypeWrapper> fieldToWrapper;
-
-    /**
-     * Initiates class containing all the information relating fields with 
their types.
-     * This information is parsed from the schema
-     * @param schemaBuilder schemaBuilder to build the information about 
fields and types
-     * */
-    public SolrFieldTypeFinder(SchemaBuilder schemaBuilder) {
-        this.schemaBuilder = schemaBuilder;
-    }
-
-    public void initialize() {
-        if (schemaBuilder == null) {
-            throw new IllegalStateException("schemaBuilder object is null");
-        }
-        try {
-            schemaBuilder.buildSchema();
-        } catch (IOException e) {
-            throw new IllegalStateException("Error while building schema");
-        }
-        this.schema = schemaBuilder.getSchema();
-        this.fieldToWrapper = new HashMap<>();
-        buildMap();
-    }
-
-    private void buildMap() {
-        final List<FieldType> fieldTypes = schema.getFieldTypes();
-        // static fields
-        buildMapForFields(fieldTypes, schema.getFields());
-        // dynamic fields
-        buildMapForFields(fieldTypes, schema.getDynamicFields());
-        if (log.isDebugEnabled()) {
-            log.debug("Completed building FieldType Map: " + fieldToWrapper);
-        }
-    }
-
-    private void buildMapForFields(List<FieldType> fieldTypes, List<Field> 
fields) {
-        for (Field field : fields) {
-            String type = field.getType();
-            int idx = indexOf(fieldTypes, type);    // idx - index of the type 
of this field in the FieldType list
-            if (idx != -1) {
-                fieldToWrapper.put(field.getName(), new 
FieldTypeWrapper(field, fieldTypes.get(idx)));
-            }
-        }
-    }
-
-    private int indexOf(List<FieldType> fieldTypes, String type) {
-        int i = 0;
-        for (FieldType fieldType : fieldTypes) {
-            if (fieldType.getName().equals(type)) {
-                return i;
-            }
-            i++;
-        }
-        return -1;
-    }
-
-    /**
-     * Finds the schema defined field that matches the input parameter, if 
any. It can be a dynamic field, in
-     * which case it will return the pattern of the dynamic field that matches 
the input parameter.
-     * @param fieldName The name of the field to get info for
-     * @return The {@link FieldTypeWrapper} that matches the input parameter, 
or null if none found
-     * */
-    public FieldTypeWrapper getFieldTypeWrapper(String fieldName) {
-        FieldTypeWrapper typeWrapper = fieldToWrapper.get(fieldName);
-        // => field name does not match static field, test if it matches 
dynamic field
-        if (typeWrapper == null) {
-            for (String pattern : fieldToWrapper.keySet()) {
-                if (matchesDynamicField(fieldName, pattern)) {
-                    typeWrapper = fieldToWrapper.get(pattern);
-                }
-            }
-        }
-        log.debug("Solr Field Name = {}, Solr Type = {}", fieldName, 
typeWrapper);
-        return typeWrapper;
-    }
-
-    public Set<String> getAllSolrFieldTypes() {
-        Collection<FieldTypeWrapper> typeWrappers = fieldToWrapper.values();
-        Set<String> fieldTypeClasses = new TreeSet<>();
-        for (FieldTypeWrapper typeWrapper : typeWrappers) {
-            fieldTypeClasses.add(typeWrapper.getType().getClazz());
-        }
-        log.debug("Field type classes present in schema: {}", 
fieldTypeClasses);
-        return fieldTypeClasses;
-    }
-
-    public boolean matchesField(String fieldName) {
-        return fieldToWrapper.containsKey(fieldName);
-    }
-
-    public boolean matchesDynamicField(String fieldName) {
-        for (String pattern : fieldToWrapper.keySet()) {
-            if (matchesDynamicField(fieldName, pattern)) {
-                return true;
-            }
-        }
-        if (log.isDebugEnabled()) {
-            log.debug("Field [{}] did NOT match any dynamic field present in 
{}", fieldName, fieldToWrapper.keySet());
-        }
-        return false;
-    }
-
-    public boolean matchesDynamicField(String fieldName, String pattern) {
-        if (pattern == null) {
-            throw new IllegalArgumentException("pattern and fieldName 
arguments cannot be null");
-        }
-        if (pattern.startsWith("*")) {
-            if (fieldName.endsWith(pattern.substring(1))) {
-                log.debug("Field [{}] MATCHES dynamic field {}", fieldName, 
pattern);
-                return true;
-            }
-        } else if (pattern.endsWith("*")) {
-            if (fieldName.startsWith(pattern.substring(0, pattern.length() - 
1))) {
-                log.debug("Field [{}] MATCHES dynamic field {}", fieldName, 
pattern);
-                return true;
-            }
-        }
-        if (log.isDebugEnabled()) {
-            log.debug("Field [{}] did NOT match any dynamic field present in 
{}", fieldName, fieldToWrapper.keySet());
-        }
-        return false;
-    }
-
-    /**
-     * Class wrapping all the information for fields and types.
-     * */
-    public static class FieldTypeWrapper implements Serializable {
-        Field field;
-        FieldType type;
-
-        public FieldTypeWrapper(Field field, FieldType type) {
-            this.field = field;
-            this.type = type;
-        }
-
-        public Field getField() {
-            return field;
-        }
-
-        public FieldType getType() {
-            return type;
-        }
-
-        @Override
-        public String toString() {
-            return "FieldTypeWrapper{"
-                    + "field=" + field
-                    + ", type=" + type
-                    + '}';
-        }
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/RestJsonSchemaBuilder.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/RestJsonSchemaBuilder.java
deleted file mode 100644
index 072775c18..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/RestJsonSchemaBuilder.java
+++ /dev/null
@@ -1,70 +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.storm.solr.schema.builder;
-
-import com.google.gson.Gson;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Scanner;
-import org.apache.storm.solr.schema.Schema;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Class that builds the {@link Schema} object from the JSON representation of 
the schema as returned by the
- * URL of the form http://localhost:8983/solr/gettingstarted/schema/ . This 
particular URL returns the schema
- * in JSON format for the gettingstarted example running locally.
- * @deprecated Use RestJsonSchemaBuilder2 instead, as this doesn't support 
Kerberos authentication
- */
-@Deprecated
-public class RestJsonSchemaBuilder implements SchemaBuilder {
-    private static final Logger logger = 
LoggerFactory.getLogger(RestJsonSchemaBuilder.class);
-    private Schema schema;
-
-
-    /**
-     * Urls with the form http://localhost:8983/solr/gettingstarted/schema/ 
returns the schema in JSON format.
-     */
-    public RestJsonSchemaBuilder(String solrHost, String solrPort, String 
collection) throws IOException {
-        this(new URL("http://"; + solrHost + ":" + solrPort + "/solr/" + 
collection + "/schema/"));
-    }
-
-    public RestJsonSchemaBuilder(String url) throws IOException {
-        this(new URL(url));
-    }
-
-    public RestJsonSchemaBuilder(URL url) throws IOException {
-        downloadSchema(url);
-    }
-
-    private void downloadSchema(URL url) throws IOException {
-        String result;
-        logger.debug("Downloading Solr schema info from: " + url);
-        Scanner scanner = new Scanner(url.openStream());
-        result = scanner.useDelimiter("\\Z").next();
-        logger.debug("JSON Schema: " + result);
-
-        Gson gson = new Gson();
-        Schema.SchemaWrapper schemaWrapper = gson.fromJson(result, 
Schema.SchemaWrapper.class);
-        this.schema = schemaWrapper.getSchema();
-    }
-
-    @Override
-    public void buildSchema() throws IOException {
-    }
-
-    @Override
-    public Schema getSchema() {
-        return schema;
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/RestJsonSchemaBuilderV2.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/RestJsonSchemaBuilderV2.java
deleted file mode 100644
index ac5f95024..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/RestJsonSchemaBuilderV2.java
+++ /dev/null
@@ -1,117 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.storm.solr.schema.builder;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.request.schema.FieldTypeDefinition;
-import org.apache.solr.client.solrj.request.schema.SchemaRequest;
-import org.apache.solr.client.solrj.response.schema.SchemaRepresentation;
-import org.apache.solr.client.solrj.response.schema.SchemaResponse;
-import org.apache.storm.solr.config.SolrConfig;
-import org.apache.storm.solr.schema.CopyField;
-import org.apache.storm.solr.schema.Field;
-import org.apache.storm.solr.schema.FieldType;
-import org.apache.storm.solr.schema.Schema;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Class that builds the {@link Schema} object from the schema returned by the 
SchemaRequest.
- */
-public class RestJsonSchemaBuilderV2 implements SchemaBuilder {
-    private static final Logger logger = 
LoggerFactory.getLogger(RestJsonSchemaBuilderV2.class);
-    private Schema schema = new Schema();
-    private SolrConfig solrConfig;
-    private String collection;
-
-    public RestJsonSchemaBuilderV2(SolrConfig solrConfig, String collection) {
-        this.solrConfig = solrConfig;
-        this.collection = collection;
-    }
-
-    @Override
-    public void buildSchema() throws IOException {
-        SolrClient solrClient = null;
-        try {
-            solrClient = new CloudSolrClient(solrConfig.getZkHostString());
-            SchemaRequest schemaRequest = new SchemaRequest();
-            logger.debug("Downloading schema for collection: {}", collection);
-            SchemaResponse schemaResponse = schemaRequest.process(solrClient, 
collection);
-            logger.debug("SchemaResponse Schema: {}", schemaResponse);
-            SchemaRepresentation schemaRepresentation = 
schemaResponse.getSchemaRepresentation();
-
-            schema.setName(schemaRepresentation.getName());
-            
schema.setVersion(Float.toString(schemaRepresentation.getVersion()));
-            schema.setUniqueKey(schemaRepresentation.getUniqueKey());
-            schema.setFieldTypes(getFieldTypes(schemaRepresentation));
-            schema.setFields(getFields(schemaRepresentation.getFields()));
-            
schema.setDynamicFields(getFields(schemaRepresentation.getDynamicFields()));
-            schema.setCopyFields(getCopyFields(schemaRepresentation));
-        } catch (SolrServerException e) {
-            logger.error("Error while getting schema for collection: {}", 
collection, e);
-            throw new IOException("Error while getting schema for collection 
:" + collection, e);
-        } finally {
-            if (solrClient != null) {
-                solrClient.close();
-            }
-        }
-    }
-
-    private List<FieldType> getFieldTypes(SchemaRepresentation 
schemaRepresentation) {
-        List<FieldType> fieldTypes = new LinkedList<>();
-        for (FieldTypeDefinition fd : schemaRepresentation.getFieldTypes()) {
-            FieldType ft = new FieldType();
-            ft.setName((String) fd.getAttributes().get("name"));
-            ft.setClazz((String) fd.getAttributes().get("class"));
-            Object multiValued = fd.getAttributes().get("multiValued");
-            if (multiValued != null) {
-                ft.setMultiValued((Boolean) multiValued);
-            }
-            fieldTypes.add(ft);
-        }
-        return fieldTypes;
-    }
-
-    private List<Field> getFields(List<Map<String, Object>> schemaFields) {
-        List<Field> fields = new LinkedList<>();
-        for (Map<String, Object> map : schemaFields) {
-            Field field = new Field();
-            field.setName((String) map.get("name"));
-            field.setType((String) map.get("type"));
-            fields.add(field);
-        }
-        return fields;
-    }
-
-    private List<CopyField> getCopyFields(SchemaRepresentation 
schemaRepresentation) {
-        List<CopyField> copyFields = new LinkedList<>();
-        for (Map<String, Object> map : schemaRepresentation.getCopyFields()) {
-            CopyField cp = new CopyField();
-            cp.setSource((String) map.get("source"));
-            cp.setDest((String) map.get("dest"));
-            copyFields.add(cp);
-        }
-        return copyFields;
-    }
-
-    @Override
-    public Schema getSchema() {
-        return schema;
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/SchemaBuilder.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/SchemaBuilder.java
deleted file mode 100644
index 3f77e3d65..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/schema/builder/SchemaBuilder.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.
- */
-
-package org.apache.storm.solr.schema.builder;
-
-import java.io.IOException;
-import java.io.Serializable;
-import org.apache.storm.solr.schema.Schema;
-
-public interface SchemaBuilder extends Serializable {
-    void buildSchema() throws IOException;
-
-    Schema getSchema();
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrState.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrState.java
deleted file mode 100644
index 46fafffd2..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrState.java
+++ /dev/null
@@ -1,66 +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.storm.solr.trident;
-
-import java.util.List;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
-import org.apache.solr.client.solrj.impl.Krb5HttpClientConfigurer;
-import org.apache.storm.solr.config.SolrConfig;
-import org.apache.storm.solr.mapper.SolrMapper;
-import org.apache.storm.topology.FailedException;
-import org.apache.storm.trident.state.State;
-import org.apache.storm.trident.tuple.TridentTuple;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SolrState implements State {
-    private static final Logger logger = 
LoggerFactory.getLogger(SolrState.class);
-
-    private final SolrConfig solrConfig;
-    private final SolrMapper solrMapper;
-    private SolrClient solrClient;
-
-    public SolrState(SolrConfig solrConfig, SolrMapper solrMapper) {
-        this.solrConfig = solrConfig;
-        this.solrMapper = solrMapper;
-    }
-
-    protected void prepare() {
-        if (solrConfig.isKerberosEnabled()) {
-            HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
-        }
-        solrMapper.configure();
-        solrClient = new CloudSolrClient(solrConfig.getZkHostString());
-    }
-
-    @Override
-    public void beginCommit(Long someLong) { }
-
-    @Override
-    public void commit(Long someLong) { }
-
-    public void updateState(List<TridentTuple> tuples) {
-        try {
-            SolrRequest solrRequest = solrMapper.toSolrRequest(tuples);
-            solrClient.request(solrRequest, solrMapper.getCollection());
-            solrClient.commit(solrMapper.getCollection());
-        } catch (Exception e) {
-            final String msg = String.format("%s", tuples);
-            logger.warn(msg);
-            throw new FailedException(msg, e);
-        }
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrStateFactory.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrStateFactory.java
deleted file mode 100644
index 8582bca4a..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrStateFactory.java
+++ /dev/null
@@ -1,37 +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.storm.solr.trident;
-
-import java.util.Map;
-import org.apache.storm.solr.config.SolrConfig;
-import org.apache.storm.solr.mapper.SolrMapper;
-import org.apache.storm.task.IMetricsContext;
-import org.apache.storm.trident.state.State;
-import org.apache.storm.trident.state.StateFactory;
-
-public class SolrStateFactory implements StateFactory {
-    private final SolrConfig solrConfig;
-    private final SolrMapper solrMapper;
-
-    public SolrStateFactory(SolrConfig solrConfig, SolrMapper solrMapper) {
-        this.solrConfig = solrConfig;
-        this.solrMapper = solrMapper;
-    }
-
-    @Override
-    public State makeState(Map<String, Object> map, IMetricsContext 
metricsContext, int partitionIndex, int numPartitions) {
-        SolrState state = new SolrState(solrConfig, solrMapper);
-        state.prepare();
-        return state;
-    }
-}
diff --git 
a/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrUpdater.java
 
b/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrUpdater.java
deleted file mode 100644
index 4e3cecc72..000000000
--- 
a/external/storm-solr/src/main/java/org/apache/storm/solr/trident/SolrUpdater.java
+++ /dev/null
@@ -1,26 +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.storm.solr.trident;
-
-import java.util.List;
-import org.apache.storm.trident.operation.TridentCollector;
-import org.apache.storm.trident.state.BaseStateUpdater;
-import org.apache.storm.trident.tuple.TridentTuple;
-
-public class SolrUpdater extends BaseStateUpdater<SolrState> {
-
-    @Override
-    public void updateState(SolrState solrState, List<TridentTuple> tuples, 
TridentCollector collector) {
-        solrState.updateState(tuples);
-    }
-}
diff --git a/pom.xml b/pom.xml
index efedc0ed1..3b3d2d31c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -493,7 +493,6 @@
                 <module>external/storm-jdbc</module>
                 <module>external/storm-redis</module>
                 <module>external/storm-elasticsearch</module>
-                <module>external/storm-solr</module>
                 <module>external/storm-metrics</module>
                 <module>external/storm-kafka-client</module>
                 <module>external/storm-kafka-migration</module>
@@ -516,7 +515,6 @@
                 <module>examples/storm-starter</module>
                 <module>examples/storm-loadgen</module>
                 <module>examples/storm-redis-examples</module>
-                <module>examples/storm-solr-examples</module>
                 <module>examples/storm-kafka-client-examples</module>
                 <module>examples/storm-jdbc-examples</module>
                 <module>examples/storm-hdfs-examples</module>

Reply via email to