mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-12-22 20:47:57 +01:00
Log LazyStringBuilder instances throwing a NPE
This commit is contained in:
parent
24f6d86452
commit
b51d5070fc
1 changed files with 22 additions and 3 deletions
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2014 Florian Schmaus
|
||||
* Copyright 2014-2017 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -19,9 +19,13 @@ package org.jivesoftware.smack.util;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class LazyStringBuilder implements Appendable, CharSequence {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(LazyStringBuilder.class.getName());
|
||||
|
||||
private final List<CharSequence> list;
|
||||
|
||||
private String cache;
|
||||
|
@ -69,8 +73,15 @@ public class LazyStringBuilder implements Appendable, CharSequence {
|
|||
return cache.length();
|
||||
}
|
||||
int length = 0;
|
||||
for (CharSequence csq : list) {
|
||||
length += csq.length();
|
||||
try {
|
||||
for (CharSequence csq : list) {
|
||||
length += csq.length();
|
||||
}
|
||||
}
|
||||
catch (NullPointerException npe) {
|
||||
StringBuilder sb = safeToStringBuilder();
|
||||
LOGGER.log(Level.SEVERE, "The following LazyStringBuilder threw a NullPointerException: " + sb, npe);
|
||||
throw npe;
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
@ -107,6 +118,14 @@ public class LazyStringBuilder implements Appendable, CharSequence {
|
|||
return cache;
|
||||
}
|
||||
|
||||
public StringBuilder safeToStringBuilder() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (CharSequence csq : list) {
|
||||
sb.append(csq);
|
||||
}
|
||||
return sb;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the List of CharSequences representation of this instance. The list is unmodifiable. If
|
||||
* the resulting String was already cached, a list with a single String entry will be returned.
|
||||
|
|
Loading…
Reference in a new issue