@@ -68,12 +68,20 @@ public void setNewsStore(NewsStore newsStore) {
68
68
*/
69
69
/** {@inheritDoc} */
70
70
public NewsSet getNewsSet (String fname , PortletRequest request ) {
71
+ if (request == null ) {
72
+ logger .warn ("Null PortletRequest passed to getNewsSet method" );
73
+ return null ;
74
+ }
71
75
72
76
final PortletSession session = request .getPortletSession ();
73
77
74
78
// get the user id associated with the current user, or use the configured
75
79
// guest username if no user is authenticated
76
80
final String userId = userIdService .getUserId (request );
81
+ if (userId == null ) {
82
+ logger .warn ("Unable to determine userId from request" );
83
+ return null ;
84
+ }
77
85
78
86
NewsSet set ;
79
87
@@ -88,19 +96,30 @@ public NewsSet getNewsSet(String fname, PortletRequest request) {
88
96
set = new NewsSet ();
89
97
set .setUserId (userId );
90
98
set .setName (fname );
91
- newsStore .storeNewsSet (set );
92
- //TODO: the persisted set (line above) isn't always available to the line below. Hibernate being lazy?
93
- set = newsStore .getNewsSet (userId , fname ); // get set_id
99
+
100
+ try {
101
+ newsStore .storeNewsSet (set );
102
+
103
+ if (set .getId () == null ) {
104
+ logger .warn ("NewsSet was saved but no ID was generated for userId={}, fname={}" , userId , fname );
105
+ NewsSet retrievedSet = newsStore .getNewsSet (userId , fname );
106
+ if (retrievedSet != null ) {
107
+ set = retrievedSet ;
108
+ } else {
109
+ logger .error ("Failed to create or retrieve NewsSet for userId={}, fname={}" , userId , fname );
110
+ return null ;
111
+ }
112
+ }
113
+ } catch (Exception e ) {
114
+ logger .error ("Error creating NewsSet for userId={}, fname={}: {}" , userId , fname , e .getMessage ());
115
+ return null ;
116
+ }
94
117
}
95
118
96
119
// Persistent set is now loaded but may still need re-initalising since last use.
97
120
// by adding setId to session, we signal that initialisation has taken place.
98
121
if (session .getAttribute ("setId" , PortletSession .PORTLET_SCOPE ) == null ) {
99
- if (set != null ) {
100
- logger .debug ("re-initalising loaded newsSet " + set .getName ());
101
- } else {
102
- logger .debug ("attempting to re-initialize loaded newsSet, but it is null" );
103
- }
122
+ logger .debug ("re-initalising loaded newsSet " + set .getName ());
104
123
105
124
@ SuppressWarnings ("unchecked" )
106
125
final Set <String > roles = rolesService .getUserRoles (request );
0 commit comments