Author: bpapez
Date: Wed Jan  9 00:22:21 2008
New Revision: 19476

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19476&repname=
=3Djahia
Log:
MAN-30: implement lazy loading of DB group members

Modified:
    branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton
    branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
DBGroup.java
    branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
Group.java
    branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
GroupManagerDBProvider.java
    branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
LDAPGroup.java
    branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBean.java

Modified: branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/etc/config/jahia.skeleton&rev=3D19476&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton (original)
+++ branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton Wed Jan  9 00:22:21=
 2008
@@ -343,7 +343,7 @@
 pageCounterIncrementActivated                          =3D false
 =

 # This variable controls whether the homepage container lists, containers
-# and fields are preloaded on every page. This is a performance improvement
+# and fields are preloaded on every page request. This is a performance im=
provement
 # if lists or fields from the homepage are displayed on every page (like m=
enu).
 preloadHomepageFieldsActivated                         =3D true
 =

@@ -355,6 +355,10 @@
 # generating pages (in heavy load situations)
 pageGenerationWaitTime                                 =3D 120000
 =

+# This variable controls whether all the members of a user group (in Jahia=
 DB
+# not LDAP) are preloaded, when the group is loaded.
+preloadDBGroupMembersActivated                         =3D true
+
 ######################################################################
 ### Cluster settings  ################################################
 ######################################################################

Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager=
/JahiaDBGroup.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/services/usermanager/JahiaDBGroup.java&rev=3D19476&=
repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
DBGroup.java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
DBGroup.java Wed Jan  9 00:22:21 2008
@@ -32,8 +32,10 @@
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Properties;
+import java.util.Set;
 =

 /**
  * This class represents the Jahia native database based user group.
@@ -56,6 +58,10 @@
 =

     /** Group additional parameters. */
     private Properties mProperties =3D new Properties ();
+    =

+    private boolean preloadedGroups;
+
+    private Set notMembers =3D new HashSet();
 =

     //--------------------------------------------------------------------=
-----
     /**
@@ -69,9 +75,10 @@
      *                        Service. If any of this services can't be ac=
cessed, a
      *                        JahiaException is thrown.
      * @param  siteID The site id
+     * @param preloadedGroups
      */
     protected JahiaDBGroup (int id, String groupname, String groupKey, int=
 siteID,
-                            Hashtable members, Properties properties)
+                            Hashtable members, Properties properties, bool=
ean preloadedGroups)
             throws JahiaException {
         ServicesRegistry registry =3D ServicesRegistry.getInstance ();
         if (registry =3D=3D null) {
@@ -92,7 +99,7 @@
         if (properties !=3D null) {
             mProperties =3D properties;
         }
-
+        this.preloadedGroups =3D preloadedGroups;
     }
 =

 =

@@ -439,4 +446,24 @@
         return JahiaGroupManagerDBProvider.PROVIDER_NAME;
     }
 =

