=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java 2016-03-14 01:56:52 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java 2016-03-14 06:31:31 +0000 @@ -103,7 +103,14 @@ { params.getObjects().get( klass ).stream() .filter( identifiableObject -> StringUtils.isEmpty( identifiableObject.getUid() ) ) - .forEach( identifiableObject -> ((BaseIdentifiableObject) identifiableObject).setUid( CodeGenerator.generateCode() ) ); + .forEach( identifiableObject -> { + ((BaseIdentifiableObject) identifiableObject).setUid( CodeGenerator.generateCode() ); + + if ( User.class.isInstance( identifiableObject ) ) + { + ((User) identifiableObject).getUserCredentials().setUid( identifiableObject.getUid() ); + } + } ); } Map, List> uniqueCollectionMap = new HashMap<>(); @@ -285,6 +292,7 @@ if ( user.getUserCredentials() != null ) { + user.getUserCredentials().setUid( user.getUid() ); userCredentials.add( user.getUserCredentials() ); } } @@ -690,8 +698,19 @@ while ( iterator.hasNext() ) { IdentifiableObject object = iterator.next(); - - List errorReports = checkUniqueness( object, preheat, identifier ); + List errorReports = new ArrayList<>(); + + if ( User.class.isInstance( object ) ) + { + User user = (User) object; + errorReports.addAll( checkUniqueness( user, preheat, identifier ) ); + errorReports.addAll( checkUniqueness( user.getUserCredentials(), preheat, identifier ) ); + } + else + { + errorReports = checkUniqueness( object, preheat, identifier ); + } + if ( !errorReports.isEmpty() ) { === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java 2016-03-14 03:33:59 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java 2016-03-14 06:31:31 +0000 @@ -46,6 +46,7 @@ import org.hisp.dhis.schema.SchemaService; import org.hisp.dhis.schema.validation.SchemaValidator; import org.hisp.dhis.user.CurrentUserService; +import org.hisp.dhis.user.UserCredentials; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -103,6 +104,8 @@ ObjectBundle bundle = new ObjectBundle( params, preheatService.preheat( preheatParams ), params.getObjects() ); bundle.setObjectReferences( preheatService.collectObjectReferences( params.getObjects() ) ); + System.err.println( "O: " + bundle.getObjectReferences().get( UserCredentials.class ) ); + return bundle; } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/hooks/UserObjectBundleHook.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/hooks/UserObjectBundleHook.java 2016-03-13 04:55:03 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/hooks/UserObjectBundleHook.java 2016-03-14 06:31:31 +0000 @@ -145,8 +145,7 @@ User user = (User) identifiableObject; UserCredentials userCredentials = user.getUserCredentials(); - - Map userCredentialsReferenceMap = userCredentialsReferences.get( userCredentials.getUid() ); + Map userCredentialsReferenceMap = userCredentialsReferences.get( user.getUid() ); if ( userCredentialsReferenceMap == null || userCredentialsReferenceMap.isEmpty() ) { === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/metadata2/objectbundle/ObjectBundleServiceTest.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/metadata2/objectbundle/ObjectBundleServiceTest.java 2016-03-14 03:38:48 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/metadata2/objectbundle/ObjectBundleServiceTest.java 2016-03-14 06:31:31 +0000 @@ -64,7 +64,6 @@ import org.hisp.dhis.user.UserGroup; import org.hisp.dhis.user.UserService; import org.hisp.dhis.validation.ValidationRule; -import org.junit.Ignore; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; @@ -1415,7 +1414,6 @@ } @Test - @Ignore public void testCreateMetadataWithDuplicateUsername() throws IOException { Map, List> metadata = renderService.fromMetadata( @@ -1429,6 +1427,8 @@ ObjectBundle bundle = objectBundleService.create( params ); objectBundleService.validate( bundle ); objectBundleService.commit( bundle ); + + assertEquals( 1, manager.getAll( User.class ).size() ); } private void defaultSetup() === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/test/resources/dxf2/user_duplicate_username.json' --- dhis-2/dhis-services/dhis-service-dxf2/src/test/resources/dxf2/user_duplicate_username.json 2016-03-14 03:38:48 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/test/resources/dxf2/user_duplicate_username.json 2016-03-14 06:31:31 +0000 @@ -1,4 +1,22 @@ { + "organisationUnits": [ + { + "path": "/inVD5SdytkT", + "openingDate": "2016-03-11T17:00:00.000+0000", + "lastUpdated": "2016-03-12T06:19:49.665+0000", + "created": "2016-03-12T06:19:49.649+0000", + "shortName": "Country", + "user": { + "id": "enHApD3I6Ho" + }, + "attributeValues": [ ], + "id": "inVD5SdytkT", + "name": "Country", + "description": "", + "featureType": "NONE", + "uuid": "0f2d7a85-3b6e-4cae-9d5a-e2903331629b" + } + ], "userRoles": [ { "dataSets": [ ], @@ -132,48 +150,6 @@ "passwordLastUpdated": "2016-03-12T06:20:43.407+0000" }, "teiSearchOrganisationUnits": [ ] - }, - { - "surname": "admin", - "firstName": "admin", - "organisationUnits": [ - { - "id": "inVD5SdytkT" - } - ], - "dataViewOrganisationUnits": [ - { - "id": "inVD5SdytkT" - } - ], - "userCredentials": { - "externalAuth": false, - "disabled": false, - "invitation": false, - "userRoles": [ - { - "id": "tHEWGwIMsJk" - } - ], - "username": "admin", - "passwordLastUpdated": "2016-03-12T06:18:41.403+0000", - "userInfo": { - "id": "enHApD3I6Ho" - }, - "created": "2016-03-12T06:18:41.505+0000", - "lastLogin": "2016-03-12T06:18:41.401+0000", - "catDimensionConstraints": [ ], - "selfRegistered": false, - "user": { - "id": "enHApD3I6Ho" - }, - "cogsDimensionConstraints": [ ] - }, - "lastUpdated": "2016-03-12T06:20:18.336+0000", - "created": "2016-03-12T06:18:41.374+0000", - "teiSearchOrganisationUnits": [ ], - "id": "enHApD3I6Ho", - "attributeValues": [ ] } ] } \ No newline at end of file