From b92af5ac83b41b05b1df42c8b364f796acb3e4c3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Tue, 13 Mar 2018 01:00:03 +0100 Subject: [PATCH] Continued: - renamed BaseDatabaseBean to BaseEnterpriseBean as this is a generic bean for EJBs - only EJBs have message queues and the others, so no real good idea of having such code in BaseBean - removed no longer used BaseBean, was an overdose anyway ... ;-) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- src/org/mxchange/jcoreee/bean/BaseBean.java | 124 ------------------ .../ejb/BaseEnterpriseBean.java} | 85 ++++++++++-- .../jcoreee/bean/faces/BaseFacesBean.java | 4 +- .../mxchange/jcoreee/utils/FacesUtils.java | 70 ++-------- .../mxchange/jcoreee/utils/StringUtils.java | 100 ++++++++++++++ 5 files changed, 185 insertions(+), 198 deletions(-) delete mode 100644 src/org/mxchange/jcoreee/bean/BaseBean.java rename src/org/mxchange/jcoreee/{database/BaseDatabaseBean.java => bean/ejb/BaseEnterpriseBean.java} (66%) create mode 100644 src/org/mxchange/jcoreee/utils/StringUtils.java diff --git a/src/org/mxchange/jcoreee/bean/BaseBean.java b/src/org/mxchange/jcoreee/bean/BaseBean.java deleted file mode 100644 index 8f0c235..0000000 --- a/src/org/mxchange/jcoreee/bean/BaseBean.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2017, 2018 Free Software Foundation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.mxchange.jcoreee.bean; - -import java.io.Serializable; -import javax.faces.FacesException; -import javax.jms.Connection; -import javax.jms.JMSException; -import javax.jms.MessageProducer; -import javax.jms.Queue; -import javax.jms.QueueConnectionFactory; -import javax.jms.Session; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -/** - * A generic bean class - *

- * @author Roland Häder - */ -public abstract class BaseBean implements Serializable { - - /** - * Serial number - */ - private static final long serialVersionUID = 18_305_698_567_265L; - - /** - * Connection - */ - private Connection connection; - - /** - * Message producer - */ - private MessageProducer messageProducer; - - /** - * Mailer message queue - */ - private Queue queue; - - /** - * Session instance - */ - private Session session; - - /** - * This class' default protected constructor. Please call - * super("jms/project-queue-factory", "jms/project-email-queue"); if you - * need to send emails. - */ - protected BaseBean () { - } - - /** - * Constructor with queue factory JNDI and queue JNDI names - *

- * @param factoryJndi JNDI name for queue factory - * @param queueJndi JNDI name for email queue - */ - protected BaseBean (final String factoryJndi, final String queueJndi) { - // Call default constructor - this(); - - // Try it out - try { - // Get initial context - Context context = new InitialContext(); - - // Get factory from JMS resource - QueueConnectionFactory connectionFactory = (QueueConnectionFactory) context.lookup(factoryJndi); - - // Lookup queue - this.queue = (Queue) context.lookup(queueJndi); - - // Create connection - this.connection = connectionFactory.createConnection(); - - // Init session instance - this.session = this.connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - - // And message producer - this.messageProducer = this.session.createProducer(this.queue); - } catch (final NamingException | JMSException e) { - // Continued to throw - throw new FacesException(e); - } - } - - /** - * Getter for configured message producer instance - *

- * @return Message producer - */ - protected MessageProducer getMessageProducer () { - return this.messageProducer; - } - - /** - * Getter for configured session instance - *

- * @return Session - */ - protected Session getSession () { - return this.session; - } - -} diff --git a/src/org/mxchange/jcoreee/database/BaseDatabaseBean.java b/src/org/mxchange/jcoreee/bean/ejb/BaseEnterpriseBean.java similarity index 66% rename from src/org/mxchange/jcoreee/database/BaseDatabaseBean.java rename to src/org/mxchange/jcoreee/bean/ejb/BaseEnterpriseBean.java index 7620419..a08610c 100644 --- a/src/org/mxchange/jcoreee/database/BaseDatabaseBean.java +++ b/src/org/mxchange/jcoreee/bean/ejb/BaseEnterpriseBean.java @@ -14,17 +14,23 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.mxchange.jcoreee.database; +package org.mxchange.jcoreee.bean.ejb; +import java.io.Serializable; import java.text.MessageFormat; +import javax.faces.FacesException; +import javax.jms.Connection; import javax.jms.JMSException; +import javax.jms.MessageProducer; import javax.jms.ObjectMessage; +import javax.jms.Queue; +import javax.jms.QueueConnectionFactory; +import javax.jms.Session; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; -import org.mxchange.jcoreee.bean.BaseBean; import org.mxchange.jcoreeelogger.beans.local.logger.Log; import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal; @@ -33,13 +39,18 @@ import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal; *

* @author Roland Häder */ -public abstract class BaseDatabaseBean extends BaseBean { +public abstract class BaseEnterpriseBean implements Serializable { /** * Serial number */ private static final long serialVersionUID = 217_687_175_985_875L; + /** + * Connection + */ + private Connection connection; + /** * Entity manager */ @@ -53,11 +64,26 @@ public abstract class BaseDatabaseBean extends BaseBean { private LoggerBeanLocal loggerBeanLocal; /** - * This class' default protected constructor. Please call + * Message producer + */ + private MessageProducer messageProducer; + + /** + * Mailer message queue + */ + private Queue queue; + + /** + * Session instance + */ + private Session session; + + /** + * This class' default protected constructor. Please invoke * super("jms/project-queue-factory", "jms/project-email-queue"); if you * need to send emails. */ - protected BaseDatabaseBean () { + protected BaseEnterpriseBean () { // Call super constructor super(); @@ -71,12 +97,33 @@ public abstract class BaseDatabaseBean extends BaseBean { * @param factoryJndi JNDI name for queue factory * @param queueJndi JNDI name for email queue */ - protected BaseDatabaseBean (final String factoryJndi, final String queueJndi) { - // Call super constructor - super(factoryJndi, queueJndi); + protected BaseEnterpriseBean (final String factoryJndi, final String queueJndi) { + // Call default constructor + this(); - // Init logger instance - this.initLoggerInstance(); + // Try it out + try { + // Get initial context + Context context = new InitialContext(); + + // Get factory from JMS resource + QueueConnectionFactory connectionFactory = (QueueConnectionFactory) context.lookup(factoryJndi); + + // Lookup queue + this.queue = (Queue) context.lookup(queueJndi); + + // Create connection + this.connection = connectionFactory.createConnection(); + + // Init session instance + this.session = this.connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + + // And message producer + this.messageProducer = this.session.createProducer(this.queue); + } catch (final NamingException | JMSException e) { + // Continued to throw + throw new FacesException(e); + } } /** @@ -113,6 +160,24 @@ public abstract class BaseDatabaseBean extends BaseBean { return this.loggerBeanLocal; } + /** + * Getter for configured message producer instance + *

+ * @return Message producer + */ + protected MessageProducer getMessageProducer () { + return this.messageProducer; + } + + /** + * Getter for configured session instance + *

+ * @return Session + */ + protected Session getSession () { + return this.session; + } + /** * Sends given message to configured queue *

diff --git a/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java b/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java index e71eb07..6101943 100644 --- a/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java +++ b/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java @@ -16,6 +16,7 @@ */ package org.mxchange.jcoreee.bean.faces; +import java.io.Serializable; import java.security.Principal; import java.text.MessageFormat; import java.util.ArrayList; @@ -25,14 +26,13 @@ import java.util.MissingResourceException; import java.util.ResourceBundle; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; -import org.mxchange.jcoreee.bean.BaseBean; /** * An abstract bean for faces (web) projects. *

* @author Roland Häder */ -public abstract class BaseFacesBean extends BaseBean { +public abstract class BaseFacesBean implements Serializable { /** * Loaded resource bundles ("cached") diff --git a/src/org/mxchange/jcoreee/utils/FacesUtils.java b/src/org/mxchange/jcoreee/utils/FacesUtils.java index 674b8f1..35e0b28 100644 --- a/src/org/mxchange/jcoreee/utils/FacesUtils.java +++ b/src/org/mxchange/jcoreee/utils/FacesUtils.java @@ -16,15 +16,21 @@ */ package org.mxchange.jcoreee.utils; +import java.io.Serializable; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; /** - * An utilities class for JSF + * An utilities class for JavaEE applications, entities and EJBs and more *

* @author Roland Häder */ -public class FacesUtils { +public class FacesUtils implements Serializable { + + /** + * Serial number + */ + private static final long serialVersionUID = 19_863_546_716_250L; /** * Generates a "base URL" for for example mail templates. For JSF @@ -78,66 +84,6 @@ public class FacesUtils { return baseUrl; } - /** - * Compares both string with null-safety. This method is based on the - * example from - * https://codereview.stackexchange.com/questions/20191/comparing-two-strings-which-could-be-null-or-blank-in-a-comparator - *

- * @param str0 First string - * @param str1 Second string - *

- * @return Comparison value, 0 means equals, -1 means str0 smaller str2 and - * 2 means str0 bigger str2 - */ - @SuppressWarnings ("null") - public static int comareTo (final String str0, final String str1) { - // Check both strings for null and empty - boolean isStr0Empty = (str0 == null || str0.isEmpty()); - boolean isStr1Empty = (str1 == null || str1.isEmpty()); - - // Check conditions - if (isStr0Empty && isStr1Empty) { - return 0; - } else if (isStr0Empty) { - return -1; - } else if (isStr1Empty) { - return 1; - } - - // Compare both - return str0.compareTo(str1); - } - - /** - * Compares both string with null-safety, ignoring case-sensitivity. This - * method is based on the example from - * https://codereview.stackexchange.com/questions/20191/comparing-two-strings-which-could-be-null-or-blank-in-a-comparator - *

- * @param str0 First string - * @param str1 Second string - *

- * @return Comparison value, 0 means equals, -1 means str0 smaller str2 and - * 2 means str0 bigger str2 - */ - @SuppressWarnings ("null") - public static int comareToIgnoreCase (final String str0, final String str1) { - // Check both strings for null and empty - boolean isStr0Empty = (str0 == null || str0.isEmpty()); - boolean isStr1Empty = (str1 == null || str1.isEmpty()); - - // Check conditions - if (isStr0Empty && isStr1Empty) { - return 0; - } else if (isStr0Empty) { - return -1; - } else if (isStr1Empty) { - return 1; - } - - // Compare both - return str0.compareToIgnoreCase(str1); - } - /** * No instances from this class are required */ diff --git a/src/org/mxchange/jcoreee/utils/StringUtils.java b/src/org/mxchange/jcoreee/utils/StringUtils.java new file mode 100644 index 0000000..7a3d6c2 --- /dev/null +++ b/src/org/mxchange/jcoreee/utils/StringUtils.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2018 Roland Häder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jcoreee.utils; + +import java.io.Serializable; + +/** + * String utilities class + *

+ * @author Roland Häder + */ +public class StringUtils implements Serializable { + + /** + * Serial number + */ + private static final long serialVersionUID = 30_894_676_712_650L; + + /** + * Compares both string with null-safety. This method is based on the + * example from + * https://codereview.stackexchange.com/questions/20191/comparing-two-strings-which-could-be-null-or-blank-in-a-comparator + *

+ * @param str0 First string + * @param str1 Second string + *

+ * @return Comparison value, 0 means equals, -1 means str0 smaller str2 and + * 2 means str0 bigger str2 + */ + @SuppressWarnings ("null") + public static int comareTo (final String str0, final String str1) { + // Check both strings for null and empty + boolean isStr0Empty = (str0 == null || str0.isEmpty()); + boolean isStr1Empty = (str1 == null || str1.isEmpty()); + + // Check conditions + if (isStr0Empty && isStr1Empty) { + return 0; + } else if (isStr0Empty) { + return -1; + } else if (isStr1Empty) { + return 1; + } + + // Compare both + return str0.compareTo(str1); + } + + /** + * Compares both string with null-safety, ignoring case-sensitivity. This + * method is based on the example from + * https://codereview.stackexchange.com/questions/20191/comparing-two-strings-which-could-be-null-or-blank-in-a-comparator + *

+ * @param str0 First string + * @param str1 Second string + *

+ * @return Comparison value, 0 means equals, -1 means str0 smaller str2 and + * 2 means str0 bigger str2 + */ + @SuppressWarnings ("null") + public static int comareToIgnoreCase (final String str0, final String str1) { + // Check both strings for null and empty + boolean isStr0Empty = (str0 == null || str0.isEmpty()); + boolean isStr1Empty = (str1 == null || str1.isEmpty()); + + // Check conditions + if (isStr0Empty && isStr1Empty) { + return 0; + } else if (isStr0Empty) { + return -1; + } else if (isStr1Empty) { + return 1; + } + + // Compare both + return str0.compareToIgnoreCase(str1); + } + + /** + * Utility classes don't have instances + */ + private StringUtils () { + // Empty constructor + } + +} -- 2.39.5