Skip to content

Exception accessing properties of empty structures #816

@sbliven

Description

@sbliven

In SymmetryTools.divideStructures we create a new StructureImpl and immediately call getChain() on it. In 5.1.1 this causes an IndexOutOfBounds because no models have been created.

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.rangeCheck(ArrayList.java:657) ~[?:1.8.0_192]
	at java.util.ArrayList.get(ArrayList.java:433) ~[?:1.8.0_192]
	at org.biojava.nbio.structure.StructureImpl.getModel(StructureImpl.java:650) ~[classes/:?]
	at org.biojava.nbio.structure.StructureImpl.getChains(StructureImpl.java:572) ~[classes/:?]
	at org.biojava.nbio.structure.StructureImpl.getChain(StructureImpl.java:671) ~[classes/:?]
	at org.biojava.nbio.structure.StructureTools.addGroupToStructure(StructureTools.java:536) ~[classes/:?]
	at org.biojava.nbio.structure.symmetry.utils.SymmetryTools.divideStructure(SymmetryTools.java:537) ~[classes/:?]
	at org.biojava.nbio.structure.symmetry.utils.SymmetryTools.toRepeatsAlignment(SymmetryTools.java:611) ~[classes/:?]
	at org.biojava.nbio.structure.symmetry.utils.SymmetryTools.getQuaternarySymmetry(SymmetryTools.java:708) ~[classes/:?]
	at org.biojava.nbio.structure.symmetry.gui.SymmetryDisplay.printSymmetryGroup(SymmetryDisplay.java:272) ~[classes/:?]
	at org.biojava.nbio.structure.symmetry.gui.SymmetryDisplay.display(SymmetryDisplay.java:134) ~[classes/:?]
	at workers.CeSymmWorker.run(CeSymmWorker.java:85) [classes/:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_192]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_192]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_192]

How do we want to handle this?

  1. The exception is expected. Users should use s.addModel(new ArrayList<Chain>()) when they create a new structure
  2. All models are implicitly created for each structure. Modify getModel so that it creates empty models when called for a model not on the current model list
  3. Create model 0 automatically when the structure is instanciated

Metadata

Metadata

Assignees

Labels

bugBugs and bugfixesquestionOpen discussions about the library

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions