openlvc / portico

Portico is an open source, cross-platform, fully supported HLA RTI implementation. Designed with modularity and flexibility in mind, Portico is a production-grade RTI for the Simulation and Training Community, so come say hi!
http://www.porticoproject.org
151 stars 81 forks source link

Fix for Issue #286: Creating a Federation Execution with a `null` or empty FOM array throws NullPointerException/IndexOutOfBoundsException #287

Closed adlaws closed 5 years ago

adlaws commented 5 years ago

Attempts to create a federation execution with a null for the FOM modules parameter failed with a NullPointerException, and with an empty FOM modules array caused an IndexOutOfBoundsException.

A few places in the code caused this, depending on which version/method signature of the createFederationExecution method is invoked, but they all basically came down to an assumption that the fomModules parameter is never a null or empty array. These are...

org.portico.lrc.services.federation.msg.CreateFederation:

org.portico.impl.hla1516e.Rti1516eAmbassador#createFederationExecution( String federationName, URL[] fomModules, URL mimModule ):

org.portico.lrc.model.ModelMerger#mergeModels( List<ObjectModel> models ):

Two unit tests have also been added to cover the above situations and validate that behaviour is correct.

Tested with release build and all tests pass.