Avoid object creation in getAllChildrenIterable in most cases. (#14142)
API change from:
public static Iterable<ClientConnector> getAllChildrenIterable(final ClientConnector connector)
to
public static Iterable<? extends ClientConnector> getAllChildrenIterable(final ClientConnector connector)
avoids creating wrappers in case the component has either no subcomponents
or no extensions. This covers the vast majority of components.
Change-Id: I48ffd2f26f09c265fae6e1aaabdbaa655d52ffb8
Optimizes memory and CPU usage in JSONCodec (#13545)
The null element and the empty JSONArray are frequently created and used
as temporary objects to be encoded by the json encoder. Because they are
never manipulated it is possible to reuse the same empty element again
and save a significant amount of temp objects.
This also helps jsonEquals, which then can return faster due to:
if (fieldValue == referenceValue) return true
jsonEquals does not need to check the referenceValue for JSONobject.NULL.
The invoking code makes sure this never happens.
Boolean and Integer values are very often and much more efficiently
compared directly instead of using toString.
Change-Id: I5fd736427019406469357cda1115d2683b7a5e2b
Removed CommunicationManager and PortletCommunicationManager
* Moved AbstractCommunicationManager abstract methods
getThemeResourceAsStream and createBootstrapHandler to VaadinService
* Made ACM non-abstract and renamed to LegacyCommunicationManager
* Lifted anonymous inner BootstrapHandler subclasses into named public classes
Change-Id: I31739ce8a506d572e75ca8cd5509be215e01693d
Ignore external (fileupload) code in serializability test. Unused classes in it depended on code that is not included in the Vaadin compilation results.