From 5b264a652ec6ec2dc22de766c69ed4b89758bfd6 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Thu, 30 Jun 2016 11:54:55 +0200 Subject: [PATCH] refactoring to match a bit better the sonar requirements --- src/main/java/org/hbp/mip/MIPApplication.java | 18 +---- .../org/hbp/mip/controllers/ArticlesApi.java | 22 ++---- .../hbp/mip/controllers/ExperimentApi.java | 78 ++++++++++--------- .../org/hbp/mip/controllers/ModelsApi.java | 57 ++------------ src/main/java/org/hbp/mip/model/App.java | 3 + src/main/java/org/hbp/mip/model/Article.java | 3 + src/main/java/org/hbp/mip/model/Config.java | 3 + src/main/java/org/hbp/mip/model/Dataset.java | 3 + .../java/org/hbp/mip/model/Experiment.java | 3 + src/main/java/org/hbp/mip/model/Filter.java | 3 + .../java/org/hbp/mip/model/GeneralStats.java | 3 + src/main/java/org/hbp/mip/model/Group.java | 14 +--- src/main/java/org/hbp/mip/model/Model.java | 3 + src/main/java/org/hbp/mip/model/Query.java | 3 + src/main/java/org/hbp/mip/model/Tag.java | 3 + src/main/java/org/hbp/mip/model/User.java | 5 +- src/main/java/org/hbp/mip/model/Variable.java | 3 + src/main/java/org/hbp/mip/model/Vote.java | 3 + .../java/org/hbp/mip/utils/CORSFilter.java | 8 +- src/main/java/org/hbp/mip/utils/CSVUtil.java | 6 ++ src/main/java/org/hbp/mip/utils/HTTPUtil.java | 15 +++- .../java/org/hbp/mip/utils/HibernateUtil.java | 12 ++- 22 files changed, 133 insertions(+), 138 deletions(-) diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java index 1046f886b..e721ed774 100644 --- a/src/main/java/org/hbp/mip/MIPApplication.java +++ b/src/main/java/org/hbp/mip/MIPApplication.java @@ -3,21 +3,6 @@ * Based on gregturn code at : 'https://github.com/spring-guides/tut-spring-boot-oauth2'. */ -/* - * Copyright 2012-2015 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package org.hbp.mip; import com.fasterxml.jackson.core.JsonProcessingException; @@ -277,8 +262,7 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { } private CsrfTokenRepository csrfTokenRepository() { - HttpSessionCsrfTokenRepository repository = httpSessionCsrfTokenRepository; - return repository; + return httpSessionCsrfTokenRepository; } } diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java index 9abe54e05..99fe8334a 100644 --- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java +++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java @@ -60,11 +60,6 @@ public class ArticlesApi { else { queryString += " AND (status='published' or u.username= :username)"; - if(team != null && team) - { - // TODO: decide if this is needed - //queryString += " AND u.team= :team"; - } } Session session = HibernateUtil.getSessionFactory().getCurrentSession(); @@ -102,7 +97,7 @@ public class ArticlesApi { User user = mipApplication.getUser(); article.setCreatedAt(new Date()); - if (article.getStatus().equals("published")) { + if ("published".equals(article.getStatus())) { article.setPublishedAt(new Date()); } article.setCreatedBy(user); @@ -131,13 +126,7 @@ public class ArticlesApi { } } while(count > 0); - Slugify slg = null; - try { - slg = new Slugify(); - } catch (IOException e) { - LOGGER.trace(e); - } - String slug = slg != null ? slg.slugify(article.getTitle()) : ""; + String slug = new Slugify().slugify(article.getTitle()); i = 0; do { @@ -159,8 +148,9 @@ public class ArticlesApi { session.save(article); session.getTransaction().commit(); - } catch (Exception e) - { + } catch (IOException e) { + LOGGER.trace(e); + } catch (Exception e) { if(session.getTransaction() != null) { session.getTransaction().rollback(); @@ -194,7 +184,7 @@ public class ArticlesApi { session.getTransaction().commit(); - if (!article.getStatus().equals("published") && !article.getCreatedBy().getUsername().equals(user.getUsername())) + if (!"published".equals(article.getStatus()) && !article.getCreatedBy().getUsername().equals(user.getUsername())) { return new ResponseEntity<>(HttpStatus.FORBIDDEN); } diff --git a/src/main/java/org/hbp/mip/controllers/ExperimentApi.java b/src/main/java/org/hbp/mip/controllers/ExperimentApi.java index 92cdd690b..0281039e3 100644 --- a/src/main/java/org/hbp/mip/controllers/ExperimentApi.java +++ b/src/main/java/org/hbp/mip/controllers/ExperimentApi.java @@ -62,44 +62,21 @@ public class ExperimentApi { // this runs in the background. For future optimization: use a thread pool new Thread() { + @Override public void run() { try { - HttpURLConnection con = (HttpURLConnection) obj.openConnection(); - String query = experiment.computeQuery(); - System.out.println("Running experiment: " + query); - - // create query - try { - con.setRequestMethod("POST"); - } catch (ProtocolException pe) { LOGGER.trace(pe); } // ignore; won't happen - con.addRequestProperty("Content-Type", "application/json"); - con.setRequestProperty("Content-Length", Integer.toString(query.length())); - con.setFollowRedirects(true); - con.setReadTimeout(3600000); // 1 hour: 60*60*1000 ms - - // write body of query - con.setDoOutput(true); - DataOutputStream wr = new DataOutputStream(con.getOutputStream()); - wr.write(query.getBytes("UTF8")); - wr.flush(); - wr.close(); - - // get response - InputStream stream = con.getResponseCode() < 400 ? con.getInputStream() : con.getErrorStream(); - BufferedReader in = new BufferedReader(new InputStreamReader(stream)); - String inputLine; - StringBuilder response = new StringBuilder(); - while ((inputLine = in.readLine()) != null) { - response.append(inputLine + '\n'); - } - in.close(); + HttpURLConnection con = createConnection(obj, query); + writeQueryBody(con, query); + String response = readResponse(con); // write to experiment - experiment.setResult(response.toString().replace("\0", "")); + experiment.setResult(response.replace("\0", "")); experiment.setHasError(con.getResponseCode() >= 400); experiment.setHasServerError(con.getResponseCode() >= 500); + } catch (ProtocolException pe) { + LOGGER.trace(pe); } catch (IOException ioe) { // write error to LOGGER.trace(ioe); @@ -126,6 +103,36 @@ public class ExperimentApi { }.start(); } + private static String readResponse(HttpURLConnection con) throws IOException { + InputStream stream = con.getResponseCode() < 400 ? con.getInputStream() : con.getErrorStream(); + BufferedReader in = new BufferedReader(new InputStreamReader(stream)); + String inputLine; + StringBuilder response = new StringBuilder(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine + '\n'); + } + in.close(); + return response.toString(); + } + + private static void writeQueryBody(HttpURLConnection con, String query) throws IOException { + DataOutputStream wr = new DataOutputStream(con.getOutputStream()); + wr.write(query.getBytes("UTF8")); + wr.flush(); + wr.close(); + } + + private static HttpURLConnection createConnection(URL url, String query) throws IOException { + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("POST"); + con.addRequestProperty("Content-Type", "application/json"); + con.setRequestProperty("Content-Length", Integer.toString(query.length())); + con.setInstanceFollowRedirects(true); + con.setReadTimeout(3600000); // 1 hour: 60*60*1000 ms + con.setDoOutput(true); + return con; + } + @ApiOperation(value = "Send a request to the workflow to run an experiment", response = Experiment.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.POST) @@ -183,7 +190,7 @@ public class ExperimentApi { Model model = experiment.getModel(); String algoCode = "WP_LINEAR_REGRESSION"; - LinkedList<ExaremeQueryElement> queryElements = new LinkedList<>(); + List<ExaremeQueryElement> queryElements = new LinkedList<>(); for (Variable var : model.getQuery().getVariables()) { ExaremeQueryElement el = new ExaremeQueryElement(); @@ -224,6 +231,7 @@ public class ExperimentApi { String jsonQuery = new Gson().toJson(queryElements); new Thread() { + @Override public void run() { try { String url = miningExaremeQueryUrl + "/" + algoCode; @@ -276,7 +284,7 @@ public class ExperimentApi { private boolean isExaremeAlgo(Experiment experiment) { JsonArray algorithms = new JsonParser().parse(experiment.getAlgorithms()).getAsJsonArray(); String algoCode = algorithms.get(0).getAsJsonObject().get("code").getAsString(); - return algoCode.equals("glm_exareme"); + return "glm_exareme".equals(algoCode); } @ApiOperation(value = "get an experiment", response = Experiment.class) @@ -436,7 +444,7 @@ public class ExperimentApi { baseQuery += mine ? "e.createdBy = :user" : "(e.createdBy = :user OR e.shared is true)"; - if (modelSlug == null || modelSlug.equals("")) { + if (modelSlug == null || "".equals(modelSlug)) { hibernateQuery = session.createQuery(baseQuery); } else { hibernateQuery = session.createQuery(baseQuery + " AND e.model.slug = :slug"); @@ -489,7 +497,7 @@ public class ExperimentApi { @ApiParam(value = "maxResultCount", required = false) @RequestParam("maxResultCount") int maxResultCount ) { - if (maxResultCount <= 0 && (modelSlug == null || modelSlug.equals(""))) { + if (maxResultCount <= 0 && (modelSlug == null || "".equals(modelSlug))) { return new ResponseEntity<>("You must provide at least a slug or a limit of result", HttpStatus.BAD_REQUEST); } @@ -499,7 +507,7 @@ public class ExperimentApi { @ApiOperation(value = "List available methods and validations", response = String.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(path = "/methods", method = RequestMethod.GET) - public ResponseEntity<String> listAvailableMethodsAndValidations() throws Exception { + public ResponseEntity<String> listAvailableMethodsAndValidations() throws IOException { StringBuilder response = new StringBuilder(); diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java index e8fe94f90..21b102e18 100644 --- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java @@ -60,11 +60,6 @@ public class ModelsApi { else { queryString += " AND (m.valid=true or u.username= :username)"; - if(team != null && team) - { - // TODO: decide if this is needed - //queryString += " AND u.team= :team"; - } } queryString += " ORDER BY m.createdAt DESC"; @@ -95,7 +90,7 @@ public class ModelsApi { } for(Model model:models){ - String ds_code = model.getDataset().getCode(); + String dsCode = model.getDataset().getCode(); session = HibernateUtil.getSessionFactory().getCurrentSession(); Dataset dataset = null; @@ -103,7 +98,7 @@ public class ModelsApi { session.beginTransaction(); dataset = (Dataset) session .createQuery("from Dataset where code= :code") - .setString("code", ds_code) + .setString("code", dsCode) .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) @@ -163,14 +158,7 @@ public class ModelsApi { } } while(count > 0); - Slugify slg = null; - String slug = ""; - try { - slg = new Slugify(); - slug = slg.slugify(model.getTitle()); - } catch (IOException e) { - LOGGER.trace(e); - } + String slug = new Slugify().slugify(model.getTitle()); i = 0; do { @@ -196,6 +184,8 @@ public class ModelsApi { session.save(model); session.getTransaction().commit(); + } catch (IOException e) { + LOGGER.trace(e); } catch (Exception e) { if(session.getTransaction() != null) @@ -219,7 +209,6 @@ public class ModelsApi { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Model model = null; - Query query; try { session.beginTransaction(); @@ -387,41 +376,7 @@ public class ModelsApi { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } - @ApiOperation(value = "Copy a model", response = Model.class) - @ApiResponses(value = { @ApiResponse(code = 201, message = "Model copied"), @ApiResponse(code = 404, message = "Not found") }) - @RequestMapping(value = "/{slug}/copies", method = RequestMethod.POST) - public ResponseEntity<Model> copyAModel( - @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug, - @RequestBody @ApiParam(value = "Model to update", required = true) Model model - ) { - - User user = mipApplication.getUser(); - - String originalSlug = model.getSlug(); - String copySlug; - do { - copySlug = originalSlug+" copy_"+randomStr(20); - } while (getAModel(copySlug) == null); - model.setSlug(copySlug); - - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - try{ - session.beginTransaction(); - session.save(model); - session.getTransaction().commit(); - } catch (Exception e) - { - if(session.getTransaction() != null) - { - session.getTransaction().rollback(); - throw e; - } - } - - return new ResponseEntity<>(HttpStatus.CREATED).ok(model); - } - - private String randomStr(int length) { + private static String randomStr(int length) { char[] chars = "abcdefghijklmnopqrstuvwxyz0123456789".toCharArray(); StringBuilder sb = new StringBuilder(); Random random = new Random(); diff --git a/src/main/java/org/hbp/mip/model/App.java b/src/main/java/org/hbp/mip/model/App.java index 38450ade3..c328c36ca 100644 --- a/src/main/java/org/hbp/mip/model/App.java +++ b/src/main/java/org/hbp/mip/model/App.java @@ -44,6 +44,9 @@ public class App { public App() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Article.java b/src/main/java/org/hbp/mip/model/Article.java index 49e0fc817..26e36e60f 100644 --- a/src/main/java/org/hbp/mip/model/Article.java +++ b/src/main/java/org/hbp/mip/model/Article.java @@ -55,6 +55,9 @@ public class Article { public Article() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Config.java b/src/main/java/org/hbp/mip/model/Config.java index 555d7cece..08bed8979 100644 --- a/src/main/java/org/hbp/mip/model/Config.java +++ b/src/main/java/org/hbp/mip/model/Config.java @@ -41,6 +41,9 @@ public class Config { public Config() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Dataset.java b/src/main/java/org/hbp/mip/model/Dataset.java index 61b5a5316..023cecf06 100644 --- a/src/main/java/org/hbp/mip/model/Dataset.java +++ b/src/main/java/org/hbp/mip/model/Dataset.java @@ -39,6 +39,9 @@ public class Dataset { public Dataset() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Experiment.java b/src/main/java/org/hbp/mip/model/Experiment.java index a569c9719..dec5eee68 100644 --- a/src/main/java/org/hbp/mip/model/Experiment.java +++ b/src/main/java/org/hbp/mip/model/Experiment.java @@ -78,6 +78,9 @@ public class Experiment { private boolean resultsViewed = false; public Experiment() { + /* + * Empty constructor is needed by Hibernate + */ } public String computeQuery() { diff --git a/src/main/java/org/hbp/mip/model/Filter.java b/src/main/java/org/hbp/mip/model/Filter.java index c85bc140a..27af1d69c 100644 --- a/src/main/java/org/hbp/mip/model/Filter.java +++ b/src/main/java/org/hbp/mip/model/Filter.java @@ -34,6 +34,9 @@ public class Filter { public Filter() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/GeneralStats.java b/src/main/java/org/hbp/mip/model/GeneralStats.java index 94b3b62b2..b9366c013 100644 --- a/src/main/java/org/hbp/mip/model/GeneralStats.java +++ b/src/main/java/org/hbp/mip/model/GeneralStats.java @@ -17,6 +17,9 @@ public class GeneralStats { public GeneralStats() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Group.java b/src/main/java/org/hbp/mip/model/Group.java index 066f3f949..32cf44f66 100644 --- a/src/main/java/org/hbp/mip/model/Group.java +++ b/src/main/java/org/hbp/mip/model/Group.java @@ -32,6 +32,9 @@ public class Group { public Group() { + /* + * Empty constructor is needed by Hibernate + */ } @@ -70,15 +73,4 @@ public class Group { this.groups = groups; } - - public Group clone() - { - Group g = new Group(); - g.setCode(this.getCode()); - g.setLabel(this.getLabel()); - g.setParent(this.getParent()); - g.setGroups(this.getGroups()); - return g; - } - } diff --git a/src/main/java/org/hbp/mip/model/Model.java b/src/main/java/org/hbp/mip/model/Model.java index 774b8e0cf..fb871152f 100644 --- a/src/main/java/org/hbp/mip/model/Model.java +++ b/src/main/java/org/hbp/mip/model/Model.java @@ -59,6 +59,9 @@ public class Model { public Model() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Query.java b/src/main/java/org/hbp/mip/model/Query.java index ebcce263b..fddb0c7a7 100644 --- a/src/main/java/org/hbp/mip/model/Query.java +++ b/src/main/java/org/hbp/mip/model/Query.java @@ -52,6 +52,9 @@ public class Query { public Query() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Tag.java b/src/main/java/org/hbp/mip/model/Tag.java index e4c34e30b..6619bd75f 100644 --- a/src/main/java/org/hbp/mip/model/Tag.java +++ b/src/main/java/org/hbp/mip/model/Tag.java @@ -22,6 +22,9 @@ public class Tag { public Tag() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/User.java b/src/main/java/org/hbp/mip/model/User.java index f013859e9..7d12a47f5 100644 --- a/src/main/java/org/hbp/mip/model/User.java +++ b/src/main/java/org/hbp/mip/model/User.java @@ -88,6 +88,9 @@ public class User { public User() { + /* + * Empty constructor is needed by Hibernate + */ } @@ -133,7 +136,7 @@ public class User { p = Pattern.compile("title=([\\w ]+)"); m = p.matcher(userInfo); if (m.find()) { - if (m.group(1).equals("Mr")) { + if ("Mr".equals(m.group(1))) { this.gender = "Male"; } else { this.gender = "Female"; diff --git a/src/main/java/org/hbp/mip/model/Variable.java b/src/main/java/org/hbp/mip/model/Variable.java index e651105c6..2bc6a37c8 100644 --- a/src/main/java/org/hbp/mip/model/Variable.java +++ b/src/main/java/org/hbp/mip/model/Variable.java @@ -59,6 +59,9 @@ public class Variable { public Variable() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/model/Vote.java b/src/main/java/org/hbp/mip/model/Vote.java index 91ce0b055..b9981a8e9 100644 --- a/src/main/java/org/hbp/mip/model/Vote.java +++ b/src/main/java/org/hbp/mip/model/Vote.java @@ -33,6 +33,9 @@ public class Vote { public Vote() { + /* + * Empty constructor is needed by Hibernate + */ } diff --git a/src/main/java/org/hbp/mip/utils/CORSFilter.java b/src/main/java/org/hbp/mip/utils/CORSFilter.java index 30bea8de4..02349cffa 100644 --- a/src/main/java/org/hbp/mip/utils/CORSFilter.java +++ b/src/main/java/org/hbp/mip/utils/CORSFilter.java @@ -18,7 +18,11 @@ public class CORSFilter implements Filter { chain.doFilter(req, res); } - public void init(FilterConfig filterConfig) {} + public void init(FilterConfig filterConfig) { + /* Nothing to do */ + } - public void destroy() {} + public void destroy() { + /* Nothing to do */ + } } diff --git a/src/main/java/org/hbp/mip/utils/CSVUtil.java b/src/main/java/org/hbp/mip/utils/CSVUtil.java index 94c3234e3..b3f6850be 100644 --- a/src/main/java/org/hbp/mip/utils/CSVUtil.java +++ b/src/main/java/org/hbp/mip/utils/CSVUtil.java @@ -24,6 +24,12 @@ public class CSVUtil { private static final String SEPARATOR = ","; + private CSVUtil() + { + /* Hide implicit public constructor */ + throw new IllegalAccessError("CSVUtil class"); + } + public static Dataset parseValues(String filename, Query query) { List<String[]> rows = getRows(filename); diff --git a/src/main/java/org/hbp/mip/utils/HTTPUtil.java b/src/main/java/org/hbp/mip/utils/HTTPUtil.java index 92beffaf4..0a524bb99 100644 --- a/src/main/java/org/hbp/mip/utils/HTTPUtil.java +++ b/src/main/java/org/hbp/mip/utils/HTTPUtil.java @@ -2,6 +2,7 @@ package org.hbp.mip.utils; import java.io.BufferedReader; import java.io.DataOutputStream; +import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; @@ -11,20 +12,26 @@ import java.net.URL; */ public class HTTPUtil { - public static int sendGet(String url, StringBuilder resp) throws Exception { + private HTTPUtil() + { + /* Hide implicit public constructor */ + throw new IllegalAccessError("HTTPUtil class"); + } + + public static int sendGet(String url, StringBuilder resp) throws IOException { return sendHTTP(url, "", resp, "GET"); } - public static int sendPost(String url, String query, StringBuilder resp) throws Exception { + public static int sendPost(String url, String query, StringBuilder resp) throws IOException { return sendHTTP(url, query, resp, "POST"); } - public static int sendHTTP(String url, String query, StringBuilder resp, String httpVerb) throws Exception { + public static int sendHTTP(String url, String query, StringBuilder resp, String httpVerb) throws IOException { URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); - if(!httpVerb.equals("GET")) { + if(!"GET".equals(httpVerb)) { con.setRequestMethod(httpVerb); if(query != null && query.length() > 0) { diff --git a/src/main/java/org/hbp/mip/utils/HibernateUtil.java b/src/main/java/org/hbp/mip/utils/HibernateUtil.java index bbb0296db..87cde9618 100644 --- a/src/main/java/org/hbp/mip/utils/HibernateUtil.java +++ b/src/main/java/org/hbp/mip/utils/HibernateUtil.java @@ -4,15 +4,25 @@ package org.hbp.mip.utils; +import org.apache.log4j.Logger; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; public class HibernateUtil { + + private static final Logger LOGGER = Logger.getLogger(CSVUtil.class); + private static ServiceRegistry serviceRegistry; + private static SessionFactory sessionFactory = buildSessionFactory(); + private HibernateUtil() { + /* Hide implicit public constructor */ + throw new IllegalAccessError("HibernateUtil class"); + } + private static SessionFactory buildSessionFactory() { try { Configuration configuration = new Configuration(); @@ -22,7 +32,7 @@ public class HibernateUtil { sessionFactory = configuration.buildSessionFactory(serviceRegistry); return sessionFactory; } catch (RuntimeException ex) { - System.err.println("Initial SessionFactory creation failed." + ex); + LOGGER.error("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } -- GitLab