372 // 373 static Level findLevel(String name) { 374 if (name == null) { 375 throw new NullPointerException(); 376 } 377 378 Optional<Level> level; 379 380 // Look for a known Level with the given non-localized name. 381 level = KnownLevel.findByName(name, KnownLevel::mirrored); 382 if (level.isPresent()) { 383 return level.get(); 384 } 385 386 // Now, check if the given name is an integer. If so, 387 // first look for a Level with the given value and then 388 // if necessary create one. 389 try { 390 int x = Integer.parseInt(name); 391 level = KnownLevel.findByValue(x, KnownLevel::mirrored); 392 if (!level.isPresent()) { 393 // add new Level 394 Level levelObject = new Level(name, x); 395 // There's no need to use a reachability fence here because 396 // KnownLevel keeps a strong reference on the level when 397 // level.getClass() == Level.class. 398 return KnownLevel.findByValue(x, KnownLevel::mirrored).get(); 399 } 400 } catch (NumberFormatException ex) { 401 // Not an integer. 402 // Drop through. 403 } 404 405 level = KnownLevel.findByLocalizedLevelName(name, 406 KnownLevel::mirrored); 407 if (level.isPresent()) { 408 return level.get(); 409 } 410 411 return null; 412 } 413 414 /** 415 * Returns a string representation of this Level. 416 * 417 * @return the non-localized name of the Level, for example "INFO". 418 */ 419 @Override | 372 // 373 static Level findLevel(String name) { 374 if (name == null) { 375 throw new NullPointerException(); 376 } 377 378 Optional<Level> level; 379 380 // Look for a known Level with the given non-localized name. 381 level = KnownLevel.findByName(name, KnownLevel::mirrored); 382 if (level.isPresent()) { 383 return level.get(); 384 } 385 386 // Now, check if the given name is an integer. If so, 387 // first look for a Level with the given value and then 388 // if necessary create one. 389 try { 390 int x = Integer.parseInt(name); 391 level = KnownLevel.findByValue(x, KnownLevel::mirrored); 392 if (level.isPresent()) { 393 return level.get(); 394 } 395 // add new Level 396 Level levelObject = new Level(name, x); 397 // There's no need to use a reachability fence here because 398 // KnownLevel keeps a strong reference on the level when 399 // level.getClass() == Level.class. 400 return KnownLevel.findByValue(x, KnownLevel::mirrored).get(); 401 } catch (NumberFormatException ex) { 402 // Not an integer. 403 // Drop through. 404 } 405 406 level = KnownLevel.findByLocalizedLevelName(name, 407 KnownLevel::mirrored); 408 if (level.isPresent()) { 409 return level.get(); 410 } 411 412 return null; 413 } 414 415 /** 416 * Returns a string representation of this Level. 417 * 418 * @return the non-localized name of the Level, for example "INFO". 419 */ 420 @Override |