import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
{
try { test_1(null); }
try { test_2(null); }
catch (UnsupportedArgumentException e
) { System.
out.
println(e.
getMessage()); }
try { test_1
(Color.
Green); } catch (UnsupportedArgumentException e
) { System.
out.
println(e.
getMessage()); } }
{
switch (color) // NullPointerException expected
{
case Red:
out
= Color.
Red.
getName(); break;
case Blue:
out
= Color.
Red.
getName(); break;
default:
throw new UnsupportedArgumentException ("unsupported color: " + color.getName());
}
return out;
}
{
if (color == null) throw new UnsupportedArgumentException ("unsupported color: NULL");
return test_1(color);
}
}
{
Red("Red"), Blue("Blue"), Green("Green");
public String getName
() { return name
; } }
class UnsupportedArgumentException
extends Exception {
private String message
= null;
public UnsupportedArgumentException() { super(); }
public UnsupportedArgumentException
(String message
) {
super(message);
this.message = message;
}
public UnsupportedArgumentException
(Throwable cause
) { super(cause
); }
@Override
public String toString
() { return message
; }
@Override
public String getMessage
() { return message
; } }
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJdHJ5IHsgdGVzdF8xKG51bGwpOyB9CiAgICAgICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsgU3lzdGVtLm91dC5wcmludGxuKCJOdWxsUG9pbnRlckV4Y2VwdGlvbiIpOyB9CgogICAgICAgIHRyeSB7IHRlc3RfMihudWxsKTsgfQogICAgICAgIGNhdGNoIChVbnN1cHBvcnRlZEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsgU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2FnZSgpKTsgfQoKICAgICAgICB0cnkgeyB0ZXN0XzEoQ29sb3IuR3JlZW4pOyB9CiAgICAgICAgY2F0Y2ggKFVuc3VwcG9ydGVkQXJndW1lbnRFeGNlcHRpb24gZSkgeyBTeXN0ZW0ub3V0LnByaW50bG4oZS5nZXRNZXNzYWdlKCkpOyB9Cgl9CgkKICAgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdGVzdF8xIChDb2xvciBjb2xvcikgdGhyb3dzIEV4Y2VwdGlvbgogICAgICB7CiAgICAgICAgU3RyaW5nIG91dCA9ICIiOwogICAgICAgIAogICAgICAgIHN3aXRjaCAoY29sb3IpIC8vIE51bGxQb2ludGVyRXhjZXB0aW9uIGV4cGVjdGVkCiAgICAgICAgewogICAgICAgICAgY2FzZSBSZWQ6CiAgICAgICAgICAgIG91dCA9IENvbG9yLlJlZC5nZXROYW1lKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBCbHVlOgogICAgICAgICAgICBvdXQgPSBDb2xvci5SZWQuZ2V0TmFtZSgpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEFyZ3VtZW50RXhjZXB0aW9uICgidW5zdXBwb3J0ZWQgY29sb3I6ICIgKyBjb2xvci5nZXROYW1lKCkpOwogICAgICAgIH0KICAgIAogICAgICAgIHJldHVybiBvdXQ7CiAgICAgIH0KCQoJcHVibGljIHN0YXRpYyBTdHJpbmcgdGVzdF8yIChDb2xvciBjb2xvcikgdGhyb3dzIEV4Y2VwdGlvbgoJewoJICBpZiAoY29sb3IgPT0gbnVsbCkgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQXJndW1lbnRFeGNlcHRpb24gKCJ1bnN1cHBvcnRlZCBjb2xvcjogTlVMTCIpOwoJICByZXR1cm4gdGVzdF8xKGNvbG9yKTsKCX0KfQoKICAgIGVudW0gQ29sb3IKICAgIHsKICAgICAgUmVkKCJSZWQiKSwgQmx1ZSgiQmx1ZSIpLCBHcmVlbigiR3JlZW4iKTsKICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbmFtZTsKICAgICAgcHJpdmF0ZSBDb2xvcihTdHJpbmcgbikgeyBuYW1lID0gbjsgfQogICAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7IHJldHVybiBuYW1lOyB9CiAgICB9CgoKICAgIGNsYXNzIFVuc3VwcG9ydGVkQXJndW1lbnRFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24KICAgIHsKICAgICAgcHJpdmF0ZSBTdHJpbmcgbWVzc2FnZSA9IG51bGw7CiAKICAgICAgcHVibGljIFVuc3VwcG9ydGVkQXJndW1lbnRFeGNlcHRpb24oKSB7IHN1cGVyKCk7IH0KIAogICAgICBwdWJsaWMgVW5zdXBwb3J0ZWRBcmd1bWVudEV4Y2VwdGlvbiAoU3RyaW5nIG1lc3NhZ2UpCiAgICAgIHsKICAgICAgICBzdXBlcihtZXNzYWdlKTsKICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgICB9CiAKICAgICAgcHVibGljIFVuc3VwcG9ydGVkQXJndW1lbnRFeGNlcHRpb24gKFRocm93YWJsZSBjYXVzZSkgeyBzdXBlcihjYXVzZSk7IH0KIAogICAgICBAT3ZlcnJpZGUgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsgcmV0dXJuIG1lc3NhZ2U7IH0KIAogICAgICBAT3ZlcnJpZGUgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkgeyByZXR1cm4gbWVzc2FnZTsgfQogICAgfQo=