Conversation
olliefreeman
left a comment
There was a problem hiding this comment.
hopefully the review helps
As before please examine uk.ac.ox.softeng.maurodatamapper.datamodel.item.DataClassService#checkImportedDataClassAssociations(uk.ac.ox.softeng.maurodatamapper.security.User, uk.ac.ox.softeng.maurodatamapper.datamodel.DataModel, uk.ac.ox.softeng.maurodatamapper.datamodel.item.DataClass, boolean) and follow what it does and how it recurses in the child dataclasses .. the same needs to happen for folders... you do not need to do fullSortOfChildren
| sessionFactory.currentSession.flush() | ||
| } else { | ||
| (folder as GormEntity).save(args) | ||
| (folder as GormEntity).save(saveArgs) |
There was a problem hiding this comment.
not necessary change as the args are the same, the only reason for the save args is to allow removal of the flush arg whilst keeping args immutable
| for (int i = 0; i < folders.size(); i++) { | ||
| folders[i].checkPath() | ||
| folders[i].createdBy = importingUser.emailAddress | ||
| if (!folders[i].id) save(folders[i], validate: false) // Skip validation to avoid error on null folderId/multiFacetAwareItemId |
There was a problem hiding this comment.
do NOT save here, the reason for your error is because your save is triggering a downstream save of the children, you also havent called validate which means the beforeValidate method will not have run which will also mean certain required fields wont have been populated. all we are doing is checking the associations are correct NOT to save. If you look at the other methods which do checking associations we do not save. During importing (as with most other endpoints) the only time save is called is from the controller AFTER everything ahs been saved and validated.
Please use an each closure, its cleaner.
also you need to call recurse this call into each of its child folders and their child folder etc
There was a problem hiding this comment.
Got rid of saving. However, FolderJsonImporterServiceSpec.FI06 - FI08 start failing because multiFacetAwareItemId is now null.
E.g., for metadata:
2022-03-25 14:08:41,955 [est worker] ERROR u.a.o.s.maurodatamapper.util.GormUtils : Errors validating domain: Folder
Errors validating domain: Folder
2022-03-25 14:08:41,970 [est worker] ERROR u.a.o.s.maurodatamapper.util.GormUtils : Property [multiFacetAwareItemId] of class [class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata] cannot be null
Property [multiFacetAwareItemId] of class [class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata] cannot be null
2022-03-25 14:08:41,971 [est worker] ERROR u.a.o.s.maurodatamapper.util.GormUtils : Property [multiFacetAwareItemId] of class [class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata] cannot be null
Property [multiFacetAwareItemId] of class [class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata] cannot be null
2022-03-25 14:08:41,971 [est worker] ERROR u.a.o.s.maurodatamapper.util.GormUtils : Property [multiFacetAwareItemId] of class [class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata] cannot be null
Property [multiFacetAwareItemId] of class [class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata] cannot be null
2022-03-25 14:08:41,980 [est worker] WARN u.a.o.s.m.test.MdmSpecification : --- FolderJsonImporterServiceSpec --- FI06 : test import Folder with metadata >>> 166 ms ---
Domain object is not valid. Has 3 errors:
- Field error in object 'uk.ac.ox.softeng.maurodatamapper.core.container.Folder' on field 'metadata[0].multiFacetAwareItemId': rejected value [null]; codes [uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.java.util.UUID,metadata.multiFacetAwareItemId.validator.error,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,metadata.multiFacetAwareItemId.default.null.message,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,default.null.message.metadata[0].multiFacetAwareItemId,default.null.message.metadata.multiFacetAwareItemId,default.null.message.multiFacetAwareItemId,default.null.message.java.util.UUID,default.null.message]; arguments [multiFacetAwareItemId,class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata,null]; default message [Property [{0}] of class [{1}] with value [{2}] does not pass custom validation]
- Field error in object 'uk.ac.ox.softeng.maurodatamapper.core.container.Folder' on field 'metadata[1].multiFacetAwareItemId': rejected value [null]; codes [uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.java.util.UUID,metadata.multiFacetAwareItemId.validator.error,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,metadata.multiFacetAwareItemId.default.null.message,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,default.null.message.metadata[1].multiFacetAwareItemId,default.null.message.metadata.multiFacetAwareItemId,default.null.message.multiFacetAwareItemId,default.null.message.java.util.UUID,default.null.message]; arguments [multiFacetAwareItemId,class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata,null]; default message [Property [{0}] of class [{1}] with value [{2}] does not pass custom validation]
- Field error in object 'uk.ac.ox.softeng.maurodatamapper.core.container.Folder' on field 'metadata[2].multiFacetAwareItemId': rejected value [null]; codes [uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.java.util.UUID,metadata.multiFacetAwareItemId.validator.error,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,metadata.multiFacetAwareItemId.default.null.message,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,default.null.message.metadata[2].multiFacetAwareItemId,default.null.message.metadata.multiFacetAwareItemId,default.null.message.multiFacetAwareItemId,default.null.message.java.util.UUID,default.null.message]; arguments [multiFacetAwareItemId,class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata,null]; default message [Property [{0}] of class [{1}] with value [{2}] does not pass custom validation]
org.spockframework.util.InternalSpockError: Domain object is not valid. Has 3 errors:
- Field error in object 'uk.ac.ox.softeng.maurodatamapper.core.container.Folder' on field 'metadata[0].multiFacetAwareItemId': rejected value [null]; codes [uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.java.util.UUID,metadata.multiFacetAwareItemId.validator.error,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata[0].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata[0].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,metadata.multiFacetAwareItemId.default.null.message,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[0].multiFacetAwareItemId,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,default.null.message.metadata[0].multiFacetAwareItemId,default.null.message.metadata.multiFacetAwareItemId,default.null.message.multiFacetAwareItemId,default.null.message.java.util.UUID,default.null.message]; arguments [multiFacetAwareItemId,class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata,null]; default message [Property [{0}] of class [{1}] with value [{2}] does not pass custom validation]
- Field error in object 'uk.ac.ox.softeng.maurodatamapper.core.container.Folder' on field 'metadata[1].multiFacetAwareItemId': rejected value [null]; codes [uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.java.util.UUID,metadata.multiFacetAwareItemId.validator.error,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata[1].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata[1].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,metadata.multiFacetAwareItemId.default.null.message,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[1].multiFacetAwareItemId,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,default.null.message.metadata[1].multiFacetAwareItemId,default.null.message.metadata.multiFacetAwareItemId,default.null.message.multiFacetAwareItemId,default.null.message.java.util.UUID,default.null.message]; arguments [multiFacetAwareItemId,class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata,null]; default message [Property [{0}] of class [{1}] with value [{2}] does not pass custom validation]
- Field error in object 'uk.ac.ox.softeng.maurodatamapper.core.container.Folder' on field 'metadata[2].multiFacetAwareItemId': rejected value [null]; codes [uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.validator.error,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.multiFacetAwareItemId,metadata.multiFacetAwareItemId.validator.error.java.util.UUID,metadata.multiFacetAwareItemId.validator.error,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata[2].multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata.multiFacetAwareItemId.default.null.message,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata[2].multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.metadata.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.multiFacetAwareItemId,metadata.multiFacetAwareItemId.default.null.message.java.util.UUID,metadata.multiFacetAwareItemId.default.null.message,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata[2].multiFacetAwareItemId,default.null.message.uk.ac.ox.softeng.maurodatamapper.core.container.Folder.metadata.multiFacetAwareItemId,default.null.message.metadata[2].multiFacetAwareItemId,default.null.message.metadata.multiFacetAwareItemId,default.null.message.multiFacetAwareItemId,default.null.message.java.util.UUID,default.null.message]; arguments [multiFacetAwareItemId,class uk.ac.ox.softeng.maurodatamapper.core.facet.Metadata,null]; default message [Property [{0}] of class [{1}] with value [{2}] does not pass custom validation]This is why I thought to save here, to generate the multiFacetAware.ids needed when checking facets. What is the proper thing to do here?
There was a problem hiding this comment.
Forgot to add, FolderJsonImporterServiceSpec.FI09 also starts to fail with the following:
object references an unsaved transient instance - save the transient instance before flushing: uk.ac.ox.softeng.maurodatamapper.core.container.Folder; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: uk.ac.ox.softeng.maurodatamapper.core.container.Folder
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: uk.ac.ox.softeng.maurodatamapper.core.container.Folder; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: uk.ac.ox.softeng.maurodatamapper.core.container.Folder
at app//org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:237)
at app//org.grails.orm.hibernate.GrailsHibernateTemplate.convertHibernateAccessException(GrailsHibernateTemplate.java:717)
at app//org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:301)
at app//org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:241)
at app//org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:120)
at app//org.grails.orm.hibernate.AbstractHibernateGormValidationApi.validate(AbstractHibernateGormValidationApi.groovy:78)
at app//org.grails.orm.hibernate.AbstractHibernateGormValidationApi.validate(AbstractHibernateGormValidationApi.groovy:51)
at app//org.grails.orm.hibernate.AbstractHibernateGormValidationApi.validate(AbstractHibernateGormValidationApi.groovy:50)
at app//org.grails.datastore.gorm.GormValidateable$Trait$Helper.validate(GormValidateable.groovy:97)
at app//uk.ac.ox.softeng.maurodatamapper.core.container.FolderService.$tt__checkImportedFolderAssociations(FolderService.groovy:649)
at uk.ac.ox.softeng.maurodatamapper.core.container.FolderService.checkImportedFolderAssociations_closure48(FolderService.groovy)
at app//groovy.lang.Closure.call(Closure.java:412)
at app//groovy.lang.Closure.call(Closure.java:428)
at app//grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:94)
at app//org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at app//grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:91)
at app//uk.ac.ox.softeng.maurodatamapper.core.container.provider.importer.DataBindFolderImporterProviderService.bindMapToFolder(DataBindFolderImporterProviderService.groovy:64)
at app//uk.ac.ox.softeng.maurodatamapper.core.container.provider.importer.FolderJsonImporterService.importFolder(FolderJsonImporterService.groovy:53)
at app//uk.ac.ox.softeng.maurodatamapper.core.container.provider.importer.DataBindFolderImporterProviderService.importDomain(DataBindFolderImporterProviderService.groovy:47)
at app//uk.ac.ox.softeng.maurodatamapper.core.container.test.provider.BaseFolderImporterServiceSpec.importFolder(BaseFolderImporterServiceSpec.groovy:86)
at app//uk.ac.ox.softeng.maurodatamapper.core.container.test.provider.BaseFolderImporterServiceSpec.importFolder(BaseFolderImporterServiceSpec.groovy:96)
at app//uk.ac.ox.softeng.maurodatamapper.core.container.provider.importer.FolderJsonImporterServiceSpec.$tt__$spock_feature_3_7(FolderJsonImporterServiceSpec.groovy:132)
at uk.ac.ox.softeng.maurodatamapper.core.container.provider.importer.FolderJsonImporterServiceSpec.FI09 : test import Folder with child Folders_closure10(FolderJsonImporterServiceSpec.groovy)| class FolderImporterProviderServiceParameters implements ImporterProviderServiceParameters { | ||
| @ImportParameterConfig( | ||
| displayName = 'Parent Folder', | ||
| description = 'The parent folder into which the Model/s should be imported.', |
There was a problem hiding this comment.
fix description please
| description = 'The parent folder into which the Model/s should be imported.', | ||
| order = 0, | ||
| group = @ImportGroupConfig( | ||
| name = 'Model', |
* Create ContainerImporterProviderService
…orted Folder associations Error encountered in FolderFunctionalSpec.FE07
| @@ -128,18 +128,21 @@ trait MultiFacetAwareService<K extends MultiFacetAware> { | |||
| if (multiFacetAware.metadata) { | |||
| multiFacetAware.metadata.each { | |||
| it.multiFacetAwareItemId = multiFacetAware.id | |||
There was a problem hiding this comment.
Re: multiFacetAwareItemId cannot be null. How do you ensure that an object has an ID without saving?
No description provided.