diff --git a/data/cleaned_emails.csv b/data/cleaned_emails.csv index a25e852..4dcf20b 100644 --- a/data/cleaned_emails.csv +++ b/data/cleaned_emails.csv @@ -1,34 +1,34 @@ ,Unnamed: 0,Unnamed: 0.1,Email_ID,Unnamed: 0.1.1,author,content,content_url,date,dtype,id,subject -0,0,0,1.0,221.0,lburgazz...@apache.org,"repository camel updated branch ref /heads/master 55a61ed20 d72696455 headerselectorproducer support supplier header key default value project commit tree diff branch ref /heads/master commit d7269645508cfd36b716547dab2f2da3ebe364ae parent 55a61ed author lburgazzoli authored fri apr committer lburgazzoli committed fri apr .../java/org/apache/camel/impl/headerselectorproducer.java file changed insertion deletion diff --git /camel-core/src/main/java/org/apache/camel/impl/headerselectorproducer.java b /camel-core/src/main/java/org/apache/camel/impl/headerselectorproducer.java index f91f032 ..7d4b11e /camel-core/src/main/java/org/apache/camel/impl/headerselectorproducer.java b /camel-core/src/main/java/org/apache/camel/impl/headerselectorproducer.java public class headerselectorproducer extends baseselectorproducer public headerselectorproducer (endpoint endpoint supplier headersupplier (endpoint, headersupplier null null public headerselectorproducer (endpoint endpoint string header (endpoint, header null null public class headerselectorproducer extends baseselectorproducer (endpoint, header defaultheadervalue null public headerselectorproducer (endpoint endpoint string header supplier defaultheadervaluesupplier (endpoint, header defaultheadervaluesupplier null public headerselectorproducer (endpoint endpoint supplier headersupplier supplier defaultheadervaluesupplier (endpoint, headersupplier defaultheadervaluesupplier null public class headerselectorproducer extends baseselectorproducer @override protected processor getprocessor (exchange exchange throw exception string header headersupplier .get(); string action exchange .getin().getheader(headersupplier.get(), string .class); string action exchange .getin().getheader(header, string .class); (action null action defaultheadervaluesupplier .get();",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C9d2d740f77794180b53412948340828f%40git.apache.org%3E,2017-04-14 10:42:39,commits,221.0,camel git commit headerselectorproducer support supplier header key default value -1,1,1,2.0,322.0,davscl...@apache.org,repository camel updated branch ref /heads/master d72696455 6b42a3534 rename catalog runtimecatalog avoid clash package name camel -catalog. project commit tree diff branch ref /heads/master commit 6b42a3534120f58180e6194e6bf4f1a284707abc parent c66be7a author claus ibsen authored fri apr committer claus ibsen committed fri apr platform /camel-catalog/pom.xml file changed insertion deletion diff --git /platforms/camel-catalog/pom.xml b /platforms/camel-catalog/pom.xml index 2be82e0 ..6c71fcb /platforms/camel-catalog/pom.xml b /platforms/camel-catalog/pom.xml copy-resources process-sources generate-sources copy-resources true ../../camel-core/src/main/java/org/apache/camel/catalog ../../camel-core/src/main/java/org/apache/camel/runtimecatalog following file maintained camel -core copied abstractcamelcatalog.java rename runtimecatalog catalog package name use com.google.code.maven-replacer-plugin replacer 1.5.3 process-sources replace ${basedir}/src/main/java/org/apache/camel/catalog/abstractcamelcatalog.java ${basedir}/src/main/java/org/apache/camel/catalog/cataloghelper.java ${basedir}/src/main/java/org/apache/camel/catalog/collectionstringbuffer.java ${basedir}/src/main/java/org/apache/camel/catalog/endpointvalidationresult.java ${basedir}/src/main/java/org/apache/camel/catalog/jsonschemahelper.java ${basedir}/src/main/java/org/apache/camel/catalog/jsonschemaresolver.java ${basedir}/src/main/java/org/apache/camel/catalog/languagevalidationresult.java ${basedir}/src/main/java/org/apache/camel/catalog/simplevalidationresult.java ${basedir}/src/main/java/org/apache/camel/catalog/suggestionstrategy.java ${basedir}/src/main/java/org/apache/camel/catalog/timepatternconverter.java ${basedir}/src/main/java/org/apache/camel/catalog/unsafeuricharactersencoder.java ${basedir}/src/main/java/org/apache/camel/catalog/urisupport.java org.apache.camel.runtimecatalog org.apache.camel.catalog generate include component catalog ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Cde5de0a2e2ca40e6bcaa03835723a40e%40git.apache.org%3E,2017-04-14 10:52:55,commits,322.0,camel git commit rename catalog runtimecatalog avoid clash package name camel -catalog. -2,2,2,3.0,323.0,davscl...@apache.org,"diff --git /camel-core/src/test/java/org/apache/camel/runtimecatalog/abstractcamelcatalogtest.java b /camel-core/src/test/java/org/apache/camel/runtimecatalog/abstractcamelcatalogtest.java new file mode index ..309fb8e /dev/null b /camel-core/src/test/java/org/apache/camel/runtimecatalog/abstractcamelcatalogtest.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .net.urisyntaxexception; +import java .util.hashmap; +import java .util.map; +import org .junit.before; +import org .junit.test; +import static org .easymock.easymock.expect; +import static org .easymock.easymock.mock; +import static org .easymock.easymock.replay; +import static org .junit.assert.assertequals; +public class abstractcamelcatalogtest abstractcamelcatalog catalog new abstractcamelcatalog jsonschemaresolver resolver @before public void setupmockcatalog resolver mock (jsonschemaresolver.class); catalog .setjsonschemaresolver(resolver); @test public void shouldconstructendpointuris throw urisyntaxexception expect (resolver.getcomponentjsonschema(""comp"")).andreturn(""{\n""// \""component\"": {\n""// \""syntax\"": \""comp:param1:param2\""\n""// }\n""// replay (resolver); final map component, componentproperties, properties. @param json json @return list row row set key value pair metadata public static list getnames (list answer new linkedhashset (); (map example using http component provide query parameter endpoint uri @param uri endpoint uri @return property key value pair lenient property map true valid false invalid boolean validatetimepattern (string pattern validates property given scheme component endpoint @param scheme endpoint scheme @param property endpoint property @return validation result endpointvalidationresult validateproperties (string scheme map option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties par validates endpoint uri construct key /value property option

option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @param consumeronly whether endpoint used consumer @param produceronly whether endpoint used producer @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties boolean consumeronly boolean produceronly par validates simple expression

important: requires camel-core classpath @param simple simple expression @return validation result @deprecated use {@link #validatesimpleexpression(classloader, string @deprecated simplevalidationresult validatesimpleexpression (string simple par validates simple expression

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple expression @return validation result simplevalidationresult validatesimpleexpression (classloader classloader string simple par validates simple predicate

important: requires camel-core classpath @param simple simple predicate @return validation result @deprecated use {@link #validatesimplepredicate(classloader, string @deprecated simplevalidationresult validatesimplepredicate (string simple par validates simple predicate

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple predicate @return validation result simplevalidationresult validatesimplepredicate (classloader classloader string simple par validates language predicate

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text predicate text @return validation result languagevalidationresult validatelanguagepredicate (classloader classloader string language string text par validates language expression

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text expression text @return validation result languagevalidationresult validatelanguageexpression (classloader classloader string language string text return component name given endpoint uri @param uri endpoint uri @return component name (aka scheme null possible determine string endpointcomponentname (string uri creates endpoint uri java style information property @param scheme endpoint schema @param property property key value pair @param encode whether url encode returned uri @return constructed endpoint uri @throws java .net.urisyntaxexception thrown encoding error string asendpointuri (string scheme map name string unknownoption diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/timepatternconverter.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/timepatternconverter.java new file mode index ..ed5585c /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/timepatternconverter.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .util.regex.matcher; +import java .util.regex.pattern; class copy camel -core use independent validate uris time pattern +public final class timepatternconverter private static final pattern numbers_only_string_pattern pattern .compile(""^[-]?(\\d)+$"", pattern .case_insensitive); private static final pattern hour_regex_pattern pattern .compile(""((\\d)*(\\d))h(our(s)?)?"", pattern .case_insensitive); private static final pattern minutes_regex_pattern pattern .compile(""((\\d)*(\\d))m(in(ute(s)?)?)?"", pattern .case_insensitive); private static final pattern seconds_regex_pattern pattern .compile(""((\\d)*(\\d))s(ec(ond)?(s)?)?"", pattern .case_insensitive); utility class public constructor private timepatternconverter public static long tomilliseconds (string source throw illegalargumentexception long millisecond boolean foundflag false checkcorrectnessofpattern (source); matcher matcher matcher creatematcher (numbers_only_string_pattern, source (matcher.find()) note also used regular numeric string string long converter used string millisecond long .valueof(source); else matcher creatematcher (hour_regex_pattern, source (matcher.find()) millisecond millisecond long .valueof(matcher.group(1))); foundflag true matcher creatematcher (minutes_regex_pattern, source (matcher.find()) long minute long .valueof(matcher.group(1)); ((minutes foundflag throw new illegalargumentexception (""minutes contain valid value source foundflag true millisecond millisecond minute matcher creatematcher (seconds_regex_pattern, source (matcher.find()) long second long .valueof(matcher.group(1)); ((seconds foundflag throw new illegalargumentexception (""seconds contain valid value source foundflag true millisecond millisecond second pattern matched initiating fallback check conversion (if required source point may contain illegal value special character (!foundflag) millisecond long .valueof(source); return millisecond private static void checkcorrectnessofpattern (string source //replace number matcher matcher creatematcher (numbers_only_string_pattern, source string replacesource matcher .replacefirst(""""); //replace hour string matcher creatematcher (hour_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""hours specified source replacesource matcher .replacefirst(""""); //replace minute matcher creatematcher (minutes_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""minutes specified source replacesource matcher .replacefirst(""""); //replace second matcher creatematcher (seconds_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""seconds specified source replacesource matcher .replacefirst(""""); (replacesource.length() throw new illegalargumentexception (""illegal character source private static matcher creatematcher (pattern pattern string source return pattern .matcher(source); diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/urisupport.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/urisupport.java new file mode index /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/urisupport.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .io.unsupportedencodingexception; +import java .net.uri; +import java .net.urisyntaxexception; +import java .net.urldecoder; +import java .net.urlencoder; +import java .util.arraylist; +import java .util.iterator; +import java .util.linkedhashmap; +import java .util.list; +import java .util.map; copied org .apache.camel.util.urisupport +public final class urisupport public static final string raw_token_start ""raw(""; public static final string raw_token_end private static final string charset ""utf-8""; private urisupport helper class normalizes uri unsafe character encoded @param uri input uri @return uri instance @throws urisyntaxexception thrown syntax error input uri public static uri normalizeuri (string uri throw urisyntaxexception return new uri (unsafeuricharactersencoder.encode(uri, true public static map (properties.size()); (iterator return value -is starting prefix @param value value @param prefix prefix remove value @return value without prefix public static string stripprefix (string value string prefix (value null value .startswith(prefix)) return value .substring(prefix.length()); return value par query part uri (eg parameter

uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @param useraw whether force using raw value @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map list (existing instanceof list list (list) existing else create new list hold multiple value list new arraylist (); string existing null existing .tostring() null (s null list .add(s); list .add(value); map .put(name, list else map .put(name, value assembles query given map @param option map option (eg key /value pair @param ampersand use java code & xml @return query string key1=value&key2=value2&..., empty string option @throws urisyntaxexception thrown uri invalid syntax public static string createquerystring (mapnull empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/unsafeuricharactersencoder.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/unsafeuricharactersencoder.java new file mode index ..a11c810 /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/unsafeuricharactersencoder.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .util.arraylist; +import java .util.bitset; +import java .util.list; +import java .util.regex.matcher; +import java .util.regex.pattern; encoder unsafe uri character

good source detail article +public final class unsafeuricharactersencoder private static bitset unsafecharactersrfc1738 private static bitset unsafecharactershttp private static final char hex_digits 'a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c', 'd', 'e', 'f'}; private static final pattern raw_pattern pattern .compile(""raw\\([^\\)]+\\)""); static unsafecharactersrfc1738 new bitset unsafecharactersrfc1738 .set(' unsafecharactersrfc1738 .set('""'); unsafecharactersrfc1738 .set('<'); unsafecharactersrfc1738 .set('>'); unsafecharactersrfc1738 .set('#'); unsafecharactersrfc1738 .set('%'); unsafecharactersrfc1738 .set('{'); unsafecharactersrfc1738 .set('}'); unsafecharactersrfc1738 .set('|'); unsafecharactersrfc1738 .set('\\'); unsafecharactersrfc1738 .set('^'); unsafecharactersrfc1738 .set('~'); unsafecharactersrfc1738 .set('['); unsafecharactersrfc1738 .set(']'); unsafecharactersrfc1738 .set('`'); static unsafecharactershttp new bitset unsafecharactershttp .set(' unsafecharactershttp .set('""'); unsafecharactershttp .set('<'); unsafecharactershttp .set('>'); unsafecharactershttp .set('#'); unsafecharactershttp .set('%'); unsafecharactershttp .set('{'); unsafecharactershttp .set('}'); unsafecharactershttp .set('|'); unsafecharactershttp .set('\\'); unsafecharactershttp .set('^'); unsafecharactershttp .set('~'); unsafecharactershttp .set('`'); private unsafeuricharactersencoder util class public static string encode (string return encode (s, unsafecharactersrfc1738 public static string encodehttpuri (string return encode (s, unsafecharactershttp public static string encode (string bitset unsafecharacters return encode (s, unsafecharacters false public static string encode (string boolean checkraw return encode (s, unsafecharactersrfc1738 checkraw public static string encodehttpuri (string boolean checkraw return encode (s, unsafecharactershttp checkraw private static list checkraw (string matcher matcher raw_pattern .matcher(s); list answer new arraylist (); check occurrence (matcher.find()) answer .add(new pair (matcher.start(), matcher .end())); return answer private static boolean israw (int index list pair (pair pair pair (index pair .left) return false else (index pair .left) (index pair .right) return true else continue return false private static class pair int left int right pair (int left int right .left left .right right skip encode israw part public static string encode (string bitset unsafecharacters boolean checkraw list rawpairs (checkraw) rawpairs checkraw (s); else rawpairs new arraylist (); int n null .length(); (n return first check whether actually need encode char char .tochararray(); (int deal ascii character (chars[i] char [i] (unsafecharacters.get(chars[i])) break (++i char .length) return okay unsafe character need encode see detail stringbuilder sb new stringbuilder (int char .length; char ch char [i]; (ch ch unsafecharacters .get(ch)) special sign may decimal encoded value (ch char next char .length char [i char next2 char .length char [i (ishexdigit(next) ishexdigit (next2) !israw(i, rawpairs already encoded (decimal encoded append sb .append(ch); else must escape unsafe character appendescape (sb, (byte) ch else must escape unsafe character appendescape (sb, (byte) ch else sb .append(ch); return sb .tostring(); private static void appendescape (stringbuilder sb byte b sb .append('%'); sb .append(hex_digits[(b 0x0f sb .append(hex_digits[(b 0x0f private static boolean ishexdigit (char ch (char hex hex_digits (hex ch return true return false diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html b /camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html new file mode index ..2f15a04 /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license + + + + +runtime camel catalog + + diff --git /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java b /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java index fd22f55 ..a32c109 /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java b /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java import org .apache.camel.pollingconsumer; import org .apache.camel.processor; import org .apache.camel.resolveendpointfailedexception; import org .apache.camel.route; -import org .apache.camel.catalog.defaultruntimecamelcatalog; -import org .apache.camel.catalog.runtimecamelcatalog; +import org .apache.camel.runtimecatalog.defaultruntimecamelcatalog; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.browsableendpoint; import org .slf4j.logger; import org .slf4j.loggerfactory; public final class endpointhelper @param uri endpoint uri @return map option uri corresponding information json @throws exception thrown case error @deprecated use {@link org .apache.camel.catalog.runtimecamelcatalog#endpointproperties(string)} @deprecated use {@link org .apache.camel.runtimecatalog.runtimecamelcatalog#endpointproperties(string)} @deprecated public static map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!multivalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!multivalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!multivalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!multivalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!mulitvalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!mulitvalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!mulitvalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!mulitvalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map word new arraylist (); (matcher.find()) string matcher .group(1); (!scheme.equals(s)) word .add(s); parse syntax find token option string token syntax_pattern .split(syntax); find position option start /end list word2 new arraylist (); int prev int prevpath special activemq /jms enum destinationtype cause token issue includes colon 'temp:queue' 'temp:topic' value (""activemq"".equals(scheme) ""jms"".equals(scheme)) (uripath.startswith(""temp:"")) prevpath (string token token (token.isempty()) continue special token used also eg int idx int len ("":"".equals(token)) idx uripath .indexof(""://"", prevpath len (idx idx uripath .indexof(token, prevpath len token .length(); (idx string option uripath .substring(prev, idx word2 .add(option); prev idx len prevpath prev special last add anyone (prev word2 .isempty()) string option uripath .substring(prev); word2 .add(option); row jsonschemahelper .parsejsonschema(""properties"", json true boolean defaultvalueadded false parse uri know part isw map word2 .iterator(); (int word .size(); string key word .get(i); boolean alloptions word .size() word2 .size(); boolean required ispropertyrequired (rows, key string defaultvalue getpropertydefaultvalue (rows, key option problem (alloptions) string value .next(); option .put(key, value else little problem option (!required) string value null boolean last word .size() (last) last value use instead default value value .hasnext() .next() null (value null option .put(key, value else value defaultvalue (value null option .put(key, value defaultvalueadded true else string value .hasnext() .next() null (value null option .put(key, value map name getnames (rows); map option new arraylist (); (matcher.find()) string matcher .group(1); option .add(s); need preserve syntax (we need use word provisional placeholder syntax syntax .replaceall(""\\{\\{"", ""begincamelplaceholder""); syntax syntax .replaceall(""\\}\\}"", ""endcamelplaceholder""); parse syntax option matcher matcher2 syntax_pattern .matcher(syntax); list options2 new arraylist (); (matcher2.find()) string matcher2 .group(1); .replaceall(""begincamelplaceholder"", .replaceall(""endcamelplaceholder"", options2 .add(s); build endpoint int range boolean first true boolean hasquestionmark false (int option .size(); string key option .get(i); string key2 options2 .get(i); string token null (tokens.length token token [i]; boolean contains property .containskey(key); (!contains) key similar explicit value try find default value option required (ispropertyrequired(rows, key string value getpropertydefaultvalue (rows, key (value null property .put(key, value key2 value option provided (properties.containskey(key)) (!first token null sb .append(token); hasquestionmark key .contains(""?"") (token null token .contains(""?"")); sb .append(key2); first false range append extra option surplus last (range options2 .size()) string token null (tokens.length range token token [range]; string key2 options2 .get(range); sb .append(token); sb .append(key2); hasquestionmark key2 .contains(""?"") (token null token .contains(""?"")); range (!copy.isempty()) last option may already contain char use instead sb .append(hasquestionmark ampersand string query createquerystring (copy, ampersand encode sb .append(query); return sb .tostring(); @deprecated private static string syntaxtokens (string syntax build token word list token new arraylist preserve backwards behavior empty token first token .add(""""); string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) reset new current token (current.length() token .add(current); current else current ch anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); private static string syntaxkeys (string syntax build token separator list token new arraylist string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) current ch else reset new current token (current.length() token .add(current); current anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); public simplevalidationresult validatesimpleexpression (string simple return dovalidatesimple (null, simple false public simplevalidationresult validatesimpleexpression (classloader classloader string simple return dovalidatesimple (classloader, simple false public simplevalidationresult validatesimplepredicate (string simple return dovalidatesimple (null, simple true public simplevalidationresult validatesimplepredicate (classloader classloader string simple return dovalidatesimple (classloader, simple true private simplevalidationresult dovalidatesimple (classloader classloader string simple boolean predicate (classloader null classloader getclass ().getclassloader(); property placeholder need resolve something else simple parse cannot resolve parsing dont run actual camel application property placeholder setup need dummy replace something else therefore use unlikely character {{xxx}} ~^xxx^~ string resolved simple .replaceall(""\\{\\{(.+)\\}\\}"", simplevalidationresult answer new simplevalidationresult (simple); object instance null class clazz null try clazz classloader .loadclass(""org.apache.camel.language.simple.simplelanguage""); instance clazz .newinstance(); catch (exception e ignore (clazz null instance null throwable cause null try (predicate) instance .getclass().getmethod(""createpredicate"", string .class).invoke(instance, resolved else instance .getclass().getmethod(""createexpression"", string .class).invoke(instance, resolved catch (invocationtargetexception e cause e .gettargetexception(); catch (exception e cause e (cause null reverse ~^xxx^~ back {{xxx}} string errmsg cause .getmessage(); errmsg errmsg .replaceall(""\\~\\^(.+)\\^\\~"", answer .seterror(errmsg); simple parser exception grab index problem (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"") cause .getclass().getname().equals(""org.apache.camel.language.simple.types.simpleparserexception"")) try need grab index field simple parser exception method method cause .getclass().getmethod(""getindex""); object result method .invoke(cause); (result null int index (int) result answer .setindex(index); catch (throwable ignore need grab short message field simple syntax exception (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"")) try method method cause .getclass().getmethod(""getshortmessage""); object result method .invoke(cause); (result null string msg (string) result answer .setshorterror(msg); catch (throwable ignore (answer.getshorterror() null fallback try make existing message short instead string msg answer .geterror(); grab everything location would regarded short message int idx msg .indexof("" location (idx msg msg .substring(0, idx answer .setshorterror(msg); return answer public languagevalidationresult validatelanguagepredicate (classloader classloader string language string text return dovalidatelanguage (classloader, language text true public languagevalidationresult validatelanguageexpression (classloader classloader string language string text return dovalidatelanguage (classloader, language text false private languagevalidationresult dovalidatelanguage (classloader classloader string language string text boolean predicate (classloader null classloader getclass ().getclassloader(); simplevalidationresult answer new simplevalidationresult (text); string json jsonschemaresolver .getlanguagejsonschema(language); (json null answer .seterror(""unknown language language return answer list notice: implementation appends \n line terminator text

warning 't use crazy big stream public static void loadlines (inputstream list line throw ioexception try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null line .add(line); load entire stream memory string return

notice: implementation appends \n line terminator text

warning 't use crazy big stream public static string loadtext (inputstream throw ioexception stringbuilder builder new stringbuilder try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null builder .append(line); builder .append(""\n""); return builder .tostring(); match name pattern @param name name @param pattern pattern @return true matched false public static boolean matchwildcard (string name string pattern wildcard support hence match file match file endpoint (pattern.endswith(""*"") name .startswith(pattern.substring(0, pattern .length() return true return false return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(after)) return null return text .substring(text.indexof(after) .length()); return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(before)) return null return text .substring(0, text .indexof(before)); return string given token @param text text @param token @param token @return text token null text contain token public static string (string text string string text (text, (text null return null return (text, test whether value null empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true remove leading ending quote (single double string @param string @return string without leading ending quote (single double public static string removeleadingandendingquotes (string (isempty(s)) return string copy .trim(); (copy.startswith(""'"") copy .endswith(""'"")) return copy .substring(1, copy .length() (copy.startswith(""\"""") copy .endswith(""\"""")) return copy .substring(1, copy .length() quote return -is return diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/collectionstringbuffer.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/collectionstringbuffer.java new file mode index ..f6484b8 /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/collectionstringbuffer.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +public class collectionstringbuffer private final stringbuilder buffer new stringbuilder private string separator private boolean first true public collectionstringbuffer public collectionstringbuffer (string separator .separator separator @override public string tostring return buffer .tostring(); public void append (object value (first) first false else buffer .append(separator); buffer .append(value); public string getseparator return separator public void setseparator (string separator .separator separator public boolean isempty return first diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/defaultruntimecamelcatalog.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/defaultruntimecamelcatalog.java new file mode index ..7648e64 /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/defaultruntimecamelcatalog.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .util.hashmap; +import java .util.map; +import org .apache.camel.camelcontext; default {@link runtimecamelcatalog +public class defaultruntimecamelcatalog extends abstractcamelcatalog implement runtimecamelcatalog cache operation result private final map unknown private map lenient private set notconsumeronly private set notproduceronly private set required private map (); (!unknown.contains(name)) unknown .add(name); error public void addunknownsuggestions (string name string suggestion (unknownsuggestions null unknownsuggestions new linkedhashmap (); (!lenient.contains(name)) lenient .add(name); public void addrequired (string name (required null required new linkedhashset (); (!required.contains(name)) required .add(name); error public void addinvalidenum (string name string value (invalidenum null invalidenum new linkedhashmap (); (!notconsumeronly.contains(name)) notconsumeronly .add(name); error public void addnotproduceronly (string name (notproduceronly null notproduceronly new linkedhashset (); (!notproduceronly.contains(name)) notproduceronly .add(name); error public string getsyntaxerror return syntaxerror public string getincapable return incapable public set getunknown return unknown public set getlenient return lenient public map getrequired return required public map getenumchoices (string optionname (invalidenumchoices null string enums invalidenumchoices .get(optionname); (enums null return array .aslist(enums); return collection .emptylist(); public map getnotconsumeronly return notconsumeronly public set getnotproduceronly return notproduceronly human readable summary validation error @param includeheader whether include header @return summary null validation error public string summaryerrormessage (boolean includeheader (issuccess()) return null (incapable null return ""\tincapable parsing uri incapable else (syntaxerror null return ""\tsyntax error syntaxerror else (unknowncomponent null return ""\tunknown component unknowncomponent invalid option build reason message map unknown private map lenient private set notconsumeronly private set notproduceronly private set required private map (); (!unknown.contains(name)) unknown .add(name); error public void addunknownsuggestions (string name string suggestion (unknownsuggestions null unknownsuggestions new linkedhashmap (); (!lenient.contains(name)) lenient .add(name); public void addrequired (string name (required null required new linkedhashset (); (!required.contains(name)) required .add(name); error public void addinvalidenum (string name string value (invalidenum null invalidenum new linkedhashmap (); (!notconsumeronly.contains(name)) notconsumeronly .add(name); error public void addnotproduceronly (string name (notproduceronly null notproduceronly new linkedhashset (); (!notproduceronly.contains(name)) notproduceronly .add(name); error public string getsyntaxerror return syntaxerror public string getincapable return incapable public set getunknown return unknown public set getlenient return lenient public map getrequired return required public map getenumchoices (string optionname (invalidenumchoices null string enums invalidenumchoices .get(optionname); (enums null return array .aslist(enums); return collection .emptylist(); public map getnotconsumeronly return notconsumeronly public set getnotproduceronly return notproduceronly human readable summary validation error @param includeheader whether include header @return summary null validation error public string summaryerrormessage (boolean includeheader (issuccess()) return null (incapable null return ""\tincapable parsing uri incapable else (syntaxerror null return ""\tsyntax error syntaxerror else (unknowncomponent null return ""\tunknown component unknowncomponent invalid option build reason message map component, componentproperties, properties. @param json json @return list row row set key value pair metadata public static list getnames (list answer new linkedhashset (); (map example using http component provide query parameter endpoint uri @param uri endpoint uri @return property key value pair lenient property map true valid false invalid boolean validatetimepattern (string pattern validates property given scheme component endpoint @param scheme endpoint scheme @param property endpoint property @return validation result endpointvalidationresult validateproperties (string scheme map option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties par validates endpoint uri construct key /value property option

option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @param consumeronly whether endpoint used consumer @param produceronly whether endpoint used producer @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties boolean consumeronly boolean produceronly par validates simple expression

important: requires camel-core classpath @param simple simple expression @return validation result @deprecated use {@link #validatesimpleexpression(classloader, string @deprecated simplevalidationresult validatesimpleexpression (string simple par validates simple expression

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple expression @return validation result simplevalidationresult validatesimpleexpression (classloader classloader string simple par validates simple predicate

important: requires camel-core classpath @param simple simple predicate @return validation result @deprecated use {@link #validatesimplepredicate(classloader, string @deprecated simplevalidationresult validatesimplepredicate (string simple par validates simple predicate

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple predicate @return validation result simplevalidationresult validatesimplepredicate (classloader classloader string simple par validates language predicate

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text predicate text @return validation result languagevalidationresult validatelanguagepredicate (classloader classloader string language string text par validates language expression

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text expression text @return validation result languagevalidationresult validatelanguageexpression (classloader classloader string language string text return component name given endpoint uri @param uri endpoint uri @return component name (aka scheme null possible determine string endpointcomponentname (string uri creates endpoint uri java style information property @param scheme endpoint schema @param property property key value pair @param encode whether url encode returned uri @return constructed endpoint uri @throws java .net.urisyntaxexception thrown encoding error string asendpointuri (string scheme map name string unknownoption diff --git /camel-core/src/main/java/org/apache/camel/catalog/timepatternconverter.java b /camel-core/src/main/java/org/apache/camel/catalog/timepatternconverter.java deleted file mode index 4ed843a /camel-core/src/main/java/org/apache/camel/catalog/timepatternconverter.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .util.regex.matcher; -import java .util.regex.pattern; class copy camel -core use independent validate uris time pattern -public final class timepatternconverter private static final pattern numbers_only_string_pattern pattern .compile(""^[-]?(\\d)+$"", pattern .case_insensitive); private static final pattern hour_regex_pattern pattern .compile(""((\\d)*(\\d))h(our(s)?)?"", pattern .case_insensitive); private static final pattern minutes_regex_pattern pattern .compile(""((\\d)*(\\d))m(in(ute(s)?)?)?"", pattern .case_insensitive); private static final pattern seconds_regex_pattern pattern .compile(""((\\d)*(\\d))s(ec(ond)?(s)?)?"", pattern .case_insensitive); utility class public constructor private timepatternconverter public static long tomilliseconds (string source throw illegalargumentexception long millisecond boolean foundflag false checkcorrectnessofpattern (source); matcher matcher matcher creatematcher (numbers_only_string_pattern, source (matcher.find()) note also used regular numeric string string long converter used string millisecond long .valueof(source); else matcher creatematcher (hour_regex_pattern, source (matcher.find()) millisecond millisecond long .valueof(matcher.group(1))); foundflag true matcher creatematcher (minutes_regex_pattern, source (matcher.find()) long minute long .valueof(matcher.group(1)); ((minutes foundflag throw new illegalargumentexception (""minutes contain valid value source foundflag true millisecond millisecond minute matcher creatematcher (seconds_regex_pattern, source (matcher.find()) long second long .valueof(matcher.group(1)); ((seconds foundflag throw new illegalargumentexception (""seconds contain valid value source foundflag true millisecond millisecond second pattern matched initiating fallback check conversion (if required source point may contain illegal value special character (!foundflag) millisecond long .valueof(source); return millisecond private static void checkcorrectnessofpattern (string source //replace number matcher matcher creatematcher (numbers_only_string_pattern, source string replacesource matcher .replacefirst(""""); //replace hour string matcher creatematcher (hour_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""hours specified source replacesource matcher .replacefirst(""""); //replace minute matcher creatematcher (minutes_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""minutes specified source replacesource matcher .replacefirst(""""); //replace second matcher creatematcher (seconds_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""seconds specified source replacesource matcher .replacefirst(""""); (replacesource.length() throw new illegalargumentexception (""illegal character source private static matcher creatematcher (pattern pattern string source return pattern .matcher(source); diff --git /camel-core/src/main/java/org/apache/camel/catalog/urisupport.java b /camel-core/src/main/java/org/apache/camel/catalog/urisupport.java deleted file mode index ea1ecd5 /camel-core/src/main/java/org/apache/camel/catalog/urisupport.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .io.unsupportedencodingexception; -import java .net.uri; -import java .net.urisyntaxexception; -import java .net.urldecoder; -import java .net.urlencoder; -import java .util.arraylist; -import java .util.iterator; -import java .util.linkedhashmap; -import java .util.list; -import java .util.map; copied org .apache.camel.util.urisupport -public final class urisupport public static final string raw_token_start ""raw(""; public static final string raw_token_end private static final string charset ""utf-8""; private urisupport helper class normalizes uri unsafe character encoded @param uri input uri @return uri instance @throws urisyntaxexception thrown syntax error input uri public static uri normalizeuri (string uri throw urisyntaxexception return new uri (unsafeuricharactersencoder.encode(uri, true public static map (properties.size()); (iterator return value -is starting prefix @param value value @param prefix prefix remove value @return value without prefix public static string stripprefix (string value string prefix (value null value .startswith(prefix)) return value .substring(prefix.length()); return value par query part uri (eg parameter

uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @param useraw whether force using raw value @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map list (existing instanceof list list (list) existing else create new list hold multiple value list new arraylist (); string existing null existing .tostring() null (s null list .add(s); list .add(value); map .put(name, list else map .put(name, value assembles query given map @param option map option (eg key /value pair @param ampersand use java code & xml @return query string key1=value&key2=value2&..., empty string option @throws urisyntaxexception thrown uri invalid syntax public static string createquerystring (mapnull empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true diff --git /camel-core/src/main/java/org/apache/camel/catalog/unsafeuricharactersencoder.java b /camel-core/src/main/java/org/apache/camel/catalog/unsafeuricharactersencoder.java deleted file mode index 563bac2 /camel-core/src/main/java/org/apache/camel/catalog/unsafeuricharactersencoder.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .util.arraylist; -import java .util.bitset; -import java .util.list; -import java .util.regex.matcher; -import java .util.regex.pattern; encoder unsafe uri character

good source detail article -public final class unsafeuricharactersencoder private static bitset unsafecharactersrfc1738 private static bitset unsafecharactershttp private static final char hex_digits 'a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c', 'd', 'e', 'f'}; private static final pattern raw_pattern pattern .compile(""raw\\([^\\)]+\\)""); static unsafecharactersrfc1738 new bitset unsafecharactersrfc1738 .set(' unsafecharactersrfc1738 .set('""'); unsafecharactersrfc1738 .set('<'); unsafecharactersrfc1738 .set('>'); unsafecharactersrfc1738 .set('#'); unsafecharactersrfc1738 .set('%'); unsafecharactersrfc1738 .set('{'); unsafecharactersrfc1738 .set('}'); unsafecharactersrfc1738 .set('|'); unsafecharactersrfc1738 .set('\\'); unsafecharactersrfc1738 .set('^'); unsafecharactersrfc1738 .set('~'); unsafecharactersrfc1738 .set('['); unsafecharactersrfc1738 .set(']'); unsafecharactersrfc1738 .set('`'); static unsafecharactershttp new bitset unsafecharactershttp .set(' unsafecharactershttp .set('""'); unsafecharactershttp .set('<'); unsafecharactershttp .set('>'); unsafecharactershttp .set('#'); unsafecharactershttp .set('%'); unsafecharactershttp .set('{'); unsafecharactershttp .set('}'); unsafecharactershttp .set('|'); unsafecharactershttp .set('\\'); unsafecharactershttp .set('^'); unsafecharactershttp .set('~'); unsafecharactershttp .set('`'); private unsafeuricharactersencoder util class public static string encode (string return encode (s, unsafecharactersrfc1738 public static string encodehttpuri (string return encode (s, unsafecharactershttp public static string encode (string bitset unsafecharacters return encode (s, unsafecharacters false public static string encode (string boolean checkraw return encode (s, unsafecharactersrfc1738 checkraw public static string encodehttpuri (string boolean checkraw return encode (s, unsafecharactershttp checkraw private static list checkraw (string matcher matcher raw_pattern .matcher(s); list answer new arraylist (); check occurrence (matcher.find()) answer .add(new pair (matcher.start(), matcher .end())); return answer private static boolean israw (int index list pair (pair pair pair (index pair .left) return false else (index pair .left) (index pair .right) return true else continue return false private static class pair int left int right pair (int left int right .left left .right right skip encode israw part public static string encode (string bitset unsafecharacters boolean checkraw list rawpairs (checkraw) rawpairs checkraw (s); else rawpairs new arraylist (); int n null .length(); (n return first check whether actually need encode char char .tochararray(); (int deal ascii character (chars[i] char [i] (unsafecharacters.get(chars[i])) break (++i char .length) return okay unsafe character need encode see detail stringbuilder sb new stringbuilder (int char .length; char ch char [i]; (ch ch unsafecharacters .get(ch)) special sign may decimal encoded value (ch char next char .length char [i char next2 char .length char [i (ishexdigit(next) ishexdigit (next2) !israw(i, rawpairs already encoded (decimal encoded append sb .append(ch); else must escape unsafe character appendescape (sb, (byte) ch else must escape unsafe character appendescape (sb, (byte) ch else sb .append(ch); return sb .tostring(); private static void appendescape (stringbuilder sb byte b sb .append('%'); sb .append(hex_digits[(b 0x0f sb .append(hex_digits[(b 0x0f private static boolean ishexdigit (char ch (char hex hex_digits (hex ch return true return false diff --git /camel-core/src/main/java/org/apache/camel/catalog/package.html b /camel-core/src/main/java/org/apache/camel/catalog/package.html deleted file mode index 98786d1 /camel-core/src/main/java/org/apache/camel/catalog/package.html /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license - - - - -camel catalog - - diff --git /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java index 5d19e0d ..4013e5f /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java import java .util.map; import org .apache.camel.component; import org .apache.camel.componentverifier; import org .apache.camel.verifiablecomponent; -import org .apache.camel.catalog.jsonschemahelper; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.impl.verifier.catalogverifiercustomizer; import org .apache.camel.impl.verifier.defaultcomponentverifier; import org .apache.camel.impl.verifier.resultbuilder; import org .apache.camel.impl.verifier.resulterrorbuilder; +import org .apache.camel.runtimecatalog.jsonschemahelper; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.restconsumerfactory; import org .apache.camel.spi.restproducerfactory; import org .apache.camel.util.objecthelper; diff --git /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java b /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java index c85ce8c ..b53efc8 /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java b /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java import java .util.collections; import java .util.comparator; import java .util.date; import java .util.hashmap; -import java .util.hashset; import java .util.iterator; import java .util.linkedhashmap; import java .util.linkedhashset; import org .apache.camel.api.management.mbean.managedroutembean; import org .apache.camel.builder.defaultfluentproducertemplate; import org .apache.camel.builder.errorhandlerbuilder; import org .apache.camel.builder.errorhandlerbuildersupport; -import org .apache.camel.catalog.defaultruntimecamelcatalog; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.component.properties.propertiescomponent; import org .apache.camel.impl.converter.basetypeconverterregistry; import org .apache.camel.impl.converter.defaulttypeconverter; import org .apache.camel.processor.interceptor.delayer; import org .apache.camel.processor.interceptor.handlefault; import org .apache.camel.processor.interceptor.streamcaching; import org .apache.camel.processor.interceptor.tracer; +import org .apache.camel.runtimecatalog.defaultruntimecamelcatalog; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.asyncprocessorawaitmanager; import org .apache.camel.spi.camelcontextnamestrategy; import org .apache.camel.spi.classresolver; diff --git /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java index b9d9998 ..f05cdb1 /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java import org .apache.camel.camelcontext; import org .apache.camel.componentverifier; import org .apache.camel.nosuchoptionexception; import org .apache.camel.typeconverter; -import org .apache.camel.catalog.endpointvalidationresult; -import org .apache.camel.catalog.runtimecamelcatalog; +import org .apache.camel.runtimecatalog.endpointvalidationresult; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.util.camelcontexthelper; import org .apache.camel.util.endpointhelper; import org .apache.camel.util.introspectionsupport; diff --git /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java b /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java index a09ff7d ..9a70390 /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java b /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java import org .apache.camel.startuplistener; import org .apache.camel.timerlistener; import org .apache.camel.vetocamelcontextstartexception; import org .apache.camel.api.management.performancecounter; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.impl.consumercache; import org .apache.camel.impl.defaultcamelcontext; import org .apache.camel.impl.defaultendpointregistry; -import org .apache.camel.impl.defaulttransformerregistry; -import org .apache.camel.impl.defaultvalidatorregistry; import org .apache.camel.impl.eventdrivenconsumerroute; import org .apache.camel.impl.producercache; import org .apache.camel.impl.throttlingexceptionroutepolicy; import org .apache.camel.processor.camelinternalprocessor; import org .apache.camel.processor.interceptor.backlogdebugger; import org .apache.camel.processor.interceptor.backlogtracer; import org .apache.camel.processor.interceptor.tracer; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.asyncprocessorawaitmanager; import org .apache.camel.spi.dataformat; import org .apache.camel.spi.eventnotifier; diff --git /camel-core/src/main/java/org/apache/camel/management/mbean/managedruntimecamelcatalog.java b /camel-core/src/main/java/org/apache/camel/management/mbean/managedruntimecamelcatalog.java index 20d3f28 ..6a99656 /camel-core/src/main/java/org/apache/camel/management/mbean/managedruntimecamelcatalog.java b /camel-core/src/main/java/org/apache/camel/management/mbean/managedruntimecamelcatalog.java package org .apache.camel.management.mbean; import org .apache.camel.camelcontext; import org .apache.camel.api.management.managedresource; import org .apache.camel.api.management.mbean.managedruntimecamelcatalogmbean; -import org .apache.camel.catalog.runtimecamelcatalog; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.managementstrategy;",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C6a3e7fae5cba4f918aede10c3ae6ef26%40git.apache.org%3E,2017-04-14 10:52:59,commits,326.0,camel git commit rename catalog runtimecatalog avoid clash package name camel -catalog. -6,6,6,7.0,327.0,davscl...@apache.org,"rename catalog runtimecatalog avoid clash package name camel -catalog. project commit tree diff branch ref /heads/master commit c66be7a8c21de8944fd86888a2cf039eb97a2ff1 parent d726964 author claus ibsen authored fri apr committer claus ibsen committed fri apr .../java/org/apache/camel/camelcontext.java .../camel/catalog/abstractcamelcatalog.java .../catalog/camelcontextjsonschemaresolver.java .../org/apache/camel/catalog/cataloghelper.java .../camel/catalog/collectionstringbuffer.java .../catalog/defaultruntimecamelcatalog.java .../camel/catalog/endpointvalidationresult.java .../apache/camel/catalog/jsonschemahelper.java .../camel/catalog/jsonschemaresolver.java .../camel/catalog/languagevalidationresult.java .../camel/catalog/runtimecamelcatalog.java .../camel/catalog/simplevalidationresult.java .../camel/catalog/suggestionstrategy.java .../camel/catalog/timepatternconverter.java .../org/apache/camel/catalog/urisupport.java .../catalog/unsafeuricharactersencoder.java .../java/org/apache/camel/catalog/package.html .../component/rest/restcomponentverifier.java .../apache/camel/impl/defaultcamelcontext.java .../impl/verifier/defaultcomponentverifier.java .../defaultmanagementlifecyclestrategy.java .../mbean/managedruntimecamelcatalog.java .../runtimecatalog/abstractcamelcatalog.java .../camelcontextjsonschemaresolver.java .../camel/runtimecatalog/cataloghelper.java .../runtimecatalog/collectionstringbuffer.java .../defaultruntimecamelcatalog.java .../endpointvalidationresult.java .../camel/runtimecatalog/jsonschemahelper.java .../runtimecatalog/jsonschemaresolver.java .../languagevalidationresult.java .../runtimecatalog/runtimecamelcatalog.java .../runtimecatalog/simplevalidationresult.java .../runtimecatalog/suggestionstrategy.java .../runtimecatalog/timepatternconverter.java .../apache/camel/runtimecatalog/urisupport.java .../unsafeuricharactersencoder.java .../apache/camel/runtimecatalog/package.html .../org/apache/camel/util/endpointhelper.java .../camel/catalog/abstractcamelcatalogtest.java .../camel/catalog/runtimecamelcatalogtest.java .../abstractcamelcatalogtest.java .../runtimecatalog/runtimecamelcatalogtest.java file changed insertion deletion diff --git /camel-core/src/main/java/org/apache/camel/camelcontext.java b /camel-core/src/main/java/org/apache/camel/camelcontext.java index d4fd6ae ..00702d1 /camel-core/src/main/java/org/apache/camel/camelcontext.java b /camel-core/src/main/java/org/apache/camel/camelcontext.java import org .apache.camel.api.management.mbean.managedcamelcontextmbean; import org .apache.camel.api.management.mbean.managedprocessormbean; import org .apache.camel.api.management.mbean.managedroutembean; import org .apache.camel.builder.errorhandlerbuilder; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.model.dataformatdefinition; import org .apache.camel.model.hystrixconfigurationdefinition; import org .apache.camel.model.processordefinition; import org .apache.camel.model.rest.restdefinition; import org .apache.camel.model.rest.restsdefinition; import org .apache.camel.model.transformer.transformerdefinition; import org .apache.camel.model.validator.validatordefinition; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.asyncprocessorawaitmanager; import org .apache.camel.spi.camelcontextnamestrategy; import org .apache.camel.spi.classresolver; diff --git /camel-core/src/main/java/org/apache/camel/catalog/abstractcamelcatalog.java b /camel-core/src/main/java/org/apache/camel/catalog/abstractcamelcatalog.java deleted file mode index 6511eff /camel-core/src/main/java/org/apache/camel/catalog/abstractcamelcatalog.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .lang.reflect.invocationtargetexception; -import java .lang.reflect.method; -import java .net.uri; -import java .net.urisyntaxexception; -import java .util.arraylist; -import java .util.arrays; -import java .util.hashmap; -import java .util.iterator; -import java .util.linkedhashmap; -import java .util.linkedhashset; -import java .util.list; -import java .util.map; -import java .util.objects; -import java .util.set; -import java .util.treemap; -import java .util.regex.matcher; -import java .util.regex.pattern; -import static org .apache.camel.catalog.cataloghelper.after; -import static org .apache.camel.catalog.jsonschemahelper.getnames; -import static org .apache.camel.catalog.jsonschemahelper.getpropertydefaultvalue; -import static org .apache.camel.catalog.jsonschemahelper.getpropertyenum; -import static org .apache.camel.catalog.jsonschemahelper.getpropertykind; -import static org .apache.camel.catalog.jsonschemahelper.getpropertynamefromnamewithprefix; -import static org .apache.camel.catalog.jsonschemahelper.getpropertyprefix; -import static org .apache.camel.catalog.jsonschemahelper.getrow; -import static org .apache.camel.catalog.jsonschemahelper.iscomponentconsumeronly; -import static org .apache.camel.catalog.jsonschemahelper.iscomponentlenientproperties; -import static org .apache.camel.catalog.jsonschemahelper.iscomponentproduceronly; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyboolean; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyconsumeronly; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyinteger; -import static org .apache.camel.catalog.jsonschemahelper.ispropertymultivalue; -import static org .apache.camel.catalog.jsonschemahelper.ispropertynumber; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyobject; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyproduceronly; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyrequired; -import static org .apache.camel.catalog.jsonschemahelper.stripoptionalprefixfromname; -import static org .apache.camel.catalog.urisupport.createquerystring; -import static org .apache.camel.catalog.urisupport.isempty; -import static org .apache.camel.catalog.urisupport.normalizeuri; -import static org .apache.camel.catalog.urisupport.stripquery; base class runtime runtimecamelcatalog camel -core complete camelcatalog camel -catalog. -public abstract class abstractcamelcatalog checkstyle :off private static final pattern syntax_pattern pattern .compile(""(\\w+)""); private suggestionstrategy suggestionstrategy private jsonschemaresolver jsonschemaresolver public suggestionstrategy getsuggestionstrategy return suggestionstrategy public void setsuggestionstrategy (suggestionstrategy suggestionstrategy .suggestionstrategy suggestionstrategy public jsonschemaresolver getjsonschemaresolver return jsonschemaresolver public void setjsonschemaresolver (jsonschemaresolver resolver .jsonschemaresolver resolver public boolean validatetimepattern (string pattern return validateinteger (pattern); public endpointvalidationresult validateendpointproperties (string uri return validateendpointproperties (uri, false false false public endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties return validateendpointproperties (uri, ignorelenientproperties false false public endpointvalidationresult validateproperties (string scheme map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!multivalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!multivalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!multivalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!multivalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!mulitvalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!mulitvalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!mulitvalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!mulitvalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map word new arraylist (); (matcher.find()) string matcher .group(1); (!scheme.equals(s)) word .add(s); parse syntax find token option string token syntax_pattern .split(syntax); find position option start /end list word2 new arraylist (); int prev int prevpath special activemq /jms enum destinationtype cause token issue includes colon 'temp:queue' 'temp:topic' value (""activemq"".equals(scheme) ""jms"".equals(scheme)) (uripath.startswith(""temp:"")) prevpath (string token token (token.isempty()) continue special token used also eg int idx int len ("":"".equals(token)) idx uripath .indexof(""://"", prevpath len (idx idx uripath .indexof(token, prevpath len token .length(); (idx string option uripath .substring(prev, idx word2 .add(option); prev idx len prevpath prev special last add anyone (prev word2 .isempty()) string option uripath .substring(prev); word2 .add(option); row jsonschemahelper .parsejsonschema(""properties"", json true boolean defaultvalueadded false parse uri know part isw map word2 .iterator(); (int word .size(); string key word .get(i); boolean alloptions word .size() word2 .size(); boolean required ispropertyrequired (rows, key string defaultvalue getpropertydefaultvalue (rows, key option problem (alloptions) string value .next(); option .put(key, value else little problem option (!required) string value null boolean last word .size() (last) last value use instead default value value .hasnext() .next() null (value null option .put(key, value else value defaultvalue (value null option .put(key, value defaultvalueadded true else string value .hasnext() .next() null (value null option .put(key, value map name getnames (rows); map option new arraylist (); (matcher.find()) string matcher .group(1); option .add(s); need preserve syntax (we need use word provisional placeholder syntax syntax .replaceall(""\\{\\{"", ""begincamelplaceholder""); syntax syntax .replaceall(""\\}\\}"", ""endcamelplaceholder""); parse syntax option matcher matcher2 syntax_pattern .matcher(syntax); list options2 new arraylist (); (matcher2.find()) string matcher2 .group(1); .replaceall(""begincamelplaceholder"", .replaceall(""endcamelplaceholder"", options2 .add(s); build endpoint int range boolean first true boolean hasquestionmark false (int option .size(); string key option .get(i); string key2 options2 .get(i); string token null (tokens.length token token [i]; boolean contains property .containskey(key); (!contains) key similar explicit value try find default value option required (ispropertyrequired(rows, key string value getpropertydefaultvalue (rows, key (value null property .put(key, value key2 value option provided (properties.containskey(key)) (!first token null sb .append(token); hasquestionmark key .contains(""?"") (token null token .contains(""?"")); sb .append(key2); first false range append extra option surplus last (range options2 .size()) string token null (tokens.length range token token [range]; string key2 options2 .get(range); sb .append(token); sb .append(key2); hasquestionmark key2 .contains(""?"") (token null token .contains(""?"")); range (!copy.isempty()) last option may already contain char use instead sb .append(hasquestionmark ampersand string query createquerystring (copy, ampersand encode sb .append(query); return sb .tostring(); @deprecated private static string syntaxtokens (string syntax build token word list token new arraylist preserve backwards behavior empty token first token .add(""""); string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) reset new current token (current.length() token .add(current); current else current ch anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); private static string syntaxkeys (string syntax build token separator list token new arraylist string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) current ch else reset new current token (current.length() token .add(current); current anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); public simplevalidationresult validatesimpleexpression (string simple return dovalidatesimple (null, simple false public simplevalidationresult validatesimpleexpression (classloader classloader string simple return dovalidatesimple (classloader, simple false public simplevalidationresult validatesimplepredicate (string simple return dovalidatesimple (null, simple true public simplevalidationresult validatesimplepredicate (classloader classloader string simple return dovalidatesimple (classloader, simple true private simplevalidationresult dovalidatesimple (classloader classloader string simple boolean predicate (classloader null classloader getclass ().getclassloader(); property placeholder need resolve something else simple parse cannot resolve parsing dont run actual camel application property placeholder setup need dummy replace something else therefore use unlikely character {{xxx}} ~^xxx^~ string resolved simple .replaceall(""\\{\\{(.+)\\}\\}"", simplevalidationresult answer new simplevalidationresult (simple); object instance null class clazz null try clazz classloader .loadclass(""org.apache.camel.language.simple.simplelanguage""); instance clazz .newinstance(); catch (exception e ignore (clazz null instance null throwable cause null try (predicate) instance .getclass().getmethod(""createpredicate"", string .class).invoke(instance, resolved else instance .getclass().getmethod(""createexpression"", string .class).invoke(instance, resolved catch (invocationtargetexception e cause e .gettargetexception(); catch (exception e cause e (cause null reverse ~^xxx^~ back {{xxx}} string errmsg cause .getmessage(); errmsg errmsg .replaceall(""\\~\\^(.+)\\^\\~"", answer .seterror(errmsg); simple parser exception grab index problem (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"") cause .getclass().getname().equals(""org.apache.camel.language.simple.types.simpleparserexception"")) try need grab index field simple parser exception method method cause .getclass().getmethod(""getindex""); object result method .invoke(cause); (result null int index (int) result answer .setindex(index); catch (throwable ignore need grab short message field simple syntax exception (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"")) try method method cause .getclass().getmethod(""getshortmessage""); object result method .invoke(cause); (result null string msg (string) result answer .setshorterror(msg); catch (throwable ignore (answer.getshorterror() null fallback try make existing message short instead string msg answer .geterror(); grab everything location would regarded short message int idx msg .indexof("" location (idx msg msg .substring(0, idx answer .setshorterror(msg); return answer public languagevalidationresult validatelanguagepredicate (classloader classloader string language string text return dovalidatelanguage (classloader, language text true public languagevalidationresult validatelanguageexpression (classloader classloader string language string text return dovalidatelanguage (classloader, language text false private languagevalidationresult dovalidatelanguage (classloader classloader string language string text boolean predicate (classloader null classloader getclass ().getclassloader(); simplevalidationresult answer new simplevalidationresult (text); string json jsonschemaresolver .getlanguagejsonschema(language); (json null answer .seterror(""unknown language language return answer list notice: implementation appends \n line terminator text

warning 't use crazy big stream public static void loadlines (inputstream list line throw ioexception try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null line .add(line); load entire stream memory string return

notice: implementation appends \n line terminator text

warning 't use crazy big stream public static string loadtext (inputstream throw ioexception stringbuilder builder new stringbuilder try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null builder .append(line); builder .append(""\n""); return builder .tostring(); match name pattern @param name name @param pattern pattern @return true matched false public static boolean matchwildcard (string name string pattern wildcard support hence match file match file endpoint (pattern.endswith(""*"") name .startswith(pattern.substring(0, pattern .length() return true return false return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(after)) return null return text .substring(text.indexof(after) .length()); return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(before)) return null return text .substring(0, text .indexof(before)); return string given token @param text text @param token @param token @return text token null text contain token public static string (string text string string text (text, (text null return null return (text, test whether value null empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true remove leading ending quote (single double string @param string @return string without leading ending quote (single double public static string removeleadingandendingquotes (string (isempty(s)) return string copy .trim(); (copy.startswith(""'"") copy .endswith(""'"")) return copy .substring(1, copy .length() (copy.startswith(""\"""") copy .endswith(""\"""")) return copy .substring(1, copy .length() quote return -is return diff --git /camel-core/src/main/java/org/apache/camel/catalog/collectionstringbuffer.java b /camel-core/src/main/java/org/apache/camel/catalog/collectionstringbuffer.java deleted file mode index 2844ca9 /camel-core/src/main/java/org/apache/camel/catalog/collectionstringbuffer.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -public class collectionstringbuffer private final stringbuilder buffer new stringbuilder private string separator private boolean first true public collectionstringbuffer public collectionstringbuffer (string separator .separator separator @override public string tostring return buffer .tostring(); public void append (object value (first) first false else buffer .append(separator); buffer .append(value); public string getseparator return separator public void setseparator (string separator .separator separator public boolean isempty return first diff --git /camel-core/src/main/java/org/apache/camel/catalog/defaultruntimecamelcatalog.java b /camel-core/src/main/java/org/apache/camel/catalog/defaultruntimecamelcatalog.java deleted file mode index dd66c55 /camel-core/src/main/java/org/apache/camel/catalog/defaultruntimecamelcatalog.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .util.hashmap; -import java .util.map; -import org .apache.camel.camelcontext; default {@link runtimecamelcatalog -public class defaultruntimecamelcatalog extends abstractcamelcatalog implement runtimecamelcatalog cache operation result private final map authored fri apr committer claus ibsen committed fri apr .../camel/commands/abstractcamelcontroller.java .../camel/commands/internal/matchutil.java file changed insertion deletion diff --git /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java b /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java index 3036d46 ..2937d10 /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java b /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java import java .util.linkedhashmap; import java .util.list; import java .util.map; -import org .apache.camel.catalog.cataloghelper; -import org .apache.camel.commands.internal.regexutil; import org .apache.camel.util.jsonschemahelper; import org .apache.camel.util.objecthelper; +import static org .apache.camel.commands.internal.matchutil.matchwildcard; +import static org .apache.camel.commands.internal.regexutil.wildcardasregex; abstract {@link org .apache.camel.commands.camelcontroller} implementators extend public abstract class abstractcamelcontroller implement camelcontroller list authored fri apr committer claus ibsen committed fri apr .../src/main/docs/ignite-component.adoc component /readme.adoc doc /user-manual/en/summary.md file changed insertion diff --git /components/camel-ignite/src/main/docs/ignite-component.adoc b /components/camel-ignite/src/main/docs/ignite-component.adoc new file mode index ..a721719 /dev/null b /components/camel-ignite/src/main/docs/ignite-component.adoc +[[ignite-component]] ignite component +*available camel version ignite -memory data fabric high -performance, integrated distributed -memory platform computing transacting large -scale data set real -time, order magnitude faster possible traditional disk -based flash technology designed deliver uncompromised performance wide set -memory computing use case high performance computing industry advanced data grid highly available service grid streaming see +image: +this component offer seven endpoint cover much ignite 's functionality < org.apache.camel camel-ignite ${camel.version} use version camel core version + +[important,title=running osgi +if running osgi container please 't miss < string eventtype .evts_all +the event id subscribe set set directly id different constant org .apache.ignite.events.eventtype, specify comma -separated list constant name +for example evt_cache_entry_created ,evt_cache_object_removed,evt_igfs_dir_created. +n consumer clustergroupexpression clustergroupexpression +an expression return cluster group used igniteevents instance +n consumer +[[ignite-sets]] +sets: ignite set endpoint +the ignite set endpoint allows interact set data structure +[source,text] +ignite:sets:setname?option1=value1&option2=value2... +this endpoint support producer +options +[width=""100%"",cols=""1,1,1,4,1,1"",options=""header""] option type default value description compulsory consumer /producer operation ignitesetoperation enum +the operation invoke ignite set +superseded igniteconstants .ignite_sets_operation header message +possible value contains add size remove iterator clear retain_all array +n producer configuration collectionconfiguration empty collectionconfiguration +the configuration data structure also specify inner property using config prefix +for example ?config.backups=4 +n producer +headers used +this endpoint us following header +[width=""100%"",cols=""1,1,1,4"",options=""header""] header name constant expected type description camelignitesetsoperation igniteconstants .ignite_sets_operation ignitesetoperation enum +allows dynamically change set operation +[[ignite-queues]] +queues: ignite queue endpoint +the ignite queue endpoint allows interact queue data structure +[source,text] +ignite:queue:queuename?option1=value1&option2=value2... +this endpoint support producer +options +[width=""100%"",cols=""1,1,1,4,1,1"",options=""header""] option type default value description compulsory consumer /producer operation ignitequeueoperation enum +the operation invoke ignite queue +superseded igniteconstants .ignite_queue_operation header message +possible value contains add size remove iterator clear retain_all array drain element peek offer poll take put +n producer configuration collectionconfiguration empty collectionconfiguration +the configuration data structure also specify inner property using config prefix +for example ?config.backups=4 +n producer timeoutmillis long +the timeout millisecond use invoking offer poll operation +n producer capacity int (unbounded) +the queue capacity 'd like use bounded queue +n producer +headers used +this endpoint us following header +[width=""100%"",cols=""1,1,1,4"",options=""header""] header name constant expected type description camelignitequeueoperation igniteconstants .ignite_queue_operation ignitequeueoperation enum +allows dynamically change queue operation camelignitequeuemaxelements igniteconstants .ignite_queue_max_elements integer int +when invoking drain operation amount item drain camelignitequeuetransferredcount igniteconstants .ignite_queue_transferred_count integer int +the amount item transferred result drain operation camelignitequeuetimeoutmillis igniteconstants .ignite_queue_timeout_millis long long +dynamically set timeout millisecond use invoking offer poll operation +[[ignite-idgenerator]] +idgen: ignite id generator endpoint +the ignite id generator endpoint allows interact atomic sequence id generator +[source,text] +ignite:idgen:sequencename?option1=value1&option2=value2... +this endpoint support producer +options +[width=""100%"",cols=""1,1,1,4,1,1"",options=""header""] option type default value description compulsory consumer /producer operation igniteidgenoperation enum +the operation invoke ignite id generator +superseded igniteconstants .ignite_idgen_operation header message +possible value add_and_get get get_and_add get_and_increment increment_and_get +n producer configuration collectionconfiguration empty collectionconfiguration +the configuration data structure also specify inner property using config prefix +for example ?config.backups=4 +n producer +[[ignite-initializecomponent]] +initializing ignite component +each instance ignite component associated underlying org .apache.ignite.ignite instance interact two ignite cluster initializing two instance ignite component binding different igniteconfigurations way initialize ignite component passing existing org .apache.ignite.ignite instance 's example using spring config +[source,xml] + passing igniteconfiguration either constructed programmatically inversion control (e.g. spring blueprint etc 's example using spring config +[source,xml] + + passing url inputstream string url spring -based configuration file three case inject property called configurationresource 's example using spring config +[source,xml] + +additionally, using camel programmatically several convenience static method ignitecomponent return component configuration option ignitecomponent #fromignite(ignite) ignitecomponent #fromconfiguration(igniteconfiguration) ignitecomponent #frominputstream(inputstream) ignitecomponent #fromurl(url) ignitecomponent #fromlocation(string) +you may use method quickly create ignitecomponent chosen configuration technique +general option +all endpoint share following option +[width=""100%"",cols=""1,1,1,4,1,1"",options=""header""] option type default value description propagateincomingbodyifnoreturnvalue boolean true +if underlying ignite operation return void (no return type flag determines whether producer copy body body treatcollectionsascacheobjects boolean false +some ignite operation deal multiple element passed collection enabling option treat collection single object invoking operation variant cardinality +osgi support +[tip] +apache ignite support osgi version .5.0.final onwards +[note,title=when installing apache karaf installing camel -ignite feature require ignite feature repository present must exported jre (system bundle low -level, non -standard package ignite requires +please refer osgi section ignite documentation information +see also camel started newline end file diff --git /components/readme.adoc b /components/readme.adoc index 2909fcb ..f5734d4 /components/readme.adoc b /components/readme.adoc number component jar artifact deprecated link :camel-ibatis/src/main/docs/ibatis-component.adoc[ibatis] (camel-ibatis) `ibatis:statement` *deprecated* performs query poll insert update delete relational database using apache ibatis link :camel-ignite/src/main/docs/ignite-component.adoc[ignite] (camel-ignite) +`ignite:endpointname` ignite component integrates apache camel apache ignite link :camel-infinispan/src/main/docs/infinispan-component.adoc[infinispan] (camel-infinispan) `infinispan:cachename` reading /writing /to infinispan distributed key /value store data grid diff --git /docs/user-manual/en/summary.md b /docs/user-manual/en/summary.md index 96955c4 ..a1bbc02 /docs/user-manual/en/summary.md b /docs/user-manual/en/summary.md [http](http-component.adoc) [http4](http4-component.adoc) [ibatis](ibatis-component.adoc) [ignite](ignite-component.adoc) [imap](imap-component.adoc) [infinispan](infinispan-component.adoc) [influxdb](influxdb-component.adoc)",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C3ecfaacf3d8e4820a231f68340f2ef0d%40git.apache.org%3E,2017-04-14 10:55:56,commits,328.0,camel git commit camel ported camel -ignite wiki doc adoc +0,0,0,1.0,221.0,lburgazz...@apache.org,repository camel updated branch ref /heads/master headerselectorproducer support supplier header key default value project commit tree diff branch ref /heads/master commit parent author lburgazzoli authored fri apr committer lburgazzoli committed fri apr .../java/org/apache/camel/impl/headerselectorproducer.java file changed insertion deletion diff,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C9d2d740f77794180b53412948340828f%40git.apache.org%3E,2017-04-14 10:42:39,commits,221.0,camel git commit headerselectorproducer support supplier header key default value +1,1,1,2.0,322.0,davscl...@apache.org,repository camel updated branch ref /heads/master rename catalog runtimecatalog avoid clash package name camel -catalog. project commit tree diff branch ref /heads/master commit parent author claus ibsen authored fri apr committer claus ibsen committed fri apr platform /camel-catalog/pom.xml file changed insertion deletion diff,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Cde5de0a2e2ca40e6bcaa03835723a40e%40git.apache.org%3E,2017-04-14 10:52:55,commits,322.0,camel git commit rename catalog runtimecatalog avoid clash package name camel -catalog. +2,2,2,3.0,323.0,davscl...@apache.org,"diff --git /camel-core/src/test/java/org/apache/camel/runtimecatalog/abstractcamelcatalogtest.java b /camel-core/src/test/java/org/apache/camel/runtimecatalog/abstractcamelcatalogtest.java new file mode index /dev/null b /camel-core/src/test/java/org/apache/camel/runtimecatalog/abstractcamelcatalogtest.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .net.urisyntaxexception; +import java .util.hashmap; +import java .util.map; +import org .junit.before; +import org .junit.test; +import static org .easymock.easymock.expect; +import static org .easymock.easymock.mock; +import static org .easymock.easymock.replay; +import static org .junit.assert.assertequals; +public class abstractcamelcatalogtest abstractcamelcatalog catalog new abstractcamelcatalog jsonschemaresolver resolver @before public void setupmockcatalog resolver mock (jsonschemaresolver.class); catalog .setjsonschemaresolver(resolver); @test public void shouldconstructendpointuris throw urisyntaxexception expect (resolver.getcomponentjsonschema(""comp"")).andreturn(""{\n""// \""component\"": {\n""// \""syntax\"": }\n""// replay (resolver); final map component, componentproperties, properties. @param json json @return list row row set key value pair metadata public static list getnames (list answer new linkedhashset (); (map example using http component provide query parameter endpoint uri @param uri endpoint uri @return property key value pair lenient property map true valid false invalid boolean validatetimepattern (string pattern validates property given scheme component endpoint @param scheme endpoint scheme @param property endpoint property @return validation result endpointvalidationresult validateproperties (string scheme map option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties par validates endpoint uri construct key /value property option

option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @param consumeronly whether endpoint used consumer @param produceronly whether endpoint used producer @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties boolean consumeronly boolean produceronly par validates simple expression

important: requires camel-core classpath @param simple simple expression @return validation result @deprecated use {@link #validatesimpleexpression(classloader, string @deprecated simplevalidationresult validatesimpleexpression (string simple par validates simple expression

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple expression @return validation result simplevalidationresult validatesimpleexpression (classloader classloader string simple par validates simple predicate

important: requires camel-core classpath @param simple simple predicate @return validation result @deprecated use {@link #validatesimplepredicate(classloader, string @deprecated simplevalidationresult validatesimplepredicate (string simple par validates simple predicate

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple predicate @return validation result simplevalidationresult validatesimplepredicate (classloader classloader string simple par validates language predicate

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text predicate text @return validation result languagevalidationresult validatelanguagepredicate (classloader classloader string language string text par validates language expression

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text expression text @return validation result languagevalidationresult validatelanguageexpression (classloader classloader string language string text return component name given endpoint uri @param uri endpoint uri @return component name (aka scheme null possible determine string endpointcomponentname (string uri creates endpoint uri java style information property @param scheme endpoint schema @param property property key value pair @param encode whether url encode returned uri @return constructed endpoint uri @throws java .net.urisyntaxexception thrown encoding error string asendpointuri (string scheme map name string unknownoption diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/timepatternconverter.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/timepatternconverter.java new file mode index /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/timepatternconverter.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .util.regex.matcher; +import java .util.regex.pattern; class copy camel -core use independent validate uris time pattern +public final class timepatternconverter private static final pattern numbers_only_string_pattern pattern .compile(""^[-]?(\\d)+$"", pattern .case_insensitive); private static final pattern hour_regex_pattern pattern .compile(""((\\d)*(\\d))h(our(s)?)?"", pattern .case_insensitive); private static final pattern minutes_regex_pattern pattern .compile(""((\\d)*(\\d))m(in(ute(s)?)?)?"", pattern .case_insensitive); private static final pattern seconds_regex_pattern pattern .compile(""((\\d)*(\\d))s(ec(ond)?(s)?)?"", pattern .case_insensitive); utility class public constructor private timepatternconverter public static long tomilliseconds (string source throw illegalargumentexception long millisecond boolean foundflag false checkcorrectnessofpattern (source); matcher matcher matcher creatematcher (numbers_only_string_pattern, source (matcher.find()) note also used regular numeric string string long converter used string millisecond long .valueof(source); else matcher creatematcher (hour_regex_pattern, source (matcher.find()) millisecond millisecond long foundflag true matcher creatematcher (minutes_regex_pattern, source (matcher.find()) long minute long ((minutes foundflag throw new illegalargumentexception (""minutes contain valid value source foundflag true millisecond millisecond minute matcher creatematcher (seconds_regex_pattern, source (matcher.find()) long second long ((seconds foundflag throw new illegalargumentexception (""seconds contain valid value source foundflag true millisecond millisecond second pattern matched initiating fallback check conversion (if required source point may contain illegal value special character (!foundflag) millisecond long .valueof(source); return millisecond private static void checkcorrectnessofpattern (string source //replace number matcher matcher creatematcher (numbers_only_string_pattern, source string replacesource matcher .replacefirst(""""); //replace hour string matcher creatematcher (hour_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""hours specified source replacesource matcher .replacefirst(""""); //replace minute matcher creatematcher (minutes_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""minutes specified source replacesource matcher .replacefirst(""""); //replace second matcher creatematcher (seconds_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""seconds specified source replacesource matcher .replacefirst(""""); (replacesource.length() throw new illegalargumentexception (""illegal character source private static matcher creatematcher (pattern pattern string source return pattern .matcher(source); diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/urisupport.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/urisupport.java new file mode index /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/urisupport.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .io.unsupportedencodingexception; +import java .net.uri; +import java .net.urisyntaxexception; +import java .net.urldecoder; +import java .net.urlencoder; +import java .util.arraylist; +import java .util.iterator; +import java .util.linkedhashmap; +import java .util.list; +import java .util.map; copied org .apache.camel.util.urisupport +public final class urisupport public static final string raw_token_start ""raw(""; public static final string raw_token_end private static final string charset private urisupport helper class normalizes uri unsafe character encoded @param uri input uri @return uri instance @throws urisyntaxexception thrown syntax error input uri public static uri normalizeuri (string uri throw urisyntaxexception return new uri (unsafeuricharactersencoder.encode(uri, true public static map (properties.size()); (iterator return value -is starting prefix @param value value @param prefix prefix remove value @return value without prefix public static string stripprefix (string value string prefix (value null value .startswith(prefix)) return value .substring(prefix.length()); return value par query part uri (eg parameter

uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @param useraw whether force using raw value @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map list (existing instanceof list list (list) existing else create new list hold multiple value list new arraylist (); string existing null existing .tostring() null (s null list .add(s); list .add(value); map .put(name, list else map .put(name, value assembles query given map @param option map option (eg key /value pair @param ampersand use java code & xml @return query string empty string option @throws urisyntaxexception thrown uri invalid syntax public static string createquerystring (mapnull empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/unsafeuricharactersencoder.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/unsafeuricharactersencoder.java new file mode index /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/unsafeuricharactersencoder.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .util.arraylist; +import java .util.bitset; +import java .util.list; +import java .util.regex.matcher; +import java .util.regex.pattern; encoder unsafe uri character

good source detail article +public final class unsafeuricharactersencoder private static bitset private static bitset unsafecharactershttp private static final char hex_digits 'a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c', 'd', 'e', 'f'}; private static final pattern raw_pattern pattern .compile(""raw\\([^\\)]+\\)""); static new bitset .set(' .set('""'); .set('<'); .set('>'); .set('#'); .set('%'); .set('{'); .set('}'); .set('|'); .set('\\'); .set('^'); .set('~'); .set('['); .set(']'); .set('`'); static unsafecharactershttp new bitset unsafecharactershttp .set(' unsafecharactershttp .set('""'); unsafecharactershttp .set('<'); unsafecharactershttp .set('>'); unsafecharactershttp .set('#'); unsafecharactershttp .set('%'); unsafecharactershttp .set('{'); unsafecharactershttp .set('}'); unsafecharactershttp .set('|'); unsafecharactershttp .set('\\'); unsafecharactershttp .set('^'); unsafecharactershttp .set('~'); unsafecharactershttp .set('`'); private unsafeuricharactersencoder util class public static string encode (string return encode (s, public static string encodehttpuri (string return encode (s, unsafecharactershttp public static string encode (string bitset unsafecharacters return encode (s, unsafecharacters false public static string encode (string boolean checkraw return encode (s, checkraw public static string encodehttpuri (string boolean checkraw return encode (s, unsafecharactershttp checkraw private static list checkraw (string matcher matcher raw_pattern .matcher(s); list answer new arraylist (); check occurrence (matcher.find()) answer .add(new pair (matcher.start(), matcher .end())); return answer private static boolean israw (int index list pair (pair pair pair (index pair .left) return false else (index pair .left) (index pair .right) return true else continue return false private static class pair int left int right pair (int left int right .left left .right right skip encode israw part public static string encode (string bitset unsafecharacters boolean checkraw list rawpairs (checkraw) rawpairs checkraw (s); else rawpairs new arraylist (); int n null .length(); (n return first check whether actually need encode char char .tochararray(); (int deal ascii character (chars[i] char [i] (unsafecharacters.get(chars[i])) break (++i char .length) return okay unsafe character need encode see detail stringbuilder sb new stringbuilder (int char .length; char ch char [i]; (ch ch unsafecharacters .get(ch)) special sign may decimal encoded value (ch char next char .length char [i char char .length char [i (ishexdigit(next) ishexdigit !israw(i, rawpairs already encoded (decimal encoded append sb .append(ch); else must escape unsafe character appendescape (sb, (byte) ch else must escape unsafe character appendescape (sb, (byte) ch else sb .append(ch); return sb .tostring(); private static void appendescape (stringbuilder sb byte b sb .append('%'); sb .append(hex_digits[(b sb .append(hex_digits[(b private static boolean ishexdigit (char ch (char hex hex_digits (hex ch return true return false diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html b /camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html new file mode index /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license + + + + +runtime camel catalog + + diff --git /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java b /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java index /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java b /camel-core/src/main/java/org/apache/camel/util/endpointhelper.java import org .apache.camel.pollingconsumer; import org .apache.camel.processor; import org .apache.camel.resolveendpointfailedexception; import org .apache.camel.route; -import org .apache.camel.catalog.defaultruntimecamelcatalog; -import org .apache.camel.catalog.runtimecamelcatalog; +import org .apache.camel.runtimecatalog.defaultruntimecamelcatalog; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.browsableendpoint; import org import org public final class endpointhelper @param uri endpoint uri @return map option uri corresponding information json @throws exception thrown case error @deprecated use {@link org .apache.camel.catalog.runtimecamelcatalog#endpointproperties(string)} @deprecated use {@link org .apache.camel.runtimecatalog.runtimecamelcatalog#endpointproperties(string)} @deprecated public static map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!multivalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!multivalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!multivalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!multivalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!mulitvalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!mulitvalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!mulitvalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!mulitvalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map word new arraylist (); (matcher.find()) string matcher (!scheme.equals(s)) word .add(s); parse syntax find token option string token syntax_pattern .split(syntax); find position option start /end list new arraylist (); int prev int prevpath special activemq /jms enum destinationtype cause token issue includes colon 'temp:queue' 'temp:topic' value (""activemq"".equals(scheme) ""jms"".equals(scheme)) (uripath.startswith(""temp:"")) prevpath (string token token (token.isempty()) continue special token used also eg int idx int len ("":"".equals(token)) idx uripath .indexof(""://"", prevpath len (idx idx uripath .indexof(token, prevpath len token .length(); (idx string option uripath .substring(prev, idx .add(option); prev idx len prevpath prev special last add anyone (prev .isempty()) string option uripath .substring(prev); .add(option); row jsonschemahelper .parsejsonschema(""properties"", json true boolean defaultvalueadded false parse uri know part isw map .iterator(); (int word .size(); string key word .get(i); boolean alloptions word .size() .size(); boolean required ispropertyrequired (rows, key string defaultvalue getpropertydefaultvalue (rows, key option problem (alloptions) string value .next(); option .put(key, value else little problem option (!required) string value null boolean last word .size() (last) last value use instead default value value .hasnext() .next() null (value null option .put(key, value else value defaultvalue (value null option .put(key, value defaultvalueadded true else string value .hasnext() .next() null (value null option .put(key, value map name getnames (rows); map option new arraylist (); (matcher.find()) string matcher option .add(s); need preserve syntax (we need use word provisional placeholder syntax syntax .replaceall(""\\{\\{"", ""begincamelplaceholder""); syntax syntax .replaceall(""\\}\\}"", ""endcamelplaceholder""); parse syntax option matcher syntax_pattern .matcher(syntax); list new arraylist (); string .replaceall(""begincamelplaceholder"", .replaceall(""endcamelplaceholder"", .add(s); build endpoint int range boolean first true boolean hasquestionmark false (int option .size(); string key option .get(i); string .get(i); string token null (tokens.length token token [i]; boolean contains property .containskey(key); (!contains) key similar explicit value try find default value option required (ispropertyrequired(rows, key string value getpropertydefaultvalue (rows, key (value null property .put(key, value value option provided (properties.containskey(key)) (!first token null sb .append(token); hasquestionmark key .contains(""?"") (token null token .contains(""?"")); sb first false range append extra option surplus last (range .size()) string token null (tokens.length range token token [range]; string .get(range); sb .append(token); sb hasquestionmark .contains(""?"") (token null token .contains(""?"")); range (!copy.isempty()) last option may already contain char use instead sb .append(hasquestionmark ampersand string query createquerystring (copy, ampersand encode sb .append(query); return sb .tostring(); @deprecated private static string syntaxtokens (string syntax build token word list token new arraylist preserve backwards behavior empty token first token .add(""""); string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) reset new current token (current.length() token .add(current); current else current ch anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); private static string syntaxkeys (string syntax build token separator list token new arraylist string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) current ch else reset new current token (current.length() token .add(current); current anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); public simplevalidationresult validatesimpleexpression (string simple return dovalidatesimple (null, simple false public simplevalidationresult validatesimpleexpression (classloader classloader string simple return dovalidatesimple (classloader, simple false public simplevalidationresult validatesimplepredicate (string simple return dovalidatesimple (null, simple true public simplevalidationresult validatesimplepredicate (classloader classloader string simple return dovalidatesimple (classloader, simple true private simplevalidationresult dovalidatesimple (classloader classloader string simple boolean predicate (classloader null classloader getclass ().getclassloader(); property placeholder need resolve something else simple parse cannot resolve parsing dont run actual camel application property placeholder setup need dummy replace something else therefore use unlikely character {{xxx}} ~^xxx^~ string resolved simple .replaceall(""\\{\\{(.+)\\}\\}"", simplevalidationresult answer new simplevalidationresult (simple); object instance null class clazz null try clazz classloader .loadclass(""org.apache.camel.language.simple.simplelanguage""); instance clazz .newinstance(); catch (exception e ignore (clazz null instance null throwable cause null try (predicate) instance .getclass().getmethod(""createpredicate"", string .class).invoke(instance, resolved else instance .getclass().getmethod(""createexpression"", string .class).invoke(instance, resolved catch (invocationtargetexception e cause e .gettargetexception(); catch (exception e cause e (cause null reverse ~^xxx^~ back {{xxx}} string errmsg cause .getmessage(); errmsg errmsg .replaceall(""\\~\\^(.+)\\^\\~"", answer .seterror(errmsg); simple parser exception grab index problem (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"") cause .getclass().getname().equals(""org.apache.camel.language.simple.types.simpleparserexception"")) try need grab index field simple parser exception method method cause .getclass().getmethod(""getindex""); object result method .invoke(cause); (result null int index (int) result answer .setindex(index); catch (throwable ignore need grab short message field simple syntax exception (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"")) try method method cause .getclass().getmethod(""getshortmessage""); object result method .invoke(cause); (result null string msg (string) result answer .setshorterror(msg); catch (throwable ignore (answer.getshorterror() null fallback try make existing message short instead string msg answer .geterror(); grab everything location would regarded short message int idx msg .indexof("" location (idx msg msg idx answer .setshorterror(msg); return answer public languagevalidationresult validatelanguagepredicate (classloader classloader string language string text return dovalidatelanguage (classloader, language text true public languagevalidationresult validatelanguageexpression (classloader classloader string language string text return dovalidatelanguage (classloader, language text false private languagevalidationresult dovalidatelanguage (classloader classloader string language string text boolean predicate (classloader null classloader getclass ().getclassloader(); simplevalidationresult answer new simplevalidationresult (text); string json jsonschemaresolver .getlanguagejsonschema(language); (json null answer .seterror(""unknown language language return answer list notice: implementation appends \n line terminator text

warning 't use crazy big stream public static void loadlines (inputstream list line throw ioexception try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null line .add(line); load entire stream memory string return

notice: implementation appends \n line terminator text

warning 't use crazy big stream public static string loadtext (inputstream throw ioexception stringbuilder builder new stringbuilder try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null builder .append(line); builder .append(""\n""); return builder .tostring(); match name pattern @param name name @param pattern pattern @return true matched false public static boolean matchwildcard (string name string pattern wildcard support hence match file match file endpoint (pattern.endswith(""*"") name pattern .length() return true return false return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(after)) return null return text .substring(text.indexof(after) .length()); return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(before)) return null return text text .indexof(before)); return string given token @param text text @param token @param token @return text token null text contain token public static string (string text string string text (text, (text null return null return (text, test whether value null empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true remove leading ending quote (single double string @param string @return string without leading ending quote (single double public static string removeleadingandendingquotes (string (isempty(s)) return string copy .trim(); (copy.startswith(""'"") copy .endswith(""'"")) return copy copy .length() (copy.startswith(""\"""") copy .endswith(""\"""")) return copy copy .length() quote return -is return diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/collectionstringbuffer.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/collectionstringbuffer.java new file mode index /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/collectionstringbuffer.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +public class collectionstringbuffer private final stringbuilder buffer new stringbuilder private string separator private boolean first true public collectionstringbuffer public collectionstringbuffer (string separator .separator separator @override public string tostring return buffer .tostring(); public void append (object value (first) first false else buffer .append(separator); buffer .append(value); public string getseparator return separator public void setseparator (string separator .separator separator public boolean isempty return first diff --git /camel-core/src/main/java/org/apache/camel/runtimecatalog/defaultruntimecamelcatalog.java b /camel-core/src/main/java/org/apache/camel/runtimecatalog/defaultruntimecamelcatalog.java new file mode index /dev/null b /camel-core/src/main/java/org/apache/camel/runtimecatalog/defaultruntimecamelcatalog.java licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license +package org .apache.camel.runtimecatalog; +import java .util.hashmap; +import java .util.map; +import org .apache.camel.camelcontext; default {@link runtimecamelcatalog +public class defaultruntimecamelcatalog extends abstractcamelcatalog implement runtimecamelcatalog cache operation result private final map unknown private map lenient private set notconsumeronly private set notproduceronly private set required private map (); (!unknown.contains(name)) unknown .add(name); error public void addunknownsuggestions (string name string suggestion (unknownsuggestions null unknownsuggestions new linkedhashmap (); (!lenient.contains(name)) lenient .add(name); public void addrequired (string name (required null required new linkedhashset (); (!required.contains(name)) required .add(name); error public void addinvalidenum (string name string value (invalidenum null invalidenum new linkedhashmap (); (!notconsumeronly.contains(name)) notconsumeronly .add(name); error public void addnotproduceronly (string name (notproduceronly null notproduceronly new linkedhashset (); (!notproduceronly.contains(name)) notproduceronly .add(name); error public string getsyntaxerror return syntaxerror public string getincapable return incapable public set getunknown return unknown public set getlenient return lenient public map getrequired return required public map getenumchoices (string optionname (invalidenumchoices null string enums invalidenumchoices .get(optionname); (enums null return array .aslist(enums); return collection .emptylist(); public map getnotconsumeronly return notconsumeronly public set getnotproduceronly return notproduceronly human readable summary validation error @param includeheader whether include header @return summary null validation error public string summaryerrormessage (boolean includeheader (issuccess()) return null (incapable null return ""\tincapable parsing uri incapable else (syntaxerror null return ""\tsyntax error syntaxerror else (unknowncomponent null return ""\tunknown component unknowncomponent invalid option build reason message map component, componentproperties, properties. @param json json @return list row row set key value pair metadata public static list getnames (list answer new linkedhashset (); (map example using http component provide query parameter endpoint uri @param uri endpoint uri @return property key value pair lenient property map true valid false invalid boolean validatetimepattern (string pattern validates property given scheme component endpoint @param scheme endpoint scheme @param property endpoint property @return validation result endpointvalidationresult validateproperties (string scheme map option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties par validates endpoint uri construct key /value property option

option ignorelenientproperties used ignore component us lenient property true uri validation stricter would fail property part component uri using lenient property example using http component provide query parameter endpoint uri @param uri endpoint uri @param ignorelenientproperties whether ignore component us lenient property @param consumeronly whether endpoint used consumer @param produceronly whether endpoint used producer @return validation result endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties boolean consumeronly boolean produceronly par validates simple expression

important: requires camel-core classpath @param simple simple expression @return validation result @deprecated use {@link #validatesimpleexpression(classloader, string @deprecated simplevalidationresult validatesimpleexpression (string simple par validates simple expression

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple expression @return validation result simplevalidationresult validatesimpleexpression (classloader classloader string simple par validates simple predicate

important: requires camel-core classpath @param simple simple predicate @return validation result @deprecated use {@link #validatesimplepredicate(classloader, string @deprecated simplevalidationresult validatesimplepredicate (string simple par validates simple predicate

important: requires camel-core classpath @param classloader custom classloader use loading language classpath null using default classloader @param simple simple predicate @return validation result simplevalidationresult validatesimplepredicate (classloader classloader string simple par validates language predicate

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text predicate text @return validation result languagevalidationresult validatelanguagepredicate (classloader classloader string language string text par validates language expression

important: requires camel-core language dependency classpath @param classloader custom classloader use loading language classpath null using default classloader @param language name language @param text expression text @return validation result languagevalidationresult validatelanguageexpression (classloader classloader string language string text return component name given endpoint uri @param uri endpoint uri @return component name (aka scheme null possible determine string endpointcomponentname (string uri creates endpoint uri java style information property @param scheme endpoint schema @param property property key value pair @param encode whether url encode returned uri @return constructed endpoint uri @throws java .net.urisyntaxexception thrown encoding error string asendpointuri (string scheme map name string unknownoption diff --git /camel-core/src/main/java/org/apache/camel/catalog/timepatternconverter.java b /camel-core/src/main/java/org/apache/camel/catalog/timepatternconverter.java deleted file mode index /camel-core/src/main/java/org/apache/camel/catalog/timepatternconverter.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .util.regex.matcher; -import java .util.regex.pattern; class copy camel -core use independent validate uris time pattern -public final class timepatternconverter private static final pattern numbers_only_string_pattern pattern .compile(""^[-]?(\\d)+$"", pattern .case_insensitive); private static final pattern hour_regex_pattern pattern .compile(""((\\d)*(\\d))h(our(s)?)?"", pattern .case_insensitive); private static final pattern minutes_regex_pattern pattern .compile(""((\\d)*(\\d))m(in(ute(s)?)?)?"", pattern .case_insensitive); private static final pattern seconds_regex_pattern pattern .compile(""((\\d)*(\\d))s(ec(ond)?(s)?)?"", pattern .case_insensitive); utility class public constructor private timepatternconverter public static long tomilliseconds (string source throw illegalargumentexception long millisecond boolean foundflag false checkcorrectnessofpattern (source); matcher matcher matcher creatematcher (numbers_only_string_pattern, source (matcher.find()) note also used regular numeric string string long converter used string millisecond long .valueof(source); else matcher creatematcher (hour_regex_pattern, source (matcher.find()) millisecond millisecond long foundflag true matcher creatematcher (minutes_regex_pattern, source (matcher.find()) long minute long ((minutes foundflag throw new illegalargumentexception (""minutes contain valid value source foundflag true millisecond millisecond minute matcher creatematcher (seconds_regex_pattern, source (matcher.find()) long second long ((seconds foundflag throw new illegalargumentexception (""seconds contain valid value source foundflag true millisecond millisecond second pattern matched initiating fallback check conversion (if required source point may contain illegal value special character (!foundflag) millisecond long .valueof(source); return millisecond private static void checkcorrectnessofpattern (string source //replace number matcher matcher creatematcher (numbers_only_string_pattern, source string replacesource matcher .replacefirst(""""); //replace hour string matcher creatematcher (hour_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""hours specified source replacesource matcher .replacefirst(""""); //replace minute matcher creatematcher (minutes_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""minutes specified source replacesource matcher .replacefirst(""""); //replace second matcher creatematcher (seconds_regex_pattern, replacesource (matcher.find() matcher .find()) throw new illegalargumentexception (""seconds specified source replacesource matcher .replacefirst(""""); (replacesource.length() throw new illegalargumentexception (""illegal character source private static matcher creatematcher (pattern pattern string source return pattern .matcher(source); diff --git /camel-core/src/main/java/org/apache/camel/catalog/urisupport.java b /camel-core/src/main/java/org/apache/camel/catalog/urisupport.java deleted file mode index /camel-core/src/main/java/org/apache/camel/catalog/urisupport.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .io.unsupportedencodingexception; -import java .net.uri; -import java .net.urisyntaxexception; -import java .net.urldecoder; -import java .net.urlencoder; -import java .util.arraylist; -import java .util.iterator; -import java .util.linkedhashmap; -import java .util.list; -import java .util.map; copied org .apache.camel.util.urisupport -public final class urisupport public static final string raw_token_start ""raw(""; public static final string raw_token_end private static final string charset private urisupport helper class normalizes uri unsafe character encoded @param uri input uri @return uri instance @throws urisyntaxexception thrown syntax error input uri public static uri normalizeuri (string uri throw urisyntaxexception return new uri (unsafeuricharactersencoder.encode(uri, true public static map (properties.size()); (iterator return value -is starting prefix @param value value @param prefix prefix remove value @return value without prefix public static string stripprefix (string value string prefix (value null value .startswith(prefix)) return value .substring(prefix.length()); return value par query part uri (eg parameter

uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map uri parameter default uri encoded however define parameter value syntax key=raw(value) tell camel encode value use value (eg key =value) value not encoded @param uri uri @param useraw whether force using raw value @return parameter empty map parameter (eg never null @throws urisyntaxexception thrown uri invalid syntax @see #raw_token_start @see #raw_token_end public static map list (existing instanceof list list (list) existing else create new list hold multiple value list new arraylist (); string existing null existing .tostring() null (s null list .add(s); list .add(value); map .put(name, list else map .put(name, value assembles query given map @param option map option (eg key /value pair @param ampersand use java code & xml @return query string empty string option @throws urisyntaxexception thrown uri invalid syntax public static string createquerystring (mapnull empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true diff --git /camel-core/src/main/java/org/apache/camel/catalog/unsafeuricharactersencoder.java b /camel-core/src/main/java/org/apache/camel/catalog/unsafeuricharactersencoder.java deleted file mode index /camel-core/src/main/java/org/apache/camel/catalog/unsafeuricharactersencoder.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .util.arraylist; -import java .util.bitset; -import java .util.list; -import java .util.regex.matcher; -import java .util.regex.pattern; encoder unsafe uri character

good source detail article -public final class unsafeuricharactersencoder private static bitset private static bitset unsafecharactershttp private static final char hex_digits 'a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c', 'd', 'e', 'f'}; private static final pattern raw_pattern pattern .compile(""raw\\([^\\)]+\\)""); static new bitset .set(' .set('""'); .set('<'); .set('>'); .set('#'); .set('%'); .set('{'); .set('}'); .set('|'); .set('\\'); .set('^'); .set('~'); .set('['); .set(']'); .set('`'); static unsafecharactershttp new bitset unsafecharactershttp .set(' unsafecharactershttp .set('""'); unsafecharactershttp .set('<'); unsafecharactershttp .set('>'); unsafecharactershttp .set('#'); unsafecharactershttp .set('%'); unsafecharactershttp .set('{'); unsafecharactershttp .set('}'); unsafecharactershttp .set('|'); unsafecharactershttp .set('\\'); unsafecharactershttp .set('^'); unsafecharactershttp .set('~'); unsafecharactershttp .set('`'); private unsafeuricharactersencoder util class public static string encode (string return encode (s, public static string encodehttpuri (string return encode (s, unsafecharactershttp public static string encode (string bitset unsafecharacters return encode (s, unsafecharacters false public static string encode (string boolean checkraw return encode (s, checkraw public static string encodehttpuri (string boolean checkraw return encode (s, unsafecharactershttp checkraw private static list checkraw (string matcher matcher raw_pattern .matcher(s); list answer new arraylist (); check occurrence (matcher.find()) answer .add(new pair (matcher.start(), matcher .end())); return answer private static boolean israw (int index list pair (pair pair pair (index pair .left) return false else (index pair .left) (index pair .right) return true else continue return false private static class pair int left int right pair (int left int right .left left .right right skip encode israw part public static string encode (string bitset unsafecharacters boolean checkraw list rawpairs (checkraw) rawpairs checkraw (s); else rawpairs new arraylist (); int n null .length(); (n return first check whether actually need encode char char .tochararray(); (int deal ascii character (chars[i] char [i] (unsafecharacters.get(chars[i])) break (++i char .length) return okay unsafe character need encode see detail stringbuilder sb new stringbuilder (int char .length; char ch char [i]; (ch ch unsafecharacters .get(ch)) special sign may decimal encoded value (ch char next char .length char [i char char .length char [i (ishexdigit(next) ishexdigit !israw(i, rawpairs already encoded (decimal encoded append sb .append(ch); else must escape unsafe character appendescape (sb, (byte) ch else must escape unsafe character appendescape (sb, (byte) ch else sb .append(ch); return sb .tostring(); private static void appendescape (stringbuilder sb byte b sb .append('%'); sb .append(hex_digits[(b sb .append(hex_digits[(b private static boolean ishexdigit (char ch (char hex hex_digits (hex ch return true return false diff --git /camel-core/src/main/java/org/apache/camel/catalog/package.html b /camel-core/src/main/java/org/apache/camel/catalog/package.html deleted file mode index /camel-core/src/main/java/org/apache/camel/catalog/package.html /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license - - - - -camel catalog - - diff --git /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java index /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/component/rest/restcomponentverifier.java import java .util.map; import org .apache.camel.component; import org .apache.camel.componentverifier; import org .apache.camel.verifiablecomponent; -import org .apache.camel.catalog.jsonschemahelper; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.impl.verifier.catalogverifiercustomizer; import org .apache.camel.impl.verifier.defaultcomponentverifier; import org .apache.camel.impl.verifier.resultbuilder; import org .apache.camel.impl.verifier.resulterrorbuilder; +import org .apache.camel.runtimecatalog.jsonschemahelper; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.restconsumerfactory; import org .apache.camel.spi.restproducerfactory; import org .apache.camel.util.objecthelper; diff --git /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java b /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java index /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java b /camel-core/src/main/java/org/apache/camel/impl/defaultcamelcontext.java import java .util.collections; import java .util.comparator; import java .util.date; import java .util.hashmap; -import java .util.hashset; import java .util.iterator; import java .util.linkedhashmap; import java .util.linkedhashset; import org .apache.camel.api.management.mbean.managedroutembean; import org .apache.camel.builder.defaultfluentproducertemplate; import org .apache.camel.builder.errorhandlerbuilder; import org .apache.camel.builder.errorhandlerbuildersupport; -import org .apache.camel.catalog.defaultruntimecamelcatalog; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.component.properties.propertiescomponent; import org .apache.camel.impl.converter.basetypeconverterregistry; import org .apache.camel.impl.converter.defaulttypeconverter; import org .apache.camel.processor.interceptor.delayer; import org .apache.camel.processor.interceptor.handlefault; import org .apache.camel.processor.interceptor.streamcaching; import org .apache.camel.processor.interceptor.tracer; +import org .apache.camel.runtimecatalog.defaultruntimecamelcatalog; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.asyncprocessorawaitmanager; import org .apache.camel.spi.camelcontextnamestrategy; import org .apache.camel.spi.classresolver; diff --git /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java index /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java b /camel-core/src/main/java/org/apache/camel/impl/verifier/defaultcomponentverifier.java import org .apache.camel.camelcontext; import org .apache.camel.componentverifier; import org .apache.camel.nosuchoptionexception; import org .apache.camel.typeconverter; -import org .apache.camel.catalog.endpointvalidationresult; -import org .apache.camel.catalog.runtimecamelcatalog; +import org .apache.camel.runtimecatalog.endpointvalidationresult; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.util.camelcontexthelper; import org .apache.camel.util.endpointhelper; import org .apache.camel.util.introspectionsupport; diff --git /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java b /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java index /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java b /camel-core/src/main/java/org/apache/camel/management/defaultmanagementlifecyclestrategy.java import org .apache.camel.startuplistener; import org .apache.camel.timerlistener; import org .apache.camel.vetocamelcontextstartexception; import org .apache.camel.api.management.performancecounter; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.impl.consumercache; import org .apache.camel.impl.defaultcamelcontext; import org .apache.camel.impl.defaultendpointregistry; -import org .apache.camel.impl.defaulttransformerregistry; -import org .apache.camel.impl.defaultvalidatorregistry; import org .apache.camel.impl.eventdrivenconsumerroute; import org .apache.camel.impl.producercache; import org .apache.camel.impl.throttlingexceptionroutepolicy; import org .apache.camel.processor.camelinternalprocessor; import org .apache.camel.processor.interceptor.backlogdebugger; import org .apache.camel.processor.interceptor.backlogtracer; import org .apache.camel.processor.interceptor.tracer; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.asyncprocessorawaitmanager; import org .apache.camel.spi.dataformat; import org .apache.camel.spi.eventnotifier; diff",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C6a3e7fae5cba4f918aede10c3ae6ef26%40git.apache.org%3E,2017-04-14 10:52:59,commits,326.0,camel git commit rename catalog runtimecatalog avoid clash package name camel -catalog. +6,6,6,7.0,327.0,davscl...@apache.org,"rename catalog runtimecatalog avoid clash package name camel -catalog. project commit tree diff branch ref /heads/master commit parent author claus ibsen authored fri apr committer claus ibsen committed fri apr .../java/org/apache/camel/camelcontext.java .../camel/catalog/abstractcamelcatalog.java .../catalog/camelcontextjsonschemaresolver.java .../org/apache/camel/catalog/cataloghelper.java .../camel/catalog/collectionstringbuffer.java .../catalog/defaultruntimecamelcatalog.java .../camel/catalog/endpointvalidationresult.java .../apache/camel/catalog/jsonschemahelper.java .../camel/catalog/jsonschemaresolver.java .../camel/catalog/languagevalidationresult.java .../camel/catalog/runtimecamelcatalog.java .../camel/catalog/simplevalidationresult.java .../camel/catalog/suggestionstrategy.java .../camel/catalog/timepatternconverter.java .../org/apache/camel/catalog/urisupport.java .../catalog/unsafeuricharactersencoder.java .../java/org/apache/camel/catalog/package.html .../component/rest/restcomponentverifier.java .../apache/camel/impl/defaultcamelcontext.java .../impl/verifier/defaultcomponentverifier.java .../defaultmanagementlifecyclestrategy.java .../mbean/managedruntimecamelcatalog.java .../runtimecatalog/abstractcamelcatalog.java .../camelcontextjsonschemaresolver.java .../camel/runtimecatalog/cataloghelper.java .../runtimecatalog/collectionstringbuffer.java .../defaultruntimecamelcatalog.java .../endpointvalidationresult.java .../camel/runtimecatalog/jsonschemahelper.java .../runtimecatalog/jsonschemaresolver.java .../languagevalidationresult.java .../runtimecatalog/runtimecamelcatalog.java .../runtimecatalog/simplevalidationresult.java .../runtimecatalog/suggestionstrategy.java .../runtimecatalog/timepatternconverter.java .../apache/camel/runtimecatalog/urisupport.java .../unsafeuricharactersencoder.java .../apache/camel/runtimecatalog/package.html .../org/apache/camel/util/endpointhelper.java .../camel/catalog/abstractcamelcatalogtest.java .../camel/catalog/runtimecamelcatalogtest.java .../abstractcamelcatalogtest.java .../runtimecatalog/runtimecamelcatalogtest.java file changed insertion deletion diff --git /camel-core/src/main/java/org/apache/camel/camelcontext.java b /camel-core/src/main/java/org/apache/camel/camelcontext.java index /camel-core/src/main/java/org/apache/camel/camelcontext.java b /camel-core/src/main/java/org/apache/camel/camelcontext.java import org .apache.camel.api.management.mbean.managedcamelcontextmbean; import org .apache.camel.api.management.mbean.managedprocessormbean; import org .apache.camel.api.management.mbean.managedroutembean; import org .apache.camel.builder.errorhandlerbuilder; -import org .apache.camel.catalog.runtimecamelcatalog; import org .apache.camel.model.dataformatdefinition; import org .apache.camel.model.hystrixconfigurationdefinition; import org .apache.camel.model.processordefinition; import org .apache.camel.model.rest.restdefinition; import org .apache.camel.model.rest.restsdefinition; import org .apache.camel.model.transformer.transformerdefinition; import org .apache.camel.model.validator.validatordefinition; +import org .apache.camel.runtimecatalog.runtimecamelcatalog; import org .apache.camel.spi.asyncprocessorawaitmanager; import org .apache.camel.spi.camelcontextnamestrategy; import org .apache.camel.spi.classresolver; diff --git /camel-core/src/main/java/org/apache/camel/catalog/abstractcamelcatalog.java b /camel-core/src/main/java/org/apache/camel/catalog/abstractcamelcatalog.java deleted file mode index /camel-core/src/main/java/org/apache/camel/catalog/abstractcamelcatalog.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -import java .lang.reflect.invocationtargetexception; -import java .lang.reflect.method; -import java .net.uri; -import java .net.urisyntaxexception; -import java .util.arraylist; -import java .util.arrays; -import java .util.hashmap; -import java .util.iterator; -import java .util.linkedhashmap; -import java .util.linkedhashset; -import java .util.list; -import java .util.map; -import java .util.objects; -import java .util.set; -import java .util.treemap; -import java .util.regex.matcher; -import java .util.regex.pattern; -import static org .apache.camel.catalog.cataloghelper.after; -import static org .apache.camel.catalog.jsonschemahelper.getnames; -import static org .apache.camel.catalog.jsonschemahelper.getpropertydefaultvalue; -import static org .apache.camel.catalog.jsonschemahelper.getpropertyenum; -import static org .apache.camel.catalog.jsonschemahelper.getpropertykind; -import static org .apache.camel.catalog.jsonschemahelper.getpropertynamefromnamewithprefix; -import static org .apache.camel.catalog.jsonschemahelper.getpropertyprefix; -import static org .apache.camel.catalog.jsonschemahelper.getrow; -import static org .apache.camel.catalog.jsonschemahelper.iscomponentconsumeronly; -import static org .apache.camel.catalog.jsonschemahelper.iscomponentlenientproperties; -import static org .apache.camel.catalog.jsonschemahelper.iscomponentproduceronly; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyboolean; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyconsumeronly; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyinteger; -import static org .apache.camel.catalog.jsonschemahelper.ispropertymultivalue; -import static org .apache.camel.catalog.jsonschemahelper.ispropertynumber; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyobject; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyproduceronly; -import static org .apache.camel.catalog.jsonschemahelper.ispropertyrequired; -import static org .apache.camel.catalog.jsonschemahelper.stripoptionalprefixfromname; -import static org .apache.camel.catalog.urisupport.createquerystring; -import static org .apache.camel.catalog.urisupport.isempty; -import static org .apache.camel.catalog.urisupport.normalizeuri; -import static org .apache.camel.catalog.urisupport.stripquery; base class runtime runtimecamelcatalog camel -core complete camelcatalog camel -catalog. -public abstract class abstractcamelcatalog checkstyle :off private static final pattern syntax_pattern pattern .compile(""(\\w+)""); private suggestionstrategy suggestionstrategy private jsonschemaresolver jsonschemaresolver public suggestionstrategy getsuggestionstrategy return suggestionstrategy public void setsuggestionstrategy (suggestionstrategy suggestionstrategy .suggestionstrategy suggestionstrategy public jsonschemaresolver getjsonschemaresolver return jsonschemaresolver public void setjsonschemaresolver (jsonschemaresolver resolver .jsonschemaresolver resolver public boolean validatetimepattern (string pattern return validateinteger (pattern); public endpointvalidationresult validateendpointproperties (string uri return validateendpointproperties (uri, false false false public endpointvalidationresult validateendpointproperties (string uri boolean ignorelenientproperties return validateendpointproperties (uri, ignorelenientproperties false false public endpointvalidationresult validateproperties (string scheme map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!multivalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!multivalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!multivalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!multivalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map name new linkedhashset name .addall(arrays.aslist(choices)); string suggestion suggestionstrategy .suggestendpointoptions(names, value (suggestions null result .addinvalidenumsuggestions(name, suggestion reference lookup bean (not applicable @uripath, enums multi -valued) (!mulitvalue enums null !""path"".equals(kind) ispropertyobject (rows, name must start least character (!value.startswith(""#"") value .length() result .addinvalidreference(name, value boolean (!mulitvalue !valueplaceholder !lookup ispropertyboolean (rows, name value must boolean boolean bool ""true"".equalsignorecase(value) ""false"".equalsignorecase(value); (!bool) result .addinvalidboolean(name, value integer (!mulitvalue !valueplaceholder !lookup ispropertyinteger (rows, name value must integer boolean valid validateinteger (value); (!valid) result .addinvalidinteger(name, value number (!mulitvalue !valueplaceholder !lookup ispropertynumber (rows, name value must number boolean valid false try valid !double.valueof(value).isnan() !float.valueof(value).isnan(); catch (exception e ignore (!valid) result .addinvalidnumber(name, value check required value default value exists (map word new arraylist (); (matcher.find()) string matcher (!scheme.equals(s)) word .add(s); parse syntax find token option string token syntax_pattern .split(syntax); find position option start /end list new arraylist (); int prev int prevpath special activemq /jms enum destinationtype cause token issue includes colon 'temp:queue' 'temp:topic' value (""activemq"".equals(scheme) ""jms"".equals(scheme)) (uripath.startswith(""temp:"")) prevpath (string token token (token.isempty()) continue special token used also eg int idx int len ("":"".equals(token)) idx uripath .indexof(""://"", prevpath len (idx idx uripath .indexof(token, prevpath len token .length(); (idx string option uripath .substring(prev, idx .add(option); prev idx len prevpath prev special last add anyone (prev .isempty()) string option uripath .substring(prev); .add(option); row jsonschemahelper .parsejsonschema(""properties"", json true boolean defaultvalueadded false parse uri know part isw map .iterator(); (int word .size(); string key word .get(i); boolean alloptions word .size() .size(); boolean required ispropertyrequired (rows, key string defaultvalue getpropertydefaultvalue (rows, key option problem (alloptions) string value .next(); option .put(key, value else little problem option (!required) string value null boolean last word .size() (last) last value use instead default value value .hasnext() .next() null (value null option .put(key, value else value defaultvalue (value null option .put(key, value defaultvalueadded true else string value .hasnext() .next() null (value null option .put(key, value map name getnames (rows); map option new arraylist (); (matcher.find()) string matcher option .add(s); need preserve syntax (we need use word provisional placeholder syntax syntax .replaceall(""\\{\\{"", ""begincamelplaceholder""); syntax syntax .replaceall(""\\}\\}"", ""endcamelplaceholder""); parse syntax option matcher syntax_pattern .matcher(syntax); list new arraylist (); string .replaceall(""begincamelplaceholder"", .replaceall(""endcamelplaceholder"", .add(s); build endpoint int range boolean first true boolean hasquestionmark false (int option .size(); string key option .get(i); string .get(i); string token null (tokens.length token token [i]; boolean contains property .containskey(key); (!contains) key similar explicit value try find default value option required (ispropertyrequired(rows, key string value getpropertydefaultvalue (rows, key (value null property .put(key, value value option provided (properties.containskey(key)) (!first token null sb .append(token); hasquestionmark key .contains(""?"") (token null token .contains(""?"")); sb first false range append extra option surplus last (range .size()) string token null (tokens.length range token token [range]; string .get(range); sb .append(token); sb hasquestionmark .contains(""?"") (token null token .contains(""?"")); range (!copy.isempty()) last option may already contain char use instead sb .append(hasquestionmark ampersand string query createquerystring (copy, ampersand encode sb .append(query); return sb .tostring(); @deprecated private static string syntaxtokens (string syntax build token word list token new arraylist preserve backwards behavior empty token first token .add(""""); string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) reset new current token (current.length() token .add(current); current else current ch anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); private static string syntaxkeys (string syntax build token separator list token new arraylist string current (int syntax .length(); char ch syntax .charat(i); (character.isletterordigit(ch)) current ch else reset new current token (current.length() token .add(current); current anything left (current.length() token .add(current); return token .toarray(new string [tokens.size()]); public simplevalidationresult validatesimpleexpression (string simple return dovalidatesimple (null, simple false public simplevalidationresult validatesimpleexpression (classloader classloader string simple return dovalidatesimple (classloader, simple false public simplevalidationresult validatesimplepredicate (string simple return dovalidatesimple (null, simple true public simplevalidationresult validatesimplepredicate (classloader classloader string simple return dovalidatesimple (classloader, simple true private simplevalidationresult dovalidatesimple (classloader classloader string simple boolean predicate (classloader null classloader getclass ().getclassloader(); property placeholder need resolve something else simple parse cannot resolve parsing dont run actual camel application property placeholder setup need dummy replace something else therefore use unlikely character {{xxx}} ~^xxx^~ string resolved simple .replaceall(""\\{\\{(.+)\\}\\}"", simplevalidationresult answer new simplevalidationresult (simple); object instance null class clazz null try clazz classloader .loadclass(""org.apache.camel.language.simple.simplelanguage""); instance clazz .newinstance(); catch (exception e ignore (clazz null instance null throwable cause null try (predicate) instance .getclass().getmethod(""createpredicate"", string .class).invoke(instance, resolved else instance .getclass().getmethod(""createexpression"", string .class).invoke(instance, resolved catch (invocationtargetexception e cause e .gettargetexception(); catch (exception e cause e (cause null reverse ~^xxx^~ back {{xxx}} string errmsg cause .getmessage(); errmsg errmsg .replaceall(""\\~\\^(.+)\\^\\~"", answer .seterror(errmsg); simple parser exception grab index problem (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"") cause .getclass().getname().equals(""org.apache.camel.language.simple.types.simpleparserexception"")) try need grab index field simple parser exception method method cause .getclass().getmethod(""getindex""); object result method .invoke(cause); (result null int index (int) result answer .setindex(index); catch (throwable ignore need grab short message field simple syntax exception (cause.getclass().getname().equals(""org.apache.camel.language.simple.types.simpleillegalsyntaxexception"")) try method method cause .getclass().getmethod(""getshortmessage""); object result method .invoke(cause); (result null string msg (string) result answer .setshorterror(msg); catch (throwable ignore (answer.getshorterror() null fallback try make existing message short instead string msg answer .geterror(); grab everything location would regarded short message int idx msg .indexof("" location (idx msg msg idx answer .setshorterror(msg); return answer public languagevalidationresult validatelanguagepredicate (classloader classloader string language string text return dovalidatelanguage (classloader, language text true public languagevalidationresult validatelanguageexpression (classloader classloader string language string text return dovalidatelanguage (classloader, language text false private languagevalidationresult dovalidatelanguage (classloader classloader string language string text boolean predicate (classloader null classloader getclass ().getclassloader(); simplevalidationresult answer new simplevalidationresult (text); string json jsonschemaresolver .getlanguagejsonschema(language); (json null answer .seterror(""unknown language language return answer list notice: implementation appends \n line terminator text

warning 't use crazy big stream public static void loadlines (inputstream list line throw ioexception try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null line .add(line); load entire stream memory string return

notice: implementation appends \n line terminator text

warning 't use crazy big stream public static string loadtext (inputstream throw ioexception stringbuilder builder new stringbuilder try (final inputstreamreader isr new inputstreamreader (in); final bufferedreader reader new linenumberreader (isr)) string line ((line reader .readline()) null builder .append(line); builder .append(""\n""); return builder .tostring(); match name pattern @param name name @param pattern pattern @return true matched false public static boolean matchwildcard (string name string pattern wildcard support hence match file match file endpoint (pattern.endswith(""*"") name pattern .length() return true return false return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(after)) return null return text .substring(text.indexof(after) .length()); return string given token @param text text @param token @return text token null text contain token public static string (string text string (!text.contains(before)) return null return text text .indexof(before)); return string given token @param text text @param token @param token @return text token null text contain token public static string (string text string string text (text, (text null return null return (text, test whether value null empty string @param value value string tested text length well @return true empty public static boolean isempty (object value return !isnotempty(value); test whether value not null empty string @param value value string tested text length well @return true not empty public static boolean isnotempty (object value (value null return false else (value instanceof string string text (string) value return text .trim().length() else return true remove leading ending quote (single double string @param string @return string without leading ending quote (single double public static string removeleadingandendingquotes (string (isempty(s)) return string copy .trim(); (copy.startswith(""'"") copy .endswith(""'"")) return copy copy .length() (copy.startswith(""\"""") copy .endswith(""\"""")) return copy copy .length() quote return -is return diff --git /camel-core/src/main/java/org/apache/camel/catalog/collectionstringbuffer.java b /camel-core/src/main/java/org/apache/camel/catalog/collectionstringbuffer.java deleted file mode index /camel-core/src/main/java/org/apache/camel/catalog/collectionstringbuffer.java /dev/null licensed apache software foundation (asf) one contributor license agreement see notice file distributed work additional information regarding copyright ownership asf license file apache license version (the ""license""); may use file except compliance license may obtain copy license unless required applicable law agreed writing software distributed license distributed ""as basis without warranty condition kind either express implied see license specific language governing permission limitation license -package org .apache.camel.catalog; -public class collectionstringbuffer private final stringbuilder buffer new stringbuilder private string separator private boolean first true public collectionstringbuffer public collectionstringbuffer (string separator .separator separator @override public string tostring return buffer .tostring(); public void append (object value (first) first false else buffer .append(separator); buffer .append(value); public string getseparator return separator public void setseparator (string separator .separator separator public boolean isempty return first diff",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C8bc1b1e9d91243898c3083596a1d02a5%40git.apache.org%3E,2017-04-14 10:53:00,commits,327.0,camel git commit rename catalog runtimecatalog avoid clash package name camel -catalog. +7,7,7,39.0,352.0,davscl...@apache.org,"repository camel updated branch ref /heads/master rename catalog runtimecatalog avoid clash package name camel -catalog. project commit tree diff branch ref /heads/master commit parent author claus ibsen authored fri apr committer claus ibsen committed fri apr .../camel/commands/abstractcamelcontroller.java .../camel/commands/internal/matchutil.java file changed insertion deletion diff --git /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java b /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java index /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java b /platforms/commands/commands-core/src/main/java/org/apache/camel/commands/abstractcamelcontroller.java import java .util.linkedhashmap; import java .util.list; import java .util.map; -import org .apache.camel.catalog.cataloghelper; -import org .apache.camel.commands.internal.regexutil; import org .apache.camel.util.jsonschemahelper; import org .apache.camel.util.objecthelper; +import static org .apache.camel.commands.internal.matchutil.matchwildcard; +import static org .apache.camel.commands.internal.regexutil.wildcardasregex; abstract {@link org .apache.camel.commands.camelcontroller} implementators extend public abstract class abstractcamelcontroller implement camelcontroller list authored fri apr committer claus ibsen committed fri apr .../src/main/docs/ignite-component.adoc component /readme.adoc doc /user-manual/en/summary.md file changed insertion diff --git /components/camel-ignite/src/main/docs/ignite-component.adoc b /components/camel-ignite/src/main/docs/ignite-component.adoc new file mode index /dev/null b /components/camel-ignite/src/main/docs/ignite-component.adoc +[[ignite-component]] ignite component +*available camel version ignite -memory data fabric high -performance, integrated distributed -memory platform computing transacting large -scale data set real -time, order magnitude faster possible traditional disk -based flash technology designed deliver uncompromised performance wide set -memory computing use case high performance computing industry advanced data grid highly available service grid streaming see +image: +this component offer seven endpoint cover much ignite 's functionality < org.apache.camel camel-ignite ${camel.version} use version camel core version + +[important,title=running osgi +if running osgi container please 't miss < string eventtype .evts_all +the event id subscribe set set directly id different constant org .apache.ignite.events.eventtype, specify comma -separated list constant name +for example evt_cache_entry_created ,evt_cache_object_removed,evt_igfs_dir_created. +n consumer clustergroupexpression clustergroupexpression +an expression return cluster group used igniteevents instance +n consumer +[[ignite-sets]] +sets: ignite set endpoint +the ignite set endpoint allows interact set data structure +[source,text] +this endpoint support producer +options option type default value description compulsory consumer /producer operation ignitesetoperation enum +the operation invoke ignite set +superseded igniteconstants .ignite_sets_operation header message +possible value contains add size remove iterator clear retain_all array +n producer configuration collectionconfiguration empty collectionconfiguration +the configuration data structure also specify inner property using config prefix +for example +n producer +headers used +this endpoint us following header header name constant expected type description camelignitesetsoperation igniteconstants .ignite_sets_operation ignitesetoperation enum +allows dynamically change set operation +[[ignite-queues]] +queues: ignite queue endpoint +the ignite queue endpoint allows interact queue data structure +[source,text] +this endpoint support producer +options option type default value description compulsory consumer /producer operation ignitequeueoperation enum +the operation invoke ignite queue +superseded igniteconstants .ignite_queue_operation header message +possible value contains add size remove iterator clear retain_all array drain element peek offer poll take put +n producer configuration collectionconfiguration empty collectionconfiguration +the configuration data structure also specify inner property using config prefix +for example +n producer timeoutmillis long +the timeout millisecond use invoking offer poll operation +n producer capacity int (unbounded) +the queue capacity 'd like use bounded queue +n producer +headers used +this endpoint us following header header name constant expected type description camelignitequeueoperation igniteconstants .ignite_queue_operation ignitequeueoperation enum +allows dynamically change queue operation camelignitequeuemaxelements igniteconstants .ignite_queue_max_elements integer int +when invoking drain operation amount item drain camelignitequeuetransferredcount igniteconstants .ignite_queue_transferred_count integer int +the amount item transferred result drain operation camelignitequeuetimeoutmillis igniteconstants .ignite_queue_timeout_millis long long +dynamically set timeout millisecond use invoking offer poll operation +[[ignite-idgenerator]] +idgen: ignite id generator endpoint +the ignite id generator endpoint allows interact atomic sequence id generator +[source,text] +this endpoint support producer +options option type default value description compulsory consumer /producer operation igniteidgenoperation enum +the operation invoke ignite id generator +superseded igniteconstants .ignite_idgen_operation header message +possible value add_and_get get get_and_add get_and_increment increment_and_get +n producer configuration collectionconfiguration empty collectionconfiguration +the configuration data structure also specify inner property using config prefix +for example +n producer +[[ignite-initializecomponent]] +initializing ignite component +each instance ignite component associated underlying org .apache.ignite.ignite instance interact two ignite cluster initializing two instance ignite component binding different igniteconfigurations way initialize ignite component passing existing org .apache.ignite.ignite instance 's example using spring config +[source,xml] + passing igniteconfiguration either constructed programmatically inversion control (e.g. spring blueprint etc 's example using spring config +[source,xml] + + passing url inputstream string url spring -based configuration file three case inject property called configurationresource 's example using spring config +[source,xml] + +additionally, using camel programmatically several convenience static method ignitecomponent return component configuration option ignitecomponent #fromignite(ignite) ignitecomponent #fromconfiguration(igniteconfiguration) ignitecomponent #frominputstream(inputstream) ignitecomponent #fromurl(url) ignitecomponent #fromlocation(string) +you may use method quickly create ignitecomponent chosen configuration technique +general option +all endpoint share following option option type default value description propagateincomingbodyifnoreturnvalue boolean true +if underlying ignite operation return void (no return type flag determines whether producer copy body body treatcollectionsascacheobjects boolean false +some ignite operation deal multiple element passed collection enabling option treat collection single object invoking operation variant cardinality +osgi support +[tip] +apache ignite support osgi version onwards +[note,title=when installing apache karaf installing camel -ignite feature require ignite feature repository present must exported jre (system bundle low -level, non -standard package ignite requires +please refer osgi section ignite documentation information +see also camel started newline end file diff --git /components/readme.adoc b /components/readme.adoc index /components/readme.adoc b /components/readme.adoc number component jar artifact deprecated link :camel-ibatis/src/main/docs/ibatis-component.adoc[ibatis] (camel-ibatis) `ibatis:statement` *deprecated* performs query poll insert update delete relational database using apache ibatis link :camel-ignite/src/main/docs/ignite-component.adoc[ignite] (camel-ignite) +`ignite:endpointname` ignite component integrates apache camel apache ignite link :camel-infinispan/src/main/docs/infinispan-component.adoc[infinispan] (camel-infinispan) `infinispan:cachename` reading /writing /to infinispan distributed key /value store data grid diff",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C3ecfaacf3d8e4820a231f68340f2ef0d%40git.apache.org%3E,2017-04-14 10:55:56,commits,328.0,camel git commit camel ported camel -ignite wiki doc adoc 9,9,9,29.0,191.0,igarashitm,github user igarashitm closed pull request project set reply email reply appear github well project feature enabled wish feature enabled working please contact infrastructure infrastructure @apache.org file jira ticket infra,http://mail-archives.apache.org/mod_mbox/camel-dev/201704.mbox/ajax/%3C20170414112311.A7379DFF36%40git1-us-west.apache.org%3E,2017-04-14 11:23:11,mail,191.0,[github] camel pull request camel ported camel -ignite wiki doc adoc -10,12,12,9.0,329.0,davscl...@apache.org,"repository camel updated branch ref /heads/master 6a02de123 ddd2347d9 camel make camel -example-cxf-blueprint test pas java project commit tree diff branch ref /heads/master commit ddd2347d92c723557cbfc2143bfd648db48ed484 parent 1ca0ec4 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cxf-blueprint/pom.xml file changed insertion deletion diff --git /examples/camel-example-cxf-blueprint/pom.xml b /examples/camel-example-cxf-blueprint/pom.xml index ..acf9a11 /examples/camel-example-cxf-blueprint/pom.xml b /examples/camel-example-cxf-blueprint/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .activation,java.xml.bind,java.xml.ws,jdk.xml.bind --add-opens java .base/java.lang=all-unnamed --add-exports=java.naming/com.sun.jndi.ldap=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2.runtime.reflect=all-unnamed --add-exports=java.xml.ws/com.sun.xml.internal.messaging.saaj.soap.impl=all-unnamed --add-exports=java.xml.ws/com.sun.xml.internal.messaging.saaj.soap=all-unnamed --add-opens java .base/java.net=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2.runtime=all-unnamed ",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Cb50b5147c8eb4ac9b023dca40545901b%40git.apache.org%3E,2017-04-14 10:57:46,commits,329.0,camel git commit camel make camel -example-cxf-blueprint test pas java -11,13,13,10.0,330.0,davscl...@apache.org,"camel make camel -example-cxf-tomcat test pas java project commit tree diff branch ref /heads/master commit 8a23104b554fcc9113a1913f49a4082c67d28acc parent 44d333f author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cxf-tomcat/pom.xml file changed insertion diff --git /examples/camel-example-cxf-tomcat/pom.xml b /examples/camel-example-cxf-tomcat/pom.xml index 8f1c898 ..6336aa9 /examples/camel-example-cxf-tomcat/pom.xml b /examples/camel-example-cxf-tomcat/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .activation,java.xml.bind,java.xml.ws,jdk.xml.bind --add-opens java .base/java.lang=all-unnamed --add-exports=java.naming/com.sun.jndi.ldap=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2.runtime.reflect=all-unnamed --add-exports=java.xml.ws/com.sun.xml.internal.messaging.saaj.soap.impl=all-unnamed --add-exports=java.xml.ws/com.sun.xml.internal.messaging.saaj.soap=all-unnamed --add-opens java .base/java.net=all-unnamed --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2.runtime=all-unnamed ",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Ce9859842f13443f6b7ce077840356411%40git.apache.org%3E,2017-04-14 10:57:47,commits,330.0,camel git commit camel make camel -example-cxf-tomcat test pas java -12,14,14,11.0,331.0,davscl...@apache.org,camel make camel -cxf-transport test pas java project commit tree diff branch ref /heads/master commit a01f14cdda7b576e42be4357625fec374555f6ae parent 7b2d32e author jpoth authored fri apr committer claus ibsen committed fri apr component /camel-cxf-transport/pom.xml file changed insertion diff --git /components/camel-cxf-transport/pom.xml b /components/camel-cxf-transport/pom.xml index 93d650b ..bc76a6a /components/camel-cxf-transport/pom.xml b /components/camel-cxf-transport/pom.xml jdk9-build 9 maven-surefire-plugin true --add-modules java .xml.ws --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C8944f48bb72241b994053539c7e0edf4%40git.apache.org%3E,2017-04-14 10:57:48,commits,331.0,camel git commit camel make camel -cxf-transport test pas java -13,15,15,12.0,332.0,davscl...@apache.org,"camel make camel -example-loan-broker-jms test pas java project commit tree diff branch ref /heads/master commit e6964f1e74bc2a2f9d76450447332ce03570cf53 parent 3f9ebd5 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-loan-broker-jms/pom.xml file changed insertion diff --git /examples/camel-example-loan-broker-jms/pom.xml b /examples/camel-example-loan-broker-jms/pom.xml index 186036b ..0668ecf /examples/camel-example-loan-broker-jms/pom.xml b /examples/camel-example-loan-broker-jms/pom.xml org.apache.camel.loanbroker.client jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind,java.xml.ws --add-opens java .base/java.lang=all-unnamed --add-opens java .xml.bind/com.sun.xml.internal.bind.v2.runtime=all-unnamed ",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C9940ce4909db4f58bedb1ca432783218%40git.apache.org%3E,2017-04-14 10:57:49,commits,332.0,camel git commit camel make camel -example-loan-broker-jms test pas java -14,16,16,13.0,333.0,davscl...@apache.org,camel make camel -example-cdi-example test pas java project commit tree diff branch ref /heads/master commit 1e31f1e4265f4271d82f54f86cb0ba85f426f54d parent 6a02de1 author jpoth authored thu apr committer claus ibsen committed fri apr example /camel-example-cdi-xml/pom.xml file changed insertion diff --git /examples/camel-example-cdi-xml/pom.xml b /examples/camel-example-cdi-xml/pom.xml index e365cc2 ..9758b4a /examples/camel-example-cdi-xml/pom.xml b /examples/camel-example-cdi-xml/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Ce4eb9713620046ea85a7803fdcaefd90%40git.apache.org%3E,2017-04-14 10:57:50,commits,333.0,camel git commit camel make camel -example-cdi-example test pas java -15,17,17,14.0,334.0,davscl...@apache.org,camel make camel -example-cdi-test test pas java project commit tree diff branch ref /heads/master commit d590e92118a20b07c8a7d136d754a26e5055af86 parent 1e31f1e author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cdi-test/pom.xml file changed insertion deletion diff --git /examples/camel-example-cdi-test/pom.xml b /examples/camel-example-cdi-test/pom.xml index d1b5765 ..697847c /examples/camel-example-cdi-test/pom.xml b /examples/camel-example-cdi-test/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C17603fa71f9f4446851fd50f33bc248a%40git.apache.org%3E,2017-04-14 10:57:51,commits,334.0,camel git commit camel make camel -example-cdi-test test pas java -16,18,18,15.0,335.0,davscl...@apache.org,camel make camel -example-cdi-metrics test pas java project commit tree diff branch ref /heads/master commit 73b61ef32533aac448fe5c31d2f28f0373ad5d90 parent d590e92 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cdi-metrics/pom.xml file changed insertion diff --git /examples/camel-example-cdi-metrics/pom.xml b /examples/camel-example-cdi-metrics/pom.xml index 08401f7 ..5f09f7c /examples/camel-example-cdi-metrics/pom.xml b /examples/camel-example-cdi-metrics/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C17d5bb4af9784983a8ac362b3e589ea3%40git.apache.org%3E,2017-04-14 10:57:52,commits,335.0,camel git commit camel make camel -example-cdi-metrics test pas java -17,19,19,16.0,336.0,davscl...@apache.org,camel make camel -example-cdi-properties test pas java project commit tree diff branch ref /heads/master commit 061eb2416cd5863cf845b330740cacaed83321cd parent 73b61ef author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cdi-properties/pom.xml file changed insertion diff --git /examples/camel-example-cdi-properties/pom.xml b /examples/camel-example-cdi-properties/pom.xml index 24adc77 ..ae2ae06 /examples/camel-example-cdi-properties/pom.xml b /examples/camel-example-cdi-properties/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C4901736312b14536a40a9ab29e998af5%40git.apache.org%3E,2017-04-14 10:57:53,commits,336.0,camel git commit camel make camel -example-cdi-properties test pas java -18,20,20,17.0,337.0,davscl...@apache.org,"camel make camel -example-reportincident test pas java project commit tree diff branch ref /heads/master commit 1b8949f593eed1fb0b97bcf0d138f2be113d0d2e parent e6964f1 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-reportincident/pom.xml file changed insertion deletion diff --git /examples/camel-example-reportincident/pom.xml b /examples/camel-example-reportincident/pom.xml index 92091d7 ..b820ac1 /examples/camel-example-reportincident/pom.xml b /examples/camel-example-reportincident/pom.xml maven-surefire-plugin --add-modules java .xml.bind,java.xml.ws --add-opens java .base/java.lang=all-unnamed --add-opens java .base/java.lang.invoke=all-unnamed --add-opens java .base/java.util=all-unnamed --add-modules java .xml.bind,java.xml.ws --add-opens java .base/java.lang=all-unnamed --add-opens java .base/java.lang.invoke=all-unnamed --add-opens java .base/java.util=all-unnamed --add-opens java .xml.bind/com.sun.xml.internal.bind.v2.runtime=all-unnamed ",http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C4b84d50cca2f408189db81727d97a39f%40git.apache.org%3E,2017-04-14 10:57:54,commits,337.0,camel git commit camel make camel -example-reportincident test pas java -19,21,21,18.0,338.0,davscl...@apache.org,camel make camel -example-rest-servlet test pas java project commit tree diff branch ref /heads/master commit 3f9ebd5a0a9e23e5b8c2f10abdf0c1c6ca4eda90 parent 061eb24 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cdi-rest-servlet/pom.xml file changed insertion deletion diff --git /examples/camel-example-cdi-rest-servlet/pom.xml b /examples/camel-example-cdi-rest-servlet/pom.xml index 260d778 ..aac0973 /examples/camel-example-cdi-rest-servlet/pom.xml b /examples/camel-example-cdi-rest-servlet/pom.xml jdk9-build-jetty 9 org.eclipse.jetty jetty-webapp ${jetty9-version} runtime org.eclipse.jetty jetty-annotations ${jetty9-version} runtime org.jboss.arquillian.container arquillian-jetty-embedded-9 1.0.0.cr2 test org.jboss.arquillian.container arquillian-container-spi maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Cd0654af72ef94f628420b970c145ccf5%40git.apache.org%3E,2017-04-14 10:57:55,commits,338.0,camel git commit camel make camel -example-rest-servlet test pas java -20,22,22,19.0,339.0,davscl...@apache.org,camel make camel -example-pojo-messaging test pas java project commit tree diff branch ref /heads/master commit fdeb34752943b2bf4723407b99da875708fae852 parent 1b8949f author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-pojo-messaging/pom.xml file changed insertion diff --git /examples/camel-example-pojo-messaging/pom.xml b /examples/camel-example-pojo-messaging/pom.xml index f71b3b7 ..34b1bd6 /examples/camel-example-pojo-messaging/pom.xml b /examples/camel-example-pojo-messaging/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C7bc5feb92c534ce9a2bf51de8ce26017%40git.apache.org%3E,2017-04-14 10:57:56,commits,339.0,camel git commit camel make camel -example-pojo-messaging test pas java -21,23,23,20.0,340.0,davscl...@apache.org,camel make camel -example-management test pas java project commit tree diff branch ref /heads/master commit 9e7b6c6c7bb423f36dd3a6db98635e2a95a98acc parent fdeb347 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-management/pom.xml file changed insertion diff --git /examples/camel-example-management/pom.xml b /examples/camel-example-management/pom.xml index 66f0b1f ..d8db087 /examples/camel-example-management/pom.xml b /examples/camel-example-management/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3C30204927025749bbbc58720eb5a3f27c%40git.apache.org%3E,2017-04-14 10:57:57,commits,340.0,camel git commit camel make camel -example-management test pas java -22,24,24,21.0,341.0,davscl...@apache.org,camel make camel -example-spring-jms test pas java project commit tree diff branch ref /heads/master commit 3d9a999c035aa10bff547d0d3ee053528b615919 parent 9e7b6c6 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-spring-jms/pom.xml file changed insertion deletion diff --git /examples/camel-example-spring-jms/pom.xml b /examples/camel-example-spring-jms/pom.xml index da360e0 ..af430aa /examples/camel-example-spring-jms/pom.xml b /examples/camel-example-spring-jms/pom.xml org.apache.camel.example.client.camelclientendpoint jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Cdf7aef9137e64879b2a51fa8161c519e%40git.apache.org%3E,2017-04-14 10:57:58,commits,341.0,camel git commit camel make camel -example-spring-jms test pas java -23,25,25,22.0,342.0,davscl...@apache.org,camel make camel -example-osgi-rmi test pas java project commit tree diff branch ref /heads/master commit 047761a787d646759069e1ac318ba3523816ec08 parent 3d9a999 author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-osgi-rmi/pom.xml file changed insertion diff --git /examples/camel-example-osgi-rmi/pom.xml b /examples/camel-example-osgi-rmi/pom.xml index dce39d2 ..82c588d /examples/camel-example-osgi-rmi/pom.xml b /examples/camel-example-osgi-rmi/pom.xml org.apache.camel.example.osgi.helloclient jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind --add-opens java .base/java.lang=all-unnamed ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Ca519cd2689fb4af09c8ded1b17b83f65%40git.apache.org%3E,2017-04-14 10:57:59,commits,342.0,camel git commit camel make camel -example-osgi-rmi test pas java -24,26,26,23.0,343.0,davscl...@apache.org,camel make camel -example-cafe test pas java project commit tree diff branch ref /heads/master commit f0cc62ec403817c3f0050c870a5ad06732fb4bba parent 047761a author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cafe/pom.xml file changed insertion deletion diff --git /examples/camel-example-cafe/pom.xml b /examples/camel-example-cafe/pom.xml index ..5e88b79 /examples/camel-example-cafe/pom.xml b /examples/camel-example-cafe/pom.xml jdk9-build 9 maven-surefire-plugin --add-modules java .xml.bind ,http://mail-archives.apache.org/mod_mbox/camel-commits/201704.mbox/ajax/%3Cad79d72ff20f4e9e9063531f4c8a0503%40git.apache.org%3E,2017-04-14 10:58:00,commits,343.0,camel git commit camel make camel -example-cafe test pas java -25,27,27,24.0,344.0,davscl...@apache.org,camel skip cxf test java cxf resolved project commit tree diff branch ref /heads/master commit 925bfe6592ca4831497bfe1c79e8e98f78c0f908 parent a01f14c author jpoth authored fri apr committer claus ibsen committed fri apr example /camel-example-cxf/pom.xml .../pom.xml test /camel-blueprint-cxf-test/pom.xml file changed insertion deletion diff --git /examples/camel-example-cxf/pom.xml b /examples/camel-example-cxf/pom.xml index cc3f12f ..d87f88f /examples/camel-example-cxf/pom.xml b /examples/camel-example-cxf/pom.xml org.apache.camel.example.cxf.jaxrs.client java9 9 org.apache.maven.plugins maven-surefire-plugin