diff --git a/dspace-api/src/main/java/org/dspace/app/bulkedit/DSpaceCSV.java b/dspace-api/src/main/java/org/dspace/app/bulkedit/DSpaceCSV.java index c627b3d3ff..44c2288786 100644 --- a/dspace-api/src/main/java/org/dspace/app/bulkedit/DSpaceCSV.java +++ b/dspace-api/src/main/java/org/dspace/app/bulkedit/DSpaceCSV.java @@ -11,15 +11,18 @@ import org.apache.commons.lang3.StringUtils; import org.dspace.authority.AuthorityValue; import org.dspace.authority.factory.AuthorityServiceFactory; import org.dspace.authority.service.AuthorityValueService; -import org.dspace.content.*; import org.dspace.content.Collection; +import org.dspace.content.Item; +import org.dspace.content.MetadataField; +import org.dspace.content.MetadataSchema; +import org.dspace.content.MetadataValue; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.ItemService; import org.dspace.content.service.MetadataFieldService; import org.dspace.content.service.MetadataSchemaService; import org.dspace.content.authority.Choices; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; +import org.dspace.utils.DSpace; import java.util.*; import java.util.regex.Pattern; @@ -268,14 +271,11 @@ public class DSpaceCSV implements Serializable // Set the metadata fields to ignore ignore = new HashMap<>(); - String toIgnore = ConfigurationManager.getProperty("bulkedit", "ignore-on-export"); - if ((toIgnore == null) || ("".equals(toIgnore.trim()))) - { - // Set a default value - toIgnore = "dc.date.accessioned, dc.date.available, " + - "dc.date.updated, dc.description.provenance"; - } - String[] toIgnoreArray = toIgnore.split(","); + + // Specify default values + String[] defaultValues = new String[]{"dc.date.accessioned, dc.date.available, " + + "dc.date.updated, dc.description.provenance"}; + String[] toIgnoreArray = new DSpace().getConfigurationService().getArrayProperty("bulkedit.ignore-on-export", defaultValues); for (String toIgnoreString : toIgnoreArray) { if (!"".equals(toIgnoreString.trim())) @@ -310,7 +310,7 @@ public class DSpaceCSV implements Serializable private void setValueSeparator() { // Get the value separator - valueSeparator = ConfigurationManager.getProperty("bulkedit", "valueseparator"); + valueSeparator = new DSpace().getConfigurationService().getProperty("bulkedit.valueseparator"); if ((valueSeparator != null) && (!"".equals(valueSeparator.trim()))) { valueSeparator = valueSeparator.trim(); @@ -339,7 +339,7 @@ public class DSpaceCSV implements Serializable private void setFieldSeparator() { // Get the value separator - fieldSeparator = ConfigurationManager.getProperty("bulkedit", "fieldseparator"); + fieldSeparator =new DSpace().getConfigurationService().getProperty("bulkedit.fieldseparator"); if ((fieldSeparator != null) && (!"".equals(fieldSeparator.trim()))) { fieldSeparator = fieldSeparator.trim(); @@ -381,7 +381,7 @@ public class DSpaceCSV implements Serializable private void setAuthoritySeparator() { // Get the value separator - authoritySeparator = ConfigurationManager.getProperty("bulkedit", "authorityseparator"); + authoritySeparator = new DSpace().getConfigurationService().getProperty("bulkedit.authorityseparator"); if ((authoritySeparator != null) && (!"".equals(authoritySeparator.trim()))) { authoritySeparator = authoritySeparator.trim(); diff --git a/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterServiceImpl.java index bab81123b6..483f91d933 100644 --- a/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/mediafilter/MediaFilterServiceImpl.java @@ -10,18 +10,17 @@ package org.dspace.app.mediafilter; import java.io.InputStream; import java.util.*; -import org.apache.log4j.Logger; import org.dspace.app.mediafilter.service.MediaFilterService; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.*; import org.dspace.content.Collection; import org.dspace.content.service.*; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.core.SelfNamedPlugin; import org.dspace.eperson.Group; import org.dspace.eperson.service.GroupService; +import org.dspace.services.ConfigurationService; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -52,6 +51,8 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB protected GroupService groupService; @Autowired(required = true) protected ItemService itemService; + @Autowired(required = true) + protected ConfigurationService configurationService; protected int max2Process = Integer.MAX_VALUE; // maximum number items to process @@ -74,7 +75,7 @@ public class MediaFilterServiceImpl implements MediaFilterService, InitializingB @Override public void afterPropertiesSet() throws Exception { - String publicPermissionFilters = ConfigurationManager.getProperty("filter.org.dspace.app.mediafilter.publicPermission"); + String publicPermissionFilters = configurationService.getProperty("filter.org.dspace.app.mediafilter.publicPermission"); if(publicPermissionFilters != null) { String[] publicPermisionFiltersArray = publicPermissionFilters.split(","); for(String filter : publicPermisionFiltersArray) { diff --git a/dspace-api/src/main/java/org/dspace/app/util/OpenSearchServiceImpl.java b/dspace-api/src/main/java/org/dspace/app/util/OpenSearchServiceImpl.java index 7b562d1c94..2a8b770380 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/OpenSearchServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/app/util/OpenSearchServiceImpl.java @@ -13,7 +13,6 @@ import org.dspace.core.Context; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; import java.net.URLEncoder; @@ -34,12 +33,14 @@ import org.jdom.output.XMLOutputter; import org.apache.log4j.Logger; import org.dspace.content.DSpaceObject; -import org.dspace.core.ConfigurationManager; import com.sun.syndication.feed.module.opensearch.OpenSearchModule; import com.sun.syndication.feed.module.opensearch.entity.OSQuery; import com.sun.syndication.feed.module.opensearch.impl.OpenSearchModuleImpl; import com.sun.syndication.io.FeedException; +import java.util.Arrays; +import org.dspace.services.ConfigurationService; +import org.dspace.utils.DSpace; /** * Utility Class with static methods for producing OpenSearch-compliant search results, @@ -83,21 +84,19 @@ public class OpenSearchServiceImpl implements OpenSearchService, InitializingBea @Override public void afterPropertiesSet() throws Exception { - enabled = ConfigurationManager.getBooleanProperty("websvc.opensearch.enable"); - svcUrl = ConfigurationManager.getProperty("dspace.url") + "/" + - ConfigurationManager.getProperty("websvc.opensearch.svccontext"); - uiUrl = ConfigurationManager.getProperty("dspace.url") + "/" + - ConfigurationManager.getProperty("websvc.opensearch.uicontext"); + ConfigurationService config = new DSpace().getConfigurationService(); + enabled = config.getBooleanProperty("websvc.opensearch.enable"); + svcUrl = config.getProperty("dspace.url") + "/" + + config.getProperty("websvc.opensearch.svccontext"); + uiUrl = config.getProperty("dspace.url") + "/" + + config.getProperty("websvc.opensearch.uicontext"); // read rest of config info if enabled formats = new ArrayList(); if (enabled) { - String fmtsStr = ConfigurationManager.getProperty("websvc.opensearch.formats"); - if ( fmtsStr != null ) - { - Collections.addAll(formats, fmtsStr.split(",")); - } + String[] fmts = config.getArrayProperty("websvc.opensearch.formats"); + formats = Arrays.asList(fmts); } } @@ -215,31 +214,33 @@ public class OpenSearchServiceImpl implements OpenSearchService, InitializingBea */ protected org.jdom.Document getServiceDocument(String scope) { + ConfigurationService config = new DSpace().getConfigurationService(); + Namespace ns = Namespace.getNamespace(osNs); Element root = new Element("OpenSearchDescription", ns); - root.addContent(new Element("ShortName", ns).setText(ConfigurationManager.getProperty("websvc.opensearch.shortname"))); - root.addContent(new Element("LongName", ns).setText(ConfigurationManager.getProperty("websvc.opensearch.longname"))); - root.addContent(new Element("Description", ns).setText(ConfigurationManager.getProperty("websvc.opensearch.description"))); + root.addContent(new Element("ShortName", ns).setText(config.getProperty("websvc.opensearch.shortname"))); + root.addContent(new Element("LongName", ns).setText(config.getProperty("websvc.opensearch.longname"))); + root.addContent(new Element("Description", ns).setText(config.getProperty("websvc.opensearch.description"))); root.addContent(new Element("InputEncoding", ns).setText("UTF-8")); root.addContent(new Element("OutputEncoding", ns).setText("UTF-8")); // optional elements - String sample = ConfigurationManager.getProperty("websvc.opensearch.samplequery"); + String sample = config.getProperty("websvc.opensearch.samplequery"); if (sample != null && sample.length() > 0) { Element sq = new Element("Query", ns).setAttribute("role", "example"); root.addContent(sq.setAttribute("searchTerms", sample)); } - String tags = ConfigurationManager.getProperty("websvc.opensearch.tags"); + String tags = config.getProperty("websvc.opensearch.tags"); if (tags != null && tags.length() > 0) { root.addContent(new Element("Tags", ns).setText(tags)); } - String contact = ConfigurationManager.getProperty("mail.admin"); + String contact = config.getProperty("mail.admin"); if (contact != null && contact.length() > 0) { root.addContent(new Element("Contact", ns).setText(contact)); } - String faviconUrl = ConfigurationManager.getProperty("websvc.opensearch.faviconurl"); + String faviconUrl = config.getProperty("websvc.opensearch.faviconurl"); if (faviconUrl != null && faviconUrl.length() > 0) { String dim = String.valueOf(16); diff --git a/dspace-api/src/main/java/org/dspace/authenticate/IPAuthentication.java b/dspace-api/src/main/java/org/dspace/authenticate/IPAuthentication.java index 33aa90f975..bceafb26fd 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/IPAuthentication.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/IPAuthentication.java @@ -8,7 +8,11 @@ package org.dspace.authenticate; import java.sql.SQLException; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -22,6 +26,7 @@ import org.dspace.eperson.EPerson; import org.dspace.eperson.Group; import org.dspace.eperson.factory.EPersonServiceFactory; import org.dspace.eperson.service.GroupService; +import org.dspace.utils.DSpace; /** * Adds users to special groups based on IP address. Configuration parameter @@ -80,24 +85,20 @@ public class IPAuthentication implements AuthenticationMethod ipMatcherGroupNames = new HashMap<>(); groupService = EPersonServiceFactory.getInstance().getGroupService(); - Enumeration e = ConfigurationManager.propertyNames("authentication-ip"); + List propNames = new DSpace().getConfigurationService().getPropertyKeys("authentication-ip"); - while (e.hasMoreElements()) + for(String propName : propNames) { - String propName = (String) e.nextElement(); - if (propName.startsWith("ip.")) - { - String[] nameParts = propName.split("\\."); + String[] nameParts = propName.split("\\."); - if (nameParts.length == 2) - { - addMatchers(nameParts[1], ConfigurationManager.getProperty("authentication-ip", propName)); - } - else - { - log.warn("Malformed configuration property name: " - + propName); - } + if (nameParts.length == 2) + { + addMatchers(nameParts[1], new DSpace().getConfigurationService().getProperty(propName)); + } + else + { + log.warn("Malformed configuration property name: " + + propName); } } } diff --git a/dspace-api/src/main/java/org/dspace/authenticate/PasswordAuthentication.java b/dspace-api/src/main/java/org/dspace/authenticate/PasswordAuthentication.java index 06d33f7ff4..2baf94e6b9 100644 --- a/dspace-api/src/main/java/org/dspace/authenticate/PasswordAuthentication.java +++ b/dspace-api/src/main/java/org/dspace/authenticate/PasswordAuthentication.java @@ -16,12 +16,12 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.collections.ListUtils; import org.apache.log4j.Logger; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.dspace.core.LogManager; import org.dspace.eperson.EPerson; import org.dspace.eperson.Group; import org.dspace.eperson.factory.EPersonServiceFactory; +import org.dspace.utils.DSpace; /** * A stackable authentication method @@ -66,8 +66,8 @@ public class PasswordAuthentication throws SQLException { // Is there anything set in domain.valid? - String domains = ConfigurationManager.getProperty("authentication-password", "domain.valid"); - if ((domains == null) || (domains.trim().equals(""))) + String[] domains = new DSpace().getConfigurationService().getArrayProperty("authentication-password.domain.valid"); + if ((domains == null) || (domains.length==0)) { // No conditions set, so must be able to self register return true; @@ -75,12 +75,11 @@ public class PasswordAuthentication else { // Itterate through all domains - String[] options = domains.trim().split(","); String check; email = email.trim().toLowerCase(); - for (int i = 0; i < options.length; i++) + for (int i = 0; i < domains.length; i++) { - check = options[i].trim().toLowerCase(); + check = domains[i].trim().toLowerCase(); if (email.endsWith(check)) { // A match, so we can register this user @@ -139,7 +138,7 @@ public class PasswordAuthentication { if (EPersonServiceFactory.getInstance().getEPersonService().getPasswordHash(context.getCurrentUser()) != null && !EPersonServiceFactory.getInstance().getEPersonService().getPasswordHash(context.getCurrentUser()).toString().equals("")) { - String groupName = ConfigurationManager.getProperty("authentication-password", "login.specialgroup"); + String groupName = new DSpace().getConfigurationService().getProperty("authentication-password.login.specialgroup"); if ((groupName != null) && (!groupName.trim().equals(""))) { Group specialGroup = EPersonServiceFactory.getInstance().getGroupService().findByName(context, groupName); diff --git a/dspace-api/src/main/java/org/dspace/content/authority/DSpaceControlledVocabulary.java b/dspace-api/src/main/java/org/dspace/content/authority/DSpaceControlledVocabulary.java index ab8bcaa4fa..815cf00e09 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/DSpaceControlledVocabulary.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/DSpaceControlledVocabulary.java @@ -25,8 +25,9 @@ import org.xml.sax.InputSource; import org.apache.log4j.Logger; -import org.dspace.core.ConfigurationManager; import org.dspace.core.SelfNamedPlugin; +import org.dspace.services.ConfigurationService; +import org.dspace.utils.DSpace; /** * ChoiceAuthority source that reads the JSPUI-style hierarchical vocabularies @@ -94,7 +95,7 @@ public class DSpaceControlledVocabulary extends SelfNamedPlugin implements Choic return name.endsWith(".xml"); } } - String vocabulariesPath = ConfigurationManager.getProperty("dspace.dir") + String vocabulariesPath = new DSpace().getConfigurationService().getProperty("dspace.dir") + "/config/controlled-vocabularies/"; String[] xmlFiles = (new File(vocabulariesPath)).list(new xmlFilter()); List names = new ArrayList(); @@ -111,13 +112,15 @@ public class DSpaceControlledVocabulary extends SelfNamedPlugin implements Choic { if (vocabulary == null) { + ConfigurationService config = new DSpace().getConfigurationService(); + log.info("Initializing " + this.getClass().getName()); vocabularyName = this.getPluginInstanceName(); - String vocabulariesPath = ConfigurationManager.getProperty("dspace.dir") + "/config/controlled-vocabularies/"; + String vocabulariesPath = config.getProperty("dspace.dir") + "/config/controlled-vocabularies/"; String configurationPrefix = "vocabulary.plugin." + vocabularyName; - storeHierarchy = ConfigurationManager.getBooleanProperty(configurationPrefix + ".hierarchy.store", storeHierarchy); - suggestHierarchy = ConfigurationManager.getBooleanProperty(configurationPrefix + ".hierarchy.suggest", suggestHierarchy); - String configuredDelimiter = ConfigurationManager.getProperty(configurationPrefix + ".delimiter"); + storeHierarchy = config.getBooleanProperty(configurationPrefix + ".hierarchy.store", storeHierarchy); + suggestHierarchy = config.getBooleanProperty(configurationPrefix + ".hierarchy.suggest", suggestHierarchy); + String configuredDelimiter = config.getProperty(configurationPrefix + ".delimiter"); if (configuredDelimiter != null) { hierarchyDelimiter = configuredDelimiter.replaceAll("(^\"|\"$)",""); diff --git a/dspace-api/src/main/java/org/dspace/ctask/general/AbstractTranslator.java b/dspace-api/src/main/java/org/dspace/ctask/general/AbstractTranslator.java index 3c626e4013..f1cf61bcb1 100644 --- a/dspace-api/src/main/java/org/dspace/ctask/general/AbstractTranslator.java +++ b/dspace-api/src/main/java/org/dspace/ctask/general/AbstractTranslator.java @@ -51,9 +51,9 @@ public abstract class AbstractTranslator extends AbstractCurationTask // Load configuration authLang = ConfigurationManager.getProperty("default.locale"); - authLangField = ConfigurationManager.getProperty(PLUGIN_PREFIX, "translate.field.language"); - String toTranslateStr = ConfigurationManager.getProperty(PLUGIN_PREFIX, "translate.field.targets"); - String langsStr = ConfigurationManager.getProperty(PLUGIN_PREFIX, "translate.language.targets"); + authLangField = ConfigurationManager.getProperty(PLUGIN_PREFIX, "field.language"); + String toTranslateStr = ConfigurationManager.getProperty(PLUGIN_PREFIX, "field.targets"); + String langsStr = ConfigurationManager.getProperty(PLUGIN_PREFIX, "language.targets"); toTranslate = toTranslateStr.split(","); langs = langsStr.split(","); @@ -184,7 +184,7 @@ public abstract class AbstractTranslator extends AbstractCurationTask /* * Override this method in your translator * Only needed to set key, etc. - * apiKey = ConfigurationManager.getProperty(PLUGIN_PREFIX, "translate.api.key.[service]"); + * apiKey = ConfigurationManager.getProperty(PLUGIN_PREFIX, "translator.api.key.[service]"); * */ } diff --git a/dspace-api/src/main/java/org/dspace/disseminate/CitationDocumentServiceImpl.java b/dspace-api/src/main/java/org/dspace/disseminate/CitationDocumentServiceImpl.java index 4cab9dbf7b..9d1e70493c 100644 --- a/dspace-api/src/main/java/org/dspace/disseminate/CitationDocumentServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/disseminate/CitationDocumentServiceImpl.java @@ -23,10 +23,10 @@ import org.dspace.content.Collection; import org.dspace.content.service.BitstreamService; import org.dspace.content.service.CommunityService; import org.dspace.content.service.ItemService; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.dspace.disseminate.service.CitationDocumentService; import org.dspace.handle.service.HandleService; +import org.dspace.services.ConfigurationService; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -70,22 +70,10 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini */ protected final Set SVG_MIMES = new HashSet(); - /** - * Comma separated list of collections handles to enable citation for. - * webui.citation.enabled_collections, default empty/none. ex: =1811/123, 1811/345 - */ - protected String citationEnabledCollections = null; - - /** - * Comma separated list of community handles to enable citation for. - * webui.citation.enabled_communties, default empty/none. ex: =1811/123, 1811/345 - */ - protected String citationEnabledCommunities = null; - /** * List of all enabled collections, inherited/determined for those under communities. */ - protected ArrayList citationEnabledCollectionsList; + protected List citationEnabledCollectionsList; protected File tempDir; @@ -102,6 +90,8 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini protected CommunityService communityService; @Autowired(required = true) protected ItemService itemService; + @Autowired(required = true) + protected ConfigurationService configurationService; @Autowired(required = true) protected HandleService handleService; @@ -130,27 +120,22 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini //Load enabled collections - citationEnabledCollections = ConfigurationManager.getProperty("disseminate-citation", "enabled_collections"); - citationEnabledCollectionsList = new ArrayList(); - if(citationEnabledCollections != null && citationEnabledCollections.length() > 0) { - String[] collectionChunks = citationEnabledCollections.split(","); - for(String collectionString : collectionChunks) { - citationEnabledCollectionsList.add(collectionString.trim()); - } - - } + String[] citationEnabledCollections = configurationService.getArrayProperty("citation-page.enabled_collections"); + citationEnabledCollectionsList = Arrays.asList(citationEnabledCollections); //Load enabled communities, and add to collection-list - citationEnabledCommunities = ConfigurationManager.getProperty("disseminate-citation", "enabled_communities"); + String[] citationEnabledCommunities = configurationService.getArrayProperty("citation-page.enabled_communities"); if(citationEnabledCollectionsList == null) { citationEnabledCollectionsList = new ArrayList(); } - if(citationEnabledCommunities != null && citationEnabledCommunities.length() > 0) { - try { - String[] communityChunks = citationEnabledCommunities.split(","); - for(String communityString : communityChunks) { - Context context = new Context(); + if(citationEnabledCommunities != null && citationEnabledCommunities.length > 0) + { + Context context = null; + try + { + context = new Context(); + for(String communityString : citationEnabledCommunities) { DSpaceObject dsoCommunity = handleService.resolveToObject(context, communityString.trim()); if(dsoCommunity instanceof Community) { Community community = (Community)dsoCommunity; @@ -162,38 +147,39 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini } else { log.error("Invalid community for citation.enabled_communities, value:" + communityString.trim()); } - context.abort(); - } } catch (SQLException e) { log.error(e.getMessage()); } - + finally { + if (context!=null) + context.abort(); + } } // Configurable text/fields, we'll set sane defaults - String header1Config = ConfigurationManager.getProperty("disseminate-citation", "header1"); + String header1Config = configurationService.getProperty("citation-page.header1"); if(StringUtils.isNotBlank(header1Config)) { header1 = header1Config.split(","); } else { header1 = new String[]{"DSpace Institution", ""}; } - String header2Config = ConfigurationManager.getProperty("disseminate-citation", "header2"); + String header2Config = configurationService.getProperty("citation-page.header2"); if(StringUtils.isNotBlank(header2Config)) { header2 = header2Config.split(","); } else { header2 = new String[]{"DSpace Repository", "http://dspace.org"}; } - String fieldsConfig = ConfigurationManager.getProperty("disseminate-citation", "fields"); + String fieldsConfig = configurationService.getProperty("citation-page.fields"); if(StringUtils.isNotBlank(fieldsConfig)) { fields = fieldsConfig.split(","); } else { fields = new String[]{"dc.date.issued", "dc.title", "dc.creator", "dc.contributor.author", "dc.publisher", "_line_", "dc.identifier.citation", "dc.identifier.uri"}; } - String footerConfig = ConfigurationManager.getProperty("disseminate-citation", "footer"); + String footerConfig = configurationService.getProperty("citation-page.footer"); if(StringUtils.isNotBlank(footerConfig)) { footer = footerConfig; } else { @@ -201,7 +187,7 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini } //Ensure a temp directory is available - String tempDirString = ConfigurationManager.getProperty("dspace.dir") + "/temp"; + String tempDirString = configurationService.getProperty("dspace.dir") + File.pathSeparator + "temp"; tempDir = new File(tempDirString); if(!tempDir.exists()) { boolean success = tempDir.mkdir(); @@ -218,13 +204,13 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini /** * Boolean to determine is citation-functionality is enabled globally for entire site. - * config/module/disseminate-citation: enable_globally, default false. true=on, false=off + * config/module/citation-page: enable_globally, default false. true=on, false=off */ protected Boolean citationEnabledGlobally = null; protected boolean isCitationEnabledGlobally() { if(citationEnabledGlobally == null) { - citationEnabledGlobally = ConfigurationManager.getBooleanProperty("disseminate-citation", "enable_globally", false); + citationEnabledGlobally = configurationService.getBooleanProperty("citation-page.enable_globally", false); } return citationEnabledGlobally; @@ -277,7 +263,7 @@ public class CitationDocumentServiceImpl implements CitationDocumentService, Ini protected Boolean isCitationFirstPage() { if(citationAsFirstPage == null) { - citationAsFirstPage = ConfigurationManager.getBooleanProperty("disseminate-citation", "citation_as_first_page", true); + citationAsFirstPage = configurationService.getBooleanProperty("citation-page.citation_as_first_page", true); } return citationAsFirstPage; diff --git a/dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java b/dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java index 515a56677b..fe69cbe960 100644 --- a/dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java +++ b/dspace-api/src/main/java/org/dspace/harvest/OAIHarvester.java @@ -98,12 +98,12 @@ public class OAIHarvester { Context ourContext; // Namespace used by the ORE serialization format - // Set in dspace.cfg as harvester.oai.oreSerializationFormat.{ORESerialKey} = {ORESerialNS} + // Set in dspace.cfg as oai.harvester.oreSerializationFormat.{ORESerialKey} = {ORESerialNS} private Namespace ORESerialNS; private String ORESerialKey; // Namespace of the descriptive metadata that should be harvested in addition to the ORE - // Set in dspace.cfg as harvester.oai.metadataformats.{MetadataKey} = {MetadataNS},{Display Name} + // Set in dspace.cfg as oai.harvester.metadataformats.{MetadataKey} = {MetadataNS},{Display Name} private Namespace metadataNS; private String metadataKey; @@ -153,7 +153,7 @@ public class OAIHarvester { metadataNS = OAIHarvester.getDMDNamespace(metadataKey); if (metadataNS == null) { - log.error("No matching metadata namespace found for \"" + metadataKey + "\", see oai.cfg option \"harvester.oai.metadataformats.{MetadataKey} = {MetadataNS},{Display Name}\""); + log.error("No matching metadata namespace found for \"" + metadataKey + "\", see oai.cfg option \"oai.harvester.metadataformats.{MetadataKey} = {MetadataNS},{Display Name}\""); throw new HarvestingException("Metadata declaration not found"); } } @@ -166,7 +166,7 @@ public class OAIHarvester { private static Namespace getORENamespace() { String ORESerializationString = null; String ORESeialKey = null; - String oreString = "harvester.oai.oreSerializationFormat."; + String oreString = "oai.harvester.oreSerializationFormat."; Enumeration pe = ConfigurationManager.propertyNames("oai"); @@ -193,7 +193,7 @@ public class OAIHarvester { */ private static Namespace getDMDNamespace(String metadataKey) { String metadataString = null; - String metaString = "harvester.oai.metadataformats."; + String metaString = "oai.harvester.metadataformats."; Enumeration pe = ConfigurationManager.propertyNames("oai"); diff --git a/dspace-api/src/main/java/org/dspace/rdf/RDFConfiguration.java b/dspace-api/src/main/java/org/dspace/rdf/RDFConfiguration.java index 88e6c289a3..7a8f394c08 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/RDFConfiguration.java +++ b/dspace-api/src/main/java/org/dspace/rdf/RDFConfiguration.java @@ -240,12 +240,11 @@ public class RDFConfiguration { */ public static String[] loadConfigurationArray(String key) { - String value = (new DSpace()).getConfigurationService().getProperty(key); - if (StringUtils.isEmpty(value)) - { + ConfigurationService config = new DSpace().getConfigurationService(); + if(config.hasProperty(key)) + return config.getArrayProperty(key); + else return null; - } - return value.split(",\\s*"); } diff --git a/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseRegistryUpdater.java b/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseRegistryUpdater.java index fb6bdf404f..e263979458 100644 --- a/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseRegistryUpdater.java +++ b/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseRegistryUpdater.java @@ -12,8 +12,9 @@ import java.sql.Connection; import org.dspace.administer.MetadataImporter; import org.dspace.administer.RegistryLoader; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; +import org.dspace.services.ConfigurationService; +import org.dspace.utils.DSpace; import org.flywaydb.core.api.MigrationInfo; import org.flywaydb.core.api.callback.FlywayCallback; import org.slf4j.Logger; @@ -44,13 +45,14 @@ public class DatabaseRegistryUpdater implements FlywayCallback */ private void updateRegistries() { + ConfigurationService config = new DSpace().getConfigurationService(); Context context = null; try { context = new Context(); context.turnOffAuthorisationSystem(); - String base = ConfigurationManager.getProperty("dspace.dir") + String base = config.getProperty("dspace.dir") + File.separator + "config" + File.separator + "registries" + File.separator; @@ -67,7 +69,8 @@ public class DatabaseRegistryUpdater implements FlywayCallback MetadataImporter.loadRegistry(base + "sword-metadata.xml", true); // Check if XML Workflow is enabled in workflow.cfg - if (ConfigurationManager.getProperty("workflow", "workflow.framework").equals("xmlworkflow")) + String framework = config.getProperty("workflow.framework"); + if (framework!=null && framework.equals("xmlworkflow")) { // If so, load in the workflow metadata types as well MetadataImporter.loadRegistry(base + "workflow-types.xml", true); diff --git a/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseUtils.java b/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseUtils.java index 859ff434be..35379ac92c 100644 --- a/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseUtils.java +++ b/dspace-api/src/main/java/org/dspace/storage/rdbms/DatabaseUtils.java @@ -26,10 +26,10 @@ import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.dspace.core.ConfigurationManager; import org.dspace.core.Context; import org.dspace.discovery.IndexingService; import org.dspace.discovery.SearchServiceException; +import org.dspace.services.ConfigurationService; import org.dspace.utils.DSpace; import org.flywaydb.core.Flyway; import org.flywaydb.core.api.FlywayException; @@ -62,7 +62,7 @@ public class DatabaseUtils // When this temp file exists, the "checkReindexDiscovery()" method will auto-reindex Discovery // Reindex flag file is at [dspace]/solr/search/conf/reindex.flag // See also setReindexDiscovery()/getReindexDiscover() - private static final String reindexDiscoveryFilePath = ConfigurationManager.getProperty("dspace.dir") + + private static final String reindexDiscoveryFilePath = new DSpace().getConfigurationService().getProperty("dspace.dir") + File.separator + "solr" + File.separator + "search" + File.separator + "conf" + @@ -79,6 +79,8 @@ public class DatabaseUtils */ public static void main(String[] argv) { + ConfigurationService config = new DSpace().getConfigurationService(); + // Usage checks if (argv.length < 1) { @@ -370,6 +372,8 @@ public class DatabaseUtils */ private synchronized static Flyway setupFlyway(DataSource datasource) { + ConfigurationService config = new DSpace().getConfigurationService(); + if (flywaydb==null) { try(Connection connection = datasource.getConnection()) @@ -391,7 +395,7 @@ public class DatabaseUtils // (We skip this for H2 as it's only used for unit testing) if(!dbType.equals(DBMS_H2)) { - scriptLocations.add("filesystem:" + ConfigurationManager.getProperty("dspace.dir") + + scriptLocations.add("filesystem:" + config.getProperty("dspace.dir") + "/etc/" + dbType); } @@ -405,7 +409,8 @@ public class DatabaseUtils // Special scenario: If XMLWorkflows are enabled, we need to run its migration(s) // as it REQUIRES database schema changes. XMLWorkflow uses Java migrations // which first check whether the XMLWorkflow tables already exist - if (ConfigurationManager.getProperty("workflow", "workflow.framework").equals("xmlworkflow")) + String framework = config.getProperty("workflow.framework"); + if (framework!=null && framework.equals("xmlworkflow")) { scriptLocations.add("classpath:org.dspace.storage.rdbms.xmlworkflow"); } @@ -1025,7 +1030,7 @@ public class DatabaseUtils // If we don't know our schema, let's try the schema in the DSpace configuration if(StringUtils.isBlank(schema)) { - schema = canonicalize(connection, ConfigurationManager.getProperty("db.schema")); + schema = canonicalize(connection, new DSpace().getConfigurationService().getProperty("db.schema")); } // Still blank? Ok, we'll find a "sane" default based on the DB type diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/swordclient/SelectTargetTransformer.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/swordclient/SelectTargetTransformer.java index 4d4b63e00a..cffa92c34b 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/swordclient/SelectTargetTransformer.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/swordclient/SelectTargetTransformer.java @@ -18,7 +18,7 @@ import org.dspace.app.xmlui.wing.Message; import org.dspace.app.xmlui.wing.WingException; import org.dspace.app.xmlui.wing.element.*; import org.dspace.authorize.AuthorizeException; -import org.dspace.core.ConfigurationManager; +import org.dspace.utils.DSpace; import org.xml.sax.SAXException; import java.io.IOException; @@ -93,8 +93,7 @@ public class SelectTargetTransformer extends AbstractDSpaceTransformer List targetDetails = main.addList("target_details",List.TYPE_FORM); Select source = targetDetails.addItem().addSelect("url"); - String targetsString = ConfigurationManager.getProperty("sword-client", "targets"); - String[] targets = targetsString.split(","); + String[] targets = new DSpace().getConfigurationService().getArrayProperty("sword-client.targets"); for (String target : targets) { if ((urlValue != null) && (urlValue.length() > 0) && (urlValue.equals(target))) diff --git a/dspace-xmlui/src/main/java/org/dspace/sword/client/ServiceDocumentHelper.java b/dspace-xmlui/src/main/java/org/dspace/sword/client/ServiceDocumentHelper.java index c924a0ce83..302d46aa7e 100644 --- a/dspace-xmlui/src/main/java/org/dspace/sword/client/ServiceDocumentHelper.java +++ b/dspace-xmlui/src/main/java/org/dspace/sword/client/ServiceDocumentHelper.java @@ -8,7 +8,6 @@ package org.dspace.sword.client; -import org.dspace.core.ConfigurationManager; import org.purl.sword.base.Collection; import org.purl.sword.base.ServiceDocument; import org.purl.sword.base.SwordAcceptPackaging; @@ -17,6 +16,7 @@ import org.purl.sword.base.Workspace; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.dspace.utils.DSpace; /** * User: Robin Taylor @@ -56,8 +56,7 @@ public class ServiceDocumentHelper { public static String[] getCommonFileTypes(ServiceDocument serviceDoc, String location) { - String FTsString = ConfigurationManager.getProperty("sword-client", "file-types"); - String[] clientFTsArray = FTsString.split(","); + String[] clientFTsArray = new DSpace().getConfigurationService().getArrayProperty("sword-client.file-types"); List clientFTs = Arrays.asList(clientFTsArray); List commonFTs = new ArrayList(); @@ -77,8 +76,7 @@ public class ServiceDocumentHelper { public static String[] getCommonPackageFormats(ServiceDocument serviceDoc, String location) { - String PFsString = ConfigurationManager.getProperty("sword-client", "package-formats"); - String[] clientPFsArray = PFsString.split(","); + String[] clientPFsArray = new DSpace().getConfigurationService().getArrayProperty("sword-client.package-formats"); List clientPFs = Arrays.asList(clientPFsArray); List commonPFs = new ArrayList();