Skip to content

Commit

Permalink
No whitespace allowed in resouce/types
Browse files Browse the repository at this point in the history
relates elastic#730
  • Loading branch information
costin committed Apr 4, 2016
1 parent 2c0c860 commit 5e6cff4
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 10 deletions.
3 changes: 2 additions & 1 deletion mr/src/main/java/org/elasticsearch/hadoop/rest/Resource.java
Expand Up @@ -78,7 +78,8 @@ public Resource(Settings settings, boolean read) {
Assert.hasText(type, "No type found; expecting [index]/[type]");
}
Assert.hasText(index, "No index found; expecting [index]/[type]");

Assert.isTrue(!StringUtils.hasWhitespace(index) && !StringUtils.hasWhitespace(type), "Index and type should not contain whitespaces");

indexAndType = index + "/" + type;

// check bulk
Expand Down
13 changes: 13 additions & 0 deletions mr/src/main/java/org/elasticsearch/hadoop/util/StringUtils.java
Expand Up @@ -92,6 +92,19 @@ public static boolean hasText(CharSequence sequence) {
return false;
}

public static boolean hasWhitespace(CharSequence sequence) {
if (!hasLength(sequence)) {
return false;
}
int length = sequence.length();
for (int i = 0; i < length; i++) {
if (Character.isWhitespace(sequence.charAt(i))) {
return true;
}
}
return false;
}

public static int countOccurrences(String string, String substring) {
if (string == null || substring == null || string.length() == 0 || substring.length() == 0) {
return 0;
Expand Down
Expand Up @@ -86,6 +86,11 @@ public void testLowercaseNotAllowedIfTemplateIsInvalidAgain() throws Exception {
createResource("foo}F{/bar");
}

@Test(expected = EsHadoopIllegalArgumentException.class)
public void testNoWhitespaceAllowed() throws Exception {
createResource("foo, bar/far");
}

private Resource createResource(String target) {
Settings s = new TestSettings();
s.setProperty(ConfigurationOptions.ES_RESOURCE, target);
Expand Down
Expand Up @@ -19,21 +19,16 @@
package org.elasticsearch.spark.integration;

import java.awt.Polygon
import java.{lang => jl}
import java.{util => ju}
import java.{ lang => jl }
import java.{ util => ju }
import java.util.concurrent.TimeUnit

import scala.collection.JavaConverters._
import scala.collection.JavaConversions.propertiesAsScalaMap
import scala.collection.JavaConverters.asScalaBufferConverter
import scala.collection.JavaConverters.mapAsJavaMapConverter


import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkException
import org.elasticsearch.hadoop.cfg.ConfigurationOptions._
import org.elasticsearch.hadoop.cfg.ConfigurationOptions
import org.elasticsearch.hadoop.cfg.ConfigurationOptions.ES_INDEX_READ_MISSING_AS_EMPTY
import org.elasticsearch.hadoop.cfg.ConfigurationOptions.ES_INPUT_JSON
import org.elasticsearch.hadoop.cfg.ConfigurationOptions.ES_MAPPING_EXCLUDE
import org.elasticsearch.hadoop.cfg.ConfigurationOptions.ES_MAPPING_ID
Expand All @@ -43,14 +38,14 @@ import org.elasticsearch.hadoop.cfg.ConfigurationOptions.ES_RESOURCE
import org.elasticsearch.hadoop.mr.RestUtils
import org.elasticsearch.hadoop.util.TestSettings
import org.elasticsearch.hadoop.util.TestUtils
import org.elasticsearch.spark._
import org.elasticsearch.spark.rdd.EsSpark
import org.elasticsearch.spark.rdd.Metadata.ID
import org.elasticsearch.spark.rdd.Metadata.TTL
import org.elasticsearch.spark.rdd.Metadata.VERSION
import org.elasticsearch.spark.serialization.Bean
import org.elasticsearch.spark.serialization.ReflectionUtils
import org.elasticsearch.spark.sparkByteArrayJsonRDDFunctions
import org.elasticsearch.spark.sparkContextFunctions
import org.elasticsearch.spark.sparkPairRDDFunctions
import org.elasticsearch.spark.sparkRDDFunctions
import org.elasticsearch.spark.sparkStringJsonRDDFunctions
Expand Down Expand Up @@ -399,7 +394,14 @@ class AbstractScalaEsScalaSpark(prefix: String, readMetadata: jl.Boolean) extend
val scRDD = sc.esRDD(target, qjson)
assertEquals(esRDD.collect().size, scRDD.collect().size)
}


@Test
def testMultiIndexNonExisting() {
val rdd = EsSpark.esJsonRDD(sc, "bumpA,Stump", Map(ES_INDEX_READ_MISSING_AS_EMPTY -> "yes"))
assertEquals(0, rdd.count)
}

//@Test
def testLoadJsonFile() {
val target = "lost/id"
Expand Down

0 comments on commit 5e6cff4

Please sign in to comment.