Refactor several beans (and related classes) to use ConfigurationService on init once it is injected.

This commit is contained in:
Tim Donohue
2015-10-15 11:52:40 -05:00
parent aef58ad9da
commit 44a6baa0e8
6 changed files with 80 additions and 47 deletions

View File

@@ -15,7 +15,7 @@ import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.dspace.content.MetadataSchema;
import org.dspace.core.ConfigurationManager;
import org.dspace.utils.DSpace;
/**
* Submission form generator for DSpace. Reads and parses the installation
@@ -53,10 +53,6 @@ public class DCInputsReader
/** Keyname for storing dropdown value-pair set name */
static final String PAIR_TYPE_NAME = "value-pairs-name";
/** The fully qualified pathname of the form definition XML file */
private String defsFile = ConfigurationManager.getProperty("dspace.dir")
+ File.separator + "config" + File.separator + FORM_DEF_FILE;
/**
* Reference to the collections to forms map, computed from the forms
* definition file
@@ -91,6 +87,10 @@ public class DCInputsReader
public DCInputsReader()
throws DCInputsReaderException
{
// Load from default file
String defsFile = new DSpace().getConfigurationService().getProperty("dspace.dir")
+ File.separator + "config" + File.separator + FORM_DEF_FILE;
buildInputs(defsFile);
}

View File

@@ -25,7 +25,6 @@ import org.apache.log4j.Logger;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Collection;
import org.dspace.content.service.CollectionService;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.core.LogManager;
import org.dspace.curate.service.WorkflowCuratorService;
@@ -33,17 +32,18 @@ import org.dspace.eperson.EPerson;
import org.dspace.eperson.Group;
import org.dspace.eperson.service.EPersonService;
import org.dspace.eperson.service.GroupService;
import org.dspace.services.ConfigurationService;
import org.dspace.workflow.factory.WorkflowServiceFactory;
import org.dspace.workflowbasic.BasicWorkflowItem;
import org.dspace.workflowbasic.BasicWorkflowServiceImpl;
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
import org.dspace.workflowbasic.service.BasicWorkflowService;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
// Warning - static import ahead!
import static javax.xml.stream.XMLStreamConstants.*;
/**
* WorkflowCurator manages interactions between curation and workflow.
* Specifically, it is invoked in WorkflowManager to allow the
@@ -51,15 +51,12 @@ import static javax.xml.stream.XMLStreamConstants.*;
*
* @author richardrodgers
*/
public class WorkflowCuratorServiceImpl implements WorkflowCuratorService, InitializingBean {
public class WorkflowCuratorServiceImpl implements WorkflowCuratorService
{
/** log4j logger */
private Logger log = Logger.getLogger(WorkflowCuratorServiceImpl.class);
protected File cfgFile = new File(ConfigurationManager.getProperty("dspace.dir") +
File.separator + "config" + File.separator +
"workflow-curation.xml");
protected Map<String, TaskSet> tsMap = new HashMap<String, TaskSet>();
protected final String[] flowSteps = { "step1", "step2", "step3", "archive" };
@@ -74,11 +71,22 @@ public class WorkflowCuratorServiceImpl implements WorkflowCuratorService, Initi
protected BasicWorkflowService basicWorkflowService;
@Autowired(required = true)
protected WorkflowServiceFactory workflowServiceFactory;
@Autowired(required = true)
protected ConfigurationService configurationService;
@Override
public void afterPropertiesSet() throws Exception {
try {
loadTaskConfig();
/**
* Initialize the bean (after dependency injection has already taken place).
* Ensures the configurationService is injected, so that we can read the
* settings from configuration
* Called by "init-method" in Spring config.
*/
public void init() throws Exception {
File cfgFile = new File(configurationService.getProperty("dspace.dir") +
File.separator + "config" + File.separator +
"workflow-curation.xml");
try
{
loadTaskConfig(cfgFile);
if(workflowServiceFactory.getWorkflowService() instanceof BasicWorkflowItemService)
{
basicWorkflowService = (BasicWorkflowService) workflowServiceFactory.getWorkflowService();
@@ -208,7 +216,7 @@ public class WorkflowCuratorServiceImpl implements WorkflowCuratorService, Initi
}
} else if ("$siteadmin".equals(contact)) {
EPerson siteEp = ePersonService.findByEmail(c,
ConfigurationManager.getProperty("mail.admin"));
configurationService.getProperty("mail.admin"));
if (siteEp != null) {
epList.add(siteEp);
}
@@ -271,7 +279,7 @@ public class WorkflowCuratorServiceImpl implements WorkflowCuratorService, Initi
return -1;
}
protected void loadTaskConfig() throws IOException {
protected void loadTaskConfig(File cfgFile) throws IOException {
Map<String, String> collMap = new HashMap<String, String>();
Map<String, TaskSet> setMap = new HashMap<String, TaskSet>();
TaskSet taskSet = null;

View File

@@ -14,8 +14,8 @@ import java.util.Properties;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.DCDate;
import org.dspace.content.Item;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.utils.DSpace;
/**
* Plugin implementation of the embargo setting function. The parseTerms()
@@ -35,18 +35,8 @@ import org.dspace.core.Context;
*/
public class DayTableEmbargoSetter extends DefaultEmbargoSetter
{
private Properties termProps = new Properties();
public DayTableEmbargoSetter() {
super();
// load properties
String terms = ConfigurationManager.getProperty("embargo.terms.days");
if (terms != null && terms.length() > 0) {
for (String term : terms.split(",")) {
String[] parts = term.trim().split(":");
termProps.setProperty(parts[0].trim(), parts[1].trim());
}
}
}
/**
@@ -61,6 +51,10 @@ public class DayTableEmbargoSetter extends DefaultEmbargoSetter
@Override
public DCDate parseTerms(Context context, Item item, String terms)
throws SQLException, AuthorizeException {
String termsOpen = new DSpace().getConfigurationService().getProperty("embargo.terms.open");
Properties termProps = getTermProperties();
if (terms != null) {
if (termsOpen.equals(terms)) {
return EmbargoServiceImpl.FOREVER;
@@ -74,4 +68,23 @@ public class DayTableEmbargoSetter extends DefaultEmbargoSetter
}
return null;
}
/**
* Get term properties from configuration
* @return Properties
*/
private Properties getTermProperties()
{
Properties termProps = new Properties();
String terms = new DSpace().getConfigurationService().getProperty("embargo.terms.days");
if (terms != null && terms.length() > 0) {
for (String term : terms.split(",")) {
String[] parts = term.trim().split(":");
termProps.setProperty(parts[0].trim(), parts[1].trim());
}
}
return termProps;
}
}

View File

@@ -19,7 +19,6 @@ import org.dspace.authorize.factory.AuthorizeServiceFactory;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.authorize.service.ResourcePolicyService;
import org.dspace.content.*;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.core.Constants;
import org.dspace.embargo.factory.EmbargoServiceFactory;
@@ -27,6 +26,7 @@ import org.dspace.embargo.service.EmbargoService;
import org.dspace.eperson.Group;
import org.dspace.eperson.factory.EPersonServiceFactory;
import org.dspace.license.CreativeCommonsServiceImpl;
import org.dspace.utils.DSpace;
/**
* Default plugin implementation of the embargo setting function.
@@ -40,15 +40,12 @@ import org.dspace.license.CreativeCommonsServiceImpl;
*/
public class DefaultEmbargoSetter implements EmbargoSetter
{
protected String termsOpen = null;
protected AuthorizeService authorizeService;
protected ResourcePolicyService resourcePolicyService;
public DefaultEmbargoSetter()
{
super();
termsOpen = ConfigurationManager.getProperty("embargo.terms.open");
}
/**
@@ -65,6 +62,8 @@ public class DefaultEmbargoSetter implements EmbargoSetter
public DCDate parseTerms(Context context, Item item, String terms)
throws SQLException, AuthorizeException
{
String termsOpen = new DSpace().getConfigurationService().getProperty("embargo.terms.open");
if (terms != null && terms.length() > 0)
{
if (termsOpen.equals(terms))

View File

@@ -17,11 +17,10 @@ import org.apache.log4j.Logger;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.*;
import org.dspace.content.service.ItemService;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.core.PluginManager;
import org.dspace.core.service.PluginService;
import org.dspace.embargo.service.EmbargoService;
import org.springframework.beans.factory.InitializingBean;
import org.dspace.services.ConfigurationService;
import org.springframework.beans.factory.annotation.Autowired;
/**
@@ -42,7 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired;
* @author Larry Stone
* @author Richard Rodgers
*/
public class EmbargoServiceImpl implements EmbargoService, InitializingBean
public class EmbargoServiceImpl implements EmbargoService
{
/** log4j category */
@@ -68,6 +67,12 @@ public class EmbargoServiceImpl implements EmbargoService, InitializingBean
@Autowired(required = true)
protected ItemService itemService;
@Autowired(required = true)
protected ConfigurationService configurationService;
@Autowired(required = true)
protected PluginService pluginService;
@Override
public void setEmbargo(Context context, Item item)
throws SQLException, AuthorizeException
@@ -156,14 +161,18 @@ public class EmbargoServiceImpl implements EmbargoService, InitializingBean
}
// initialize - get plugins and MD field settings from config
@Override
public void afterPropertiesSet() throws Exception
/**
* Initialize the bean (after dependency injection has already taken place).
* Ensures the configurationService is injected, so that we can
* get plugins and MD field settings from config.
* Called by "init-method" in Spring config.
*/
public void init() throws Exception
{
if (terms_schema == null)
{
String terms = ConfigurationManager.getProperty("embargo.field.terms");
String lift = ConfigurationManager.getProperty("embargo.field.lift");
String terms = configurationService.getProperty("embargo.field.terms");
String lift = configurationService.getProperty("embargo.field.lift");
if (terms == null || lift == null)
{
throw new IllegalStateException("Missing one or more of the required DSpace configuration properties for EmbargoManager, check your configuration file.");
@@ -175,12 +184,12 @@ public class EmbargoServiceImpl implements EmbargoService, InitializingBean
lift_element = getElementOf(lift);
lift_qualifier = getQualifierOf(lift);
setter = (EmbargoSetter)PluginManager.getSinglePlugin(EmbargoSetter.class);
setter = (EmbargoSetter)pluginService.getSinglePlugin(EmbargoSetter.class);
if (setter == null)
{
throw new IllegalStateException("The EmbargoSetter plugin was not defined in DSpace configuration.");
}
lifter = (EmbargoLifter)PluginManager.getSinglePlugin(EmbargoLifter.class);
lifter = (EmbargoLifter)pluginService.getSinglePlugin(EmbargoLifter.class);
if (lifter == null)
{
throw new IllegalStateException("The EmbargoLifter plugin was not defined in DSpace configuration.");

View File

@@ -53,14 +53,18 @@
<bean class="org.dspace.content.authority.ChoiceAuthorityServiceImpl"/>
<bean class="org.dspace.content.authority.MetadataAuthorityServiceImpl" lazy-init="true"/>
<!-- Ensure PluginService is initialized properly via init() method -->
<bean class="org.dspace.core.LegacyPluginServiceImpl" init-method="init"/>
<bean class="org.dspace.core.LicenseServiceImpl"/>
<bean class="org.dspace.core.NewsServiceImpl"/>
<bean class="org.dspace.curate.WorkflowCuratorServiceImpl"/>
<!-- Ensure WorkflowCuratorService is initialized properly via init() method -->
<bean class="org.dspace.curate.WorkflowCuratorServiceImpl" init-method="init"/>
<bean class="org.dspace.disseminate.CitationDocumentServiceImpl"/>
<bean class="org.dspace.embargo.EmbargoServiceImpl"/>
<!-- Ensure EmbargoService is initialized properly via init() method -->
<bean class="org.dspace.embargo.EmbargoServiceImpl" init-method="init"/>
<bean class="org.dspace.eperson.AccountServiceImpl"/>
<bean class="org.dspace.eperson.EPersonServiceImpl"/>