]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5416 Fix LazyInitializationException
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 10 Jul 2014 16:17:03 +0000 (18:17 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 10 Jul 2014 16:30:22 +0000 (18:30 +0200)
sonar-core/src/main/java/org/sonar/core/rule/CacheRuleFinder.java

index 76a59f8ea80c292a1e4242351c1b558300341791..4c93ba8f97799ab2e11739b96036bf005fe8ca9d 100644 (file)
@@ -23,6 +23,7 @@ import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
 import com.google.common.collect.Maps;
 import org.apache.commons.lang.StringUtils;
+import org.hibernate.Hibernate;
 import org.sonar.api.database.DatabaseSession;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.api.rules.Rule;
@@ -32,6 +33,7 @@ import org.sonar.jpa.session.DatabaseSessionFactory;
 
 import javax.annotation.CheckForNull;
 import javax.persistence.Query;
+
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -72,6 +74,7 @@ public final class CacheRuleFinder implements RuleFinder {
       rulesByKey.put(repositoryKey, repository);
 
       for (Rule rule : findAll(RuleQuery.create().withRepositoryKey(repositoryKey))) {
+        hibernateHack(rule);
         repository.put(rule.getKey(), rule);
         rulesById.put(rule.getId(), rule);
       }
@@ -79,6 +82,10 @@ public final class CacheRuleFinder implements RuleFinder {
     return repository;
   }
 
+  private void hibernateHack(Rule rule) {
+    Hibernate.initialize(rule.getParams());
+  }
+
   protected final Rule doFindById(int ruleId) {
     DatabaseSession session = sessionFactory.getSession();
     return session.getSingleResult(
@@ -89,7 +96,6 @@ public final class CacheRuleFinder implements RuleFinder {
       null);
   }
 
-
   @Override
   @CheckForNull
   public Rule findByKey(RuleKey key) {