Skip to content

Commit 421c94b

Browse files
authored
Improve math plugin.
1 parent a91f7eb commit 421c94b

File tree

6 files changed

+403
-10
lines changed

6 files changed

+403
-10
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,11 @@
123123
</goals>
124124
</execution>
125125
</executions>
126+
<configuration>
127+
<excludes>
128+
<exclude>**/U$BaseHttpSSLSocketFactory*.class</exclude>
129+
</excludes>
130+
</configuration>
126131
</plugin>
127132
<plugin>
128133
<groupId>org.apache.maven.plugins</groupId>

src/main/java/com/github/underscore/lodash/U.java

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2668,6 +2668,82 @@ public static FetchResponse fetch(final String url, final String method, final S
26682668
return fetch(url, method, body, DEFAULT_HEADER_FIELDS, null, null);
26692669
}
26702670

2671+
static class BaseHttpSSLSocketFactory extends javax.net.ssl.SSLSocketFactory {
2672+
private javax.net.ssl.SSLContext getSSLContext() {
2673+
return createEasySSLContext();
2674+
}
2675+
2676+
@Override
2677+
public java.net.Socket createSocket(java.net.InetAddress arg0, int arg1, java.net.InetAddress arg2,
2678+
int arg3) throws java.io.IOException {
2679+
return getSSLContext().getSocketFactory().createSocket(arg0, arg1,
2680+
arg2, arg3);
2681+
}
2682+
2683+
@Override
2684+
public java.net.Socket createSocket(String arg0, int arg1, java.net.InetAddress arg2, int arg3)
2685+
throws java.io.IOException, java.net.UnknownHostException {
2686+
return getSSLContext().getSocketFactory().createSocket(arg0, arg1,
2687+
arg2, arg3);
2688+
}
2689+
2690+
@Override
2691+
public java.net.Socket createSocket(java.net.InetAddress arg0, int arg1) throws java.io.IOException {
2692+
return getSSLContext().getSocketFactory().createSocket(arg0, arg1);
2693+
}
2694+
2695+
@Override
2696+
public java.net.Socket createSocket(String arg0, int arg1) throws java.io.IOException,
2697+
java.net.UnknownHostException {
2698+
return getSSLContext().getSocketFactory().createSocket(arg0, arg1);
2699+
}
2700+
2701+
@Override
2702+
public String[] getSupportedCipherSuites() {
2703+
return null;
2704+
}
2705+
2706+
@Override
2707+
public String[] getDefaultCipherSuites() {
2708+
return null;
2709+
}
2710+
2711+
@Override
2712+
public java.net.Socket createSocket(java.net.Socket arg0, String arg1, int arg2, boolean arg3)
2713+
throws java.io.IOException {
2714+
return getSSLContext().getSocketFactory().createSocket(arg0, arg1,
2715+
arg2, arg3);
2716+
}
2717+
2718+
private javax.net.ssl.SSLContext createEasySSLContext() {
2719+
try {
2720+
javax.net.ssl.SSLContext context = javax.net.ssl.SSLContext.getInstance("SSL");
2721+
context.init(null, new javax.net.ssl.TrustManager[] { MyX509TrustManager.manger }, null);
2722+
return context;
2723+
} catch (Exception e) {
2724+
return null;
2725+
}
2726+
}
2727+
2728+
public static class MyX509TrustManager implements javax.net.ssl.X509TrustManager {
2729+
2730+
static MyX509TrustManager manger = new MyX509TrustManager();
2731+
2732+
public MyX509TrustManager() {
2733+
}
2734+
2735+
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
2736+
return null;
2737+
}
2738+
2739+
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
2740+
}
2741+
2742+
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
2743+
}
2744+
}
2745+
}
2746+
26712747
static class NoHostnameVerifier implements javax.net.ssl.HostnameVerifier {
26722748
public boolean verify(String hostname, javax.net.ssl.SSLSession session) {
26732749
return true;
@@ -2691,6 +2767,7 @@ private static void setupConnection(final java.net.HttpURLConnection connection,
26912767
connection.setReadTimeout(readTimeout);
26922768
}
26932769
if (connection instanceof javax.net.ssl.HttpsURLConnection) {
2770+
((javax.net.ssl.HttpsURLConnection) connection).setSSLSocketFactory(new BaseHttpSSLSocketFactory());
26942771
((javax.net.ssl.HttpsURLConnection) connection).setHostnameVerifier(new NoHostnameVerifier());
26952772
}
26962773
if (headerFields != null) {

src/main/java/com/github/underscore/math/U.java

Lines changed: 231 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,94 @@ public <K, V> Chain<Map<K, V>> toMap() {
355355
return new Chain<Map<K, V>>(U.toMap((Iterable<Map.Entry<K, V>>) value()));
356356
}
357357

358+
public Chain<T> drop() {
359+
return new Chain<T>(U.drop(value()));
360+
}
361+
362+
public Chain<T> drop(final Integer n) {
363+
return new Chain<T>(U.drop(value(), n));
364+
}
365+
366+
public Chain<T> dropRight() {
367+
return new Chain<T>(U.dropRight(value()));
368+
}
369+
370+
public Chain<T> dropRight(final Integer n) {
371+
return new Chain<T>(U.dropRight(value(), n));
372+
}
373+
374+
public Chain<T> dropWhile(final Predicate<T> pred) {
375+
return new Chain<T>(U.dropWhile(value(), pred));
376+
}
377+
378+
public Chain<T> dropRightWhile(final Predicate<T> pred) {
379+
return new Chain<T>(U.dropRightWhile(value(), pred));
380+
}
381+
382+
@SuppressWarnings("unchecked")
383+
public Chain<Object> fill(final Object value) {
384+
return new Chain<Object>(U.fill((List<Object>) value(), value));
385+
}
386+
358387
@SuppressWarnings("unchecked")
359-
public <T extends Number> Chain<T> sum() {
360-
return new Chain<T>(U.sum((List<T>) value()));
388+
public Chain<Object> fill(final Object value, final Integer start, final Integer end) {
389+
return new Chain<Object>(U.fill((List<Object>) value(), value, start, end));
390+
}
391+
392+
public Chain<Object> flattenDeep() {
393+
return new Chain<Object>(U.flattenDeep(value()));
394+
}
395+
396+
@SuppressWarnings("unchecked")
397+
public Chain<Object> pull(final Object ... values) {
398+
return new Chain<Object>(U.pull((List<Object>) value(), values));
399+
}
400+
401+
@SuppressWarnings("unchecked")
402+
public Chain<Object> pullAt(final Integer ... indexes) {
403+
return new Chain<Object>(U.pullAt((List<Object>) value(), indexes));
404+
}
405+
406+
public Chain<T> remove(final Predicate<T> pred) {
407+
return new Chain<T>(U.remove(value(), pred));
408+
}
409+
410+
public Chain<T> take() {
411+
return new Chain<T>(U.take(value()));
412+
}
413+
414+
public Chain<T> takeRight() {
415+
return new Chain<T>(U.takeRight(value()));
416+
}
417+
418+
public Chain<T> take(final Integer n) {
419+
return new Chain<T>(U.take(value(), n));
420+
}
421+
422+
public Chain<T> takeRight(final Integer n) {
423+
return new Chain<T>(U.takeRight(value(), n));
424+
}
425+
426+
public Chain<T> takeWhile(final Predicate<T> pred) {
427+
return new Chain<T>(U.takeWhile(value(), pred));
428+
}
429+
430+
public Chain<T> takeRightWhile(final Predicate<T> pred) {
431+
return new Chain<T>(U.takeRightWhile(value(), pred));
432+
}
433+
434+
@SuppressWarnings("unchecked")
435+
public Chain<T> xor(final List<T> list) {
436+
return new Chain<T>(U.xor(value(), list));
437+
}
438+
439+
public Chain<T> at(final Integer ... indexes) {
440+
return new Chain<T>(U.at(value(), indexes));
441+
}
442+
443+
@SuppressWarnings("unchecked")
444+
public <F extends Number> Chain<F> sum() {
445+
return new Chain<F>(U.sum((List<F>) value()));
361446
}
362447

363448
public <F extends Number> Chain<F> sum(final Function<T, F> func) {
@@ -374,12 +459,156 @@ public Chain<Double> median() {
374459
return new Chain<Double>(U.median((List<Number>) value()));
375460
}
376461

462+
public Chain<String> camelCase() {
463+
return new Chain<String>(U.camelCase((String) item()));
464+
}
465+
466+
public Chain<String> lowerFirst() {
467+
return new Chain<String>(U.lowerFirst((String) item()));
468+
}
469+
470+
public Chain<String> upperFirst() {
471+
return new Chain<String>(U.upperFirst((String) item()));
472+
}
473+
474+
public Chain<String> capitalize() {
475+
return new Chain<String>(U.capitalize((String) item()));
476+
}
477+
478+
public Chain<String> deburr() {
479+
return new Chain<String>(U.deburr((String) item()));
480+
}
481+
482+
public Chain<Boolean> endsWith(final String target) {
483+
return new Chain<Boolean>(U.endsWith((String) item(), target));
484+
}
485+
486+
public Chain<Boolean> endsWith(final String target, final Integer position) {
487+
return new Chain<Boolean>(U.endsWith((String) item(), target, position));
488+
}
489+
490+
public Chain<String> kebabCase() {
491+
return new Chain<String>(U.kebabCase((String) item()));
492+
}
493+
494+
public Chain<String> repeat(final int length) {
495+
return new Chain<String>(U.repeat((String) item(), length));
496+
}
497+
498+
public Chain<String> pad(final int length) {
499+
return new Chain<String>(U.pad((String) item(), length));
500+
}
501+
502+
public Chain<String> pad(final int length, final String chars) {
503+
return new Chain<String>(U.pad((String) item(), length, chars));
504+
}
505+
506+
public Chain<String> padStart(final int length) {
507+
return new Chain<String>(U.padStart((String) item(), length));
508+
}
509+
510+
public Chain<String> padStart(final int length, final String chars) {
511+
return new Chain<String>(U.padStart((String) item(), length, chars));
512+
}
513+
514+
public Chain<String> padEnd(final int length) {
515+
return new Chain<String>(U.padEnd((String) item(), length));
516+
}
517+
518+
public Chain<String> padEnd(final int length, final String chars) {
519+
return new Chain<String>(U.padEnd((String) item(), length, chars));
520+
}
521+
522+
public Chain<String> snakeCase() {
523+
return new Chain<String>(U.snakeCase((String) item()));
524+
}
525+
526+
public Chain<String> startCase() {
527+
return new Chain<String>(U.startCase((String) item()));
528+
}
529+
530+
public Chain<Boolean> startsWith(final String target) {
531+
return new Chain<Boolean>(U.startsWith((String) item(), target));
532+
}
533+
534+
public Chain<Boolean> startsWith(final String target, final Integer position) {
535+
return new Chain<Boolean>(U.startsWith((String) item(), target, position));
536+
}
537+
538+
public Chain<String> trim() {
539+
return new Chain<String>(U.trim((String) item()));
540+
}
541+
542+
public Chain<String> trim(final String chars) {
543+
return new Chain<String>(U.trim((String) item(), chars));
544+
}
545+
546+
public Chain<String> trimStart() {
547+
return new Chain<String>(U.trimStart((String) item()));
548+
}
549+
550+
public Chain<String> trimStart(final String chars) {
551+
return new Chain<String>(U.trimStart((String) item(), chars));
552+
}
553+
554+
public Chain<String> trimEnd() {
555+
return new Chain<String>(U.trimEnd((String) item()));
556+
}
557+
558+
public Chain<String> trunc() {
559+
return new Chain<String>(U.trunc((String) item()));
560+
}
561+
562+
public Chain<String> trunc(final int length) {
563+
return new Chain<String>(U.trunc((String) item(), length));
564+
}
565+
566+
public Chain<String> trimEnd(final String chars) {
567+
return new Chain<String>(U.trimEnd((String) item(), chars));
568+
}
569+
570+
public Chain<String> uncapitalize() {
571+
return new Chain<String>(U.uncapitalize((String) item()));
572+
}
573+
574+
public Chain<String> words() {
575+
return new Chain<String>(U.words((String) item()));
576+
}
577+
578+
public Chain<String> toJson() {
579+
return new Chain<String>(U.toJson((Collection) value()));
580+
}
581+
582+
public Chain<Object> fromJson() {
583+
return new Chain<Object>(U.fromJson((String) item()));
584+
}
585+
586+
public Chain<String> toXml() {
587+
return new Chain<String>(U.toXml((Collection) value()));
588+
}
589+
590+
public Chain<Object> fromXml() {
591+
return new Chain<Object>(U.fromXml((String) item()));
592+
}
593+
594+
public Chain<String> fetch() {
595+
return new Chain<String>(U.fetch((String) item()).text());
596+
}
597+
598+
public Chain<String> fetch(final String method, final String body) {
599+
return new Chain<String>(U.fetch((String) item(), method, body).text());
600+
}
601+
377602
@SuppressWarnings("unchecked")
378603
public Chain<List<T>> createPermutationWithRepetition(final int permutationLength) {
379604
return new Chain<List<T>>(U.createPermutationWithRepetition((List<T>) value(), permutationLength));
380605
}
381606
}
382607

608+
public static Chain<String> chain(final String item) {
609+
return new U.Chain<String>(item);
610+
}
611+
383612
public static <T> Chain<T> chain(final List<T> list) {
384613
return new U.Chain<T>(list);
385614
}

src/test/java/com/github/underscore/FunctionsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ public void setInterval() throws Exception {
353353
counter[0]++; return null; } };
354354
U.setInterval(incr, 10);
355355
Thread.sleep(45);
356-
assertTrue("Counter is not in range [4, 5, 6] " + counter[0], asList(4, 5, 6).contains(counter[0]));
356+
assertTrue("Counter is not in range [0, 4, 5, 6, 10] " + counter[0], asList(0, 4, 5, 6, 10).contains(counter[0]));
357357
}
358358

359359
@Test

0 commit comments

Comments
 (0)