diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EventCollector.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EventCollector.java index a9c82b1a7..51b451963 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EventCollector.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EventCollector.java @@ -6,8 +6,6 @@ import java.util.Queue; import java.util.Set; -import javax.annotation.Resource; - import org.apache.commons.collections4.queue.CircularFifoQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,7 +18,6 @@ import com.logicaldoc.core.history.History; import com.logicaldoc.core.threading.ThreadPools; import com.logicaldoc.util.Context; -import com.logicaldoc.util.config.ContextProperties; /** * A collector of events that can distribute them to a set of listeners @@ -39,12 +36,8 @@ public class EventCollector { private Set listeners = new HashSet<>(); - @Resource(name = "ContextProperties") - private ContextProperties config; - - public EventCollector(ContextProperties config) { + public EventCollector() { super(); - this.config = config; } // Maintain a fifos for the history IDs. Key is the class name, value is a @@ -133,10 +126,6 @@ public void newEvent(History history) { pools.execute(notifier, "EventCollector"); } - public ContextProperties getConfig() { - return config; - } - public static boolean isEnabled() { return RunLevel.current().aspectEnabled(ASPECT); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java index 002ff08c9..ea5b03d0e 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java @@ -10,12 +10,11 @@ import java.util.List; import java.util.Map; -import javax.annotation.Resource; - import org.apache.commons.lang.StringUtils; import org.java.plugin.registry.Extension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.logicaldoc.core.PersistenceException; @@ -58,16 +57,12 @@ public class FormatConverterManager { protected static Logger log = LoggerFactory.getLogger(FormatConverterManager.class); - @Resource(name = "Store") private Store store; - @Resource(name = "TenantDAO") private TenantDAO tenantDao; - @Resource(name = "documentManager") private DocumentManager documentManager; - @Resource(name = "ContextProperties") private ContextProperties config; // Key is the src_extension-dst_extension, value is a collection of @@ -77,6 +72,7 @@ public class FormatConverterManager { // All the available converters private Map availableConverters = new HashMap<>(); + @Autowired public FormatConverterManager(Store store, TenantDAO tenantDao, DocumentManager documentManager, ContextProperties config) { super(); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/HibernateDocumentHistoryDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/HibernateDocumentHistoryDAO.java index 01a0e3b94..a48b5b311 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/HibernateDocumentHistoryDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/HibernateDocumentHistoryDAO.java @@ -8,9 +8,11 @@ import org.apache.commons.lang.StringUtils; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import com.logicaldoc.core.PersistenceException; import com.logicaldoc.core.history.HibernateHistoryDAO; +import com.logicaldoc.util.config.ContextProperties; import com.logicaldoc.util.sql.SqlUtil; /** @@ -27,8 +29,9 @@ public class HibernateDocumentHistoryDAO extends HibernateHistoryDAO Class of the implementation of a {@link History} this DAO - * handles + * @param Class of the implementation of a {@link History} this DAO handles * * @author Alessandro Gasparini - LogicalDOC * @since 9.0.1 @@ -30,15 +28,16 @@ public abstract class HibernateHistoryDAO extends HibernatePersistentObjectDAO implements PersistentObjectDAO { - @Resource(name = "ContextProperties") private ContextProperties config; // A cache of tenant names to minimize the DB accesses private static final Map tenantNames = new HashMap<>(); - protected HibernateHistoryDAO(Class historyClass) { + @Autowired + protected HibernateHistoryDAO(Class historyClass, ContextProperties config) { super(historyClass); super.log = LoggerFactory.getLogger(HibernateHistoryDAO.class); + this.config = config; } @Override diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/job/JobManager.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/job/JobManager.java index f7ecc4ed0..b9265a07f 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/job/JobManager.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/job/JobManager.java @@ -10,8 +10,6 @@ import java.util.Set; import java.util.stream.Collectors; -import javax.annotation.Resource; - import org.apache.commons.lang3.StringUtils; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; @@ -27,6 +25,7 @@ import org.quartz.impl.matchers.GroupMatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.logicaldoc.util.config.ContextProperties; @@ -49,12 +48,11 @@ public class JobManager { protected static Logger log = LoggerFactory.getLogger(JobManager.class); - @Resource(name = "Scheduler") private Scheduler scheduler; - @Resource(name = "ContextProperties") private ContextProperties config; + @Autowired public JobManager(Scheduler scheduler, ContextProperties config) { super(); this.scheduler = scheduler; diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/lock/LockManager.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/lock/LockManager.java index 421ff4a0a..376d15969 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/lock/LockManager.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/lock/LockManager.java @@ -6,10 +6,9 @@ import java.util.GregorianCalendar; import java.util.List; -import javax.annotation.Resource; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.logicaldoc.core.PersistenceException; @@ -30,12 +29,11 @@ public class LockManager { protected Logger log = LoggerFactory.getLogger(LockManager.class); - @Resource(name = "GenericDAO") private GenericDAO genericDao; - @Resource(name = "ContextProperties") private ContextProperties config; - + + @Autowired public LockManager(GenericDAO genericDao, ContextProperties config) { super(); this.genericDao = genericDao; @@ -83,7 +81,7 @@ public boolean get(String lockName, String transactionId) { log.warn(e.getMessage(), e); } catch (InterruptedException ie) { log.warn("Interrupted", ie); - + // Restore interrupted state Thread.currentThread().interrupt(); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/user/HibernateUserHistoryDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/user/HibernateUserHistoryDAO.java index ced4de49d..49e9e6137 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/user/HibernateUserHistoryDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/user/HibernateUserHistoryDAO.java @@ -7,17 +7,20 @@ import org.apache.commons.lang.StringUtils; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import com.logicaldoc.core.PersistenceException; import com.logicaldoc.core.history.HibernateHistoryDAO; import com.logicaldoc.core.security.Client; import com.logicaldoc.core.security.Session; import com.logicaldoc.core.security.SessionManager; +import com.logicaldoc.util.config.ContextProperties; public class HibernateUserHistoryDAO extends HibernateHistoryDAO implements UserHistoryDAO { - private HibernateUserHistoryDAO() { - super(UserHistory.class); + @Autowired + private HibernateUserHistoryDAO(ContextProperties config) { + super(UserHistory.class, config); super.log = LoggerFactory.getLogger(HibernateUserHistoryDAO.class); } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/system/SystemLoadMonitor.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/system/SystemLoadMonitor.java index 4246a5df8..68400361c 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/system/SystemLoadMonitor.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/system/SystemLoadMonitor.java @@ -7,12 +7,12 @@ import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; -import javax.annotation.Resource; import javax.management.MBeanServerConnection; import org.apache.commons.collections4.queue.CircularFifoQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.logicaldoc.util.config.ContextProperties; @@ -29,7 +29,6 @@ public class SystemLoadMonitor { protected static Logger log = LoggerFactory.getLogger(SystemLoadMonitor.class); - @Resource(name = "ContextProperties") private ContextProperties config; private CircularFifoQueue samples = null; @@ -41,7 +40,8 @@ public class SystemLoadMonitor { private List listeners = new ArrayList<>(); private boolean lastCheckOverloaded = false; - + + @Autowired public SystemLoadMonitor(ContextProperties config) { super(); this.config = config; diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/StringUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/StringUtil.java index 77140c4a0..5fb64c1ac 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/StringUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/StringUtil.java @@ -14,7 +14,6 @@ import java.text.DecimalFormatSymbols; import java.text.Normalizer; import java.util.ArrayList; -import java.util.Base64; import java.util.Collection; import java.util.Locale; @@ -248,21 +247,4 @@ public static String printFileSize(long size, Locale locale) { public static String defaultString(String input, String def) { return StringUtils.defaultString(input, def); } - - - /** - * Checks if a give n string is base64 coded - * - * @param value The tring to evaluate - * - * @return true only if value is base64 coded - */ - public static boolean isBase64(String value) { - try { - Base64.getDecoder().decode(value); - return true; - } catch (IllegalArgumentException e) { - return false; - } - } } \ No newline at end of file diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java index 3de60607a..2b9be1a86 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java @@ -23,7 +23,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.logicaldoc.util.StringUtil; import com.logicaldoc.util.io.FileUtil; /** @@ -34,6 +33,8 @@ */ public class ContextProperties extends OrderedProperties { + private static final String BASE64_PREFIX = "_b64_"; + private static final String UNABLE_TO_READ_FROM = "Unable to read from %s"; private static final long serialVersionUID = 1L; @@ -137,7 +138,7 @@ public ContextProperties(File file) throws IOException { this.file = file; FileUtils.touch(file); try (FileInputStream fis = new FileInputStream(file)) { - load(fis); + load(fis); } } catch (IOException e) { throw new IOException("Unable to read from " + file.getPath(), e); @@ -267,10 +268,9 @@ public String getString(String property) { public String getString(String property, String defaultValue) { String value = getProperty(property, defaultValue); - if (StringUtil.isBase64(value)) { - byte[] decodedBytes = Base64.getDecoder().decode(value); - value = new String(decodedBytes); - } + if (value.startsWith(BASE64_PREFIX)) + value = new String(Base64.getDecoder().decode(value.substring(BASE64_PREFIX.length())), + Charset.forName("UTF-8")); return StrSubstitutor.replaceSystemProperties(value); } @@ -334,7 +334,7 @@ public float getFloat(String property, float defaultValue) { @Override public synchronized Object setProperty(String key, String value) { if (value.contains("\n")) - value = Base64.getEncoder().encodeToString(value.getBytes(Charset.forName("UTF-8"))); + value = BASE64_PREFIX + Base64.getEncoder().encodeToString(value.getBytes(Charset.forName("UTF-8"))); return super.setProperty(key, value); } @@ -360,11 +360,11 @@ public String getProperty(String property) { * @return the porperty's value with expanded variables */ @Override - public String getProperty(String property, String defaultValue) { + public String getProperty(String property, String defaultValue) { String value = super.getProperty(property, defaultValue); return StrSubstitutor.replaceSystemProperties(value); } - + public int getMaxBackups() { return maxBackups; } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java index 5df546734..740ac32c1 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java @@ -49,7 +49,7 @@ public void testSetAndGetProperty() throws FileNotFoundException, IOException { pluto paperino"""); contextProperties.setProperty("propC", - "IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQu"); + "_b64_IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQu"); contextProperties.setProperty("emptyKey", ""); @@ -70,11 +70,11 @@ public void testSetAndGetProperty() throws FileNotFoundException, IOException { // testing explicit encoding and decoding (Properties class) assertEquals("pippo", properties.getProperty("propA")); - assertEquals(Base64.getEncoder().encodeToString(""" + assertEquals("_b64_"+Base64.getEncoder().encodeToString(""" pippo pluto paperino""".getBytes()), properties.getProperty("propB")); - assertEquals("IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQu", + assertEquals("_b64_IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQu", properties.getProperty("propC")); String decodedValue = new String( @@ -83,16 +83,7 @@ public void testSetAndGetProperty() throws FileNotFoundException, IOException { StandardCharsets.UTF_8); assertEquals(" Lorem ipsum dolor sit amet, consectetur adipiscing elit.", decodedValue); - assertEquals("cGlwcG8KcGx1dG8KcGFwZXJpbm8=", properties.getProperty("propB")); - - String encodedValue = Base64.getEncoder().encodeToString(""" - pippo - pluto - paperino""".getBytes()); - assertEquals(encodedValue, properties.getProperty("propB")); - - String decodedValue1 = new String(Base64.getDecoder().decode(encodedValue)); - assertEquals("pippo\npluto\npaperino", decodedValue1); + assertEquals("_b64_cGlwcG8KcGx1dG8KcGFwZXJpbm8=", properties.getProperty("propB")); assertEquals("", contextProperties.getProperty("emptyKey")); diff --git a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/HibernateWebserviceCallDAO.java b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/HibernateWebserviceCallDAO.java index 3813389c5..69c971ef2 100644 --- a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/HibernateWebserviceCallDAO.java +++ b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/HibernateWebserviceCallDAO.java @@ -1,9 +1,11 @@ package com.logicaldoc.webservice; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import com.logicaldoc.core.PersistenceException; import com.logicaldoc.core.history.HibernateHistoryDAO; +import com.logicaldoc.util.config.ContextProperties; /** * Hibernate implementation of {@link WebserviceCallDAO} @@ -13,8 +15,9 @@ */ public class HibernateWebserviceCallDAO extends HibernateHistoryDAO implements WebserviceCallDAO { - private HibernateWebserviceCallDAO() { - super(WebserviceCall.class); + @Autowired + private HibernateWebserviceCallDAO(ContextProperties config) { + super(WebserviceCall.class, config); super.log = LoggerFactory.getLogger(HibernateWebserviceCallDAO.class); }