Changeset 1576


Ignore:
Timestamp:
Feb 28, 2011, 5:44:13 PM (7 years ago)
Author:
robert@…
Message:
  • Solved locking problems with module communication
  • Fixed a null pointer bug in assayController
Location:
trunk/grails-app
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/AssayController.groovy

    r1559 r1576  
    143143
    144144        // obtain fields for each category
     145                def fieldMap
    145146        try {
    146 
    147             def fieldMap = assayService.collectAssayTemplateFields(assay)
    148            
     147            fieldMap = assayService.collectAssayTemplateFields(assay)
    149148        } catch (Exception e) {
    150 
     149                        e.printStackTrace();
    151150            flash.errorMessage = e.message
    152151            redirect action: 'selectAssay'
     152                        return;
    153153
    154154        }
  • trunk/grails-app/controllers/dbnp/studycapturing/SimpleWizardController.groovy

    r1553 r1576  
    138138                                        toPage( "missingFields" );
    139139                                } else {
     140                                        // The import of the excel file has finished. Now delete the excelfile
     141                                        if( session.simpleWizard.sampleForm.importFile )
     142                                                fileService.delete( session.simpleWizard.sampleForm.importFile );
     143
    140144                                        toPage( "assays" );
    141145                                }
     
    176180                                if( session.simpleWizard.imported.numInvalidEntities == 0 ) {
    177181                                        // Only continue to the next page if the information entered is correct
     182                                       
     183                                        // The import of the excel file has finished. Now delete the excelfile
     184                                        if( session.simpleWizard.sampleForm.importFile )
     185                                                fileService.delete( session.simpleWizard.sampleForm.importFile );
     186                                               
    178187                                        toPage( "assays" );
    179188                                        return;
     
    503512                                session.simpleWizard.excel.dataMatrixStart - 1,
    504513                                session.simpleWizard.excel.data.header)
    505 
    506 
    507514
    508515                session.simpleWizard.imported = [
  • trunk/grails-app/services/dbnp/modules/ModuleCommunicationService.groovy

    r1517 r1576  
    1616
    1717import dbnp.studycapturing.*
     18import dbnp.authentication.*
    1819import grails.converters.*
    1920import javax.servlet.http.HttpServletResponse
    2021import org.codehaus.groovy.grails.commons.ConfigurationHolder
     22import org.hibernate.*;
    2123
    2224class ModuleCommunicationService implements Serializable {
    23         boolean transactional = false
     25        static transactional = false
    2426        def authenticationService
    2527        def moduleNotificationService
    26 
     28        SessionFactory sessionFactory
     29       
    2730        /**
    2831         * Cache containing the contents of different URLs. These urls are
     
    98101
    99102                // put the session token to work
    100                 authenticationService.logInRemotely( consumer, sessionToken, authenticationService.getLoggedInUser() )
    101 
     103                // This saving is done in a separate session, since that seems to be the only way to have grails/hibernate
     104                // really save the object to the database. This is needed, since the module will start a new http request to GSCF
     105                // and in that request the database object must exist.
     106                // Using session.flush(), save(flush:true) or transaction.commit() don't do the trick. If you know
     107                // a better way to perform this trick, feel free to change it :)
     108                def hibernateSession = sessionFactory.openSession( sessionFactory.getCurrentSession().connection() );
     109                def transaction = hibernateSession.beginTransaction();
     110               
     111                if( transaction ) {
     112                        authenticationService.logInRemotely( consumer, sessionToken, authenticationService.getLoggedInUser() )
     113                        transaction.commit();
     114                }
     115                hibernateSession.flush();
     116               
    102117                // Append the sessionToken to the URL
    103118                def url = restUrl
     
    109124                        url += '?sessionToken=' + sessionToken
    110125                }
    111 
     126               
    112127                // Perform a call to the url
    113128                def restResponse
     
    122137                } finally {
    123138                        // Dispose of the ephemeral session token
    124                         authenticationService.logOffRemotely(consumer, sessionToken)
     139                        //authenticationService.logOffRemotely(consumer, sessionToken)
    125140                }
    126141
Note: See TracChangeset for help on using the changeset viewer.