/* * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.*; class OptionalWithoutIsPresent { void testSimple(Optional o, OptionalDouble od, OptionalInt oi, OptionalLong ol) { System.out.println(o.get()); System.out.println(oi.getAsInt()); System.out.println(ol.getAsLong()); System.out.println(od.getAsDouble()); } { System.out.println(getIntegerOptional().get()); } void testWhile() { Optional o = Optional.empty(); while (!o.isPresent()) { o = Optional.of(""); } System.out.println(o.get()); } void testWhile2() { Optional o = getIntegerOptional(); while (o.isPresent()) { System.out.println(o.get()); } } public void testPolyadicExpression(Optional value) { boolean flag = value.isPresent() && "Yes".equals(value.get()); } boolean testPolyadicExpression2(Optional o) { return !o.isPresent() || o.get().equals("j"); } String testPolyadicExpression3() { Optional o = getOptional(); if (o == null || !o.isPresent()) { return ""; } return o.get(); } void testNested(Optional opt, String action) { if (!opt.isPresent()) { throw new IllegalArgumentException(); } switch (action) { case "case": System.out.println(opt.get()); break; default: System.err.println(opt.get()); } } void m(Optional maybe) { if (!!!maybe.isPresent()) { maybe = getIntegerOptional(); } else { System.out.println(maybe.get()); maybe = getIntegerOptional(); } if (maybe.isPresent()) { maybe = Optional.empty(); System.out.println(maybe.get()); } boolean b = ((maybe.isPresent())) && maybe.get() == 1; boolean c = (!maybe.isPresent()) || maybe.get() == 1; Integer value = !maybe.isPresent() ? 0 : maybe.get(); } Optional getIntegerOptional() { return Math.random() > 0.5 ? Optional.of(1) : Optional.empty(); } private static void a() { Optional optional = Optional.empty(); final boolean present = optional.isPresent(); // optional = Optional.empty(); if (present) { final String string = optional.get(); System.out.println(string); } } private static void b() { Optional optional = Optional.empty(); final boolean present = optional.isPresent(); optional = Optional.empty(); if (present) { final String string = optional.get(); System.out.println(string); } } public void testMultiVars(Optional opt) { boolean present = opt.isPresent(); boolean absent = !present; boolean otherAbsent = !!absent; if(otherAbsent) { System.out.println(opt.get()); } else { System.out.println(opt.get()); } } private void checkReassign(Optional a, Optional b) { if(a.isPresent()) { b = a; System.out.println(b.get()); } } private void checkReassign2(Optional a, Optional b) { if(b.isPresent()) { b = a; System.out.println(b.get()); } } private void checkAsserts1() { Optional o1 = getOptional(); assert o1.isPresent(); System.out.println(o1.get()); Optional o2 = getOptional(); org.junit.Assert.assertTrue(o2.isPresent()); System.out.println(o2.get()); Optional o3 = getOptional(); org.testng.Assert.assertTrue(o3.isPresent()); System.out.println(o3.get()); o2 = getOptional(); org.junit.Assert.assertTrue(!o2.isPresent()); System.out.println(o2.get()); } private void checkAsserts2() { Optional o3 = Optional.empty(); org.testng.Assert.assertTrue(o3.isPresent()); System.out.println(o3.get()); } private void checkOf(boolean b) { System.out.println(Optional.of("xyz").get()); Optional test; if(b) { test = Optional.of("x"); } else { test = Optional.of("y"); } System.out.println(test.get()); if(b) { test = Optional.of("x"); } else { test = Optional.empty(); } System.out.println(test.get()); if(b) { test = Optional.empty(); } else { test = Optional.empty(); } System.out.println(test.get()); } private void checkOfNullable(String value) { System.out.println(Optional.ofNullable(value).get()); System.out.println(Optional.ofNullable(value+"a").get()); System.out.println(Optional.ofNullable("xyz").get()); } public static String demo() { Optional holder = Optional.empty(); if (! holder.isPresent()) { holder = Optional.of("hello world"); if (!holder.isPresent()) { return null; } } return holder.get(); } //public Collection findCategories(Long articleId) { // return java.util.stream.Stream.of(Optional.of("asdf")).filter(Optional::isPresent).map(x -> x.get()).collect( // java.util.stream.Collectors.toList()) ; //} public static void main(String[] args) { Optional stringOpt; if((stringOpt = getOptional()).isPresent()) { stringOpt.get(); } } public static void main2(String[] args) { if(getOptional().isPresent()) { getOptional().get(); //'Optional.get()' without 'isPresent()' check } } public static Optional getOptional() { return Optional.empty(); } void order(Optional order, boolean b) { order.ifPresent(o -> System.out.println(order.get())); System.out.println(order.orElseGet(() -> order.get().trim())); } public static void two(Optional o1,Optional o2) { if (!o1.isPresent() && !o2.isPresent()) { return; } System.out.println(o1.isPresent() ? o1.get() : o2.get()); } public static void two2(Optional o1,Optional o2) { if (!o2.isPresent()) { return; } System.out.println(o1.isPresent() ? o1.get() : o2.get()); } public static void two3(Optional o1,Optional o2) { System.out.println(o1.isPresent() ? o1.get() : o2.get()); } void def(Optional def) { if (!def.isPresent()) { throw new RuntimeException(); } { def.get(); } } private void orred(Optional opt1, Optional opt2) { if (!opt1.isPresent() || !opt2.isPresent()) { return; } opt1.get(); opt2.get(); } class Range { Optional min = Optional.of(1); Optional max = Optional.of(2); Optional getMax() { return max; } Optional getMin() { return min; } } void useRange(Range a, Range b) { if (!a.getMax().isPresent() || !b.getMin().isPresent()) { } else if (a.getMax().get() <= b.getMin().get()) { } } public void foo(Optional value) { if (!value.isPresent()) { return; } try { System.out.println(value.get()); // <- warning appears here } finally { System.out.println("hi"); } } void shortIf(Optional o) { if (true || o.isPresent()) { o.get(); } } void test(Optional aOpt, Optional bOpt) { if (!aOpt.isPresent() || !bOpt.isPresent()) { throw new RuntimeException(); } String a = aOpt.get(); String b = bOpt.get(); } String f(Optional optional, Optional opt2) { return optional.isPresent() ? opt2.get() : ""; } com.google.common.base.Optional field; void guavaFieldTest() { if(field.isPresent()) { System.out.println(field.get()); } } void guavaTest(com.google.common.base.Optional opt, String s, String s1) { System.out.println(opt.get()); if(opt.isPresent()) { System.out.println(opt.get()); } opt = com.google.common.base.Optional.fromNullable(s); if(opt.isPresent()) { System.out.println(opt.get()); } opt = com.google.common.base.Optional.of(s); opt = com.google.common.base.Optional.of(s1); if(opt.isPresent()) { System.out.println(opt.get()); } opt = com.google.common.base.Optional.absent(); if(opt.isPresent()) { System.out.println(opt.get()); } } void testThrow(Optional test) { test.orElseThrow(RuntimeException::new); Object o = test.get(); System.out.println(o); } void testThrow2(Optional test) { test.orElseThrow(RuntimeException::new); if (test.isPresent()) { System.out.println("Yes"); } } void testThrowCatch(Optional opt) { try { opt.orElseThrow(RuntimeException::new); System.out.println("Ok: " + opt.get()); } catch (RuntimeException ex) { System.out.println("Fail: " + opt.get()); } } public void testThrowFail(Optional arg) { if(!arg.isPresent()) { System.out.println(arg.orElseThrow(IllegalAccessError::new)); } String res = Optional.empty().orElseThrow(RuntimeException::new); } void testOrElseGet() { final Optional a = Optional.ofNullable(Math.random() > 0.5 ? null:""); final Optional b = Optional.ofNullable(Math.random() > 0.5 ? null:""); if (a.isPresent() || b.isPresent()) { String result = a.orElseGet(() -> b.get()); // no warning System.out.println(result); } String result = a.orElseGet(() -> b.get()); System.out.println(result); } }