+    public boolean isMember(Principal principal) {
+        if (!(principal instanceof JahiaDBUser) && !(principal instanceof =
JahiaDBGroup)) {
+            return false;
+        }        =

+        if (super.isMember(principal)) {
+            return true;
+        }
+        if (!preloadedGroups && principal instanceof JahiaUser) {
+            if (notMembers.contains(principal.getName())) {
+                return false;
+            }
+            if (JahiaGroupManagerDBProvider.getInstance().getUserMembershi=
p((JahiaUser)principal).contains(getGroupKey())) {
+                mMembers.put(principal.getName(), principal);
+                return true;
+            } else {
+                notMembers.add(principal.getName());
+            }
+        }
+        return false;
+    }    =

 }

Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager=
/JahiaGroup.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/services/usermanager/JahiaGroup.java&rev=3D19476&re=
pname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
Group.java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
Group.java Wed Jan  9 00:22:21 2008
@@ -269,7 +269,9 @@
             if (member !=3D null) {
 =

                 // check if the member is the one we are looking for
-                if (member.getName ().equals (principal.getName ())) {
+                if (member.getName ().equals (principal.getName ())
+                        || (member.getName().startsWith(JahiaUserManagerSe=
rvice.GUEST_USERNAME+":")
+                            && principal.getName().startsWith(JahiaUserMan=
agerService.GUEST_USERNAME+":"))) {
                     result =3D true;
                 } else {
 =


Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager=
/JahiaGroupManagerDBProvider.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/services/usermanager/JahiaGroupManagerDBProvider.ja=
va&rev=3D19476&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
GroupManagerDBProvider.java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
GroupManagerDBProvider.java Wed Jan  9 00:22:21 2008
@@ -9,17 +9,20 @@
  * @version 1.0
  */
 =

+import org.jahia.bin.Jahia;
 import org.jahia.data.JahiaDBDOMObject;
 import org.jahia.data.JahiaDOMObject;
 import org.jahia.exceptions.JahiaException;
 import org.jahia.registries.ServicesRegistry;
 import org.jahia.services.acl.JahiaACLManagerService;
+import org.jahia.services.database.ConnectionDispenser;
 import org.jahia.services.database.JahiaIncrementorsDBService;
 import org.jahia.services.sites.JahiaSite;
 import org.jahia.services.sites.JahiaSiteTools;
 import org.jahia.utils.JahiaTools;
 =

 import java.sql.Connection;
+import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
@@ -148,7 +151,7 @@
         String groupKey =3D name + ":" + String.valueOf (siteID);
         try {
             group =3D new JahiaDBGroup (groupID, name, groupKey, siteID, n=
ull,
-                    properties);
+                    properties, false);
         } catch (JahiaException ex) {
             logger.error ("Could not create group [" + name + "] in create=
Group()", ex);
             return null;
@@ -296,8 +299,7 @@
         Set groupKeys =3D new HashSet ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return result;
         }
@@ -572,19 +574,17 @@
         Vector result =3D new Vector ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return result;
         }
 =

-        Statement statement =3D null;
+        PreparedStatement statement =3D null;
         try {
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT name_jahia_grps=
 FROM jahia_grps");
             if (statement !=3D null) {
                 // Get the basic user data
-                String query =3D "SELECT name_jahia_grps FROM jahia_grps";
-                ResultSet rs =3D statement.executeQuery (query);
+                ResultSet rs =3D statement.executeQuery ();
                 if (rs !=3D null) {
                     String name;
                     while (rs.next ()) {
@@ -618,21 +618,18 @@
         Vector result =3D new Vector ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return result;
         }
 =

-        Statement statement =3D null;
+        PreparedStatement statement =3D null;
         try {
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT name_jahia_grps=
 FROM jahia_grps where siteid_jahia_grps=3D?");
             if (statement !=3D null) {
                 // Get the basic user data
-                String query =3D
-                        "SELECT name_jahia_grps FROM jahia_grps where site=
id_jahia_grps=3D" +
-                        siteID;
-                ResultSet rs =3D statement.executeQuery (query);
+                statement.setInt(1, siteID);
+                ResultSet rs =3D statement.executeQuery ();
                 if (rs !=3D null) {
                     String name;
                     while (rs.next ()) {
@@ -667,21 +664,18 @@
         Vector result =3D new Vector ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return result;
         }
 =

-        Statement statement =3D null;
+        PreparedStatement statement =3D null;
         try {
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT key_jahia_grps =
FROM jahia_grps where siteid_jahia_grps=3D?");
             if (statement !=3D null) {
                 // Get the basic user data
-                String query =3D
-                        "SELECT key_jahia_grps FROM jahia_grps where sitei=
d_jahia_grps=3D" +
-                        siteID;
-                ResultSet rs =3D statement.executeQuery (query);
+                statement.setInt(1, siteID);
+                ResultSet rs =3D statement.executeQuery ();
                 if (rs !=3D null) {
                     String name;
                     while (rs.next ()) {
@@ -715,19 +709,17 @@
         Vector result =3D new Vector ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return result;
         }
 =

-        Statement statement =3D null;
+        PreparedStatement statement =3D null;
         try {
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT key_jahia_grps =
FROM jahia_grps ");
             if (statement !=3D null) {
                 // Get the basic user data
-                String query =3D "SELECT key_jahia_grps FROM jahia_grps ";
-                ResultSet rs =3D statement.executeQuery (query);
+                ResultSet rs =3D statement.executeQuery ();
                 if (rs !=3D null) {
                     String name;
                     while (rs.next ()) {
@@ -768,25 +760,20 @@
         Vector result =3D new Vector ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return result;
         }
 =

-        Statement statement =3D null;
+        PreparedStatement statement =3D null;
 =

         try {
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT id_jahia_grps F=
ROM jahia_grp_access WHERE id_jahia_member=3D? AND membertype_grp_access=3D=
?");
             if (statement !=3D null) {
-                StringBuffer query =3D new StringBuffer (
-                        "SELECT id_jahia_grps FROM jahia_grp_access");
-                query.append (" WHERE id_jahia_member=3D'");
-                query.append (user.getName ());
-                query.append ("' AND membertype_grp_access=3D");
-                query.append (mUSERTYPE);
+                statement.setString(1, user.getName ());
+                statement.setInt(2, mUSERTYPE);
 =

-                ResultSet rs =3D statement.executeQuery (query.toString ()=
);
+                ResultSet rs =3D statement.executeQuery ();
                 if (rs !=3D null) {
                     while (rs.next ()) {
                         String name =3D rs.getString ("id_jahia_grps");
@@ -876,8 +863,7 @@
     // write access.
     private boolean makeQuery (String query) {
         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return false;
         }
@@ -907,8 +893,7 @@
     private boolean addGroupIntoDB (int id, String groupname, String group=
Key,
                                     int siteID, Properties properties) {
         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return false;
         }
@@ -964,49 +949,44 @@
         Properties properties =3D new Properties ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return null;
         }
 =

         // execute the SELECT query
-        Statement statement =3D null;
+        PreparedStatement statement =3D null;
         String query =3D "";
         try {
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT id_jahia_grps, =
name_jahia_grps,siteid_jahia_grps FROM jahia_grps WHERE key_jahia_grps=3D?"=
);
             if (statement !=3D null) {
-                query =3D "SELECT id_jahia_grps, name_jahia_grps,siteid_ja=
hia_grps FROM jahia_grps WHERE key_jahia_grps=3D'" +
-                        groupKey + "'";
-                ResultSet rs =3D statement.executeQuery (query);
-                if (rs !=3D null) {
-                    if (rs.next ()) {
-                        int id =3D rs.getInt ("id_jahia_grps");
-                        String name =3D rs.getString ("name_jahia_grps");
-                        int siteID =3D rs.getInt ("siteid_jahia_grps");
-                        Hashtable members =3D getGroupMembers (groupKey);
+                statement.setString(1, groupKey);
+                ResultSet rs =3D statement.executeQuery();
+                if (rs !=3D null && rs.next()) {
+                    int id =3D rs.getInt("id_jahia_grps");
+                    String name =3D rs.getString("name_jahia_grps");
+                    int siteID =3D rs.getInt("siteid_jahia_grps");
+                    Hashtable members =3D null;
+                    if (Jahia.getSettings().isPreloadDBGroupMembersActivat=
ed()) {
+                        members =3D getGroupMembers(groupKey);
+                    } else {
+                        members =3D new Hashtable();
+                    }
 =

-                        try {
-                            properties =3D
-                                    JahiaGroupDBUtils.getInstance ().getGr=
oupProperties (id,
-                                            PROVIDER_NAME, groupKey);
-                        } catch (JahiaException je) {
-                            logger.error (
-                                    "Error while inserting group " + id + =
" properties into database",
-                                    je);
-                        }
+                    try {
+                        properties =3D JahiaGroupDBUtils.getInstance().get=
GroupProperties(id, PROVIDER_NAME, groupKey);
+                    } catch (JahiaException je) {
+                        logger.error("Error while inserting group " + id +=
 " properties into database", je);
+                    }
 =

-                        try {
-                            group =3D new JahiaDBGroup (id, name, groupKey=
, siteID,
-                                    members, properties);
-                            if (group !=3D null) {
-                                logger.debug ("Group [" + groupKey + "/" +=
 name +
-                                        "] loaded from database");
-                            }
-                        } catch (JahiaException ex) {
-                            logger.error ("Could not create group [" + nam=
e +
-                                    "] in lookupGroupInDB()", ex);
+                    try {
+                        group =3D new JahiaDBGroup(id, name, groupKey, sit=
eID, members, properties, Jahia
+                                .getSettings().isPreloadDBGroupMembersActi=
vated());
+                        if (group !=3D null && logger.isDebugEnabled()) {
+                            logger.debug("Group [" + groupKey + "/" + name=
 + "] loaded from database");
                         }
+                    } catch (JahiaException ex) {
+                        logger.error("Could not create group [" + name + "=
] in lookupGroupInDB()", ex);
                     }
                 }
             }
@@ -1021,54 +1001,51 @@
         return group;
     }
 =

-    //--------------------------------------------------------------------=
------
+    // -------------------------------------------------------------------=
-------
     private JahiaDBGroup lookupGroupInDB (int siteID, String name) {
         JahiaDBGroup group =3D null;
         Properties properties =3D new Properties ();
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return null;
         }
 =

         // execute the SELECT query
-        Statement statement =3D null;
+        PreparedStatement statement =3D null;
         String query =3D "";
         try {
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT id_jahia_grps, =
key_jahia_grps FROM jahia_grps WHERE name_jahia_grps=3D? and siteid_jahia_g=
rps=3D?");
             if (statement !=3D null) {
-                query =3D
-                        "SELECT id_jahia_grps, key_jahia_grps FROM jahia_g=
rps WHERE name_jahia_grps=3D'" +
-                        name + "' and siteid_jahia_grps=3D" + siteID;
-                ResultSet rs =3D statement.executeQuery (query);
-                if (rs !=3D null) {
-                    if (rs.next ()) {
-                        int groupID =3D rs.getInt ("id_jahia_grps");
-                        String groupKey =3D rs.getString ("key_jahia_grps"=
);
-                        Hashtable members =3D getGroupMembers (groupKey);
+                statement.setString(1, name);
+                statement.setInt(2, siteID);
+                ResultSet rs =3D statement.executeQuery ();
+                if (rs !=3D null && rs.next()) {
+                    int groupID =3D rs.getInt("id_jahia_grps");
+                    String groupKey =3D rs.getString("key_jahia_grps");
+                    Hashtable members =3D null;
+                    if (Jahia.getSettings().isPreloadDBGroupMembersActivat=
ed()) {
+                        members =3D getGroupMembers(groupKey);
+                    } else {
+                        members =3D new Hashtable();
+                    }
 =

-                        try {
-                            properties =3D JahiaGroupDBUtils.getInstance (=
).
-                                    getGroupProperties (groupID,
-                                            PROVIDER_NAME, groupKey);
-                        } catch (JahiaException je) {
-                            logger.error (
-                                    "Error while loading properties for gr=
oup " + groupID, je);
-                        }
+                    try {
+                        properties =3D JahiaGroupDBUtils.getInstance().get=
GroupProperties(groupID, PROVIDER_NAME,
+                                groupKey);
+                    } catch (JahiaException je) {
+                        logger.error("Error while loading properties for g=
roup " + groupID, je);
+                    }
 =

-                        try {
-                            group =3D new JahiaDBGroup (groupID, name, gro=
upKey,
-                                    siteID, members, properties);
-                            if (group !=3D null) {
-                                logger.debug ("Group [" + Integer.toString=
 (groupID) +
-                                        "/" + name + "] loaded from databa=
se");
-                            }
-                        } catch (JahiaException ex) {
-                            logger.error ("Could not create group [" + nam=
e +
-                                    "] in lookupGroupInDB()", ex);
+                    try {
+                        group =3D new JahiaDBGroup(groupID, name, groupKey=
, siteID, members, properties, Jahia
+                                .getSettings().isPreloadDBGroupMembersActi=
vated());
+                        if (group !=3D null && logger.isDebugEnabled()) {
+                            logger.debug("Group [" + Integer.toString(grou=
pID) + "/" + name + "] loaded from database");
                         }
+                    } catch (JahiaException ex) {
+                        logger.error("Could not create group [" + name + "=
] in lookupGroupInDB()", ex);
                     }
                 }
             }
@@ -1090,32 +1067,27 @@
         Hashtable members =3D null;
 =

         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return null;
         }
 =

         // execute the SELECT query
-        Statement statement =3D null;
-        StringBuffer query =3D new StringBuffer ();
+        PreparedStatement statement =3D null;
         try {
             members =3D new Hashtable ();
             Vector memberKeys =3D new Vector ();
 =

             //-------------------------
             // GET THE USER MEMBER KEYS
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT id_jahia_member=
 FROM jahia_grp_access WHERE id_jahia_grps=3D? AND membertype_grp_access=3D=
?");
             if (statement !=3D null) {
                 // load all the group's user members
 =

-                query.append (
-                        "SELECT id_jahia_member FROM jahia_grp_access WHER=
E id_jahia_grps=3D'");
-                query.append (groupKey);
-                query.append ("' AND membertype_grp_access=3D");
-                query.append (mUSERTYPE);
+                statement.setString(1, groupKey);
+                statement.setInt(2, mUSERTYPE);
 =

-                ResultSet rs =3D statement.executeQuery (query.toString ()=
);
+                ResultSet rs =3D statement.executeQuery ();
                 if (rs !=3D null) {
                     while (rs.next ()) {
                         String key =3D rs.getString ("id_jahia_member");
@@ -1137,20 +1109,16 @@
                 // remove all the user keys.
                 memberKeys.clear ();
             }
-            query.delete (0, query.length ());
 =

             //--------------------------
             // GET THE GROUP MEMBER KEYS
-            statement =3D dbConn.createStatement ();
+            statement =3D dbConn.prepareStatement ("SELECT id_jahia_member=
 FROM jahia_grp_access WHERE id_jahia_grps=3D? AND membertype_grp_access=3D=
?");
             if (statement !=3D null) {
                 // load all the group's group members
-                query.append (
-                        "SELECT id_jahia_member FROM jahia_grp_access WHER=
E id_jahia_grps=3D'");
-                query.append (groupKey);
-                query.append ("' AND membertype_grp_access=3D");
-                query.append (mGROUPTYPE);
+                statement.setString(1, groupKey);
+                statement.setInt(2, mGROUPTYPE);
 =

-                ResultSet rs =3D statement.executeQuery (query.toString ()=
);
+                ResultSet rs =3D statement.executeQuery ();
                 if (rs !=3D null) {
                     while (rs.next ()) {
                         String key =3D rs.getString ("id_jahia_member");
@@ -1170,8 +1138,7 @@
                 }
             }
         } catch (SQLException ex) {
-            logger.error ("SQL Exception occured for query [" +
-                    query + "]", ex);
+            logger.error ("SQL Exception occured", ex);
         } finally {
 =

             closeStatement (statement);
@@ -1183,8 +1150,7 @@
     //--------------------------------------------------------------------=
------
     private boolean deleteGroupFromDB (JahiaGroup group) {
         // Get a database connection
-        Connection dbConn =3D org.jahia.services.database.ConnectionDispen=
ser.
-                getConnection ();
+        Connection dbConn =3D ConnectionDispenser.getConnection ();
         if (dbConn =3D=3D null) {
             return false;
         }
@@ -1241,8 +1207,7 @@
             String sqlQuery =3D
                     "SELECT * FROM jahia_grps where siteid_jahia_grps=3D" =
+ siteID;
 =

-            dbConn =3D org.jahia.services.database.ConnectionDispenser.
-                    getConnection ();
+            dbConn =3D ConnectionDispenser.getConnection ();
             statement =3D dbConn.createStatement ();
             if (statement !=3D null) {
                 ResultSet rs =3D statement.executeQuery (sqlQuery);
@@ -1290,8 +1255,7 @@
                     "jahia_grps.key_jahia_grps AND jahia_grps.siteid_jahia=
_grps=3D" +
                     siteID;
 =

-            dbConn =3D org.jahia.services.database.ConnectionDispenser.
-                    getConnection ();
+            dbConn =3D ConnectionDispenser.getConnection ();
             statement =3D dbConn.createStatement ();
             if (statement !=3D null) {
                 ResultSet rs =3D statement.executeQuery (sqlQuery);
@@ -1363,8 +1327,7 @@
 =

             }
 =

-            dbConn =3D org.jahia.services.database.ConnectionDispenser.
-                    getConnection ();
+            dbConn =3D ConnectionDispenser.getConnection ();
             statement =3D dbConn.createStatement ();
             if (statement !=3D null) {
                 ResultSet rs =3D statement.executeQuery (sqlQuery);
@@ -1421,8 +1384,7 @@
                     + "jahia_grps.key_jahia_grps AND jahia_grps.siteid_jah=
ia_grps=3D" +
                     siteID + ")";
 =

-            dbConn =3D org.jahia.services.database.ConnectionDispenser.
-                    getConnection ();
+            dbConn =3D ConnectionDispenser.getConnection ();
             statement =3D dbConn.createStatement ();
             if (statement !=3D null) {
                 ResultSet rs =3D statement.executeQuery (sqlQuery);
@@ -1493,8 +1455,7 @@
                 sqlQuery =3D buff.toString ();
             }
 =

-            dbConn =3D org.jahia.services.database.ConnectionDispenser.
-                    getConnection ();
+            dbConn =3D ConnectionDispenser.getConnection ();
             statement =3D dbConn.createStatement ();
             if (statement !=3D null) {
                 ResultSet rs =3D statement.executeQuery (sqlQuery);

Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager=
/JahiaLDAPGroup.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/services/usermanager/JahiaLDAPGroup.java&rev=3D1947=
6&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
LDAPGroup.java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/usermanager/Jahia=
LDAPGroup.java Wed Jan  9 00:22:21 2008
@@ -281,6 +281,9 @@
     }
 =

     public boolean isMember(Principal principal) {
+        if (!(principal instanceof JahiaLDAPUser) && !(principal instanceo=
f JahiaLDAPGroup)) {
+            return false;
+        }
         if (super.isMember(principal)) {
             return true;
         }

Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBea=
n.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/settings/SettingsBean.java&rev=3D19476&repname=3Dja=
hia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBean.java=
 (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBean.java=
 Wed Jan  9 00:22:21 2008
@@ -136,9 +136,12 @@
     // Output cache activation / deactivation
     final public static String OUTPUT_CACHE_ACTIVATED =3D "outputCacheActi=
vated";
     =

-    // Maximum parallel heavy processing threads
+    // Preload homepage fields on each request activated
     final public static String PRELOAD_HOMEPAGE_FIELDS_ACTIVATED =3D "prel=
oadHomepageFieldsActivated";
     =

+    // Preload group members when loading user groups from DB    =

+    final public static String PRELOAD_DBGROUP_MEMBERS_ACTIVATED =3D "prel=
oadDBGroupMembersActivated";
+    =

     // Reverse XRef Iterating through cache activation flag    =

     final public static String REVERSE_XREF_ITERATING_ACTIVATED =3D "rever=
seXRefIteratingActivated";
 =

@@ -226,7 +229,8 @@
 =

     private boolean pageCounterIncrementActivated =3D true;
     private boolean preloadHomepageFieldsActivated =3D true;
-    private boolean reverseXRefIteratingActivated =3D true;    =

+    private boolean reverseXRefIteratingActivated =3D true;
+    private boolean preloadDBGroupMembersActivated =3D true;
 =

     // Core engine page generation queue configuration parameters
     private int maxParallelProcessings =3D 10;
@@ -389,6 +393,8 @@
             preloadHomepageFieldsActivated =3D getBoolean(PRELOAD_HOMEPAGE=
_FIELDS_ACTIVATED, true);
             reverseXRefIteratingActivated =3D getBoolean(REVERSE_XREF_ITER=
ATING_ACTIVATED, true);
             =

+            preloadDBGroupMembersActivated =3D getBoolean(PRELOAD_DBGROUP_=
MEMBERS_ACTIVATED, true);
+            =

             // output cache default expiration delay
             outputCacheDefaultExpirationDelay =3D getLong ("outputCacheDef=
aultExpirationDelay", -1);
 =

@@ -1365,6 +1371,10 @@
     public boolean isPreloadHomepageFieldsActivated() {
         return preloadHomepageFieldsActivated;
     }
+
+    public boolean isPreloadDBGroupMembersActivated() {
+        return preloadDBGroupMembersActivated;
+    }    =

     =

     public boolean isReverseXRefIteratingActivated() {
         return reverseXRefIteratingActivated;

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to